summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--2026/organizers-notebook.md1083
-rw-r--r--2026/organizers-notebook/index.org150
-rw-r--r--2026/organizers-notebook/schedule.svg2
-rw-r--r--2026/talks/portable.md26
4 files changed, 1206 insertions, 55 deletions
diff --git a/2026/organizers-notebook.md b/2026/organizers-notebook.md
new file mode 100644
index 00000000..431b2661
--- /dev/null
+++ b/2026/organizers-notebook.md
@@ -0,0 +1,1083 @@
+<!-- organizers-notebook.md is exported from organizers-notebook/index.org, please modify that instead. -->
+[[!sidebar content=""]]
+
+This file is automatically exported from [/2026/organizers-notebook/index.org](/2026/organizers-notebook/index.org). You might prefer to navigate this as an Org file instead. To do so, [clone the wiki repository](https://emacsconf.org/edit/).
+
+You might also like the [general organizers' notebook](/organizers-notebook) and [the organizers' notebook from 2025](/2025/organizers-notebook).
+
+
+# Table of Contents
+
+- [Timeline](#timeline)
+- [About this document](#about-this-doc)
+- [Communications plan](#comms)
+- [Good/better/best](#good-better-best)
+- [Phases](#phases)
+ - [Set up organizers notebook](#phases-set-up-organizers-notebook)
+ - [Draft CFP](#cfp)
+ - [Draft schedule](#draft-schedule)
+ - [Review rescheduled talks](#phases-review-rescheduled-talks)
+ - [While speakers are working on their videos](#phases-while-speakers-are-working-on-their-videos)
+ - [While volunteers are working on captions](#phases-while-volunteers-are-working-on-captions)
+ - [After the conference](#phases-after-the-conference)
+ - [Confirm shifts](#shifts)
+- [Check EmacsConf infrastructure](#check-emacsconf-infrastructure)
+ - [BigBlueButton](#check-emacsconf-infrastructure-bigbluebutton)
+ - [IRC web client](#check-emacsconf-infrastructure-irc-web-client)
+ - [IRC announcements](#check-emacsconf-infrastructure-irc-announcements)
+ - [Media](#check-emacsconf-infrastructure-media)
+ - [Publishing resources to the wiki](#check-emacsconf-infrastructure-publishing-resources-to-the-wiki)
+ - [Publishing videos to the media server](#check-emacsconf-infrastructure-publishing-videos-to-the-media-server)
+ - [Playing videos, switching to windows](#check-emacsconf-infrastructure-playing-videos-switching-to-windows)
+ - [Etherpad](#check-emacsconf-infrastructure-etherpad)
+ - [Do a dry run](#check-emacsconf-infrastructure-do-a-dry-run)
+ - [Resizing](#check-emacsconf-infrastructure-resizing)
+- [Processes and notes](#processes-and-notes)
+ - [Hosting](#processes-and-notes-hosting)
+ - [ERC](#processes-and-notes-erc)
+ - [Uploading videos](#processes-and-notes-uploading-videos)
+- [Decisions](#decisions)
+- [Support code](#support-code)
+
+
+<a id="timeline"></a>
+
+# TODO Timeline
+
+<table>
+
+
+<colgroup>
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-right">
+</colgroup>
+<tbody>
+<tr>
+<td class="org-left">&nbsp;</td>
+<td class="org-left">&nbsp;</td>
+<td class="org-right">Days since previous milestone</td>
+</tr>
+
+<tr>
+<td class="org-left">CFP</td>
+<td class="org-left"><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-27">[2026-06-27 Sat]</time></span></td>
+<td class="org-right">&nbsp;</td>
+</tr>
+
+<tr>
+<td class="org-left">CFP deadline</td>
+<td class="org-left"><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-09-18">[2026-09-18 Fri]</time></span></td>
+<td class="org-right">83</td>
+</tr>
+
+<tr>
+<td class="org-left">Speaker notifications</td>
+<td class="org-left"><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-09-25">[2026-09-25 Fri]</time></span></td>
+<td class="org-right">&nbsp;</td>
+</tr>
+
+<tr>
+<td class="org-left">Publish schedule</td>
+<td class="org-left"><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-10-23">[2026-10-23 Fri]</time></span></td>
+<td class="org-right">&nbsp;</td>
+</tr>
+
+<tr>
+<td class="org-left">Video submission deadline</td>
+<td class="org-left"><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-10-30">[2026-10-30 Fri]</time></span></td>
+<td class="org-right">42</td>
+</tr>
+
+<tr>
+<td class="org-left">EmacsConf day 1</td>
+<td class="org-left"><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-12-12">[2026-12-12 Sat]</time></span></td>
+<td class="org-right">43</td>
+</tr>
+
+<tr>
+<td class="org-left">EmacsConf</td>
+<td class="org-left"><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-12-13">[2026-12-13 Sun]</time></span></td>
+<td class="org-right">36</td>
+</tr>
+</tbody>
+</table>
+
+We like to have at least a month to work on audio
+normalization and transcription, and we want
+speakers to have at least a month to work on their
+videos (considering early submissions will already
+have gotten started on processing).
+
+
+<a id="about-this-doc"></a>
+
+# About this document
+
+Tags:
+
+- `conforg`: Requires access to private conf.org repository
+
+
+<a id="comms"></a>
+
+# Communications plan
+
+Objectives:
+
+- keep everyone in the loop without them feeling like they&rsquo;re overloaded
+
+Everyone:
+
+- [X] Call for participation (speakers and volunteers)
+- [ ] Reminder about CFP
+- [ ] Last call
+
+Speakers:
+
+- [ ] Send all speakers backstage access and upload instructions
+- [ ] Send all speakers check-in instructions
+
+Volunteers:
+
+- [ ] Send captioning volunteers the backstage info
+- [ ] Send past captioning volunteers an invitation to participate - ask when there&rsquo;s a lot of load
+- [ ] Ask for help with audio processing
+
+
+<a id="good-better-best"></a>
+
+# Good/better/best
+
+This table makes it easier to move the slider depending on who wants
+to volunteer and how much we can get done. At some point, we&rsquo;ll figure
+out how to track our current status so we know what we need to
+scramble to do in order to get the conference off the ground. **bold**
+is our current goal. Feel free to volunteer for anything that
+interests you!
+
+<table>
+
+
+<colgroup>
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+</colgroup>
+<tbody>
+<tr>
+<td class="org-left">&nbsp;</td>
+<td class="org-left">Good</td>
+<td class="org-left">Better</td>
+<td class="org-left">Best</td>
+</tr>
+
+<tr>
+<td class="org-left">Streaming</td>
+<td class="org-left">Regular stream</td>
+<td class="org-left">+ alternate streams on PeerTube</td>
+<td class="org-left">+ alternate streams on YouTube</td>
+</tr>
+
+<tr>
+<td class="org-left">480p</td>
+<td class="org-left">Same on live</td>
+<td class="org-left">Separate node</td>
+<td class="org-left">Ansible setup</td>
+</tr>
+
+<tr>
+<td class="org-left">Audio normalization</td>
+<td class="org-left">Core org handling it</td>
+<td class="org-left">Other volunteer</td>
+<td class="org-left">Multiple volunteers</td>
+</tr>
+
+<tr>
+<td class="org-left">Video resolution</td>
+<td class="org-left">Usual reminders</td>
+<td class="org-left">Extra reminders</td>
+<td class="org-left">Everyone remembering to use a large font size</td>
+</tr>
+
+<tr>
+<td class="org-left">Intros</td>
+<td class="org-left">Standard, recorded</td>
+<td class="org-left">Reviewed by speakers</td>
+<td class="org-left">More details/context</td>
+</tr>
+
+<tr>
+<td class="org-left">Pad</td>
+<td class="org-left">v1.9.7</td>
+<td class="org-left">v2.x</td>
+<td class="org-left">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+
+
+<a id="phases"></a>
+
+# Phases
+
+
+<a id="phases-set-up-organizers-notebook"></a>
+
+## DONE Set up organizers notebook
+
+
+<a id="cfp"></a>
+
+## DONE Draft CFP
+
+
+#### Draft linked pages
+
+- [X] cfp
+- [X] submit page
+- [X] year index
+
+
+#### DONE Check with other organizers
+
+
+#### DONE Update dates in emacsconf.el
+
+<file:///home/sacha/proj/emacsconf/lisp/emacsconf.el>
+<file:///home/sacha/proj/emacsconf/lisp/emacsconf-erc.el>
+
+
+#### DONE Update conf topic
+
+[Update the IRC topic](file:///home/sacha/proj/emacsconf/wiki/organizers-notebook/index.md)
+
+
+#### DONE Remove draft marker
+
+- [ ] cfp
+- [ ] submit
+
+
+#### DONE Post CFP in the usual places
+
+- [ ] emacsconf-discuss
+- [ ] reddit.com/r/emacs
+- [ ] Emacs News
+- [ ] emacs-tangents or info-gnu-emacs
+- [ ] Mastodon
+- [ ] Bluesky
+- [ ] X
+
+
+<a id="draft-schedule"></a>
+
+## TODO Draft schedule
+
+<svg width="500" height="700" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Saturday</text><a href="https://emacsconf.org/2026/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"><title> 9:00- 9:10 Saturday opening remarks</title><rect x="40" y="40" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-open</text></g></a><a href="https://emacsconf.org/2026/talks/planning" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title> 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="40" y="53" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,78)"><text fill="black" x="0" y="0" font-size="10" transform="nil">planning</text></g></a><a href="https://emacsconf.org/2026/talks/listen" title="Controlling Emacs by voice using Emacslisten" data-slug="listen"><title> 9:50-10:10 Controlling Emacs by voice using Emacslisten</title><rect x="40" y="108" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,133)"><text fill="black" x="0" y="0" font-size="10" transform="nil">listen</text></g></a><a href="https://emacsconf.org/2026/talks/emacspeak" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="40" y="163" opacity="0.8" width="84" height="41" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,202)"><text fill="black" x="0" y="0" font-size="10" transform="nil">emacspeak</text></g></a><a href="https://emacsconf.org/2026/talks/rau" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>11:10-11:30 Emacs as a Window Manager and concurrency</title><rect x="40" y="218" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,243)"><text fill="black" x="0" y="0" font-size="10" transform="nil">rau</text></g></a><a href="https://emacsconf.org/2026/talks/plots" title="Plots with ROOTs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title> 1:00- 1:20 Plots with ROOTs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="40" y="369" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,394)"><text fill="black" x="0" y="0" font-size="10" transform="nil">plots</text></g></a><a href="https://emacsconf.org/2026/talks/ffs" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title> 1:40- 2:00 Plain text presentations in GNU Emacs with ffs</title><rect x="40" y="424" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,449)"><text fill="black" x="0" y="0" font-size="10" transform="nil">ffs</text></g></a><a href="https://emacsconf.org/2026/talks/bible" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title> 2:20- 2:40 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="40" y="479" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,504)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bible</text></g></a><a href="https://emacsconf.org/2026/talks/svg" title="A (sort of) REPL for learning SVG" data-slug="svg"><title> 3:00- 3:20 A (sort of) REPL for learning SVG</title><rect x="40" y="534" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,559)"><text fill="black" x="0" y="0" font-size="10" transform="nil">svg</text></g></a><a href="https://emacsconf.org/2026/talks/anju" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title> 3:40- 4:00 Revisiting Emacs Mouse Interactions with Anju</title><rect x="40" y="589" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(40,614)"><text fill="black" x="0" y="0" font-size="10" transform="nil">anju</text></g></a><a href="https://emacsconf.org/2026/talks/ghostel" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title> 4:10- 4:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="40" y="630" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,655)"><text fill="black" x="0" y="0" font-size="10" transform="nil">ghostel</text></g></a><a href="https://emacsconf.org/2026/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"><title> 4:50- 5:00 Saturday closing remarks / open session</title><rect x="40" y="685" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,696)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-close</text></g></a><a href="https://emacsconf.org/2026/talks/llms" title="Meetup about LLMs" data-slug="llms"><title> 1:00- 2:00 Meetup about LLMs</title><rect x="125" y="369" opacity="0.8" width="84" height="82" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,449)"><text fill="black" x="0" y="0" font-size="10" transform="nil">llms</text></g></a><a href="https://emacsconf.org/2026/talks/portable" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title> 2:20- 2:30 Emacs as my portable user space across operating platforms</title><rect x="125" y="479" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,490)"><text fill="black" x="0" y="0" font-size="10" transform="nil">portable</text></g></a><a href="https://emacsconf.org/2026/talks/os" title="Emacs Everywhere: A Fun Romp Through Esoteric Operating Systems" data-slug="os"><title> 2:50- 3:10 Emacs Everywhere: A Fun Romp Through Esoteric Operating Systems</title><rect x="125" y="520" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,545)"><text fill="black" x="0" y="0" font-size="10" transform="nil">os</text></g></a><a href="https://emacsconf.org/2026/talks/cadet" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title> 3:30- 3:40 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="125" y="575" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,586)"><text fill="black" x="0" y="0" font-size="10" transform="nil">cadet</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g><g transform="translate(250,0)"><title>Schedule for Sunday</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Sunday</text><a href="https://emacsconf.org/2026/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"><title> 9:00- 9:10 Sunday opening remarks</title><rect x="40" y="40" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-open</text></g></a><a href="https://emacsconf.org/2026/talks/bone" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title> 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="40" y="53" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,64)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bone</text></g></a><a href="https://emacsconf.org/2026/talks/local" title="Local file history possibilities in Emacs" data-slug="local"><title> 9:40- 9:50 Local file history possibilities in Emacs</title><rect x="40" y="94" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,105)"><text fill="black" x="0" y="0" font-size="10" transform="nil">local</text></g></a><a href="https://emacsconf.org/2026/talks/hutch" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>10:10-10:20 hutch: code reviews for the mildly disenfranchised</title><rect x="40" y="136" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect><g transform="translate(40,147)"><text fill="black" x="0" y="0" font-size="10" transform="nil">hutch</text></g></a><a href="https://emacsconf.org/2026/talks/team" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>10:30-10:50 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="40" y="163" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,188)"><text fill="black" x="0" y="0" font-size="10" transform="nil">team</text></g></a><a href="https://emacsconf.org/2026/talks/compile" title="Beyond Shell History: Saving Compilation Output in Emacs" data-slug="compile"><title>11:10-11:30 Beyond Shell History: Saving Compilation Output in Emacs</title><rect x="40" y="218" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,243)"><text fill="black" x="0" y="0" font-size="10" transform="nil">compile</text></g></a><a href="https://emacsconf.org/2026/talks/mobile" title="How I fixed Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title> 1:00- 1:10 How I fixed Org Mode's biggest mobile and collaboration problems</title><rect x="40" y="369" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,380)"><text fill="black" x="0" y="0" font-size="10" transform="nil">mobile</text></g></a><a href="https://emacsconf.org/2026/talks/writing" title="Close the writing accountability gap with Emacs" data-slug="writing"><title> 1:30- 1:50 Close the writing accountability gap with Emacs</title><rect x="40" y="410" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,435)"><text fill="black" x="0" y="0" font-size="10" transform="nil">writing</text></g></a><a href="https://emacsconf.org/2026/talks/hyperbole" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title> 2:10- 2:30 Hyperbole, My Dear Watson</title><rect x="40" y="465" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,490)"><text fill="black" x="0" y="0" font-size="10" transform="nil">hyperbole</text></g></a><a href="https://emacsconf.org/2026/talks/koutliner" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title> 2:50- 3:10 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="40" y="520" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,545)"><text fill="black" x="0" y="0" font-size="10" transform="nil">koutliner</text></g></a><a href="https://emacsconf.org/2026/talks/dnd" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title> 3:30- 3:40 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="40" y="575" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,586)"><text fill="black" x="0" y="0" font-size="10" transform="nil">dnd</text></g></a><a href="https://emacsconf.org/2026/talks/align" title="Column-aligning text in Emacs" data-slug="align"><title> 4:00- 4:20 Column-aligning text in Emacs</title><rect x="40" y="616" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,641)"><text fill="black" x="0" y="0" font-size="10" transform="nil">align</text></g></a><a href="https://emacsconf.org/2026/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"><title> 4:40- 4:50 Sunday closing remarks</title><rect x="40" y="671" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,682)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-close</text></g></a><a href="https://emacsconf.org/2026/talks/community" title="Community brainstorming" data-slug="community"><title>10:00-11:00 Community brainstorming</title><rect x="125" y="122" opacity="0.8" width="84" height="82" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,202)"><text fill="black" x="0" y="0" font-size="10" transform="nil">community</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g></svg>
+
+Legend:
+
+- light blue: constraint is <= a time
+- peach: constraint is >= a time
+- solid line: Q&A will be through BigBlueButton web conference
+- dashed line: Q&A will be IRC/Etherpad during the event or e-mail after the event
+
+Notes:
+
+- Let&rsquo;s see if we can pair these up:
+ - [listen](https://emacsconf.org/2026/talks/listen "Controlling Emacs by voice using Emacslisten") and [emacspeak](https://emacsconf.org/2026/talks/emacspeak "Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective")
+ - [mobile](https://emacsconf.org/2026/talks/mobile "How I fixed Org Mode's biggest mobile and collaboration problems"), [hyperbole](https://emacsconf.org/2026/talks/hyperbole "Hyperbole, My Dear Watson"), [koutliner](https://emacsconf.org/2026/talks/koutliner "Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs"), [dnd](https://emacsconf.org/2026/talks/dnd "DnD and Org Roam: Becoming a Better DM with Emacs"): PIM
+ - [hutch](https://emacsconf.org/2026/talks/hutch "hutch: code reviews for the mildly disenfranchised") and [team](https://emacsconf.org/2026/talks/team "Beyond the Chatbot: Team-Oriented AI in Emacs") and [compile](https://emacsconf.org/2026/talks/compile "Beyond Shell History: Saving Compilation Output in Emacs") - LLM-related; people who aren&rsquo;t interested in LLMs can continue to hang out with bzg in the [bone](https://emacsconf.org/2026/talks/bone "BONE and gnaw.el: tracking what matters") talk
+ - [portable](https://emacsconf.org/2026/talks/portable "Emacs as my portable user space across operating platforms"), [os](https://emacsconf.org/2026/talks/os "Emacs Everywhere: A Fun Romp Through Esoteric Operating Systems") and [cadet](https://emacsconf.org/2026/talks/cadet "My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration")
+ - [community](https://emacsconf.org/2026/talks/community "Community brainstorming") and [llms](https://emacsconf.org/2026/talks/llms "Meetup about LLMs") might be either panels or open-mic meetup-type things
+
+
+<a id="phases-review-rescheduled-talks"></a>
+
+## Review rescheduled talks
+
+ (mapcar (lambda (o)
+ (list (plist-get o :slug)
+ (plist-get o :scheduled)
+ (plist-get o :emailed-schedule)
+ (emacsconf-schedule-difference-from-emailed o)))
+ (emacsconf-mail-rescheduled-talks))
+
+For big changes, use emacsconf-mail-schedule-updates
+
+
+<a id="phases-while-speakers-are-working-on-their-videos"></a>
+
+## While speakers are working on their videos
+
+
+### TODO Send draft schedule :email:
+
+
+### TODO Send backstage and upload instructions :email:
+
+
+### TODO Record pronunciations
+
+
+### TODO Post the schedule publicly
+
+
+<a id="phases-while-volunteers-are-working-on-captions"></a>
+
+## While volunteers are working on captions
+
+
+### TODO E-mail speakers asking them to confirm the pronunciations :email:
+
+
+### Record intros and opening remarks
+
+
+#### TODO Record sat-open remarks :emacsconf:record:
+
+Welcome to EmacsConf 2026, where we have fun
+exploring how much we can do with a text editor.
+It&rsquo;s hard to give a general overview
+of all the cool talks today and tomorrow,
+so you can flip through the talks
+and see what sparks your interests.
+Don&rsquo;t feel limited to one track or another.
+The best parts of EmacsConf are the conversations.
+The wiki has a page on how to watch and participate,
+and I&rsquo;ll give you a quick overview as well.
+You can watch both streams at live.emacsconf.org
+using free and open source software.
+Using a streaming media player like mpv
+seems to be the best way to watch in terms of performance
+but there are also web-based players
+just in case that&rsquo;s all you&rsquo;ve got.
+The schedule shows the General track on top
+and the Development track on the bottom,
+so you can see what else is going on.
+As you&rsquo;re watching the talks,
+you can refer to the schedule in another window.
+Hover over the boxes to see the times and titles,
+and click on the boxes in the schedule
+to jump to the talk&rsquo;s page for more details.
+You can also get the schedule as an iCalendar file
+or as an Org file in different time zones.
+Many talks will be followed by
+live Q&A web conferences with the speaker,
+which will be done in BigBlueButton or BBB.
+These are indicated with a solid border on the schedule
+and by Q&A: BBB on the schedule page.
+You can join the web conference room
+by clicking on the BBB link
+on the schedule page or the talk&rsquo;s webpage.
+Then you can ask your questions yourself when the Q&A starts.
+To improve performance, please keep your webcam off
+and stay muted until it&rsquo;s your turn to talk.
+If you don&rsquo;t like Javascript,
+you can still ask questions via IRC
+and the hosts can read them out for you.
+We&rsquo;re probably going to automatically switch
+between talks and Q&A sessions,
+so the transitions on the stream might be a little sudden.
+
+People in the BigBlueButton room
+can continue the conversation
+even after the talk moves off-stream.
+and you can also reach out to the speakers
+using the contact information on the talk page.
+
+Other talks will have Q&A via Etherpad or IRC,
+depending on what the speakers prefer.
+This is indicated in the schedule with a dashed border
+and on the schedule page as well.
+Some talks will have the Q&A after the event,
+so you can add your questions to their Etherpad
+or ask on IRC.
+We&rsquo;ll e-mail the speakers afterwards
+and update the talk pages when they answer.
+The schedule pages and track pages have quick shortcuts
+so that you can find out more about talks, open the Etherpads,
+and join the Q&A sessions. The watch page has more tips
+on how to make the most of Q&A.
+If you can, please add notes and ask questions
+in the Etherpad for the talk. That makes it easier
+for everyone to share their notes,
+and speakers and hosts can read the questions from there.
+We&rsquo;ll copy the notes to the talk pages afterwards.
+We have one pad for each talk,
+so you can follow the links to get to the next one
+or go back to the schedule and get the link from there.
+If you have general feedback about
+the conference itself, please put it in
+pad.emacsconf.org/2026 , which is linked on each pad.
+You can also use this as a general community message board
+for things like Help Wanted.
+Internet Relay Chat or IRC can be another great way
+to be part of lots of conversations.
+You can use chat.emacsconf.org to join the IRC channels
+through your web browser. The tabs on the left can help you
+switch between the different channels.
+There&rsquo;s #emacsconf-gen for the General track
+and #emacsconf-dev for the Development track.
+If you need to reach us, you can join #emacsconf-org
+or e-mail emacsconf-org-private@gnu.org.
+You can use #emacsconf for hallway conversations.
+Of course, you can join any of these channels
+with your favourite IRC client.
+You can connect to irc.libera.chat
+port 6697 with TLS.
+Once again, we&rsquo;re going to be streaming with open captions
+for most of the talks this year, thanks to our speakers and
+captioning volunteers. The captioned talks are indicated
+on the schedule, and with any luck, we&rsquo;ll be posting
+transcripts on talk pages shortly after the talks start.
+If you need additional accommodations,
+please let us know in #emacsconf-org
+and we&rsquo;ll see if we can make things happen.
+If something goes down, we&rsquo;ll update status.emacsconf.org.
+If it doesn&rsquo;t look like we&rsquo;ve noticed yet,
+please let us know in the #emacsconf-org IRC channel,
+where we will be quietly panicking.
+In all of these conversations, please keep in mind
+our guidelines for conduct. You can find them on the wiki,
+They basically boil down to: please be nice.
+If all goes well, the prerecorded talks and transcripts
+should be available from the talk pages
+shortly after they start playing,
+and we&rsquo;ll post the recordings of live talks
+and Q&A sessions within the next month or so.
+If you&rsquo;d like to get an update, you can subscribe to
+the emacsconf-discuss mailing list.
+All right, let&rsquo;s get going.
+Leo is hosting the general track,
+and Corwin hosting the development track.
+The other volunteers and I will run around mostly backstage,
+and you&rsquo;ll probably meet us in the closing remarks.
+That&rsquo;s also where we get to thank
+all the people and organizations
+who make EmacsConf possible.
+Thanks for coming to EmacsConf 2026.
+
+
+#### TODO Record sun-open remarks
+
+Welcome to the second day of EmacsConf 2026.
+The best parts of EmacsConf are the conversations.
+The wiki has a page on how to watch and participate,
+and I&rsquo;ll give you a quick overview as well.
+You can watch the stream at live.emacsconf.org
+using free and open source software.
+Using a streaming media player like mpv
+seems to be the best way to watch in terms of performance
+but there are also web-based players
+just in case that&rsquo;s all you&rsquo;ve got.
+As you&rsquo;re watching the talks,
+you can refer to the schedule in another window.
+Hover over the boxes to see the times and titles,
+and click on the boxes in the schedule
+to jump to the talk&rsquo;s page for more details.
+You can also get the schedule as an iCalendar file
+or as an Org file in different time zones.
+
+Many talks will be followed by
+live Q&A web conferences with the speaker,
+which will be done in BigBlueButton or BBB.
+These are indicated with a solid border on the schedule
+and by Q&A: BBB on the schedule page.
+You can join the web conference room
+by clicking on the BBB link
+on the schedule page or the talk&rsquo;s webpage.
+Then you can ask your questions yourself when the Q&A starts.
+To improve performance, please keep your webcam off
+and stay muted until it&rsquo;s your turn to talk.
+If you don&rsquo;t like Javascript,
+you can still ask questions via IRC
+and the hosts can read them out for you.
+
+We&rsquo;re probably going to automatically switch
+between talks and Q&A sessions,
+so the transitions on the stream might be a little sudden,
+People in the BigBlueButton room
+can continue the conversation
+even after the talk moves off-stream,
+and you can also reach out to the speakers
+using the contact information on the talk page.
+
+Other talks will have Q&A via Etherpad or IRC,
+depending on what the speakers prefer.
+This is indicated in the schedule with a dashed border
+and on the schedule page as well.
+Please ask your questions in the recommended places
+so that the speakers can easily see them.
+
+Some talks will have the Q&A after the event,
+so you can add your questions to their Etherpad.
+We&rsquo;ll e-mail the speakers afterwards
+and update the talk pages when they answer.
+
+We&rsquo;re going to start Sunday morning
+with more IRC/Etherpad Q&A
+to try to get around
+some of the bandwidth issues
+that we noticed last year.
+
+The schedule pages and track pages have quick shortcuts
+so that you can find out more about talks, open the Etherpads,
+and join the Q&A sessions. The watch page has more tips
+on how to make the most of Q&A.
+If you can, please add notes and ask questions
+in the Etherpad for the talk. That makes it easier
+for everyone to share their notes,
+and speakers and hosts can read the questions from there.
+We&rsquo;ll copy the notes to the talk pages afterwards.
+We have one pad for each talk,
+so you can follow the links to get to the next one
+or go back to the schedule and get the link from there.
+If you have general feedback about
+the conference itself, please put it in
+pad.emacsconf.org/2026 , which is linked on each pad.
+You can also use this as a general community message board
+for things like Help Wanted.
+Internet Relay Chat or IRC can be another great way
+to be part of lots of conversations.
+You can use chat.emacsconf.org to join the IRC channels
+through your web browser. The tabs on the left can help you
+switch between the different channels.
+Most discussions will be in
+\#emacsconf-gen for the General track.
+If you need to reach us, you can join #emacsconf-org
+or e-mail emacsconf-org-private@gnu.org.
+You can use #emacsconf for hallway conversations.
+Of course, you can join any of these channels
+with your favourite IRC client.
+You can connect to irc.libera.chat
+port 6697 with TLS.
+Once again, we&rsquo;re going to be streaming with open captions
+for most of the talks this year, thanks to our speakers and
+captioning volunteers. The captioned talks are indicated
+on the schedule, and with any luck, we&rsquo;ll be posting
+transcripts on talk pages shortly after the talks start.
+If you need additional accommodations,
+please let us know in #emacsconf-org
+and we&rsquo;ll see if we can make things happen.
+If something goes down, we&rsquo;ll update status.emacsconf.org.
+If it doesn&rsquo;t look like we&rsquo;ve noticed yet,
+please let us know in the #emacsconf-org IRC channel,
+where we will be quietly panicking.
+In all of these conversations, please keep in mind
+our guidelines for conduct. You can find them on the wiki,
+They basically boil down to: please be nice.
+If all goes well, the prerecorded talks and transcripts
+should be available from the talk pages
+shortly after they start playing,
+and we&rsquo;ll post the recordings of live talks
+and Q&A sessions within the next month or so.
+If you&rsquo;d like to get an update, you can subscribe to
+the emacsconf-discuss mailing list.
+All right, let&rsquo;s get going.
+Leo Vivier is hosting the general track again today.
+The other volunteers and I will run around mostly backstage,
+and you&rsquo;ll probably meet us in the closing remarks.
+That&rsquo;s also where we get to thank
+all the people and organizations
+who make EmacsConf even possible.
+Thanks for coming to EmacsConf 2026.
+
+
+### TODO Generate assets
+
+
+### TODO Send check-in details :email:
+
+
+### TODO Ask libera.chat to increase IRC limit
+
+
+<a id="phases-after-the-conference"></a>
+
+## After the conference
+
+
+### TODO Send thanks and follow-up questions :email:
+
+
+<a id="shifts"></a>
+
+## TODO Confirm shifts
+
+<a name="shifts"></a>
+
+AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)
+
+Saturday Dec 12 2026
+
+<table id="orgec9b137">
+
+
+<colgroup>
+<col class="org-left">
+
+<col class="org-right">
+
+<col class="org-right">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+</colgroup>
+<thead>
+<tr>
+<th scope="col" class="org-left">&nbsp;</th>
+<th scope="col" class="org-right">Start</th>
+<th scope="col" class="org-right">End</th>
+<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/host/">Host</a></th>
+<th scope="col" class="org-left">Streamer</th>
+<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/checkin/">Checkin</a></th>
+<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/irc/">IRC</a></th>
+<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/pad/">Pad</a></th>
+<th scope="col" class="org-left">Coord</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="org-left">Gen AM</td>
+<td class="org-right">09:00</td>
+<td class="org-right">12:00</td>
+</tr>
+
+<tr>
+<td class="org-left">Gen PM</td>
+<td class="org-right">13:00</td>
+<td class="org-right">17:00</td>
+</tr>
+</tbody>
+</table>
+
+Sunday Dec 13 2026
+
+<table id="org84333f1">
+
+
+<colgroup>
+<col class="org-left">
+
+<col class="org-right">
+
+<col class="org-right">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+</colgroup>
+<thead>
+<tr>
+<th scope="col" class="org-left">&nbsp;</th>
+<th scope="col" class="org-right">Start</th>
+<th scope="col" class="org-right">End</th>
+<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/host/">Host</a></th>
+<th scope="col" class="org-left">Streamer</th>
+<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/checkin/">Checkin</a></th>
+<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/irc/">IRC</a></th>
+<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/pad/">Pad</a></th>
+<th scope="col" class="org-left">Coord</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="org-left">Gen AM</td>
+<td class="org-right">09:00</td>
+<td class="org-right">12:00</td>
+</tr>
+
+<tr>
+<td class="org-left">Gen PM</td>
+<td class="org-right">13:00</td>
+<td class="org-right">17:00</td>
+</tr>
+</tbody>
+</table>
+
+Backups:
+
+- dev host/streamer:
+- gen host/streamer:
+- checkin, IRC, pad:
+
+Interested in a shift? Please e-mail <mailto:emacsconf-org-private@gnu.org> and we&rsquo;ll help you figure out what you need to learn.
+
+ `(setq emacsconf-shifts
+ (list
+ ,@(apply #'append
+ (mapcar
+ (lambda (day)
+ (let ((headers
+ (mapcar
+ (lambda (field)
+ (intern
+ (concat
+ ":"
+ (downcase
+ (if (string-match org-link-bracket-re field)
+ (match-string 2 field)
+ field)))))
+ (seq-drop (car (cadr day)) 3))))
+ (mapcar
+ (lambda (row)
+ (apply #'append
+ (list 'list :id
+ (when (string-match "^\\([^ ]+\\) \\(AM\\|PM\\)" (car row))
+ (format "%s-%s-%s"
+ (car day)
+ (downcase (match-string 2 (car row)))
+ (downcase (match-string 1 (car row)))))
+ :track
+ (if (string-match "^Gen" (car row)) "General" "Development")
+ :start
+ (format "%sT%s:00%s"
+ (elt day 2)
+ (elt row 1)
+ emacsconf-timezone-offset)
+ :end
+ (format "%sT%s:00%s"
+ (elt day 2)
+ (elt row 2)
+ emacsconf-timezone-offset))
+ (seq-map-indexed
+ (lambda (value index)
+ (unless (string= value "")
+ (list (elt headers index) value)))
+ (seq-drop row 3))))
+ (cdr (cadr day)))
+ ))
+ (list
+ (list "sat" sat "2025-12-06")
+ (list "sun" sun "2025-12-07"))))))
+
+
+<a id="check-emacsconf-infrastructure"></a>
+
+# TODO Check EmacsConf infrastructure
+
+- [ ] IRC
+- [ ] Streaming assets
+- [ ] Publishing to the wiki
+- [ ] Web conference
+- [ ] OBS
+- [ ] Publishing to the media server
+- [ ] Etherpad
+- [ ] Streaming
+- [ ] Toobnix
+- [ ] YouTube
+- [ ] Mumble: Can join from my phone, can speak on stream
+
+
+<a id="check-emacsconf-infrastructure-bigbluebutton"></a>
+
+## BigBlueButton
+
+- Plan: Scale up the bbb.emacsverse.org on Sacha&rsquo;s Linode account
+- [Installation notes from last year](https://emacsconf.org/2024/organizers-notebook/#check-emacsconf-infrastructure-bigbluebutton)
+
+
+### TODO Create meeting rooms for each speaker
+
+[Creating talk BBB rooms](file:///home/sacha/proj/emacsconf/wiki/organizers-notebook/index.md)
+
+
+### TODO Back up after the conference
+
+[Backing up BBB](file:///home/sacha/proj/emacsconf/wiki/organizers-notebook/index.md)
+
+
+### TODO Set up moderator access codes for all the meeting rooms, and make it so people can start the meeting
+
+[Setting up moderator access codes](file:///home/sacha/proj/emacsconf/wiki/organizers-notebook/index.md)
+
+
+### TODO Check BBB audio from my phone
+
+
+### Customize BigBlueButton branding
+
+
+#### TODO Change background presentation
+
+<https://docs.bigbluebutton.org/3.0/administration/customize/#change-the-default-presentation>
+
+
+#### TODO Modify landing page
+
+/var/www/bigbluebutton-default/assets/index.html
+keep backup copy as it will be overwritten when bbb-conf is called
+
+
+#### TODO Change default welcome message
+
+<https://docs.bigbluebutton.org/3.0/administration/customize/#change-the-default-welcome-message>
+
+
+#### TODO Change html5 title
+
+/usr/share/bigbluebutton/html5-client/private/config/settings.yml
+
+TARGET=/usr/share/bigbluebutton/html5-client/private/config/settings.yml
+yq e -i &ldquo;.public.app.clientTitle = \\&rdquo;EmacsConf\\&ldquo;&rdquo; $TARGET
+
+
+#### TODO Try live captions
+
+<https://docs.bigbluebutton.org/3.0/administration/customize/#enable-live-captions>
+
+
+#### TODO Explore meeting layout? Default to custom, hosts will need to drag people&rsquo;s webcam over if there&rsquo;s a share
+
+
+<a id="check-emacsconf-infrastructure-irc-web-client"></a>
+
+## IRC web client
+
+On front0:
+cd ~thelounge; sudo -u thelounge nohup node /usr/bin/thelounge start
+
+
+### TODO Ask libera.chat to increase connections allowed from chat.emacsconf.org on Dec 6 and 7
+
+[IRC web client](file:///home/sacha/proj/emacsconf/wiki/organizers-notebook/index.md)
+
+
+<a id="check-emacsconf-infrastructure-irc-announcements"></a>
+
+## IRC announcements
+
+
+### TODO Confirm manual IRC announcements
+
+
+### TODO Confirm automated IRC announcements from res
+
+
+<a id="check-emacsconf-infrastructure-media"></a>
+
+## Media
+
+
+### TODO Switch public media to unprotected root before the conference
+
+1. Clear public media directory.
+2. Set `media_protect_root` to false in Ansible `group_vars/all.yml`.
+3. `ansible-playbook -i inventory.yml prod-playbook.yml --tags media`
+
+You can generate the index with `emacsconf-publish-update-media`.
+
+
+<a id="check-emacsconf-infrastructure-publishing-resources-to-the-wiki"></a>
+
+## TODO Publishing resources to the wiki
+
+ansible-playbook -i inventory.yml prod-playbook.yml &ndash;tags publish
+
+
+<a id="check-emacsconf-infrastructure-publishing-videos-to-the-media-server"></a>
+
+## TODO Publishing videos to the media server
+
+
+<a id="check-emacsconf-infrastructure-playing-videos-switching-to-windows"></a>
+
+## Playing videos, switching to windows
+
+
+### TODO Generate test videos for everything
+
+emacsconf-stream-generate-test-videos
+
+
+### TODO Document how to get that set up again
+
+
+<a id="check-emacsconf-infrastructure-etherpad"></a>
+
+## Etherpad
+
+
+### TODO Try upgrading to 2.x
+
+<https://galaxy.ansible.com/ui/repo/published/s3lph/pads/content/role/etherpad/>
+<a href="https://git.emacsconf.org/emacsconf-ansible/tree/roles/pad/tasks/main.yml">roles/pad/tasks/main.yml</a>
+
+nodemon -e yml -w ../../roles/pad/tasks/main.yml -x &ldquo;vagrant up &ndash;provision&rdquo;
+
+<http://pad.emacsconf.org.vagrant/>
+
+Progress:
+<http://pad.emacsconf.org.vagrant:9001/p/2025-hyperboleqa> works
+<http://pad.emacsconf.org.vagrant/p/2025-hyperboleqa> works now that I passthrough .js
+
+<http://pad.emacsconf.org.vagrant/padbootstrap-rLLvrD2UOFI.min.js>
+
+
+### Generate pads for all the talks
+
+
+### TODO Generate the main index
+
+
+<a id="check-emacsconf-infrastructure-do-a-dry-run"></a>
+
+## TODO Do a dry run
+
+
+### TODO Generate all the test assets
+
+
+### TODO Test connecting to VNC and streaming via OBS :emacsconf:
+
+
+<a id="check-emacsconf-infrastructure-resizing"></a>
+
+## Resizing
+
+live0: 64GB
+front0: 32GB
+meet: 64GB
+
+
+### TODO Resize nodes before production
+
+live0: 64GB
+front0: 32GB
+meet: 64GB
+
+
+### TODO Resize nodes after production
+
+live0: nanode
+front0: nanode
+
+
+### TODO Resize meet after production
+
+meet: nanode
+
+
+<a id="processes-and-notes"></a>
+
+# Processes and notes
+
+
+<a id="processes-and-notes-hosting"></a>
+
+## Hosting
+
+
+### TODO Finalize host for dev track
+
+
+<a id="processes-and-notes-erc"></a>
+
+## ERC
+
+Some convenient commands are defined in <a href="https://git.emacsconf.org/emacsconf-el/tree/emacsconf-erc.el">emacsconf-erc.el</a>.
+
+<table>
+
+
+<colgroup>
+<col class="org-left">
+
+<col class="org-left">
+</colgroup>
+<tbody>
+<tr>
+<td class="org-left">/opall</td>
+<td class="org-left">Grant operator status in the Emacsconf channels</td>
+</tr>
+
+<tr>
+<td class="org-left">/deopall</td>
+<td class="org-left">Remove operator status in the Emacsconf channels</td>
+</tr>
+
+<tr>
+<td class="org-left">/conftopic</td>
+<td class="org-left">Set the first part of the topic</td>
+</tr>
+</tbody>
+</table>
+
+
+<a id="processes-and-notes-uploading-videos"></a>
+
+## Uploading videos
+
+
+### YouTube
+
+emacsconf-publish-youtube-step-through-publishing
+
+
+### Toobnix
+
+
+<a id="decisions"></a>
+
+# Decisions
+
+
+<a id="support-code"></a>
+
+# Support code
+
+ (defun my-ox-link-path (link _ info)
+ (let* ((raw-path (org-element-property :path link)))
+ (setq raw-path
+ (org-export-file-uri
+ (org-publish-file-relative-name raw-path info)))
+ ;; Possibly append `:html-link-home' to relative file
+ ;; name.
+ (let ((home (and (plist-get info :html-link-home)
+ (org-trim (plist-get info :html-link-home)))))
+ (when (and home
+ (plist-get info :html-link-use-abs-url)
+ (not (file-name-absolute-p raw-path)))
+ (setq raw-path (concat (file-name-as-directory home) raw-path))))
+ raw-path))
+
+ (defun my-org-md-link (link desc info)
+ (if (string= (org-element-property :type link) "file")
+ (let ((path (my-ox-link-path link desc info)))
+ (if (string= (file-name-extension path) "svg")
+ (with-temp-buffer
+ (insert-file-contents-literally path)
+ (buffer-string))
+ (org-md-link link desc info)))
+ (org-md-link link desc info)))
+
+ (with-eval-after-load 'ox-md
+ (setf
+ (alist-get 'link (org-export-backend-transcoders (org-export-get-backend 'md)))
+ 'my-org-md-link))
+
diff --git a/2026/organizers-notebook/index.org b/2026/organizers-notebook/index.org
index 7c052325..937f92fb 100644
--- a/2026/organizers-notebook/index.org
+++ b/2026/organizers-notebook/index.org
@@ -138,6 +138,9 @@ interests you!
:END:
** DONE Set up organizers notebook
CLOSED: [2026-07-02 Thu 11:35]
+:PROPERTIES:
+:CUSTOM_ID: phases-set-up-organizers-notebook
+:END:
:LOGBOOK:
- State "DONE" from "TODO" [2025-06-17 Tue 10:41]
:END:
@@ -164,14 +167,23 @@ CLOSED: [2026-07-02 Thu 11:35]
:END:
**** DONE Update dates in emacsconf.el
CLOSED: [2026-07-02 Thu 11:35]
+:PROPERTIES:
+:CUSTOM_ID: phases-draft-cfp-update-dates-in-emacsconf-el
+:END:
[[file:~/proj/emacsconf/lisp/emacsconf.el]]
[[file:~/proj/emacsconf/lisp/emacsconf-erc.el]]
**** DONE Update conf topic
CLOSED: [2026-07-02 Thu 11:35]
+:PROPERTIES:
+:CUSTOM_ID: phases-draft-cfp-update-conf-topic
+:END:
[[file:~/proj/emacsconf/wiki/organizers-notebook/index.org::#phases-and-lessons-learned-draft-cfp-update-the-irc-topic][Update the IRC topic]]
**** DONE Remove draft marker
CLOSED: [2026-07-02 Thu 11:35]
+:PROPERTIES:
+:CUSTOM_ID: phases-draft-cfp-remove-draft-marker
+:END:
- [ ] cfp
- [ ] submit
@@ -202,15 +214,15 @@ CLOSED: [2026-07-02 Thu 11:35]
'((:label "Saturday"
:start "2026-12-12 9:00"
:end "2026-12-12 18:00"
- :tracks ("General" "Development"))
+ :tracks ("General" "B"))
(:label "Sunday"
:start "2026-12-13 9:00"
:end "2026-12-13 18:00"
- :tracks ("General" "Development"))))
+ :tracks ("General" "B"))))
(let ((emacsconf-schedule-default-buffer-minutes 10)
(emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 20)
(emacsconf-schedule-break-time 10)
- (emacsconf-schedule-lunch-time 45)
+ (emacsconf-schedule-lunch-time 60)
(emacsconf-use-absolute-url t)
(emacsconf-schedule-strategies '(emacsconf-schedule-allocate-buffer-time
emacsconf-schedule-copy-previous-track))
@@ -225,28 +237,43 @@ CLOSED: [2026-07-02 Thu 11:35]
(setq emacsconf-schedule-plan
'(("GEN Saturday, Dec 6" :start "2026-12-12 09:00" :set-track "General")
sat-open
- emacspeak
- cadet
- local
- hutch
- rau
- bone
+ planning ; The Emacs Planning Habits of a Questionably Effective Person
+ listen ; Controlling Emacs by voice using Emacslisten
+ emacspeak ; Multi-dimensional information processing with Emacs and Emacspeak
+ rau ; <= 13:00
(lunch :start "12:00")
- align
- portable
- planning
- writing
- koutliner
+ plots ; <= 14:00 Plots with ROOTs
+ ffs ; Plain text presentations in GNU Emacs with ffs
bible
- anju
- open-mic
+ svg
+ anju ; >= 12:00
+ ghostel ; >= 14:00 Ghost in the Shell: a libghostty powered terminal for Emacs
sat-close
- ("DEV Saturday, Dec 6" :start "2026-12-12 9:30" :set-track "Development")
+ ("B Saturday, Dec 6" :start "2026-12-12 9:30" :set-track "B")
(lunch :start "12:00")
+ llms
+ portable ; Emacs as my portable user space across operating platforms
+ os
+ cadet ; My Space Cadet Deck
("GEN Sunday, Dec 7" :start "2026-12-13 09:00" :set-track "General")
sun-open
- (lunch :start "12:00" :start "16:30")
+ bone ; <= 13:00 bug reports
+ local
+ hutch ; hutch: code reviews for the mildly disenfranchised
+ team
+ compile ; >= 11:00
+ (lunch :start "12:00")
+ mobile ; How I fixed Org Mode's biggest mobile and collaboration problems
+ writing
+ hyperbole ; Hyperbole, My Dear Watson
+ koutliner ; >= 11:00 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs
+ dnd ; DnD and Org Roam: Becoming a Better DM with Emacs
+ align
(sun-close)
+ ("B Saturday, Dec 6" :start "2026-12-13 10:00" :set-track "B")
+ community
+ (lunch :start "12:00")
+;; open-mic
))
(setq emacsconf-schedule-draft (emacsconf-schedule-prepare (emacsconf-schedule-inflate-sexp emacsconf-schedule-plan)))
(prog1 (string-join (emacsconf-schedule-validate emacsconf-schedule-draft) "\n")
@@ -266,14 +293,13 @@ CLOSED: [2026-07-02 Thu 11:35]
(clear-image-cache))))
#+end_src
+#+ATTR_ORG: :width 500
+[[file:schedule.svg]]
+
#+RESULTS: schedule
:results:
-sunday closing remarks: Starts at 12:45 before 16:30
:end:
-#+ATTR_ORG: :width 500
-[[file:schedule.svg]]
-
Legend:
- light blue: constraint is <= a time
- peach: constraint is >= a time
@@ -282,8 +308,17 @@ Legend:
Notes:
+- Let's see if we can pair these up:
+ - emacsconf:listen and emacsconf:emacspeak
+ - emacsconf:mobile, emacsconf:hyperbole, emacsconf:koutliner, emacsconf:dnd: PIM
+ - emacsconf:hutch and emacsconf:team and emacsconf:compile - LLM-related; people who aren't interested in LLMs can continue to hang out with bzg in the emacsconf:bone talk
+ - emacsconf:portable, emacsconf:os and emacsconf:cadet
+ - emacsconf:community and emacsconf:llms might be either panels or open-mic meetup-type things
** Review rescheduled talks
+:PROPERTIES:
+:CUSTOM_ID: phases-review-rescheduled-talks
+:END:
#+begin_src emacs-lisp :results table replace
(mapcar (lambda (o)
@@ -298,11 +333,15 @@ For big changes, use emacsconf-mail-schedule-updates
** While speakers are working on their videos
+:PROPERTIES:
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos
+:END:
*** TODO Send draft schedule :email:
SCHEDULED: <2026-09-25 Fri>
:PROPERTIES:
:CREATED: [2025-09-30 Tue 09:38]
:Effort: 0:30
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos-send-draft-schedule
:END:
:LOGBOOK:
CLOCK: [2025-10-03 Fri 10:26]--[2025-10-03 Fri 11:07] => 0:41
@@ -311,14 +350,25 @@ CLOCK: [2025-10-03 Fri 10:26]--[2025-10-03 Fri 11:07] => 0:41
*** TODO Send backstage and upload instructions :email:
:PROPERTIES:
:CREATED: [2025-09-30 Tue 09:39]
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos-send-backstage-and-upload-instructions
:END:
*** TODO Record pronunciations
+:PROPERTIES:
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos-record-pronunciations
+:END:
*** TODO Post the schedule publicly
+:PROPERTIES:
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos-post-the-schedule-publicly
+:END:
** While volunteers are working on captions
+:PROPERTIES:
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions
+:END:
*** TODO E-mail speakers asking them to confirm the pronunciations :email:
SCHEDULED: <2026-12-01 Tue>
:PROPERTIES:
:CREATED: [2025-09-30 Tue 09:39]
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions-e-mail-speakers-asking-them-to-confirm-the-pronunciations
:END:
*** Record intros and opening remarks
:PROPERTIES:
@@ -331,7 +381,7 @@ SCHEDULED: <2026-12-01 Tue>
:CUSTOM_ID: phases-record-intros-and-opening-remarks-record-sat-open-remarks
:END:
-Welcome to EmacsConf 2025, where we have fun
+Welcome to EmacsConf 2026, where we have fun
exploring how much we can do with a text editor.
It's hard to give a general overview
of all the cool talks today and tomorrow,
@@ -404,7 +454,7 @@ so you can follow the links to get to the next one
or go back to the schedule and get the link from there.
If you have general feedback about
the conference itself, please put it in
-pad.emacsconf.org/2025 , which is linked on each pad.
+pad.emacsconf.org/2026 , which is linked on each pad.
You can also use this as a general community message board
for things like Help Wanted.
Internet Relay Chat or IRC can be another great way
@@ -451,13 +501,13 @@ and you'll probably meet us in the closing remarks.
That's also where we get to thank
all the people and organizations
who make EmacsConf possible.
-Thanks for coming to EmacsConf 2025.
+Thanks for coming to EmacsConf 2026.
**** TODO Record sun-open remarks
:PROPERTIES:
:CUSTOM_ID: phases-record-intros-and-opening-remarks-record-sun-open-remarks
:END:
-Welcome to the second day of EmacsConf 2025.
+Welcome to the second day of EmacsConf 2026.
The best parts of EmacsConf are the conversations.
The wiki has a page on how to watch and participate,
and I'll give you a quick overview as well.
@@ -531,7 +581,7 @@ so you can follow the links to get to the next one
or go back to the schedule and get the link from there.
If you have general feedback about
the conference itself, please put it in
-pad.emacsconf.org/2025 , which is linked on each pad.
+pad.emacsconf.org/2026 , which is linked on each pad.
You can also use this as a general community message board
for things like Help Wanted.
Internet Relay Chat or IRC can be another great way
@@ -577,12 +627,27 @@ and you'll probably meet us in the closing remarks.
That's also where we get to thank
all the people and organizations
who make EmacsConf even possible.
-Thanks for coming to EmacsConf 2025.
+Thanks for coming to EmacsConf 2026.
*** TODO Generate assets
+:PROPERTIES:
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions-generate-assets
+:END:
*** TODO Send check-in details :email:
+:PROPERTIES:
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions-send-check-in-details
+:END:
*** TODO Ask libera.chat to increase IRC limit
+:PROPERTIES:
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions-ask-libera-chat-to-increase-irc-limit
+:END:
** After the conference
+:PROPERTIES:
+:CUSTOM_ID: phases-after-the-conference
+:END:
*** TODO Send thanks and follow-up questions :email:
+:PROPERTIES:
+:CUSTOM_ID: phases-after-the-conference-send-thanks-and-follow-up-questions
+:END:
** TODO Confirm shifts
SCHEDULED: <2026-12-01 Tue>
:PROPERTIES:
@@ -600,23 +665,21 @@ SCHEDULED: <2026-12-01 Tue>
AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)
-Saturday Dec 6 2025
+Saturday Dec 12 2026
#+NAME: saturday-shifts
| | Start | End | [[https://emacsconf.org/2023/volunteer/host/][Host]] | Streamer | [[https://emacsconf.org/2023/volunteer/checkin/][Checkin]] | [[https://emacsconf.org/2023/volunteer/irc/][IRC]] | [[https://emacsconf.org/2023/volunteer/pad/][Pad]] | Coord |
|--------+-------+-------+--------+----------+---------+-----+-----+--------|
-| Gen AM | 09:00 | 12:00 | zaeph | sachac | sachac | | | sachac |
-| Gen PM | 13:00 | 17:00 | zaeph | sachac | sachac | | | sachac |
-| Dev AM | 10:00 | 12:00 | corwin | sachac | sachac | | | sachac |
-| Dev PM | 13:00 | 17:00 | corwin | sachac | sachac | | | sachac |
+| Gen AM | 09:00 | 12:00 |
+| Gen PM | 13:00 | 17:00 |
-Sunday Dec 7 2025
+Sunday Dec 13 2026
#+NAME: sunday-shifts
| | Start | End | [[https://emacsconf.org/2023/volunteer/host/][Host]] | Streamer | [[https://emacsconf.org/2023/volunteer/checkin/][Checkin]] | [[https://emacsconf.org/2023/volunteer/irc/][IRC]] | [[https://emacsconf.org/2023/volunteer/pad/][Pad]] | Coord |
|--------+-------+-------+--------------+----------+---------+-----+-----+--------|
-| Gen AM | 09:00 | 12:00 | zaeph/corwin | sachac | sachac | | | sachac |
-| Gen PM | 13:00 | 17:00 | zaeph/corwin | sachac | sachac | | | sachac |
+| Gen AM | 09:00 | 12:00 |
+| Gen PM | 13:00 | 17:00 |
Backups:
- dev host/streamer:
@@ -678,7 +741,7 @@ Interested in a shift? Please e-mail [[mailto:emacsconf-org-private@gnu.org]] an
#+RESULTS:
:results:
-(setq emacsconf-shifts (list (list :id "sat-am-gen" :track "General" :start "2025-12-06T09:00:00-0500" :end "2025-12-06T12:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sat-pm-gen" :track "General" :start "2025-12-06T13:00:00-0500" :end "2025-12-06T17:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sat-am-dev" :track "Development" :start "2025-12-06T10:00:00-0500" :end "2025-12-06T12:00:00-0500" :host "corwin" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sat-pm-dev" :track "Development" :start "2025-12-06T13:00:00-0500" :end "2025-12-06T17:00:00-0500" :host "corwin" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sun-am-gen" :track "General" :start "2025-12-07T09:00:00-0500" :end "2025-12-07T12:00:00-0500" :host "zaeph/corwin" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sun-pm-gen" :track "General" :start "2025-12-07T13:00:00-0500" :end "2025-12-07T17:00:00-0500" :host "zaeph/corwin" :streamer "sachac" :checkin "sachac" :coord "sachac")))
+(setq emacsconf-shifts (list (list :id "sat-am-gen" :track "General" :start "2025-12-06T09:00:00-0500" :end "2025-12-06T12:00:00-0500") (list :id "sat-pm-gen" :track "General" :start "2025-12-06T13:00:00-0500" :end "2025-12-06T17:00:00-0500") (list :id "sun-am-gen" :track "General" :start "2025-12-07T09:00:00-0500" :end "2025-12-07T12:00:00-0500") (list :id "sun-pm-gen" :track "General" :start "2025-12-07T13:00:00-0500" :end "2025-12-07T17:00:00-0500")))
:end:
@@ -743,6 +806,9 @@ CLOCK: [2024-11-20 Wed 10:48]--[2024-11-20 Wed 12:18] => 1:30
:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-check-bbb-audio-from-my-phone
:END:
*** Customize BigBlueButton branding
+:PROPERTIES:
+:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-customize-bigbluebutton-branding
+:END:
**** TODO [#C] Change background presentation
:PROPERTIES:
:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-change-background-presentation
@@ -853,6 +919,7 @@ emacsconf-stream-generate-test-videos
*** TODO Try upgrading to 2.x
:PROPERTIES:
:Effort: 2:00
+:CUSTOM_ID: check-emacsconf-infrastructure-etherpad-try-upgrading-to-2-x
:END:
:LOGBOOK:
CLOCK: [2025-09-22 Mon 12:46]
@@ -954,12 +1021,21 @@ Some convenient commands are defined in emacsconf-el:emacsconf-erc.el.
| /deopall | Remove operator status in the Emacsconf channels |
| /conftopic | Set the first part of the topic |
** Uploading videos
+:PROPERTIES:
+:CUSTOM_ID: processes-and-notes-uploading-videos
+:END:
*** YouTube
+:PROPERTIES:
+:CUSTOM_ID: processes-and-notes-uploading-videos-youtube
+:END:
emacsconf-publish-youtube-step-through-publishing
*** Toobnix
+:PROPERTIES:
+:CUSTOM_ID: processes-and-notes-uploading-videos-toobnix
+:END:
* Decisions
:PROPERTIES:
diff --git a/2026/organizers-notebook/schedule.svg b/2026/organizers-notebook/schedule.svg
index 034b5735..e29bdbe4 100644
--- a/2026/organizers-notebook/schedule.svg
+++ b/2026/organizers-notebook/schedule.svg
@@ -1 +1 @@
-<svg width="500" height="700" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday</title><rect width="166" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Saturday</text><a href="https://emacsconf.org/2026/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"><title> 9:00- 9:10 Saturday opening remarks</title><rect x="40" y="40" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-open</text></g></a><a href="https://emacsconf.org/2026/talks/emacspeak" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title> 9:10- 9:40 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="40" y="53" opacity="0.8" width="42" height="41" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,92)"><text fill="black" x="0" y="0" font-size="10" transform="nil">emacspeak</text></g></a><a href="https://emacsconf.org/2026/talks/cadet" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title> 9:50-10:00 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="40" y="108" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,119)"><text fill="black" x="0" y="0" font-size="10" transform="nil">cadet</text></g></a><a href="https://emacsconf.org/2026/talks/local" title="Local file history possibilities in Emacs" data-slug="local"><title>10:20-10:30 Local file history possibilities in Emacs</title><rect x="40" y="149" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,160)"><text fill="black" x="0" y="0" font-size="10" transform="nil">local</text></g></a><a href="https://emacsconf.org/2026/talks/hutch" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>10:50-11:00 hutch: code reviews for the mildly disenfranchised</title><rect x="40" y="190" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect><g transform="translate(40,201)"><text fill="black" x="0" y="0" font-size="10" transform="nil">hutch</text></g></a><a href="https://emacsconf.org/2026/talks/rau" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>11:10-11:30 Emacs as a Window Manager and concurrency</title><rect x="40" y="218" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,243)"><text fill="black" x="0" y="0" font-size="10" transform="nil">rau</text></g></a><a href="https://emacsconf.org/2026/talks/bone" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>11:50-12:00 BONE and gnaw.el: tracking what matters</title><rect x="40" y="273" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,284)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bone</text></g></a><a href="https://emacsconf.org/2026/talks/align" title="Column-aligning text in Emacs" data-slug="align"><title>12:45- 1:05 Column-aligning text in Emacs</title><rect x="40" y="348" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,373)"><text fill="black" x="0" y="0" font-size="10" transform="nil">align</text></g></a><a href="https://emacsconf.org/2026/talks/portable" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title> 1:25- 1:35 Emacs as my portable user space across operating platforms</title><rect x="40" y="403" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,414)"><text fill="black" x="0" y="0" font-size="10" transform="nil">portable</text></g></a><a href="https://emacsconf.org/2026/talks/planning" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title> 1:55- 2:15 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="40" y="444" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,469)"><text fill="black" x="0" y="0" font-size="10" transform="nil">planning</text></g></a><a href="https://emacsconf.org/2026/talks/writing" title="Close the writing accountability gap with Emacs" data-slug="writing"><title> 2:35- 2:55 Close the writing accountability gap with Emacs</title><rect x="40" y="499" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,524)"><text fill="black" x="0" y="0" font-size="10" transform="nil">writing</text></g></a><a href="https://emacsconf.org/2026/talks/koutliner" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title> 3:15- 3:35 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="40" y="554" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,579)"><text fill="black" x="0" y="0" font-size="10" transform="nil">koutliner</text></g></a><a href="https://emacsconf.org/2026/talks/bible" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title> 3:55- 4:15 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="40" y="609" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,634)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bible</text></g></a><a href="https://emacsconf.org/2026/talks/anju" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title> 4:35- 4:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="40" y="664" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(40,689)"><text fill="black" x="0" y="0" font-size="10" transform="nil">anju</text></g></a><a href="https://emacsconf.org/2026/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"><title> 5:05- 5:15 Saturday closing remarks / open session</title><rect x="40" y="705" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,716)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-close</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g><g transform="translate(166,0)"><title>Schedule for Sunday</title><rect width="166" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Sunday</text><a href="https://emacsconf.org/2026/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"><title> 9:00- 9:10 Sunday opening remarks</title><rect x="40" y="40" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-open</text></g></a><a href="https://emacsconf.org/2026/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"><title>12:45-12:55 Sunday closing remarks</title><rect x="40" y="348" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,359)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-close</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g><g transform="translate(332,0)"><title>Schedule for Wednesday</title><rect width="166" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Wednesday</text><a href="https://emacsconf.org/2026/talks/open-mic" title="Open session" data-slug="open-mic"><title> 7:58- 7:58 Open session</title><rect x="40" y="-128" opacity="0.8" width="42" height="0" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,-130)"><text fill="black" x="0" y="0" font-size="10" transform="nil">open-mic</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">6 PM</text></g></g></svg> \ No newline at end of file
+<svg width="500" height="700" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Saturday</text><a href="https://emacsconf.org/2026/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"><title> 9:00- 9:10 Saturday opening remarks</title><rect x="40" y="40" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-open</text></g></a><a href="https://emacsconf.org/2026/talks/planning" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title> 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="40" y="53" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,78)"><text fill="black" x="0" y="0" font-size="10" transform="nil">planning</text></g></a><a href="https://emacsconf.org/2026/talks/listen" title="Controlling Emacs by voice using Emacslisten" data-slug="listen"><title> 9:50-10:10 Controlling Emacs by voice using Emacslisten</title><rect x="40" y="108" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,133)"><text fill="black" x="0" y="0" font-size="10" transform="nil">listen</text></g></a><a href="https://emacsconf.org/2026/talks/emacspeak" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="40" y="163" opacity="0.8" width="84" height="41" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,202)"><text fill="black" x="0" y="0" font-size="10" transform="nil">emacspeak</text></g></a><a href="https://emacsconf.org/2026/talks/rau" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>11:10-11:30 Emacs as a Window Manager and concurrency</title><rect x="40" y="218" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,243)"><text fill="black" x="0" y="0" font-size="10" transform="nil">rau</text></g></a><a href="https://emacsconf.org/2026/talks/plots" title="Plots with ROOTs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title> 1:00- 1:20 Plots with ROOTs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="40" y="369" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,394)"><text fill="black" x="0" y="0" font-size="10" transform="nil">plots</text></g></a><a href="https://emacsconf.org/2026/talks/ffs" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title> 1:40- 2:00 Plain text presentations in GNU Emacs with ffs</title><rect x="40" y="424" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,449)"><text fill="black" x="0" y="0" font-size="10" transform="nil">ffs</text></g></a><a href="https://emacsconf.org/2026/talks/bible" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title> 2:20- 2:40 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="40" y="479" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,504)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bible</text></g></a><a href="https://emacsconf.org/2026/talks/svg" title="A (sort of) REPL for learning SVG" data-slug="svg"><title> 3:00- 3:20 A (sort of) REPL for learning SVG</title><rect x="40" y="534" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,559)"><text fill="black" x="0" y="0" font-size="10" transform="nil">svg</text></g></a><a href="https://emacsconf.org/2026/talks/anju" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title> 3:40- 4:00 Revisiting Emacs Mouse Interactions with Anju</title><rect x="40" y="589" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(40,614)"><text fill="black" x="0" y="0" font-size="10" transform="nil">anju</text></g></a><a href="https://emacsconf.org/2026/talks/ghostel" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title> 4:10- 4:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="40" y="630" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,655)"><text fill="black" x="0" y="0" font-size="10" transform="nil">ghostel</text></g></a><a href="https://emacsconf.org/2026/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"><title> 4:50- 5:00 Saturday closing remarks / open session</title><rect x="40" y="685" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,696)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-close</text></g></a><a href="https://emacsconf.org/2026/talks/llms" title="Meetup about LLMs" data-slug="llms"><title> 1:00- 2:00 Meetup about LLMs</title><rect x="125" y="369" opacity="0.8" width="84" height="82" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,449)"><text fill="black" x="0" y="0" font-size="10" transform="nil">llms</text></g></a><a href="https://emacsconf.org/2026/talks/portable" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title> 2:20- 2:30 Emacs as my portable user space across operating platforms</title><rect x="125" y="479" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,490)"><text fill="black" x="0" y="0" font-size="10" transform="nil">portable</text></g></a><a href="https://emacsconf.org/2026/talks/os" title="Emacs Everywhere: A Fun Romp Through Esoteric Operating Systems" data-slug="os"><title> 2:50- 3:10 Emacs Everywhere: A Fun Romp Through Esoteric Operating Systems</title><rect x="125" y="520" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,545)"><text fill="black" x="0" y="0" font-size="10" transform="nil">os</text></g></a><a href="https://emacsconf.org/2026/talks/cadet" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title> 3:30- 3:40 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="125" y="575" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,586)"><text fill="black" x="0" y="0" font-size="10" transform="nil">cadet</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g><g transform="translate(250,0)"><title>Schedule for Sunday</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Sunday</text><a href="https://emacsconf.org/2026/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"><title> 9:00- 9:10 Sunday opening remarks</title><rect x="40" y="40" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-open</text></g></a><a href="https://emacsconf.org/2026/talks/bone" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title> 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="40" y="53" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,64)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bone</text></g></a><a href="https://emacsconf.org/2026/talks/local" title="Local file history possibilities in Emacs" data-slug="local"><title> 9:40- 9:50 Local file history possibilities in Emacs</title><rect x="40" y="94" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,105)"><text fill="black" x="0" y="0" font-size="10" transform="nil">local</text></g></a><a href="https://emacsconf.org/2026/talks/hutch" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>10:10-10:20 hutch: code reviews for the mildly disenfranchised</title><rect x="40" y="136" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect><g transform="translate(40,147)"><text fill="black" x="0" y="0" font-size="10" transform="nil">hutch</text></g></a><a href="https://emacsconf.org/2026/talks/team" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>10:30-10:50 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="40" y="163" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,188)"><text fill="black" x="0" y="0" font-size="10" transform="nil">team</text></g></a><a href="https://emacsconf.org/2026/talks/compile" title="Beyond Shell History: Saving Compilation Output in Emacs" data-slug="compile"><title>11:10-11:30 Beyond Shell History: Saving Compilation Output in Emacs</title><rect x="40" y="218" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,243)"><text fill="black" x="0" y="0" font-size="10" transform="nil">compile</text></g></a><a href="https://emacsconf.org/2026/talks/mobile" title="How I fixed Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title> 1:00- 1:10 How I fixed Org Mode's biggest mobile and collaboration problems</title><rect x="40" y="369" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,380)"><text fill="black" x="0" y="0" font-size="10" transform="nil">mobile</text></g></a><a href="https://emacsconf.org/2026/talks/writing" title="Close the writing accountability gap with Emacs" data-slug="writing"><title> 1:30- 1:50 Close the writing accountability gap with Emacs</title><rect x="40" y="410" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,435)"><text fill="black" x="0" y="0" font-size="10" transform="nil">writing</text></g></a><a href="https://emacsconf.org/2026/talks/hyperbole" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title> 2:10- 2:30 Hyperbole, My Dear Watson</title><rect x="40" y="465" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,490)"><text fill="black" x="0" y="0" font-size="10" transform="nil">hyperbole</text></g></a><a href="https://emacsconf.org/2026/talks/koutliner" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title> 2:50- 3:10 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="40" y="520" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,545)"><text fill="black" x="0" y="0" font-size="10" transform="nil">koutliner</text></g></a><a href="https://emacsconf.org/2026/talks/dnd" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title> 3:30- 3:40 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="40" y="575" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,586)"><text fill="black" x="0" y="0" font-size="10" transform="nil">dnd</text></g></a><a href="https://emacsconf.org/2026/talks/align" title="Column-aligning text in Emacs" data-slug="align"><title> 4:00- 4:20 Column-aligning text in Emacs</title><rect x="40" y="616" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,641)"><text fill="black" x="0" y="0" font-size="10" transform="nil">align</text></g></a><a href="https://emacsconf.org/2026/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"><title> 4:40- 4:50 Sunday closing remarks</title><rect x="40" y="671" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,682)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-close</text></g></a><a href="https://emacsconf.org/2026/talks/community" title="Community brainstorming" data-slug="community"><title>10:00-11:00 Community brainstorming</title><rect x="125" y="122" opacity="0.8" width="84" height="82" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,202)"><text fill="black" x="0" y="0" font-size="10" transform="nil">community</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g></svg> \ No newline at end of file
diff --git a/2026/talks/portable.md b/2026/talks/portable.md
index 762b17be..7f502be2 100644
--- a/2026/talks/portable.md
+++ b/2026/talks/portable.md
@@ -11,27 +11,19 @@ Mohammed Ismail Ansari - <https://myterminal.me>, <mailto:mail@myterminal.me>
[[!inline pages="internal(2026/info/portable-before)" raw="yes"]]
-In the talk, I plan to cover my entry
-into the world of Emacs, a high-level series of events that shaped my
-experience and learning, and a few takeaways from someone coming from an
-entire different toolset and mentality, eventually having a moment of
-enlightenment to never go back again. The talk will revolve around how
-it has been my companion across multiple operating platforms and will
-remain to be one of the core elements of my computing toolset no matter
-the environment or platform. I'll talk about a few highs and lows of my
-attempts of inviting friends to Emacs, a few mentions of my
-contributions to the community and hopefully some tips for inspiration
-to newcomers and fellow Emacs-ers alike. Along with these, I'll also
-walk through how and why I created super-emacs and why I think it can be
-a reasonably easy starting point for someone getting into Emacs as their
-daily driver.
+In the talk, I'll cover my brief experience using Emacs across three
+major operating systems, how it influenced the other tools within my
+toolset, my effort to share my configuration with the rest of us, and
+eventually super-emacs: my attempt at a minimal but feature-full
+starter pack for Emacs that I've been maintaining for over a decade
+now.
About the speaker: I, Mohammed Ismail Ansari (aka myTerminal), come
from an academic background in Electronics Engineering, and have been
working professionally as a software engineer since seventeen years.
-I love to create and experimenting with all kinds of machines, not
-just computers, enjoying the exploration and tinkering process.
-In the recent years I've also discovered my interest in personal
+I love to create and experiment with all kinds of machines, not just
+computers, enjoying the exploration and tinkering process. In the
+recent years I've also discovered my interest in personal
productivity, and pairing them with some of the core elements within
my toolset, including Linux, Emacs, and many other open-source
software everything fits in place as if it was supposed to be.