summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2026-11-11 21:06:09 -0500
committerSacha Chua <sacha@sachachua.com>2026-11-11 21:08:16 -0500
commitd9443c820bc52e6f2424db654b545d8ad7c61172 (patch)
tree652040ff87537eff4b7c879026e64ed205f7eab3
parent23294b63e236c2accef3a9e881f764320ec3fcc7 (diff)
downloademacsconf-wiki-d9443c820bc52e6f2424db654b545d8ad7c61172.tar.xz
emacsconf-wiki-d9443c820bc52e6f2424db654b545d8ad7c61172.zip
update info pages and scheduleHEADmaster
-rw-r--r--2026/info/align-before.md2
-rw-r--r--2026/info/ancient-before.md2
-rw-r--r--2026/info/android-before.md2
-rw-r--r--2026/info/anju-before.md2
-rw-r--r--2026/info/babel-before.md2
-rw-r--r--2026/info/bible-after.md2
-rw-r--r--2026/info/bible-before.md2
-rw-r--r--2026/info/bone-before.md2
-rw-r--r--2026/info/cadet-before.md2
-rw-r--r--2026/info/community-before.md4
-rw-r--r--2026/info/compile-before.md2
-rw-r--r--2026/info/dnd-before.md2
-rw-r--r--2026/info/el-gpu-before.md2
-rw-r--r--2026/info/emacspeak-before.md4
-rw-r--r--2026/info/ffs-before.md2
-rw-r--r--2026/info/ghostel-before.md2
-rw-r--r--2026/info/ghostel-nav.md2
-rw-r--r--2026/info/guile-before.md2
-rw-r--r--2026/info/hutch-before.md2
-rw-r--r--2026/info/hyperbole-before.md2
-rw-r--r--2026/info/koutliner-before.md2
-rw-r--r--2026/info/listen-before.md8
-rw-r--r--2026/info/llms-before.md2
-rw-r--r--2026/info/llms-nav.md2
-rw-r--r--2026/info/local-before.md2
-rw-r--r--2026/info/ltx-talk-before.md4
-rw-r--r--2026/info/mobile-before.md2
-rw-r--r--2026/info/os-before.md2
-rw-r--r--2026/info/planning-before.md2
-rw-r--r--2026/info/plots-before.md2
-rw-r--r--2026/info/portable-before.md2
-rw-r--r--2026/info/prefix-before.md4
-rw-r--r--2026/info/rau-before.md2
-rw-r--r--2026/info/remoto-before.md2
-rw-r--r--2026/info/sat-close-before.md2
-rw-r--r--2026/info/sat-open-before.md2
-rw-r--r--2026/info/sun-close-before.md2
-rw-r--r--2026/info/sun-open-before.md2
-rw-r--r--2026/info/svg-before.md2
-rw-r--r--2026/info/tasks-before.md2
-rw-r--r--2026/info/team-before.md2
-rw-r--r--2026/info/virus-before.md2
-rw-r--r--2026/info/writing-before.md4
-rw-r--r--2026/organizers-notebook.md7
-rw-r--r--2026/organizers-notebook/index.org6
-rw-r--r--2026/organizers-notebook/schedule.svg2
-rw-r--r--2026/schedule-2026-12-12.md2
-rw-r--r--2026/schedule-2026-12-13.md2
-rw-r--r--2026/schedule-details.md18
-rw-r--r--2026/schedule-image.md2
-rw-r--r--organizers-notebook/index.org28
51 files changed, 95 insertions, 74 deletions
diff --git a/2026/info/align-before.md b/2026/info/align-before.md
index 1fb26596..b2e73db4 100644
--- a/2026/info/align-before.md
+++ b/2026/info/align-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="align">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect stroke-width="3" x="487" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect stroke-width="3" x="487" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/ancient-before.md b/2026/info/ancient-before.md
index 2424c5ad..44bebe94 100644
--- a/2026/info/ancient-before.md
+++ b/2026/info/ancient-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="ancient">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect stroke-width="3" x="521" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect stroke-width="3" x="521" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/android-before.md b/2026/info/android-before.md
index 5d9d5b74..e4950265 100644
--- a/2026/info/android-before.md
+++ b/2026/info/android-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="android">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect stroke-width="3" x="583" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect stroke-width="3" x="583" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/anju-before.md b/2026/info/anju-before.md
index f59d8027..3a165579 100644
--- a/2026/info/anju-before.md
+++ b/2026/info/anju-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="anju">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect stroke-width="3" x="542" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect stroke-width="3" x="542" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/babel-before.md b/2026/info/babel-before.md
index 1e5bcc01..ffc52056 100644
--- a/2026/info/babel-before.md
+++ b/2026/info/babel-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="babel">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect stroke-width="3" x="480" y="75" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect stroke-width="3" x="480" y="75" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/bible-after.md b/2026/info/bible-after.md
index d2b0524e..16d5f460 100644
--- a/2026/info/bible-after.md
+++ b/2026/info/bible-after.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-after-page -->
-Questions or comments? Please e-mail [kristjoc@uio.no](mailto:kristjoc@uio.no?subject=Comment%20for%20EmacsConf%202023%20bible%3A%20bible-gateway%3A%20A%20Two-Edged%20Sword%20in%20Emacs)
+Questions or comments? Please e-mail [kristjoc@uio.no](mailto:kristjoc@uio.no?subject=Comment%20for%20EmacsConf%202023%20bible%3A%20Bible-gateway%3A%20A%20Two-Edged%20Sword%20in%20Emacs)
<!-- End of emacsconf-publish-after-page -->
diff --git a/2026/info/bible-before.md b/2026/info/bible-before.md
index 4e413d07..019ea679 100644
--- a/2026/info/bible-before.md
+++ b/2026/info/bible-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="bible">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect stroke-width="3" x="370" y="20" opacity="0.8" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect stroke-width="3" x="370" y="20" opacity="0.8" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/bone-before.md b/2026/info/bone-before.md
index b69adfc7..906f5d09 100644
--- a/2026/info/bone-before.md
+++ b/2026/info/bone-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="bone">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect stroke-width="3" x="13" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect stroke-width="3" x="13" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/cadet-before.md b/2026/info/cadet-before.md
index d7c05503..d1a7ea8d 100644
--- a/2026/info/cadet-before.md
+++ b/2026/info/cadet-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="cadet">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect stroke-width="3" x="432" y="75" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect stroke-width="3" x="432" y="75" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/community-before.md b/2026/info/community-before.md
index 6a3148a2..aac161d5 100644
--- a/2026/info/community-before.md
+++ b/2026/info/community-before.md
@@ -1,14 +1,14 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="community">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect stroke-width="3" x="82" y="75" opacity="0.8" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect stroke-width="3" x="82" y="75" opacity="0.8" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
Format: 83-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2026/current/bbb-community.html>
Etherpad: <https://pad.emacsconf.org/2026-community>
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Processing uploaded video
+Status: Quality check
<div>Times in different time zones:</div><div class="times" start="2026-12-12T15:00:00Z" end="2026-12-12T16:25:00Z"><div class="conf-time">Saturday, Dec 12 2026, ~10:00 AM - 11:25 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 12 2026, ~9:00 AM - 10:25 AM CST (US/Central)<br />Saturday, Dec 12 2026, ~8:00 AM - 9:25 AM MST (US/Mountain)<br />Saturday, Dec 12 2026, ~7:00 AM - 8:25 AM PST (US/Pacific)<br />Saturday, Dec 12 2026, ~3:00 PM - 4:25 PM UTC <br />Saturday, Dec 12 2026, ~4:00 PM - 5:25 PM CET (Europe/Paris)<br />Saturday, Dec 12 2026, ~5:00 PM - 6:25 PM EET (Europe/Athens)<br />Saturday, Dec 12 2026, ~8:30 PM - 9:55 PM IST (Asia/Kolkata)<br />Saturday, Dec 12 2026, ~11:00 PM - 12:25 AM +08 (Asia/Singapore)<br />Sunday, Dec 13 2026, ~12:00 AM - 1:25 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/dev/">Find out how to watch and participate</a></strong></div>
diff --git a/2026/info/compile-before.md b/2026/info/compile-before.md
index 5d6fa610..318291ab 100644
--- a/2026/info/compile-before.md
+++ b/2026/info/compile-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="compile">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect stroke-width="3" x="192" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect stroke-width="3" x="192" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/dnd-before.md b/2026/info/dnd-before.md
index 88cdf4f7..e54a12aa 100644
--- a/2026/info/dnd-before.md
+++ b/2026/info/dnd-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="dnd">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect stroke-width="3" x="329" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect stroke-width="3" x="329" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/el-gpu-before.md b/2026/info/el-gpu-before.md
index b682e1d7..8c4b905c 100644
--- a/2026/info/el-gpu-before.md
+++ b/2026/info/el-gpu-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="el-gpu">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect stroke-width="3" x="178" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect stroke-width="3" x="178" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/emacspeak-before.md b/2026/info/emacspeak-before.md
index 6187184a..5ceec210 100644
--- a/2026/info/emacspeak-before.md
+++ b/2026/info/emacspeak-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="emacspeak">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect stroke-width="3" x="123" y="20" opacity="0.8" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect stroke-width="3" x="116" y="20" opacity="0.8" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
@@ -9,7 +9,7 @@ Format: 30-min talk ; Q&A: IRC <https://chat.emacsconf.org/?join=emacsconf>
Etherpad: <https://pad.emacsconf.org/2026-emacspeak>
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="2026-12-12T15:30:00Z" end="2026-12-12T16:00:00Z"><div class="conf-time">Saturday, Dec 12 2026, ~10:30 AM - 11:00 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 12 2026, ~9:30 AM - 10:00 AM CST (US/Central)<br />Saturday, Dec 12 2026, ~8:30 AM - 9:00 AM MST (US/Mountain)<br />Saturday, Dec 12 2026, ~7:30 AM - 8:00 AM PST (US/Pacific)<br />Saturday, Dec 12 2026, ~3:30 PM - 4:00 PM UTC <br />Saturday, Dec 12 2026, ~4:30 PM - 5:00 PM CET (Europe/Paris)<br />Saturday, Dec 12 2026, ~5:30 PM - 6:00 PM EET (Europe/Athens)<br />Saturday, Dec 12 2026, ~9:00 PM - 9:30 PM IST (Asia/Kolkata)<br />Saturday, Dec 12 2026, ~11:30 PM - 12:00 AM +08 (Asia/Singapore)<br />Sunday, Dec 13 2026, ~12:30 AM - 1:00 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/gen/">Find out how to watch and participate</a></strong></div>
+<div>Times in different time zones:</div><div class="times" start="2026-12-12T15:25:00Z" end="2026-12-12T15:55:00Z"><div class="conf-time">Saturday, Dec 12 2026, ~10:25 AM - 10:55 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 12 2026, ~9:25 AM - 9:55 AM CST (US/Central)<br />Saturday, Dec 12 2026, ~8:25 AM - 8:55 AM MST (US/Mountain)<br />Saturday, Dec 12 2026, ~7:25 AM - 7:55 AM PST (US/Pacific)<br />Saturday, Dec 12 2026, ~3:25 PM - 3:55 PM UTC <br />Saturday, Dec 12 2026, ~4:25 PM - 4:55 PM CET (Europe/Paris)<br />Saturday, Dec 12 2026, ~5:25 PM - 5:55 PM EET (Europe/Athens)<br />Saturday, Dec 12 2026, ~8:55 PM - 9:25 PM IST (Asia/Kolkata)<br />Saturday, Dec 12 2026, ~11:25 PM - 11:55 PM +08 (Asia/Singapore)<br />Sunday, Dec 13 2026, ~12:25 AM - 12:55 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/gen/">Find out how to watch and participate</a></strong></div>
diff --git a/2026/info/ffs-before.md b/2026/info/ffs-before.md
index 42a5f877..d26b907b 100644
--- a/2026/info/ffs-before.md
+++ b/2026/info/ffs-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="ffs">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect stroke-width="3" x="576" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect stroke-width="3" x="576" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/ghostel-before.md b/2026/info/ghostel-before.md
index b79b0a3b..f55ed95e 100644
--- a/2026/info/ghostel-before.md
+++ b/2026/info/ghostel-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="ghostel">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect stroke-width="3" x="432" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect stroke-width="3" x="432" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/ghostel-nav.md b/2026/info/ghostel-nav.md
index 672f5af2..ba318669 100644
--- a/2026/info/ghostel-nav.md
+++ b/2026/info/ghostel-nav.md
@@ -1,7 +1,7 @@
<div class="talk-nav">
Back to the [[talks]]
-Previous by time: <a href="/2026/talks/bible">bible-gateway: A Two-Edged Sword in Emacs</a>
+Previous by time: <a href="/2026/talks/bible">Bible-gateway: A Two-Edged Sword in Emacs</a>
Next by time: <a href="/2026/talks/svg">A (sort of) REPL for learning SVG</a>
Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2026/watch/gen">Watch</a></strong>
</div>
diff --git a/2026/info/guile-before.md b/2026/info/guile-before.md
index 095e0778..05043c90 100644
--- a/2026/info/guile-before.md
+++ b/2026/info/guile-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="guile">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect stroke-width="3" x="521" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect stroke-width="3" x="521" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/hutch-before.md b/2026/info/hutch-before.md
index fad866c5..a5f463a4 100644
--- a/2026/info/hutch-before.md
+++ b/2026/info/hutch-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="hutch">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect stroke-width="3" x="102" y="20" opacity="0.8" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect stroke-width="3" x="102" y="20" opacity="0.8" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/hyperbole-before.md b/2026/info/hyperbole-before.md
index bdfbba40..ab0953e1 100644
--- a/2026/info/hyperbole-before.md
+++ b/2026/info/hyperbole-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="hyperbole">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect stroke-width="3" x="480" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect stroke-width="3" x="480" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/koutliner-before.md b/2026/info/koutliner-before.md
index 7efe9638..a167c62b 100644
--- a/2026/info/koutliner-before.md
+++ b/2026/info/koutliner-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="koutliner">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect stroke-width="3" x="535" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect stroke-width="3" x="535" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/listen-before.md b/2026/info/listen-before.md
index 2870335b..79837dae 100644
--- a/2026/info/listen-before.md
+++ b/2026/info/listen-before.md
@@ -1,15 +1,15 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="listen">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect stroke-width="3" x="68" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect stroke-width="3" x="68" y="20" opacity="0.8" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
-Format: 20-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2026/current/bbb-listen.html>
+Format: 13-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2026/current/bbb-listen.html>
Etherpad: <https://pad.emacsconf.org/2026-listen>
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="2026-12-12T14:50:00Z" end="2026-12-12T15:10:00Z"><div class="conf-time">Saturday, Dec 12 2026, ~9:50 AM - 10:10 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 12 2026, ~8:50 AM - 9:10 AM CST (US/Central)<br />Saturday, Dec 12 2026, ~7:50 AM - 8:10 AM MST (US/Mountain)<br />Saturday, Dec 12 2026, ~6:50 AM - 7:10 AM PST (US/Pacific)<br />Saturday, Dec 12 2026, ~2:50 PM - 3:10 PM UTC <br />Saturday, Dec 12 2026, ~3:50 PM - 4:10 PM CET (Europe/Paris)<br />Saturday, Dec 12 2026, ~4:50 PM - 5:10 PM EET (Europe/Athens)<br />Saturday, Dec 12 2026, ~8:20 PM - 8:40 PM IST (Asia/Kolkata)<br />Saturday, Dec 12 2026, ~10:50 PM - 11:10 PM +08 (Asia/Singapore)<br />Saturday, Dec 12 2026, ~11:50 PM - 12:10 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/gen/">Find out how to watch and participate</a></strong></div>
+Status: Waiting for a caption volunteer
+<div>Times in different time zones:</div><div class="times" start="2026-12-12T14:50:00Z" end="2026-12-12T15:05:00Z"><div class="conf-time">Saturday, Dec 12 2026, ~9:50 AM - 10:05 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 12 2026, ~8:50 AM - 9:05 AM CST (US/Central)<br />Saturday, Dec 12 2026, ~7:50 AM - 8:05 AM MST (US/Mountain)<br />Saturday, Dec 12 2026, ~6:50 AM - 7:05 AM PST (US/Pacific)<br />Saturday, Dec 12 2026, ~2:50 PM - 3:05 PM UTC <br />Saturday, Dec 12 2026, ~3:50 PM - 4:05 PM CET (Europe/Paris)<br />Saturday, Dec 12 2026, ~4:50 PM - 5:05 PM EET (Europe/Athens)<br />Saturday, Dec 12 2026, ~8:20 PM - 8:35 PM IST (Asia/Kolkata)<br />Saturday, Dec 12 2026, ~10:50 PM - 11:05 PM +08 (Asia/Singapore)<br />Saturday, Dec 12 2026, ~11:50 PM - 12:05 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/gen/">Find out how to watch and participate</a></strong></div>
diff --git a/2026/info/llms-before.md b/2026/info/llms-before.md
index 27748941..fff9bbb3 100644
--- a/2026/info/llms-before.md
+++ b/2026/info/llms-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="llms">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect stroke-width="3" x="329" y="75" opacity="0.8" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect stroke-width="3" x="329" y="75" opacity="0.8" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/llms-nav.md b/2026/info/llms-nav.md
index 81e467ec..5027fad5 100644
--- a/2026/info/llms-nav.md
+++ b/2026/info/llms-nav.md
@@ -2,6 +2,6 @@
<div class="talk-nav">
Back to the [[talks]]
Previous by time: <a href="/2026/talks/dnd">DnD and Org Roam: Becoming a Better DM with Emacs</a>
-Next by time: <a href="/2026/talks/bible">bible-gateway: A Two-Edged Sword in Emacs</a>
+Next by time: <a href="/2026/talks/bible">Bible-gateway: A Two-Edged Sword in Emacs</a>
Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2026/watch/dev">Watch</a></strong>
</div>
diff --git a/2026/info/local-before.md b/2026/info/local-before.md
index d16813f1..33c43d12 100644
--- a/2026/info/local-before.md
+++ b/2026/info/local-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="local">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect stroke-width="3" x="54" y="20" opacity="0.8" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect stroke-width="3" x="54" y="20" opacity="0.8" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/ltx-talk-before.md b/2026/info/ltx-talk-before.md
index 2ca74842..bef73985 100644
--- a/2026/info/ltx-talk-before.md
+++ b/2026/info/ltx-talk-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="ltx-talk">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect stroke-width="3" x="178" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(203,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect stroke-width="3" x="171" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
@@ -9,7 +9,7 @@ Format: 20-min talk ; Q&A: BigBlueButton conference room <https://media.emacsc
Etherpad: <https://pad.emacsconf.org/2026-ltx-talk>
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="2026-12-12T16:10:00Z" end="2026-12-12T16:30:00Z"><div class="conf-time">Saturday, Dec 12 2026, ~11:10 AM - 11:30 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 12 2026, ~10:10 AM - 10:30 AM CST (US/Central)<br />Saturday, Dec 12 2026, ~9:10 AM - 9:30 AM MST (US/Mountain)<br />Saturday, Dec 12 2026, ~8:10 AM - 8:30 AM PST (US/Pacific)<br />Saturday, Dec 12 2026, ~4:10 PM - 4:30 PM UTC <br />Saturday, Dec 12 2026, ~5:10 PM - 5:30 PM CET (Europe/Paris)<br />Saturday, Dec 12 2026, ~6:10 PM - 6:30 PM EET (Europe/Athens)<br />Saturday, Dec 12 2026, ~9:40 PM - 10:00 PM IST (Asia/Kolkata)<br />Sunday, Dec 13 2026, ~12:10 AM - 12:30 AM +08 (Asia/Singapore)<br />Sunday, Dec 13 2026, ~1:10 AM - 1:30 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/gen/">Find out how to watch and participate</a></strong></div>
+<div>Times in different time zones:</div><div class="times" start="2026-12-12T16:05:00Z" end="2026-12-12T16:25:00Z"><div class="conf-time">Saturday, Dec 12 2026, ~11:05 AM - 11:25 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 12 2026, ~10:05 AM - 10:25 AM CST (US/Central)<br />Saturday, Dec 12 2026, ~9:05 AM - 9:25 AM MST (US/Mountain)<br />Saturday, Dec 12 2026, ~8:05 AM - 8:25 AM PST (US/Pacific)<br />Saturday, Dec 12 2026, ~4:05 PM - 4:25 PM UTC <br />Saturday, Dec 12 2026, ~5:05 PM - 5:25 PM CET (Europe/Paris)<br />Saturday, Dec 12 2026, ~6:05 PM - 6:25 PM EET (Europe/Athens)<br />Saturday, Dec 12 2026, ~9:35 PM - 9:55 PM IST (Asia/Kolkata)<br />Sunday, Dec 13 2026, ~12:05 AM - 12:25 AM +08 (Asia/Singapore)<br />Sunday, Dec 13 2026, ~1:05 AM - 1:25 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/gen/">Find out how to watch and participate</a></strong></div>
diff --git a/2026/info/mobile-before.md b/2026/info/mobile-before.md
index 16a7571b..e5a62733 100644
--- a/2026/info/mobile-before.md
+++ b/2026/info/mobile-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="mobile">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect stroke-width="3" x="439" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect stroke-width="3" x="439" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/os-before.md b/2026/info/os-before.md
index ad68ef74..88a58b5b 100644
--- a/2026/info/os-before.md
+++ b/2026/info/os-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="os">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect stroke-width="3" x="377" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect stroke-width="3" x="377" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/planning-before.md b/2026/info/planning-before.md
index e6c8cc95..c6776fa2 100644
--- a/2026/info/planning-before.md
+++ b/2026/info/planning-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="planning">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect stroke-width="3" x="13" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect stroke-width="3" x="13" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/plots-before.md b/2026/info/plots-before.md
index 60dd7741..dad33627 100644
--- a/2026/info/plots-before.md
+++ b/2026/info/plots-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="plots">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect stroke-width="3" x="329" y="20" opacity="0.8" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect stroke-width="3" x="329" y="20" opacity="0.8" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/portable-before.md b/2026/info/portable-before.md
index bd38fcbf..230b88ab 100644
--- a/2026/info/portable-before.md
+++ b/2026/info/portable-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="portable">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect stroke-width="3" x="329" y="75" opacity="0.8" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect stroke-width="3" x="329" y="75" opacity="0.8" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/prefix-before.md b/2026/info/prefix-before.md
index 01f391f8..c53cc3cb 100644
--- a/2026/info/prefix-before.md
+++ b/2026/info/prefix-before.md
@@ -1,14 +1,14 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="prefix">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect stroke-width="3" x="82" y="75" opacity="0.8" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect stroke-width="3" x="82" y="75" opacity="0.8" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
Format: 21-min talk ; Q&A: IRC <https://chat.emacsconf.org/?join=emacsconf>
Etherpad: <https://pad.emacsconf.org/2026-prefix>
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Being captioned
+Status: Ready to stream
<div>Times in different time zones:</div><div class="times" start="2026-12-13T15:00:00Z" end="2026-12-13T15:21:00Z"><div class="conf-time">Sunday, Dec 13 2026, ~10:00 AM - 10:21 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 13 2026, ~9:00 AM - 9:21 AM CST (US/Central)<br />Sunday, Dec 13 2026, ~8:00 AM - 8:21 AM MST (US/Mountain)<br />Sunday, Dec 13 2026, ~7:00 AM - 7:21 AM PST (US/Pacific)<br />Sunday, Dec 13 2026, ~3:00 PM - 3:21 PM UTC <br />Sunday, Dec 13 2026, ~4:00 PM - 4:21 PM CET (Europe/Paris)<br />Sunday, Dec 13 2026, ~5:00 PM - 5:21 PM EET (Europe/Athens)<br />Sunday, Dec 13 2026, ~8:30 PM - 8:51 PM IST (Asia/Kolkata)<br />Sunday, Dec 13 2026, ~11:00 PM - 11:21 PM +08 (Asia/Singapore)<br />Monday, Dec 14 2026, ~12:00 AM - 12:21 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/dev/">Find out how to watch and participate</a></strong></div>
diff --git a/2026/info/rau-before.md b/2026/info/rau-before.md
index 33940874..621f5f89 100644
--- a/2026/info/rau-before.md
+++ b/2026/info/rau-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="rau">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect stroke-width="3" x="123" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect stroke-width="3" x="123" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/remoto-before.md b/2026/info/remoto-before.md
index a2c85652..eb084b5e 100644
--- a/2026/info/remoto-before.md
+++ b/2026/info/remoto-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="remoto">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect stroke-width="3" x="473" y="75" opacity="0.8" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect stroke-width="3" x="473" y="75" opacity="0.8" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/sat-close-before.md b/2026/info/sat-close-before.md
index 52230278..794fb4b9 100644
--- a/2026/info/sat-close-before.md
+++ b/2026/info/sat-close-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="sat-close">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect stroke-width="3" x="645" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect stroke-width="3" x="645" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/sat-open-before.md b/2026/info/sat-open-before.md
index 87644ab1..13aa4053 100644
--- a/2026/info/sat-open-before.md
+++ b/2026/info/sat-open-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="sat-open">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect stroke-width="3" x="0" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect stroke-width="3" x="0" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/sun-close-before.md b/2026/info/sun-close-before.md
index 4e69c3e8..9ba9f507 100644
--- a/2026/info/sun-close-before.md
+++ b/2026/info/sun-close-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sun-close">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect stroke-width="3" x="624" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect stroke-width="3" x="624" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/sun-open-before.md b/2026/info/sun-open-before.md
index 657c9d7f..dc627543 100644
--- a/2026/info/sun-open-before.md
+++ b/2026/info/sun-open-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sun-open">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect stroke-width="3" x="0" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect stroke-width="3" x="0" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/svg-before.md b/2026/info/svg-before.md
index 5612a2f3..9bbda545 100644
--- a/2026/info/svg-before.md
+++ b/2026/info/svg-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="svg">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect stroke-width="3" x="439" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect stroke-width="3" x="439" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/tasks-before.md b/2026/info/tasks-before.md
index 7ecd7861..583bdda9 100644
--- a/2026/info/tasks-before.md
+++ b/2026/info/tasks-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="tasks">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect stroke-width="3" x="384" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect stroke-width="3" x="384" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="590" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/team-before.md b/2026/info/team-before.md
index 6d23b187..4c4366b3 100644
--- a/2026/info/team-before.md
+++ b/2026/info/team-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="team">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect stroke-width="3" x="137" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect stroke-width="3" x="137" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/virus-before.md b/2026/info/virus-before.md
index dee51c8b..bc262d1f 100644
--- a/2026/info/virus-before.md
+++ b/2026/info/virus-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2026-12-13. 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="virus">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect stroke-width="3" x="576" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="13" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="54" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(72,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="102" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(120,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="137" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="192" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(217,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="329" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="34" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(402,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="432" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(457,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="487" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(512,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="542" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(567,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="583" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(594,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="624" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(635,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="82" y="75" opacity="0.5" width="28" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(108,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="123" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(148,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="178" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(203,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="329" y="75" opacity="0.5" width="82" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="439" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="480" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect stroke-width="3" x="576" y="75" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
diff --git a/2026/info/writing-before.md b/2026/info/writing-before.md
index 6f1ed6cd..ca9ad434 100644
--- a/2026/info/writing-before.md
+++ b/2026/info/writing-before.md
@@ -1,14 +1,14 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sat 2026-12-12. 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="writing">
-<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 data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(93,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="123" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="178" y="20" opacity="0.5" width="27" height="54" 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)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect stroke-width="3" x="590" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.5" width="13" height="54" 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="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="13" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(38,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="68" y="20" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(86,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="116" y="20" opacity="0.5" width="41" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(155,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="171" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(196,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="329" y="20" opacity="0.5" width="27" height="54" 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)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="384" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(409,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="439" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(450,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="480" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(505,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(560,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect stroke-width="3" x="590" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(615,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="645" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(656,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="82" y="75" opacity="0.5" width="116" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="329" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(347,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="377" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(402,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="432" y="75" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(443,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="473" y="75" opacity="0.5" width="20" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(491,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="521" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(546,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="576" y="75" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(601,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg>
</div>
[[!toc ]]
Format: 20-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2026/current/bbb-writing.html>
Etherpad: <https://pad.emacsconf.org/2026-writing>
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for video from speaker
+Status: Waiting for a caption volunteer
<div>Times in different time zones:</div><div class="times" start="2026-12-12T21:10:00Z" end="2026-12-12T21:30:00Z"><div class="conf-time">Saturday, Dec 12 2026, ~4:10 PM - 4:30 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 12 2026, ~3:10 PM - 3:30 PM CST (US/Central)<br />Saturday, Dec 12 2026, ~2:10 PM - 2:30 PM MST (US/Mountain)<br />Saturday, Dec 12 2026, ~1:10 PM - 1:30 PM PST (US/Pacific)<br />Saturday, Dec 12 2026, ~9:10 PM - 9:30 PM UTC <br />Saturday, Dec 12 2026, ~10:10 PM - 10:30 PM CET (Europe/Paris)<br />Saturday, Dec 12 2026, ~11:10 PM - 11:30 PM EET (Europe/Athens)<br />Sunday, Dec 13 2026, ~2:40 AM - 3:00 AM IST (Asia/Kolkata)<br />Sunday, Dec 13 2026, ~5:10 AM - 5:30 AM +08 (Asia/Singapore)<br />Sunday, Dec 13 2026, ~6:10 AM - 6:30 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/gen/">Find out how to watch and participate</a></strong></div>
diff --git a/2026/organizers-notebook.md b/2026/organizers-notebook.md
index 0d954879..a4a02f11 100644
--- a/2026/organizers-notebook.md
+++ b/2026/organizers-notebook.md
@@ -282,7 +282,7 @@ interests you!
If you have Javascript enabled, times will be translated into your local time.
-<svg width="500" height="700" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="vertical"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday Dec 12 (-0500)</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="20" x="3">Saturday Dec 12 (-0500)</text><a href="https://emacsconf.org/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="70" y="30" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,40)"><text fill="black" x="0" y="0" font-size="10">sat-open</text></g></a><a href="https://emacsconf.org/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="70" y="42" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,65)"><text fill="black" x="0" y="0" font-size="10">planning</text></g></a><a href="https://emacsconf.org/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="70" y="92" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,115)"><text fill="black" x="0" y="0" font-size="10">listen</text></g></a><a href="https://emacsconf.org/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="70" y="142" opacity="0.8" width="54" height="37" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,177)"><text fill="black" x="0" y="0" font-size="10">emacspeak</text></g></a><a href="https://emacsconf.org/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="70" y="193" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,216)"><text fill="black" x="0" y="0" font-size="10">ltx-talk</text></g></a><a href="https://emacsconf.org/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="70" y="331" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,354)"><text fill="black" x="0" y="0" font-size="10">plots</text></g></a><a href="https://emacsconf.org/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="70" y="381" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,404)"><text fill="black" x="0" y="0" font-size="10">tasks</text></g></a><a href="https://emacsconf.org/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="70" y="431" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,441)"><text fill="black" x="0" y="0" font-size="10">mobile</text></g></a><a href="https://emacsconf.org/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="70" y="469" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,492)"><text fill="black" x="0" y="0" font-size="10">hyperbole</text></g></a><a href="https://emacsconf.org/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="70" y="519" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,542)"><text fill="black" x="0" y="0" font-size="10">koutliner</text></g></a><a href="https://emacsconf.org/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="70" y="569" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,592)"><text fill="black" x="0" y="0" font-size="10">writing</text></g></a><a href="https://emacsconf.org/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="70" y="619" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,629)"><text fill="black" x="0" y="0" font-size="10">sat-close</text></g></a><a href="https://emacsconf.org/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="125" y="105" opacity="0.8" width="54" height="106" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,209)"><text fill="black" x="0" y="0" font-size="10">community</text></g></a><a href="https://emacsconf.org/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="125" y="331" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,347)"><text fill="black" x="0" y="0" font-size="10">portable</text></g></a><a href="https://emacsconf.org/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="125" y="375" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,398)"><text fill="black" x="0" y="0" font-size="10">os</text></g></a><a href="https://emacsconf.org/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="125" y="425" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,435)"><text fill="black" x="0" y="0" font-size="10">cadet</text></g></a><a href="https://emacsconf.org/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="125" y="462" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,478)"><text fill="black" x="0" y="0" font-size="10">remoto</text></g></a><a href="https://emacsconf.org/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="125" y="506" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,529)"><text fill="black" x="0" y="0" font-size="10">guile</text></g></a><a href="https://emacsconf.org/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="125" y="557" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,580)"><text fill="black" x="0" y="0" font-size="10">ffs</text></g></a><g transform="translate(0,30)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">9 AM EST</text></g><g transform="translate(0,105)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">10 AM EST</text></g><g transform="translate(0,180)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">11 AM EST</text></g><g transform="translate(0,255)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">12 PM EST</text></g><g transform="translate(0,331)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">1 PM EST</text></g><g transform="translate(0,406)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">2 PM EST</text></g><g transform="translate(0,481)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">3 PM EST</text></g><g transform="translate(0,557)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">4 PM EST</text></g><g transform="translate(0,632)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">5 PM EST</text></g></g><g transform="translate(250,0)"><title>Schedule for Sunday Dec 13 (-0500)</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="20" x="3">Sunday Dec 13 (-0500)</text><a href="https://emacsconf.org/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="70" y="30" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,40)"><text fill="black" x="0" y="0" font-size="10">sun-open</text></g></a><a href="https://emacsconf.org/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="70" y="42" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,52)"><text fill="black" x="0" y="0" font-size="10">bone</text></g></a><a href="https://emacsconf.org/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="70" y="80" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,96)"><text fill="black" x="0" y="0" font-size="10">local</text></g></a><a href="https://emacsconf.org/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="70" y="124" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect><g transform="translate(70,140)"><text fill="black" x="0" y="0" font-size="10">hutch</text></g></a><a href="https://emacsconf.org/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="70" y="155" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,178)"><text fill="black" x="0" y="0" font-size="10">team</text></g></a><a href="https://emacsconf.org/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="70" y="205" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,228)"><text fill="black" x="0" y="0" font-size="10">compile</text></g></a><a href="https://emacsconf.org/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="70" y="331" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(70,354)"><text fill="black" x="0" y="0" font-size="10">dnd</text></g></a><a href="https://emacsconf.org/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="70" y="368" opacity="0.8" width="54" height="31" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,397)"><text fill="black" x="0" y="0" font-size="10">bible</text></g></a><a href="https://emacsconf.org/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="70" y="425" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,448)"><text fill="black" x="0" y="0" font-size="10">ghostel</text></g></a><a href="https://emacsconf.org/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="70" y="475" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,498)"><text fill="black" x="0" y="0" font-size="10">align</text></g></a><a href="https://emacsconf.org/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="70" y="525" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(70,548)"><text fill="black" x="0" y="0" font-size="10">anju</text></g></a><a href="https://emacsconf.org/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="70" y="563" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,573)"><text fill="black" x="0" y="0" font-size="10">android</text></g></a><a href="https://emacsconf.org/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="70" y="600" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,610)"><text fill="black" x="0" y="0" font-size="10">sun-close</text></g></a><a href="https://emacsconf.org/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="125" y="105" opacity="0.8" width="54" height="26" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(125,129)"><text fill="black" x="0" y="0" font-size="10">prefix</text></g></a><a href="https://emacsconf.org/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="125" y="142" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(125,165)"><text fill="black" x="0" y="0" font-size="10">rau</text></g></a><a href="https://emacsconf.org/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="125" y="193" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(125,216)"><text fill="black" x="0" y="0" font-size="10">el-gpu</text></g></a><a href="https://emacsconf.org/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="125" y="331" opacity="0.8" width="54" height="75" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,404)"><text fill="black" x="0" y="0" font-size="10">llms</text></g></a><a href="https://emacsconf.org/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="125" y="431" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(125,454)"><text fill="black" x="0" y="0" font-size="10">svg</text></g></a><a href="https://emacsconf.org/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="125" y="469" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,479)"><text fill="black" x="0" y="0" font-size="10">babel</text></g></a><a href="https://emacsconf.org/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="125" y="506" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,529)"><text fill="black" x="0" y="0" font-size="10">ancient</text></g></a><a href="https://emacsconf.org/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="125" y="557" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,580)"><text fill="black" x="0" y="0" font-size="10">virus</text></g></a><g transform="translate(0,30)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">9 AM EST</text></g><g transform="translate(0,105)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">10 AM EST</text></g><g transform="translate(0,180)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">11 AM EST</text></g><g transform="translate(0,255)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">12 PM EST</text></g><g transform="translate(0,331)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">1 PM EST</text></g><g transform="translate(0,406)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">2 PM EST</text></g><g transform="translate(0,481)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">3 PM EST</text></g><g transform="translate(0,557)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">4 PM EST</text></g><g transform="translate(0,632)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">5 PM EST</text></g></g></svg>
+<svg width="500" height="700" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="vertical"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday Dec 12 (-0500)</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="20" x="3">Saturday Dec 12 (-0500)</text><a href="https://emacsconf.org/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="70" y="30" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,40)"><text fill="black" x="0" y="0" font-size="10">sat-open</text></g></a><a href="https://emacsconf.org/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="70" y="42" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,65)"><text fill="black" x="0" y="0" font-size="10">planning</text></g></a><a href="https://emacsconf.org/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="70" y="92" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,108)"><text fill="black" x="0" y="0" font-size="10">listen</text></g></a><a href="https://emacsconf.org/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="70" y="136" opacity="0.8" width="54" height="37" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,171)"><text fill="black" x="0" y="0" font-size="10">emacspeak</text></g></a><a href="https://emacsconf.org/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="70" y="193" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,216)"><text fill="black" x="0" y="0" font-size="10">ltx-talk</text></g></a><a href="https://emacsconf.org/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="70" y="331" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,354)"><text fill="black" x="0" y="0" font-size="10">plots</text></g></a><a href="https://emacsconf.org/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="70" y="381" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,404)"><text fill="black" x="0" y="0" font-size="10">tasks</text></g></a><a href="https://emacsconf.org/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="70" y="431" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,441)"><text fill="black" x="0" y="0" font-size="10">mobile</text></g></a><a href="https://emacsconf.org/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="70" y="469" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,492)"><text fill="black" x="0" y="0" font-size="10">hyperbole</text></g></a><a href="https://emacsconf.org/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="70" y="519" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,542)"><text fill="black" x="0" y="0" font-size="10">koutliner</text></g></a><a href="https://emacsconf.org/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="70" y="569" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,592)"><text fill="black" x="0" y="0" font-size="10">writing</text></g></a><a href="https://emacsconf.org/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="70" y="619" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,629)"><text fill="black" x="0" y="0" font-size="10">sat-close</text></g></a><a href="https://emacsconf.org/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="125" y="105" opacity="0.8" width="54" height="106" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,209)"><text fill="black" x="0" y="0" font-size="10">community</text></g></a><a href="https://emacsconf.org/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="125" y="331" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,347)"><text fill="black" x="0" y="0" font-size="10">portable</text></g></a><a href="https://emacsconf.org/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="125" y="375" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,398)"><text fill="black" x="0" y="0" font-size="10">os</text></g></a><a href="https://emacsconf.org/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="125" y="425" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,435)"><text fill="black" x="0" y="0" font-size="10">cadet</text></g></a><a href="https://emacsconf.org/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="125" y="462" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,478)"><text fill="black" x="0" y="0" font-size="10">remoto</text></g></a><a href="https://emacsconf.org/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="125" y="506" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,529)"><text fill="black" x="0" y="0" font-size="10">guile</text></g></a><a href="https://emacsconf.org/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="125" y="557" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,580)"><text fill="black" x="0" y="0" font-size="10">ffs</text></g></a><g transform="translate(0,30)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">9 AM EST</text></g><g transform="translate(0,105)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">10 AM EST</text></g><g transform="translate(0,180)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">11 AM EST</text></g><g transform="translate(0,255)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">12 PM EST</text></g><g transform="translate(0,331)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">1 PM EST</text></g><g transform="translate(0,406)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">2 PM EST</text></g><g transform="translate(0,481)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">3 PM EST</text></g><g transform="translate(0,557)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">4 PM EST</text></g><g transform="translate(0,632)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">5 PM EST</text></g></g><g transform="translate(250,0)"><title>Schedule for Sunday Dec 13 (-0500)</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="20" x="3">Sunday Dec 13 (-0500)</text><a href="https://emacsconf.org/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="70" y="30" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,40)"><text fill="black" x="0" y="0" font-size="10">sun-open</text></g></a><a href="https://emacsconf.org/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="70" y="42" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,52)"><text fill="black" x="0" y="0" font-size="10">bone</text></g></a><a href="https://emacsconf.org/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="70" y="80" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,96)"><text fill="black" x="0" y="0" font-size="10">local</text></g></a><a href="https://emacsconf.org/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="70" y="124" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect><g transform="translate(70,140)"><text fill="black" x="0" y="0" font-size="10">hutch</text></g></a><a href="https://emacsconf.org/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="70" y="155" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,178)"><text fill="black" x="0" y="0" font-size="10">team</text></g></a><a href="https://emacsconf.org/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="70" y="205" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,228)"><text fill="black" x="0" y="0" font-size="10">compile</text></g></a><a href="https://emacsconf.org/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="70" y="331" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(70,354)"><text fill="black" x="0" y="0" font-size="10">dnd</text></g></a><a href="https://emacsconf.org/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="70" y="368" opacity="0.8" width="54" height="31" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,397)"><text fill="black" x="0" y="0" font-size="10">bible</text></g></a><a href="https://emacsconf.org/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="70" y="425" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,448)"><text fill="black" x="0" y="0" font-size="10">ghostel</text></g></a><a href="https://emacsconf.org/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="70" y="475" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,498)"><text fill="black" x="0" y="0" font-size="10">align</text></g></a><a href="https://emacsconf.org/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="70" y="525" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(70,548)"><text fill="black" x="0" y="0" font-size="10">anju</text></g></a><a href="https://emacsconf.org/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="70" y="563" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,573)"><text fill="black" x="0" y="0" font-size="10">android</text></g></a><a href="https://emacsconf.org/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="70" y="600" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,610)"><text fill="black" x="0" y="0" font-size="10">sun-close</text></g></a><a href="https://emacsconf.org/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="125" y="105" opacity="0.8" width="54" height="26" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(125,129)"><text fill="black" x="0" y="0" font-size="10">prefix</text></g></a><a href="https://emacsconf.org/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="125" y="142" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(125,165)"><text fill="black" x="0" y="0" font-size="10">rau</text></g></a><a href="https://emacsconf.org/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="125" y="193" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(125,216)"><text fill="black" x="0" y="0" font-size="10">el-gpu</text></g></a><a href="https://emacsconf.org/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="125" y="331" opacity="0.8" width="54" height="75" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,404)"><text fill="black" x="0" y="0" font-size="10">llms</text></g></a><a href="https://emacsconf.org/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="125" y="431" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(125,454)"><text fill="black" x="0" y="0" font-size="10">svg</text></g></a><a href="https://emacsconf.org/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="125" y="469" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,479)"><text fill="black" x="0" y="0" font-size="10">babel</text></g></a><a href="https://emacsconf.org/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="125" y="506" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,529)"><text fill="black" x="0" y="0" font-size="10">ancient</text></g></a><a href="https://emacsconf.org/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="125" y="557" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,580)"><text fill="black" x="0" y="0" font-size="10">virus</text></g></a><g transform="translate(0,30)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">9 AM EST</text></g><g transform="translate(0,105)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">10 AM EST</text></g><g transform="translate(0,180)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">11 AM EST</text></g><g transform="translate(0,255)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">12 PM EST</text></g><g transform="translate(0,331)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">1 PM EST</text></g><g transform="translate(0,406)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">2 PM EST</text></g><g transform="translate(0,481)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">3 PM EST</text></g><g transform="translate(0,557)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">4 PM EST</text></g><g transform="translate(0,632)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">5 PM EST</text></g></g></svg>
Legend:
@@ -293,6 +293,7 @@ Legend:
Notes:
+- <span class="timestamp-wrapper"><time class="timestamp" datetime="2026-11-11">[2026-11-11 Wed]</time></span> Minor adjustments to stagger QA so that I can be there for the first five minutes.
- <span class="timestamp-wrapper"><time class="timestamp" datetime="2026-10-31">[2026-10-31 Sat]</time></span> Needed to move [babel](https://emacsconf.org/2026/talks/babel "Org Babel everywhere") to Sun afternoon dev track because [prefix](https://emacsconf.org/2026/talks/prefix "prefix-tab-groups") turned out a bit longer
- <span class="timestamp-wrapper"><time class="timestamp" datetime="2026-10-28">[2026-10-28 Wed]</time></span> moving [ffs](https://emacsconf.org/2026/talks/ffs "Plain text presentations in GNU Emacs with ffs") for availability reasons; now in the 4pm dev slot that [virus](https://emacsconf.org/2026/talks/virus "It's Probably Not a Virus") used to be in; moved [virus](https://emacsconf.org/2026/talks/virus "It's Probably Not a Virus") to [ghostel](https://emacsconf.org/2026/talks/ghostel "Ghost in the Shell: a libghostty powered terminal for Emacs")&rsquo;s Sun 2:20 dev time, moved ghostel to Sun 2:10 gen (former slot for [ffs](https://emacsconf.org/2026/talks/ffs "Plain text presentations in GNU Emacs with ffs"))
- <span class="timestamp-wrapper"><time class="timestamp" datetime="2026-10-25">[2026-10-25 Sun]</time></span> added [tasks](https://emacsconf.org/2026/talks/tasks "Personal task management under stress (with Org mode)") before [mobile](https://emacsconf.org/2026/talks/mobile "How I solved Org Mode's biggest mobile and collaboration problems"). I think it will flow nicely. Moved [android](https://emacsconf.org/2026/talks/android "Emacs on Android - Emacs for the next 40 years") and [ffs](https://emacsconf.org/2026/talks/ffs "Plain text presentations in GNU Emacs with ffs") to Sunday. Moved [ghostel](https://emacsconf.org/2026/talks/ghostel "Ghost in the Shell: a libghostty powered terminal for Emacs") and [svg](https://emacsconf.org/2026/talks/svg "A (sort of) REPL for learning SVG") to dev track.
@@ -628,7 +629,7 @@ AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)
Saturday Dec 12 2026
-<table id="org6a30cef">
+<table id="org9240201">
<colgroup>
@@ -716,7 +717,7 @@ Saturday Dec 12 2026
Sunday Dec 13 2026
-<table id="orgd34f142">
+<table id="orgab9132f">
<colgroup>
diff --git a/2026/organizers-notebook/index.org b/2026/organizers-notebook/index.org
index 2009d939..fe88bbde 100644
--- a/2026/organizers-notebook/index.org
+++ b/2026/organizers-notebook/index.org
@@ -244,7 +244,7 @@ If you have Javascript enabled, times will be translated into your local time.
planning ; The Emacs Planning Habits of a Questionably Effective Person
listen ; Controlling Emacs by voice using Emacslisten
emacspeak ; Multi-dimensional information processing with Emacs and Emacspeak
- ltx-talk ; >= 11:00 and <= 13:00
+ (ltx-talk :start "11:10") ; >= 11:00 and <= 13:00
(lunch :start "12:00")
plots ; <= 14:00 Plots with ROOTs
tasks
@@ -309,6 +309,7 @@ ffs ; Plain text presentations in GNU Emacs with ffs
#+RESULTS: schedule
:results:
+
:end:
#+ATTR_ORG: :width 500
@@ -323,6 +324,7 @@ Legend:
Notes:
+- [2026-11-11 Wed] Minor adjustments to stagger QA so that I can be there for the first five minutes.
- [2026-10-31 Sat] Needed to move emacsconf:babel to Sun afternoon dev track because emacsconf:prefix turned out a bit longer
- [2026-10-28 Wed] moving emacsconf:ffs for availability reasons; now in the 4pm dev slot that emacsconf:virus used to be in; moved emacsconf:virus to [[emacsconf:ghostel]]'s Sun 2:20 dev time, moved ghostel to Sun 2:10 gen (former slot for emacsconf:ffs)
- [2026-10-25 Sun] added emacsconf:tasks before emacsconf:mobile. I think it will flow nicely. Moved emacsconf:android and emacsconf:ffs to Sunday. Moved emacsconf:ghostel and emacsconf:svg to dev track.
@@ -779,7 +781,7 @@ Interested in a shift? Please e-mail [[mailto:emacsconf-org-private@gnu.org]] an
* TODO [#A] Check EmacsConf infrastructure
-SCHEDULED: <2026-11-05 Thu>
+SCHEDULED: <2026-11-09 Mon>
:PROPERTIES:
:CUSTOM_ID: check-emacsconf-infrastructure
:CREATED: [2026-05-13 Wed 11:08]
diff --git a/2026/organizers-notebook/schedule.svg b/2026/organizers-notebook/schedule.svg
index 5673bd66..9bd6d535 100644
--- a/2026/organizers-notebook/schedule.svg
+++ b/2026/organizers-notebook/schedule.svg
@@ -1 +1 @@
-<svg width="500" height="700" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="vertical"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday Dec 12 (-0500)</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="20" x="3">Saturday Dec 12 (-0500)</text><a href="https://emacsconf.org/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="70" y="30" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,40)"><text fill="black" x="0" y="0" font-size="10">sat-open</text></g></a><a href="https://emacsconf.org/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="70" y="42" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,65)"><text fill="black" x="0" y="0" font-size="10">planning</text></g></a><a href="https://emacsconf.org/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="70" y="92" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,115)"><text fill="black" x="0" y="0" font-size="10">listen</text></g></a><a href="https://emacsconf.org/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="70" y="142" opacity="0.8" width="54" height="37" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,177)"><text fill="black" x="0" y="0" font-size="10">emacspeak</text></g></a><a href="https://emacsconf.org/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="70" y="193" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,216)"><text fill="black" x="0" y="0" font-size="10">ltx-talk</text></g></a><a href="https://emacsconf.org/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="70" y="331" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,354)"><text fill="black" x="0" y="0" font-size="10">plots</text></g></a><a href="https://emacsconf.org/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="70" y="381" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,404)"><text fill="black" x="0" y="0" font-size="10">tasks</text></g></a><a href="https://emacsconf.org/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="70" y="431" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,441)"><text fill="black" x="0" y="0" font-size="10">mobile</text></g></a><a href="https://emacsconf.org/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="70" y="469" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,492)"><text fill="black" x="0" y="0" font-size="10">hyperbole</text></g></a><a href="https://emacsconf.org/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="70" y="519" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,542)"><text fill="black" x="0" y="0" font-size="10">koutliner</text></g></a><a href="https://emacsconf.org/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="70" y="569" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,592)"><text fill="black" x="0" y="0" font-size="10">writing</text></g></a><a href="https://emacsconf.org/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="70" y="619" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,629)"><text fill="black" x="0" y="0" font-size="10">sat-close</text></g></a><a href="https://emacsconf.org/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="125" y="105" opacity="0.8" width="54" height="106" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,209)"><text fill="black" x="0" y="0" font-size="10">community</text></g></a><a href="https://emacsconf.org/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="125" y="331" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,347)"><text fill="black" x="0" y="0" font-size="10">portable</text></g></a><a href="https://emacsconf.org/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="125" y="375" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,398)"><text fill="black" x="0" y="0" font-size="10">os</text></g></a><a href="https://emacsconf.org/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="125" y="425" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,435)"><text fill="black" x="0" y="0" font-size="10">cadet</text></g></a><a href="https://emacsconf.org/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="125" y="462" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,478)"><text fill="black" x="0" y="0" font-size="10">remoto</text></g></a><a href="https://emacsconf.org/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="125" y="506" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,529)"><text fill="black" x="0" y="0" font-size="10">guile</text></g></a><a href="https://emacsconf.org/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="125" y="557" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,580)"><text fill="black" x="0" y="0" font-size="10">ffs</text></g></a><g transform="translate(0,30)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">9 AM EST</text></g><g transform="translate(0,105)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">10 AM EST</text></g><g transform="translate(0,180)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">11 AM EST</text></g><g transform="translate(0,255)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">12 PM EST</text></g><g transform="translate(0,331)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">1 PM EST</text></g><g transform="translate(0,406)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">2 PM EST</text></g><g transform="translate(0,481)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">3 PM EST</text></g><g transform="translate(0,557)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">4 PM EST</text></g><g transform="translate(0,632)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">5 PM EST</text></g></g><g transform="translate(250,0)"><title>Schedule for Sunday Dec 13 (-0500)</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="20" x="3">Sunday Dec 13 (-0500)</text><a href="https://emacsconf.org/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="70" y="30" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,40)"><text fill="black" x="0" y="0" font-size="10">sun-open</text></g></a><a href="https://emacsconf.org/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="70" y="42" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,52)"><text fill="black" x="0" y="0" font-size="10">bone</text></g></a><a href="https://emacsconf.org/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="70" y="80" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,96)"><text fill="black" x="0" y="0" font-size="10">local</text></g></a><a href="https://emacsconf.org/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="70" y="124" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect><g transform="translate(70,140)"><text fill="black" x="0" y="0" font-size="10">hutch</text></g></a><a href="https://emacsconf.org/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="70" y="155" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,178)"><text fill="black" x="0" y="0" font-size="10">team</text></g></a><a href="https://emacsconf.org/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="70" y="205" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,228)"><text fill="black" x="0" y="0" font-size="10">compile</text></g></a><a href="https://emacsconf.org/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="70" y="331" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(70,354)"><text fill="black" x="0" y="0" font-size="10">dnd</text></g></a><a href="https://emacsconf.org/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="70" y="368" opacity="0.8" width="54" height="31" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,397)"><text fill="black" x="0" y="0" font-size="10">bible</text></g></a><a href="https://emacsconf.org/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="70" y="425" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,448)"><text fill="black" x="0" y="0" font-size="10">ghostel</text></g></a><a href="https://emacsconf.org/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="70" y="475" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,498)"><text fill="black" x="0" y="0" font-size="10">align</text></g></a><a href="https://emacsconf.org/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="70" y="525" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(70,548)"><text fill="black" x="0" y="0" font-size="10">anju</text></g></a><a href="https://emacsconf.org/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="70" y="563" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,573)"><text fill="black" x="0" y="0" font-size="10">android</text></g></a><a href="https://emacsconf.org/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="70" y="600" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,610)"><text fill="black" x="0" y="0" font-size="10">sun-close</text></g></a><a href="https://emacsconf.org/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="125" y="105" opacity="0.8" width="54" height="26" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(125,129)"><text fill="black" x="0" y="0" font-size="10">prefix</text></g></a><a href="https://emacsconf.org/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="125" y="142" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(125,165)"><text fill="black" x="0" y="0" font-size="10">rau</text></g></a><a href="https://emacsconf.org/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="125" y="193" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(125,216)"><text fill="black" x="0" y="0" font-size="10">el-gpu</text></g></a><a href="https://emacsconf.org/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="125" y="331" opacity="0.8" width="54" height="75" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,404)"><text fill="black" x="0" y="0" font-size="10">llms</text></g></a><a href="https://emacsconf.org/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="125" y="431" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(125,454)"><text fill="black" x="0" y="0" font-size="10">svg</text></g></a><a href="https://emacsconf.org/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="125" y="469" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,479)"><text fill="black" x="0" y="0" font-size="10">babel</text></g></a><a href="https://emacsconf.org/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="125" y="506" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,529)"><text fill="black" x="0" y="0" font-size="10">ancient</text></g></a><a href="https://emacsconf.org/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="125" y="557" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,580)"><text fill="black" x="0" y="0" font-size="10">virus</text></g></a><g transform="translate(0,30)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">9 AM EST</text></g><g transform="translate(0,105)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">10 AM EST</text></g><g transform="translate(0,180)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">11 AM EST</text></g><g transform="translate(0,255)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">12 PM EST</text></g><g transform="translate(0,331)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">1 PM EST</text></g><g transform="translate(0,406)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">2 PM EST</text></g><g transform="translate(0,481)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">3 PM EST</text></g><g transform="translate(0,557)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">4 PM EST</text></g><g transform="translate(0,632)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">5 PM EST</text></g></g></svg> \ No newline at end of file
+<svg width="500" height="700" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="vertical"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday Dec 12 (-0500)</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="20" x="3">Saturday Dec 12 (-0500)</text><a href="https://emacsconf.org/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="70" y="30" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,40)"><text fill="black" x="0" y="0" font-size="10">sat-open</text></g></a><a href="https://emacsconf.org/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="70" y="42" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,65)"><text fill="black" x="0" y="0" font-size="10">planning</text></g></a><a href="https://emacsconf.org/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="70" y="92" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,108)"><text fill="black" x="0" y="0" font-size="10">listen</text></g></a><a href="https://emacsconf.org/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="70" y="136" opacity="0.8" width="54" height="37" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,171)"><text fill="black" x="0" y="0" font-size="10">emacspeak</text></g></a><a href="https://emacsconf.org/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="70" y="193" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,216)"><text fill="black" x="0" y="0" font-size="10">ltx-talk</text></g></a><a href="https://emacsconf.org/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="70" y="331" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,354)"><text fill="black" x="0" y="0" font-size="10">plots</text></g></a><a href="https://emacsconf.org/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="70" y="381" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,404)"><text fill="black" x="0" y="0" font-size="10">tasks</text></g></a><a href="https://emacsconf.org/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="70" y="431" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,441)"><text fill="black" x="0" y="0" font-size="10">mobile</text></g></a><a href="https://emacsconf.org/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="70" y="469" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,492)"><text fill="black" x="0" y="0" font-size="10">hyperbole</text></g></a><a href="https://emacsconf.org/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="70" y="519" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,542)"><text fill="black" x="0" y="0" font-size="10">koutliner</text></g></a><a href="https://emacsconf.org/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="70" y="569" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,592)"><text fill="black" x="0" y="0" font-size="10">writing</text></g></a><a href="https://emacsconf.org/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="70" y="619" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,629)"><text fill="black" x="0" y="0" font-size="10">sat-close</text></g></a><a href="https://emacsconf.org/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="125" y="105" opacity="0.8" width="54" height="106" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,209)"><text fill="black" x="0" y="0" font-size="10">community</text></g></a><a href="https://emacsconf.org/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="125" y="331" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,347)"><text fill="black" x="0" y="0" font-size="10">portable</text></g></a><a href="https://emacsconf.org/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="125" y="375" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,398)"><text fill="black" x="0" y="0" font-size="10">os</text></g></a><a href="https://emacsconf.org/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="125" y="425" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,435)"><text fill="black" x="0" y="0" font-size="10">cadet</text></g></a><a href="https://emacsconf.org/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="125" y="462" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,478)"><text fill="black" x="0" y="0" font-size="10">remoto</text></g></a><a href="https://emacsconf.org/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="125" y="506" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,529)"><text fill="black" x="0" y="0" font-size="10">guile</text></g></a><a href="https://emacsconf.org/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="125" y="557" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,580)"><text fill="black" x="0" y="0" font-size="10">ffs</text></g></a><g transform="translate(0,30)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">9 AM EST</text></g><g transform="translate(0,105)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">10 AM EST</text></g><g transform="translate(0,180)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">11 AM EST</text></g><g transform="translate(0,255)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">12 PM EST</text></g><g transform="translate(0,331)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">1 PM EST</text></g><g transform="translate(0,406)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">2 PM EST</text></g><g transform="translate(0,481)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">3 PM EST</text></g><g transform="translate(0,557)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">4 PM EST</text></g><g transform="translate(0,632)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">5 PM EST</text></g></g><g transform="translate(250,0)"><title>Schedule for Sunday Dec 13 (-0500)</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="20" x="3">Sunday Dec 13 (-0500)</text><a href="https://emacsconf.org/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="70" y="30" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(70,40)"><text fill="black" x="0" y="0" font-size="10">sun-open</text></g></a><a href="https://emacsconf.org/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="70" y="42" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,52)"><text fill="black" x="0" y="0" font-size="10">bone</text></g></a><a href="https://emacsconf.org/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="70" y="80" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(70,96)"><text fill="black" x="0" y="0" font-size="10">local</text></g></a><a href="https://emacsconf.org/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="70" y="124" opacity="0.8" width="54" height="18" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect><g transform="translate(70,140)"><text fill="black" x="0" y="0" font-size="10">hutch</text></g></a><a href="https://emacsconf.org/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="70" y="155" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,178)"><text fill="black" x="0" y="0" font-size="10">team</text></g></a><a href="https://emacsconf.org/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="70" y="205" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,228)"><text fill="black" x="0" y="0" font-size="10">compile</text></g></a><a href="https://emacsconf.org/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="70" y="331" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(70,354)"><text fill="black" x="0" y="0" font-size="10">dnd</text></g></a><a href="https://emacsconf.org/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="70" y="368" opacity="0.8" width="54" height="31" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,397)"><text fill="black" x="0" y="0" font-size="10">bible</text></g></a><a href="https://emacsconf.org/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="70" y="425" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(70,448)"><text fill="black" x="0" y="0" font-size="10">ghostel</text></g></a><a href="https://emacsconf.org/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="70" y="475" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,498)"><text fill="black" x="0" y="0" font-size="10">align</text></g></a><a href="https://emacsconf.org/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="70" y="525" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(70,548)"><text fill="black" x="0" y="0" font-size="10">anju</text></g></a><a href="https://emacsconf.org/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="70" y="563" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,573)"><text fill="black" x="0" y="0" font-size="10">android</text></g></a><a href="https://emacsconf.org/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="70" y="600" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(70,610)"><text fill="black" x="0" y="0" font-size="10">sun-close</text></g></a><a href="https://emacsconf.org/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="125" y="105" opacity="0.8" width="54" height="26" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(125,129)"><text fill="black" x="0" y="0" font-size="10">prefix</text></g></a><a href="https://emacsconf.org/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="125" y="142" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(125,165)"><text fill="black" x="0" y="0" font-size="10">rau</text></g></a><a href="https://emacsconf.org/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="125" y="193" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(125,216)"><text fill="black" x="0" y="0" font-size="10">el-gpu</text></g></a><a href="https://emacsconf.org/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="125" y="331" opacity="0.8" width="54" height="75" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,404)"><text fill="black" x="0" y="0" font-size="10">llms</text></g></a><a href="https://emacsconf.org/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="125" y="431" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(125,454)"><text fill="black" x="0" y="0" font-size="10">svg</text></g></a><a href="https://emacsconf.org/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="125" y="469" opacity="0.8" width="54" height="12" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,479)"><text fill="black" x="0" y="0" font-size="10">babel</text></g></a><a href="https://emacsconf.org/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="125" y="506" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,529)"><text fill="black" x="0" y="0" font-size="10">ancient</text></g></a><a href="https://emacsconf.org/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="125" y="557" opacity="0.8" width="54" height="25" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,580)"><text fill="black" x="0" y="0" font-size="10">virus</text></g></a><g transform="translate(0,30)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">9 AM EST</text></g><g transform="translate(0,105)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">10 AM EST</text></g><g transform="translate(0,180)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">11 AM EST</text></g><g transform="translate(0,255)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">12 PM EST</text></g><g transform="translate(0,331)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">1 PM EST</text></g><g transform="translate(0,406)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">2 PM EST</text></g><g transform="translate(0,481)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">3 PM EST</text></g><g transform="translate(0,557)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">4 PM EST</text></g><g transform="translate(0,632)"><line stroke="darkgray" x1="70" y1="0" x2="180" y2="0"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="3" class="hour-label" font-size="10" y="5" dy=".4em">5 PM EST</text></g></g></svg> \ No newline at end of file
diff --git a/2026/schedule-2026-12-12.md b/2026/schedule-2026-12-12.md
index 43ef0920..00aafdb6 100644
--- a/2026/schedule-2026-12-12.md
+++ b/2026/schedule-2026-12-12.md
@@ -1 +1 @@
-<div class="schedule-svg-container"><svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="15" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(44,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="78" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(107,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="141" y="20" opacity="0.8" width="47" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(186,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="203" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(232,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="376" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(405,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="439" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(468,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="501" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(514,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="549" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(578,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="611" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(640,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="674" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(703,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="737" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(750,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="94" y="75" opacity="0.8" width="133" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(225,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="376" y="75" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(397,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="431" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(460,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="494" y="75" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(507,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="541" y="75" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(562,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="596" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(625,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="658" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(687,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg></div> \ No newline at end of file
+<div class="schedule-svg-container"><svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="15" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(44,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="78" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(99,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="133" y="20" opacity="0.8" width="47" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(178,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="196" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(225,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="376" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(405,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="439" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(468,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="501" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(514,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="549" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(578,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="611" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(640,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="674" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(703,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="737" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(750,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="94" y="75" opacity="0.8" width="133" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(225,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="376" y="75" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(397,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="431" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(460,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="494" y="75" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(507,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="541" y="75" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(562,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="596" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(625,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="658" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(687,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg></div> \ No newline at end of file
diff --git a/2026/schedule-2026-12-13.md b/2026/schedule-2026-12-13.md
index 76cd4081..a56a7842 100644
--- a/2026/schedule-2026-12-13.md
+++ b/2026/schedule-2026-12-13.md
@@ -1 +1 @@
-<div class="schedule-svg-container"><svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="15" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(28,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="62" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(83,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="117" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(138,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="156" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(185,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="219" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(248,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="376" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(405,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="423" y="20" opacity="0.8" width="39" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(460,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="494" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(523,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="556" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(585,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="619" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(648,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="666" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(679,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="713" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(726,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="94" y="75" opacity="0.8" width="32" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(124,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="141" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(170,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="203" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(232,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="376" y="75" opacity="0.8" width="94" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(468,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="501" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(530,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="549" y="75" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(562,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="596" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(625,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="658" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(687,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg></div> \ No newline at end of file
+<div class="schedule-svg-container"><svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="15" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(28,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="62" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(83,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="117" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(138,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="156" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(185,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="219" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(248,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="376" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(405,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="423" y="20" opacity="0.8" width="39" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(460,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="494" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(523,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="556" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(585,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="619" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(648,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="666" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(679,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="713" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(726,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="94" y="75" opacity="0.8" width="32" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(124,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="141" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(170,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="203" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(232,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="376" y="75" opacity="0.8" width="94" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(468,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="501" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(530,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="549" y="75" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(562,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="596" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(625,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="658" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(687,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></svg></div> \ No newline at end of file
diff --git a/2026/schedule-details.md b/2026/schedule-details.md
index f241081d..a92c50af 100644
--- a/2026/schedule-details.md
+++ b/2026/schedule-details.md
@@ -7,16 +7,16 @@ The conference is from ~9:00 AM - 5:00 PM EST (US/Eastern) / ~8:00 AM - 4:00 PM
You can also get this schedule as iCalendar files: <a href="https://media.emacsconf.org/2026/emacsconf.ics">emacsconf.ics</a> - <a href="https://media.emacsconf.org/2026/emacsconf-gen.ics">emacsconf-gen.ics</a> - <a href="https://media.emacsconf.org/2026/emacsconf-dev.ics">emacsconf-dev.ics</a>. Importing that into your calendar should translate things into your local time zone. Alternatively, you can use these time-zone-translated Org files: <https://media.emacsconf.org/2026/schedules/>
Jump to: <a href="#date-2026-12-12">Sat Dec 12</a> - <a href="#date-2026-12-13">Sun Dec 13</a><a name="date-2026-12-12"></a>
-# Saturday Dec 12, 2026
+# Saturday Dec 12, 2026 (19 talks)
[[!inline pages="internal(2026/schedule-2026-12-12)" raw="yes"]]
<div class="schedule" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T22:30:00+0000" data-tracks="General,Development">
[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2026-sat-open">Etherpad</a>""" startutc="""2026-12-12T14:00:00+0000""" endutc="""2026-12-12T14:10:00+0000""" start="""9:00""" end="""9:10 EST""" title="""Saturday opening remarks""" url="""/2026/talks/sat-open""" speakers="""Sacha Chua""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""sat-open""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-planning.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-planning""" startutc="""2026-12-12T14:10:00+0000""" endutc="""2026-12-12T14:30:00+0000""" start="""9:10""" end="""9:30 EST""" title="""The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.""" url="""/2026/talks/planning""" speakers="""George Jones""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""planning""" note="""captioned, video: 19:20"""]]
-[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-listen.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-listen""" startutc="""2026-12-12T14:50:00+0000""" endutc="""2026-12-12T15:10:00+0000""" start="""9:50""" end="""10:10 EST""" title="""Emacslisten: Controlling Emacs by voice""" url="""/2026/talks/listen""" speakers="""Erik Präntare""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""listen""" note=""""""]]
-[[!template id=sched time="""85""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-community.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-community""" startutc="""2026-12-12T15:00:00+0000""" endutc="""2026-12-12T16:25:00+0000""" start="""10:00""" end="""11:25 EST""" title="""[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth""" url="""/2026/talks/community""" speakers="""Participants""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""community""" note="""video: 1:22:50"""]]
-[[!template id=sched time="""30""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf</a>""" pad="""https://pad.emacsconf.org/2026-emacspeak""" startutc="""2026-12-12T15:30:00+0000""" endutc="""2026-12-12T16:00:00+0000""" start="""10:30""" end="""11:00 EST""" title="""Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective""" url="""/2026/talks/emacspeak""" speakers="""Arkadiusz""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""emacspeak""" note=""""""]]
-[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-ltx-talk.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-ltx-talk""" startutc="""2026-12-12T16:10:00+0000""" endutc="""2026-12-12T16:30:00+0000""" start="""11:10""" end="""11:30 EST""" title="""ltx-talk: Accessible presentations with ox-beamer""" url="""/2026/talks/ltx-talk""" speakers="""Pedro A. Aranda and Roger Schürch""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""ltx-talk""" note=""""""]]
+[[!template id=sched time="""15""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-listen.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-listen""" startutc="""2026-12-12T14:50:00+0000""" endutc="""2026-12-12T15:05:00+0000""" start="""9:50""" end="""10:05 EST""" title="""Emacslisten: Controlling Emacs by voice""" url="""/2026/talks/listen""" speakers="""Erik Präntare""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""listen""" note="""video: 12:53"""]]
+[[!template id=sched time="""85""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-community.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-community""" startutc="""2026-12-12T15:00:00+0000""" endutc="""2026-12-12T16:25:00+0000""" start="""10:00""" end="""11:25 EST""" title="""[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth""" url="""/2026/talks/community""" speakers="""Participants""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""community""" note="""captioned, video: 1:22:50"""]]
+[[!template id=sched time="""30""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf</a>""" pad="""https://pad.emacsconf.org/2026-emacspeak""" startutc="""2026-12-12T15:25:00+0000""" endutc="""2026-12-12T15:55:00+0000""" start="""10:25""" end="""10:55 EST""" title="""Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective""" url="""/2026/talks/emacspeak""" speakers="""Arkadiusz""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""emacspeak""" note=""""""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-ltx-talk.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-ltx-talk""" startutc="""2026-12-12T16:05:00+0000""" endutc="""2026-12-12T16:25:00+0000""" start="""11:05""" end="""11:25 EST""" title="""ltx-talk: Accessible presentations with ox-beamer""" url="""/2026/talks/ltx-talk""" speakers="""Pedro A. Aranda and Roger Schürch""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""ltx-talk""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-plots.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-plots""" startutc="""2026-12-12T18:00:00+0000""" endutc="""2026-12-12T18:20:00+0000""" start="""1:00""" end="""1:20 EST""" title="""Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot""" url="""/2026/talks/plots""" speakers="""Lukas C. Bossert""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""plots""" note="""video: 19:58"""]]
[[!template id=sched time="""15""" q-and-a="""""" pad="""https://pad.emacsconf.org/2026-portable""" startutc="""2026-12-12T18:00:00+0000""" endutc="""2026-12-12T18:15:00+0000""" start="""1:00""" end="""1:15 EST""" title="""Emacs as my portable user space across operating platforms""" url="""/2026/talks/portable""" speakers="""Mohammed Ismail Ansari (myTerminal)""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""portable""" note="""captioned, video: 11:32"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-os.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-os""" startutc="""2026-12-12T18:35:00+0000""" endutc="""2026-12-12T18:55:00+0000""" start="""1:35""" end="""1:55 EST""" title="""Emacs everywhere: A fun romp through esoteric operating systems""" url="""/2026/talks/os""" speakers="""Aaron Grothe""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""os""" note=""""""]]
@@ -28,11 +28,11 @@ Jump to: <a href="#date-2026-12-12">Sat Dec 12</a> - <a href="#date-2026-12-13">
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-guile.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-guile""" startutc="""2026-12-12T20:20:00+0000""" endutc="""2026-12-12T20:40:00+0000""" start="""3:20""" end="""3:40 EST""" title="""æmacs: having a hoot with a guile emacs""" url="""/2026/talks/guile""" speakers="""Akira Kyle""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""guile""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-koutliner.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-koutliner""" startutc="""2026-12-12T20:30:00+0000""" endutc="""2026-12-12T20:50:00+0000""" start="""3:30""" end="""3:50 EST""" title="""Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs""" url="""/2026/talks/koutliner""" speakers="""Bob Weiner""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""koutliner""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-ffs.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-ffs""" startutc="""2026-12-12T21:00:00+0000""" endutc="""2026-12-12T21:20:00+0000""" start="""4:00""" end="""4:20 EST""" title="""Plain text presentations in GNU Emacs with ffs""" url="""/2026/talks/ffs""" speakers="""Amin Bandali""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""ffs""" note=""""""]]
-[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-writing.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-writing""" startutc="""2026-12-12T21:10:00+0000""" endutc="""2026-12-12T21:30:00+0000""" start="""4:10""" end="""4:30 EST""" title="""Close the writing accountability gap with Emacs""" url="""/2026/talks/writing""" speakers="""Blaine Mooers""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""writing""" note=""""""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-writing.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-writing""" startutc="""2026-12-12T21:10:00+0000""" endutc="""2026-12-12T21:30:00+0000""" start="""4:10""" end="""4:30 EST""" title="""Close the writing accountability gap with Emacs""" url="""/2026/talks/writing""" speakers="""Blaine Mooers""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""writing""" note="""video: 19:53"""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-sat-close.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-sat-close""" startutc="""2026-12-12T21:50:00+0000""" endutc="""2026-12-12T22:00:00+0000""" start="""4:50""" end="""5:00 EST""" title="""Saturday closing remarks / open session""" url="""/2026/talks/sat-close""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""sat-close""" note=""""""]]</div>
Jump to: <a href="#date-2026-12-12">Sat Dec 12</a> - <a href="#date-2026-12-13">Sun Dec 13</a><a name="date-2026-12-13"></a>
-# Sunday Dec 13, 2026
+# Sunday Dec 13, 2026 (21 talks)
[[!inline pages="internal(2026/schedule-2026-12-13)" raw="yes"]]
<div class="schedule" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T22:30:00+0000" data-tracks="General,Development">
@@ -47,9 +47,9 @@ Jump to: <a href="#date-2026-12-12">Sat Dec 12</a> - <a href="#date-2026-12-13">
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-compile.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-compile""" startutc="""2026-12-13T16:20:00+0000""" endutc="""2026-12-13T16:40:00+0000""" start="""11:20""" end="""11:40 EST""" title="""Beyond shell history: Saving compilation output in Emacs""" url="""/2026/talks/compile""" speakers="""Jonathan Otsuka""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""compile""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2026-dnd""" startutc="""2026-12-13T18:00:00+0000""" endutc="""2026-12-13T18:20:00+0000""" start="""1:00""" end="""1:20 EST""" title="""DnD and Org Roam: Becoming a Better DM with Emacs""" url="""/2026/talks/dnd""" speakers="""James R. Stoup""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""dnd""" note="""captioned, video: 19:17"""]]
[[!template id=sched time="""60""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-llms.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-llms""" startutc="""2026-12-13T18:00:00+0000""" endutc="""2026-12-13T19:00:00+0000""" start="""1:00""" end="""2:00 EST""" title="""[Panel] Emacs, LLMs, and Free Software""" url="""/2026/talks/llms""" speakers="""Participants""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""llms""" note=""""""]]
-[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-bible.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-bible""" startutc="""2026-12-13T18:30:00+0000""" endutc="""2026-12-13T18:55:00+0000""" start="""1:30""" end="""1:55 EST""" title="""bible-gateway: A Two-Edged Sword in Emacs""" url="""/2026/talks/bible""" speakers="""Kristjon Ciko""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""bible""" note="""video: 24:55"""]]
+[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-bible.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-bible""" startutc="""2026-12-13T18:30:00+0000""" endutc="""2026-12-13T18:55:00+0000""" start="""1:30""" end="""1:55 EST""" title="""Bible-gateway: A Two-Edged Sword in Emacs""" url="""/2026/talks/bible""" speakers="""Kristjon Ciko""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""bible""" note="""video: 24:55"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-ghostel.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-ghostel""" startutc="""2026-12-13T19:15:00+0000""" endutc="""2026-12-13T19:35:00+0000""" start="""2:15""" end="""2:35 EST""" title="""Ghost in the Shell: a libghostty powered terminal for Emacs""" url="""/2026/talks/ghostel""" speakers="""Daniel Kraus""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""ghostel""" note=""""""]]
-[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf</a>""" pad="""https://pad.emacsconf.org/2026-svg""" startutc="""2026-12-13T19:20:00+0000""" endutc="""2026-12-13T19:40:00+0000""" start="""2:20""" end="""2:40 EST""" title="""A (sort of) REPL for learning SVG""" url="""/2026/talks/svg""" speakers="""Eduardo Ochs""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""svg""" note=""""""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: edrx</a>""" pad="""https://pad.emacsconf.org/2026-svg""" startutc="""2026-12-13T19:20:00+0000""" endutc="""2026-12-13T19:40:00+0000""" start="""2:20""" end="""2:40 EST""" title="""A (sort of) REPL for learning SVG""" url="""/2026/talks/svg""" speakers="""Eduardo Ochs (edrx)""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""svg""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-babel.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-babel""" startutc="""2026-12-13T19:50:00+0000""" endutc="""2026-12-13T20:00:00+0000""" start="""2:50""" end="""3:00 EST""" title="""Org Babel everywhere""" url="""/2026/talks/babel""" speakers="""George Huebner""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""babel""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-align.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-align""" startutc="""2026-12-13T19:55:00+0000""" endutc="""2026-12-13T20:15:00+0000""" start="""2:55""" end="""3:15 EST""" title="""Column-aligning text in Emacs""" url="""/2026/talks/align""" speakers="""Jeff Trull""" track="""General""" watch="""https://emacsconf.org/2026/watch/gen""" slug="""align""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2026/current/bbb-ancient.html">BBB</a>""" pad="""https://pad.emacsconf.org/2026-ancient""" startutc="""2026-12-13T20:20:00+0000""" endutc="""2026-12-13T20:40:00+0000""" start="""3:20""" end="""3:40 EST""" title="""Learning an ancient language with an ancient text editor""" url="""/2026/talks/ancient""" speakers="""Mike Hamrick""" track="""Development""" watch="""https://emacsconf.org/2026/watch/dev""" slug="""ancient""" note=""""""]]
diff --git a/2026/schedule-image.md b/2026/schedule-image.md
index 3c020afd..58f6557d 100644
--- a/2026/schedule-image.md
+++ b/2026/schedule-image.md
@@ -1 +1 @@
-<div class="schedule-svg-container"><svg width="800" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="nil"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday Dec 12 (-0500)</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday Dec 12 (-0500)</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="15" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(44,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:10:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:10 Emacslisten: Controlling Emacs by voice</title><rect x="78" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(107,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:30:00+0000" data-end="2026-12-12T16:00:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="141" y="20" opacity="0.8" width="47" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(186,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:10:00+0000" data-end="2026-12-12T16:30:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:10-11:30 ltx-talk: Accessible presentations with ox-beamer</title><rect x="203" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(232,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="376" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(405,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="439" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(468,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="501" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(514,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="549" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(578,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="611" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(640,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="674" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(703,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="737" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(750,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="94" y="75" opacity="0.8" width="133" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(225,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="376" y="75" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(397,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="431" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(460,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="494" y="75" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(507,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="541" y="75" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(562,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="596" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(625,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="658" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(687,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></g><g transform="translate(0,150)"><title>Schedule for Sunday Dec 13 (-0500)</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday Dec 13 (-0500)</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="15" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(28,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="62" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(83,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="117" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(138,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="156" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(185,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="219" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(248,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="376" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(405,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="423" y="20" opacity="0.8" width="39" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(460,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="494" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(523,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="556" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(585,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="619" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(648,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="666" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(679,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="713" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(726,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="94" y="75" opacity="0.8" width="32" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(124,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="141" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(170,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="203" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(232,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="376" y="75" opacity="0.8" width="94" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(468,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="501" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(530,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="549" y="75" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(562,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="596" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(625,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="658" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(687,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></g></svg></div> \ No newline at end of file
+<div class="schedule-svg-container"><svg width="800" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="nil"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday Dec 12 (-0500)</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-12T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Saturday Dec 12 (-0500)</text><a href="/2026/talks/sat-open" data-start="2026-12-12T14:00:00+0000" data-end="2026-12-12T14:10:00+0000" title="Saturday opening remarks" data-slug="sat-open"><title>Sat 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="/2026/talks/planning" data-start="2026-12-12T14:10:00+0000" data-end="2026-12-12T14:30:00+0000" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title>Sat 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="15" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(44,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">planning</text></g></a><a href="/2026/talks/listen" data-start="2026-12-12T14:50:00+0000" data-end="2026-12-12T15:05:00+0000" title="Emacslisten: Controlling Emacs by voice" data-slug="listen"><title>Sat 9:50-10:05 Emacslisten: Controlling Emacs by voice</title><rect x="78" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(99,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">listen</text></g></a><a href="/2026/talks/emacspeak" data-start="2026-12-12T15:25:00+0000" data-end="2026-12-12T15:55:00+0000" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>Sat 10:25-10:55 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="133" y="20" opacity="0.8" width="47" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(178,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">emacspeak</text></g></a><a href="/2026/talks/ltx-talk" data-start="2026-12-12T16:05:00+0000" data-end="2026-12-12T16:25:00+0000" title="ltx-talk: Accessible presentations with ox-beamer" data-slug="ltx-talk"><title>Sat 11:05-11:25 ltx-talk: Accessible presentations with ox-beamer</title><rect x="196" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(225,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ltx-talk</text></g></a><a href="/2026/talks/plots" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:20:00+0000" title="Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title>Sat 1:00- 1:20 Plots with ROOTs and SHAPEs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="376" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(405,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">plots</text></g></a><a href="/2026/talks/tasks" data-start="2026-12-12T18:40:00+0000" data-end="2026-12-12T19:00:00+0000" title="Personal task management under stress (with Org mode)" data-slug="tasks"><title>Sat 1:40- 2:00 Personal task management under stress (with Org mode)</title><rect x="439" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(468,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">tasks</text></g></a><a href="/2026/talks/mobile" data-start="2026-12-12T19:20:00+0000" data-end="2026-12-12T19:30:00+0000" title="How I solved Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title>Sat 2:20- 2:30 How I solved Org Mode's biggest mobile and collaboration problems</title><rect x="501" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(514,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">mobile</text></g></a><a href="/2026/talks/hyperbole" data-start="2026-12-12T19:50:00+0000" data-end="2026-12-12T20:10:00+0000" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title>Sat 2:50- 3:10 Hyperbole, My Dear Watson</title><rect x="549" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(578,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperbole</text></g></a><a href="/2026/talks/koutliner" data-start="2026-12-12T20:30:00+0000" data-end="2026-12-12T20:50:00+0000" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title>Sat 3:30- 3:50 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="611" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(640,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">koutliner</text></g></a><a href="/2026/talks/writing" data-start="2026-12-12T21:10:00+0000" data-end="2026-12-12T21:30:00+0000" title="Close the writing accountability gap with Emacs" data-slug="writing"><title>Sat 4:10- 4:30 Close the writing accountability gap with Emacs</title><rect x="674" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(703,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">writing</text></g></a><a href="/2026/talks/sat-close" data-start="2026-12-12T21:50:00+0000" data-end="2026-12-12T22:00:00+0000" title="Saturday closing remarks / open session" data-slug="sat-close"><title>Sat 4:50- 5:00 Saturday closing remarks / open session</title><rect x="737" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(750,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2026/talks/community" data-start="2026-12-12T15:00:00+0000" data-end="2026-12-12T16:25:00+0000" title="[Panel] Improving the Emacs Community: Onboarding, Participation, and Growth" data-slug="community"><title>Sat 10:00-11:25 [Panel] Improving the Emacs Community: Onboarding, Participation, and Growth</title><rect x="94" y="75" opacity="0.8" width="133" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(225,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">community</text></g></a><a href="/2026/talks/portable" data-start="2026-12-12T18:00:00+0000" data-end="2026-12-12T18:15:00+0000" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title>Sat 1:00- 1:15 Emacs as my portable user space across operating platforms</title><rect x="376" y="75" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(397,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">portable</text></g></a><a href="/2026/talks/os" data-start="2026-12-12T18:35:00+0000" data-end="2026-12-12T18:55:00+0000" title="Emacs everywhere: A fun romp through esoteric operating systems" data-slug="os"><title>Sat 1:35- 1:55 Emacs everywhere: A fun romp through esoteric operating systems</title><rect x="431" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(460,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">os</text></g></a><a href="/2026/talks/cadet" data-start="2026-12-12T19:15:00+0000" data-end="2026-12-12T19:25:00+0000" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title>Sat 2:15- 2:25 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="494" y="75" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(507,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">cadet</text></g></a><a href="/2026/talks/remoto" data-start="2026-12-12T19:45:00+0000" data-end="2026-12-12T20:00:00+0000" title="El Remoto: browse any GitHub repos without cloning them" data-slug="remoto"><title>Sat 2:45- 3:00 El Remoto: browse any GitHub repos without cloning them</title><rect x="541" y="75" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(562,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">remoto</text></g></a><a href="/2026/talks/guile" data-start="2026-12-12T20:20:00+0000" data-end="2026-12-12T20:40:00+0000" title="æmacs: having a hoot with a guile emacs" data-slug="guile"><title>Sat 3:20- 3:40 æmacs: having a hoot with a guile emacs</title><rect x="596" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(625,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">guile</text></g></a><a href="/2026/talks/ffs" data-start="2026-12-12T21:00:00+0000" data-end="2026-12-12T21:20:00+0000" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title>Sat 4:00- 4:20 Plain text presentations in GNU Emacs with ffs</title><rect x="658" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(687,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ffs</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-12T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></g><g transform="translate(0,150)"><title>Schedule for Sunday Dec 13 (-0500)</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text data-start="2026-12-13T14:00:00+0000" class="day-label" font-size="10" fill="black" y="17" x="3">Sunday Dec 13 (-0500)</text><a href="/2026/talks/sun-open" data-start="2026-12-13T14:00:00+0000" data-end="2026-12-13T14:10:00+0000" title="Sunday opening remarks" data-slug="sun-open"><title>Sun 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2026/talks/bone" data-start="2026-12-13T14:10:00+0000" data-end="2026-12-13T14:20:00+0000" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>Sun 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="15" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(28,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bone</text></g></a><a href="/2026/talks/local" data-start="2026-12-13T14:40:00+0000" data-end="2026-12-13T14:55:00+0000" title="Local file history possibilities in Emacs" data-slug="local"><title>Sun 9:40- 9:55 Local file history possibilities in Emacs</title><rect x="62" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(83,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">local</text></g></a><a href="/2026/talks/hutch" data-start="2026-12-13T15:15:00+0000" data-end="2026-12-13T15:30:00+0000" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>Sun 10:15-10:30 hutch: code reviews for the mildly disenfranchised</title><rect x="117" y="20" opacity="0.8" width="23" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(138,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hutch</text></g></a><a href="/2026/talks/team" data-start="2026-12-13T15:40:00+0000" data-end="2026-12-13T16:00:00+0000" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>Sun 10:40-11:00 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="156" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(185,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">team</text></g></a><a href="/2026/talks/compile" data-start="2026-12-13T16:20:00+0000" data-end="2026-12-13T16:40:00+0000" title="Beyond shell history: Saving compilation output in Emacs" data-slug="compile"><title>Sun 11:20-11:40 Beyond shell history: Saving compilation output in Emacs</title><rect x="219" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(248,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">compile</text></g></a><a href="/2026/talks/dnd" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T18:20:00+0000" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title>Sun 1:00- 1:20 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="376" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(405,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">dnd</text></g></a><a href="/2026/talks/bible" data-start="2026-12-13T18:30:00+0000" data-end="2026-12-13T18:55:00+0000" title="Bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:55 Bible-gateway: A Two-Edged Sword in Emacs</title><rect x="423" y="20" opacity="0.8" width="39" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(460,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bible</text></g></a><a href="/2026/talks/ghostel" data-start="2026-12-13T19:15:00+0000" data-end="2026-12-13T19:35:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:15- 2:35 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="494" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(523,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:55:00+0000" data-end="2026-12-13T20:15:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:55- 3:15 Column-aligning text in Emacs</title><rect x="556" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(585,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:35:00+0000" data-end="2026-12-13T20:55:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:35- 3:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="619" y="20" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(648,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">anju</text></g></a><a href="/2026/talks/android" data-start="2026-12-13T21:05:00+0000" data-end="2026-12-13T21:15:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:05- 4:15 Emacs on Android - Emacs for the next 40 years</title><rect x="666" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(679,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">android</text></g></a><a href="/2026/talks/sun-close" data-start="2026-12-13T21:35:00+0000" data-end="2026-12-13T21:45:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:35- 4:45 Sunday closing remarks</title><rect x="713" y="20" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(726,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><a href="/2026/talks/prefix" data-start="2026-12-13T15:00:00+0000" data-end="2026-12-13T15:21:00+0000" title="prefix-tab-groups" data-slug="prefix"><title>Sun 10:00-10:21 prefix-tab-groups</title><rect x="94" y="75" opacity="0.8" width="32" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(124,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">prefix</text></g></a><a href="/2026/talks/rau" data-start="2026-12-13T15:30:00+0000" data-end="2026-12-13T15:50:00+0000" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>Sun 10:30-10:50 Emacs as a Window Manager and concurrency</title><rect x="141" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(170,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">rau</text></g></a><a href="/2026/talks/el-gpu" data-start="2026-12-13T16:10:00+0000" data-end="2026-12-13T16:30:00+0000" title="El-gpu and pix-el: GNU Emacs 2D and 3D game programming" data-slug="el-gpu"><title>Sun 11:10-11:30 El-gpu and pix-el: GNU Emacs 2D and 3D game programming</title><rect x="203" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(232,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">el-gpu</text></g></a><a href="/2026/talks/llms" data-start="2026-12-13T18:00:00+0000" data-end="2026-12-13T19:00:00+0000" title="[Panel] Emacs, LLMs, and Free Software" data-slug="llms"><title>Sun 1:00- 2:00 [Panel] Emacs, LLMs, and Free Software</title><rect x="376" y="75" opacity="0.8" width="94" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(468,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llms</text></g></a><a href="/2026/talks/svg" data-start="2026-12-13T19:20:00+0000" data-end="2026-12-13T19:40:00+0000" title="A (sort of) REPL for learning SVG" data-slug="svg"><title>Sun 2:20- 2:40 A (sort of) REPL for learning SVG</title><rect x="501" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(530,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">svg</text></g></a><a href="/2026/talks/babel" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:00:00+0000" title="Org Babel everywhere" data-slug="babel"><title>Sun 2:50- 3:00 Org Babel everywhere</title><rect x="549" y="75" opacity="0.8" width="15" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(562,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">babel</text></g></a><a href="/2026/talks/ancient" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="Learning an ancient language with an ancient text editor" data-slug="ancient"><title>Sun 3:20- 3:40 Learning an ancient language with an ancient text editor</title><rect x="596" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(625,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">ancient</text></g></a><a href="/2026/talks/virus" data-start="2026-12-13T21:00:00+0000" data-end="2026-12-13T21:20:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 4:00- 4:20 It's Probably Not a Virus</title><rect x="658" y="75" opacity="0.8" width="31" height="54" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(687,128)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">virus</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T14:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">9 AM EST</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T15:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">10 AM EST</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T16:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">11 AM EST</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T17:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">12 PM EST</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T18:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">1 PM EST</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T19:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">2 PM EST</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T20:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">3 PM EST</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T21:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">4 PM EST</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text data-start="2026-12-13T22:00:00+0000" fill="black" x="0" class="hour-label" font-size="10" y="140" font-size="10" text-anchor="left">5 PM EST</text></g></g></svg></div> \ No newline at end of file
diff --git a/organizers-notebook/index.org b/organizers-notebook/index.org
index 3ed0f290..3ad8c7a1 100644
--- a/organizers-notebook/index.org
+++ b/organizers-notebook/index.org
@@ -405,7 +405,7 @@ Process:
1. update-cache on my computer.
2. elisp:emacsconf-publish-cache-video-data or elisp:emacsconf-cache-all-video-data
3. elisp:emacsconf-publish-backstage-index
-** TODO Generate assets
+** Generate assets
:PROPERTIES:
:CUSTOM_ID: phases-and-lessons-learned-generate-assets
:END:
@@ -439,6 +439,7 @@ SCHEDULED: <2027-11-05 Fri>
Regenerated
:END:
+
*** TODO Test videos
SCHEDULED: <2027-11-02 Tue>
:PROPERTIES:
@@ -486,10 +487,14 @@ CLOCK: [2025-11-21 Fri 12:58]--[2025-11-21 Fri 15:10] => 2:12
8. Use elisp:subed-record-compile
*** TODO E-mail speakers asking them to confirm the pronunciations
-SCHEDULED: <2026-11-10 Tue +1y>
+SCHEDULED: <2027-11-10 Wed +1y>
:PROPERTIES:
:CUSTOM_ID: phases-and-lessons-learned-record-pronunciations-e-mail-speakers-asking-them-to-confirm-the-pronunciations
:CREATED: [2026-11-02 Mon 07:17]
+:LAST_REPEAT: [2026-11-10 Tue 07:24]
+:END:
+:LOGBOOK:
+- State "DONE" from "TODO" [2026-11-10 Tue 07:24]
:END:
elisp:emacsconf-mail-intro-to-all
@@ -514,7 +519,15 @@ Checklist:
- [ ] Etherpad
- [ ] Mumble
- [ ] Icecast
+** Check on FSF Working Together
+:LOGBOOK:
+- Note taken on [2026-11-08 Sun 18:54] \\
+ Corwin e-mailed FSF to inquire
+:END:
+- balance
+- list of public donors
+- number of anonymous donors
** Getting ready for captions
:PROPERTIES:
:CUSTOM_ID: phases-and-lessons-learned-getting-ready-for-captions
@@ -1164,17 +1177,22 @@ After the conference:
#+begin_src sh :shebang "#!/bin/bash" :eval no :var year=(symbol-value 'emacsconf-year) :noweb yes :tangle (format "~/proj/emacsconf/%s/update-cache" emacsconf-year)
export CONF_PUBLIC=0
+echo "Copying intros"
rsync -avu ~/proj/emacsconf/$year/assets/intros/*--intro.* ~/proj/emacsconf/$year/cache/
+echo "Copying from res"
rsync -avzue ssh --exclude ffmpeg2pass\* --exclude .lock-\* --exclude 'partial--*' res:~/cache/ ~/proj/emacsconf/$year/cache/ --exclude .git
chmod ugo+r . -R
-rsync -avzue ssh --exclude ffmpeg2pass\* --exclude .lock-\* --exclude 'partial--*' res:~/cache/ ~/proj/emacsconf/$year/cache/ --exclude .git
+echo "Copying to res"
rsync -avzue ssh --exclude ffmpeg2pass\* --exclude 'partial--*' ~/proj/emacsconf/$year/cache/ res:~/cache/ $* --exclude .git
+echo "Copying to media"
rsync -avzue ssh --exclude ffmpeg2pass\* --exclude 'partial--*' ~/proj/emacsconf/$year/cache/ orga@media:/var/www/media.emacsconf.org/$year/backstage/ $* --exclude .git
+echo "Updating"
ssh orga@media "cd ~/backstage; chmod ugo+r -- *"
-if [ ! -z "$CONF_PUBLIC" ]; then
+if [ "$CONF_PUBLIC" = "1" ]; then
echo "Updating public media"
- rsync -avzue ssh --exclude \*--original\* --exclude ffmpeg2pass* --exclude \*--reencoded\* ~/proj/emacsconf/$year/cache/ orga@media:/var/www/media.emacsconf.org/$year/ 3--exclude .git
+ rsync -avzue ssh --exclude \*--original\* --exclude ffmpeg2pass* --exclude \*--reencoded\* ~/proj/emacsconf/$year/cache/ orga@media:/var/www/media.emacsconf.org/$year/ --exclude .git
fi
+
rsync -avzue ssh ~/proj/emacsconf/$year/assets/ res:~/current/assets/
#+end_src