summaryrefslogtreecommitdiffstats
path: root/2026/info
diff options
context:
space:
mode:
Diffstat (limited to '2026/info')
-rw-r--r--2026/info/align-before.md2
-rw-r--r--2026/info/align-nav.md2
-rw-r--r--2026/info/ancient-after.md7
-rw-r--r--2026/info/ancient-before.md19
-rw-r--r--2026/info/ancient-nav.md7
-rw-r--r--2026/info/android-before.md2
-rw-r--r--2026/info/android-nav.md2
-rw-r--r--2026/info/anju-before.md2
-rw-r--r--2026/info/anju-nav.md4
-rw-r--r--2026/info/babel-before.md2
-rw-r--r--2026/info/bible-before.md2
-rw-r--r--2026/info/bone-before.md2
-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/ghostel-before.md2
-rw-r--r--2026/info/hutch-before.md2
-rw-r--r--2026/info/llms-before.md2
-rw-r--r--2026/info/local-before.md2
-rw-r--r--2026/info/prefix-before.md4
-rw-r--r--2026/info/rau-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/team-before.md2
-rw-r--r--2026/info/virus-before.md4
-rw-r--r--2026/info/virus-nav.md4
27 files changed, 61 insertions, 28 deletions
diff --git a/2026/info/align-before.md b/2026/info/align-before.md
index ab96039d..ad43061b 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/align-nav.md b/2026/info/align-nav.md
index 15975667..e0a1abee 100644
--- a/2026/info/align-nav.md
+++ b/2026/info/align-nav.md
@@ -2,6 +2,6 @@
<div class="talk-nav">
Back to the [[talks]]
Previous by time: <a href="/2026/talks/babel">Org Babel everywhere</a>
-Next by time: <a href="/2026/talks/virus">It's Probably Not a Virus</a>
+Next by time: <a href="/2026/talks/ancient">Learning an ancient language with an ancient text editor</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/ancient-after.md b/2026/info/ancient-after.md
new file mode 100644
index 00000000..b87764ee
--- /dev/null
+++ b/2026/info/ancient-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [mikeh@muppetlabs.com](mailto:mikeh@muppetlabs.com?subject=Comment%20for%20EmacsConf%202023%20ancient%3A%20Learning%20an%20ancient%20language%20with%20an%20ancient%20text%20editor)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2026/info/ancient-before.md b/2026/info/ancient-before.md
new file mode 100644
index 00000000..422934c7
--- /dev/null
+++ b/2026/info/ancient-before.md
@@ -0,0 +1,19 @@
+<!-- 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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 ]]
+Format: 20-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2026/current/bbb-ancient.html> Etherpad: <https://pad.emacsconf.org/2026-ancient>
+Etherpad: <https://pad.emacsconf.org/2026-ancient>
+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-13T20:20:00Z" end="2026-12-13T20:40:00Z"><div class="conf-time">Sunday, Dec 13 2026, ~3:20 PM - 3:40 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 13 2026, ~2:20 PM - 2:40 PM CST (US/Central)<br />Sunday, Dec 13 2026, ~1:20 PM - 1:40 PM MST (US/Mountain)<br />Sunday, Dec 13 2026, ~12:20 PM - 12:40 PM PST (US/Pacific)<br />Sunday, Dec 13 2026, ~8:20 PM - 8:40 PM UTC <br />Sunday, Dec 13 2026, ~9:20 PM - 9:40 PM CET (Europe/Paris)<br />Sunday, Dec 13 2026, ~10:20 PM - 10:40 PM EET (Europe/Athens)<br />Monday, Dec 14 2026, ~1:50 AM - 2:10 AM IST (Asia/Kolkata)<br />Monday, Dec 14 2026, ~4:20 AM - 4:40 AM +08 (Asia/Singapore)<br />Monday, Dec 14 2026, ~5:20 AM - 5:40 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/dev/">Find out how to watch and participate</a></strong></div>
+
+
+
+
+
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2026/info/ancient-nav.md b/2026/info/ancient-nav.md
new file mode 100644
index 00000000..e090b2ff
--- /dev/null
+++ b/2026/info/ancient-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by time: <a href="/2026/talks/align">Column-aligning text in Emacs</a>
+Next by time: <a href="/2026/talks/anju">Revisiting Emacs Mouse Interactions with Anju</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/android-before.md b/2026/info/android-before.md
index 133e1046..bc95d4b2 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect stroke-width="3" x="576" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect stroke-width="3" x="576" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/android-nav.md b/2026/info/android-nav.md
index 58d08d1e..564d48d5 100644
--- a/2026/info/android-nav.md
+++ b/2026/info/android-nav.md
@@ -1,7 +1,7 @@
<div class="talk-nav">
Back to the [[talks]]
-Previous by time: <a href="/2026/talks/anju">Revisiting Emacs Mouse Interactions with Anju</a>
+Previous by time: <a href="/2026/talks/virus">It's Probably Not a Virus</a>
Next by time: <a href="/2026/talks/sun-close">Sunday closing remarks</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/anju-before.md b/2026/info/anju-before.md
index 962cd604..59822d92 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect stroke-width="3" x="535" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect stroke-width="3" x="535" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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-nav.md b/2026/info/anju-nav.md
index 6abf5c95..3bfa1d8f 100644
--- a/2026/info/anju-nav.md
+++ b/2026/info/anju-nav.md
@@ -1,7 +1,7 @@
<div class="talk-nav">
Back to the [[talks]]
-Previous by time: <a href="/2026/talks/virus">It's Probably Not a Virus</a>
-Next by time: <a href="/2026/talks/android">Emacs on Android - Emacs for the next 40 years</a>
+Previous by time: <a href="/2026/talks/ancient">Learning an ancient language with an ancient text editor</a>
+Next by time: <a href="/2026/talks/virus">It's Probably Not a Virus</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/babel-before.md b/2026/info/babel-before.md
index 038c0f36..8b53be12 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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-before.md b/2026/info/bible-before.md
index db63834f..eae0230a 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect stroke-width="3" x="370" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect stroke-width="3" x="370" y="20" opacity="0.8" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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 1eeb2475..8a850225 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/compile-before.md b/2026/info/compile-before.md
index 918b5d89..08cc8874 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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 cf208598..dfd7df64 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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 7ba8ef30..18efa4a3 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/ghostel-before.md b/2026/info/ghostel-before.md
index 5aa68d22..a4a06198 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect stroke-width="3" x="425" y="20" opacity="0.8" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect stroke-width="3" x="425" y="20" opacity="0.8" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/hutch-before.md b/2026/info/hutch-before.md
index e3eb950f..4ae383b2 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/llms-before.md b/2026/info/llms-before.md
index dd7709e7..4cf1f8d4 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/local-before.md b/2026/info/local-before.md
index dcd42f24..b1b3b028 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/prefix-before.md b/2026/info/prefix-before.md
index 75350342..21956088 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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>
Etherpad: <https://pad.emacsconf.org/2026-prefix>
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Processing uploaded video
+Status: Waiting for a caption volunteer
<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 c7946177..9ef2a708 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/sun-close-before.md b/2026/info/sun-close-before.md
index 623015c9..b551fa77 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect stroke-width="3" x="617" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect stroke-width="3" x="617" y="20" opacity="0.8" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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 077b4ff9..ecfd61dd 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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 b440253a..a25445e1 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/team-before.md b/2026/info/team-before.md
index 133c8d07..0dfca1ef 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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 c5cd86ca..b58ad3bc 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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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/virus" data-start="2026-12-13T20:20:00+0000" data-end="2026-12-13T20:40:00+0000" title="It's Probably Not a Virus" data-slug="virus"><title>Sun 3:20- 3:40 It's Probably Not a Virus</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)">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:50:00+0000" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title>Sun 1:30- 1:50 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="370" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(395,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:10:00+0000" data-end="2026-12-13T19:30:00+0000" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title>Sun 2:10- 2:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="425" y="20" opacity="0.5" width="27" 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)">ghostel</text></g></a><a href="/2026/talks/align" data-start="2026-12-13T19:50:00+0000" data-end="2026-12-13T20:10:00+0000" title="Column-aligning text in Emacs" data-slug="align"><title>Sun 2:50- 3:10 Column-aligning text in Emacs</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)">align</text></g></a><a href="/2026/talks/anju" data-start="2026-12-13T20:30:00+0000" data-end="2026-12-13T20:50:00+0000" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title>Sun 3:30- 3:50 Revisiting Emacs Mouse Interactions with Anju</title><rect x="535" y="20" opacity="0.5" width="27" height="54" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(560,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:00:00+0000" data-end="2026-12-13T21:10:00+0000" title="Emacs on Android - Emacs for the next 40 years" data-slug="android"><title>Sun 4:00- 4:10 Emacs on Android - Emacs for the next 40 years</title><rect x="576" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(587,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:30:00+0000" data-end="2026-12-13T21:40:00+0000" title="Sunday closing remarks" data-slug="sun-close"><title>Sun 4:30- 4:40 Sunday closing remarks</title><rect x="617" y="20" opacity="0.5" width="13" height="54" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(628,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 ]]
@@ -9,7 +9,7 @@ Format: 20-min talk ; Q&A: BigBlueButton conference room <https://media.emacsc
Etherpad: <https://pad.emacsconf.org/2026-virus>
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-13T20:20:00Z" end="2026-12-13T20:40:00Z"><div class="conf-time">Sunday, Dec 13 2026, ~3:20 PM - 3:40 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 13 2026, ~2:20 PM - 2:40 PM CST (US/Central)<br />Sunday, Dec 13 2026, ~1:20 PM - 1:40 PM MST (US/Mountain)<br />Sunday, Dec 13 2026, ~12:20 PM - 12:40 PM PST (US/Pacific)<br />Sunday, Dec 13 2026, ~8:20 PM - 8:40 PM UTC <br />Sunday, Dec 13 2026, ~9:20 PM - 9:40 PM CET (Europe/Paris)<br />Sunday, Dec 13 2026, ~10:20 PM - 10:40 PM EET (Europe/Athens)<br />Monday, Dec 14 2026, ~1:50 AM - 2:10 AM IST (Asia/Kolkata)<br />Monday, Dec 14 2026, ~4:20 AM - 4:40 AM +08 (Asia/Singapore)<br />Monday, Dec 14 2026, ~5:20 AM - 5:40 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2026/watch/dev/">Find out how to watch and participate</a></strong></div>
+<div>Times in different time zones:</div><div class="times" start="2026-12-13T21:00:00Z" end="2026-12-13T21:20:00Z"><div class="conf-time">Sunday, Dec 13 2026, ~4:00 PM - 4:20 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 13 2026, ~3:00 PM - 3:20 PM CST (US/Central)<br />Sunday, Dec 13 2026, ~2:00 PM - 2:20 PM MST (US/Mountain)<br />Sunday, Dec 13 2026, ~1:00 PM - 1:20 PM PST (US/Pacific)<br />Sunday, Dec 13 2026, ~9:00 PM - 9:20 PM UTC <br />Sunday, Dec 13 2026, ~10:00 PM - 10:20 PM CET (Europe/Paris)<br />Sunday, Dec 13 2026, ~11:00 PM - 11:20 PM EET (Europe/Athens)<br />Monday, Dec 14 2026, ~2:30 AM - 2:50 AM IST (Asia/Kolkata)<br />Monday, Dec 14 2026, ~5:00 AM - 5:20 AM +08 (Asia/Singapore)<br />Monday, Dec 14 2026, ~6:00 AM - 6:20 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/virus-nav.md b/2026/info/virus-nav.md
index e090b2ff..6e9b827f 100644
--- a/2026/info/virus-nav.md
+++ b/2026/info/virus-nav.md
@@ -1,7 +1,7 @@
<div class="talk-nav">
Back to the [[talks]]
-Previous by time: <a href="/2026/talks/align">Column-aligning text in Emacs</a>
-Next by time: <a href="/2026/talks/anju">Revisiting Emacs Mouse Interactions with Anju</a>
+Previous by time: <a href="/2026/talks/anju">Revisiting Emacs Mouse Interactions with Anju</a>
+Next by time: <a href="/2026/talks/android">Emacs on Android - Emacs for the next 40 years</a>
Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2026/watch/dev">Watch</a></strong>
</div>