summaryrefslogtreecommitdiffstats
path: root/2023/organizers-notebook.md
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2023-10-30 19:23:19 -0400
committerSacha Chua <sacha@sachachua.com>2023-10-30 19:23:19 -0400
commitfb74be4f3270f81f95e5f590a2119c01e5066ffc (patch)
treeccc13ee97c23aa2b14430ee127af6bc0ba1cb9cb /2023/organizers-notebook.md
parenta72074798599d0a7c779e2c8e16da7433bd085f2 (diff)
downloademacsconf-wiki-fb74be4f3270f81f95e5f590a2119c01e5066ffc.tar.xz
emacsconf-wiki-fb74be4f3270f81f95e5f590a2119c01e5066ffc.zip
update schedule
Diffstat (limited to '2023/organizers-notebook.md')
-rw-r--r--2023/organizers-notebook.md712
1 files changed, 589 insertions, 123 deletions
diff --git a/2023/organizers-notebook.md b/2023/organizers-notebook.md
index adb62394..dd466ac3 100644
--- a/2023/organizers-notebook.md
+++ b/2023/organizers-notebook.md
@@ -5,7 +5,7 @@ This file is automatically exported from [/2023/organizers-notebook/index.org](/
Help wanted:
-- [Figure out a better way to handle 480p stream](#lowres)
+- [Find volunteers for audio processing (normalization, noise reduction) and document the process](#audio)
Help wanted:
@@ -26,9 +26,9 @@ Help wanted:
- [Distribute CFP](#distrib-cfp)
- [Process submissions](#submission-process)
- [Draft schedule](#draft-schedule)
- - [Prepare infrastructure](#check-infra)
- - [Prepare assets](#prepare-assets)
- - [Coordinate volunteers](#coordinate-volunteers)
+ - [Prepare for the conference](#status)
+ - [Get ready for production](#go-live)
+ - [Volunteers](#coordinate-volunteers)
- [Progress reports](#progress)
- [E-mail templates](#templates)
- [Review](#review)
@@ -570,7 +570,7 @@ Sacha
These times are in EST (GMT-5).
-<svg width="800" height="300" 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="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="https://emacsconf.org/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="https://emacsconf.org/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title> 9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="https://emacsconf.org/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title> 9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(76,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="https://emacsconf.org/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="https://emacsconf.org/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="https://emacsconf.org/2023/talks/taming" title="Taming things with Org Mode" data-slug="taming"> <title> 11:05-11:15 Taming things with Org Mode</title> <rect x="196" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(209,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</text></g></a> <a href="https://emacsconf.org/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(264,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="https://emacsconf.org/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title> 1:00- 1:10 Emacs turbo-charges my writing</title> <rect x="376" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(389,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="https://emacsconf.org/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title> 1:25- 1:35 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="415" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(428,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="https://emacsconf.org/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title> 1:50- 2:10 Collaborative data processing and documenting using org-babel</title> <rect x="454" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(483,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="https://emacsconf.org/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title> 2:20- 2:40 How I play TTRPGs in Emacs</title> <rect x="501" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(530,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="https://emacsconf.org/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title> 2:55- 3:15 Org-Mode workflow: informal reference tracking</title> <rect x="556" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(585,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="https://emacsconf.org/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title> 3:25- 3:35 (Un)entangling projects and repos</title> <rect x="603" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(616,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="https://emacsconf.org/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 3:45- 3:55 Emacs development updates</title> <rect x="635" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(648,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="https://emacsconf.org/2023/talks/core" title="Emacs core development: how it works" data-slug="core"> <title> 4:05- 4:45 Emacs core development: how it works</title> <rect x="666" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(726,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <a href="https://emacsconf.org/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 5:00- 5:10 Saturday closing remarks</title> <rect x="752" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(765,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="https://emacsconf.org/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(107,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="https://emacsconf.org/2023/talks/voice" title="Improving access to AI-assisted literate programming with voice control" data-slug="voice"> <title> 10:20-10:40 Improving access to AI-assisted literate programming with voice control</title> <rect x="125" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(154,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="https://emacsconf.org/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="yellow"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="https://emacsconf.org/2023/talks/overlay" title="Improving compiler diagnostics with Overlays" data-slug="overlay"> <title> 1:00- 1:20 Improving compiler diagnostics with Overlays</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="https://emacsconf.org/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title> 1:35- 1:45 Editor Integrated REPL Driven Development for all languages</title> <rect x="431" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(444,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="https://emacsconf.org/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title> 2:00- 2:40 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="https://emacsconf.org/2023/talks/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title> 2:50- 3:10 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="549" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsconf</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,150)"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="https://emacsconf.org/2023/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="https://emacsconf.org/2023/talks/hyperamp" title="Top 10 ways Hyperbole amps up Emacs" data-slug="hyperamp"> <title> 9:05- 9:25 Top 10 ways Hyperbole amps up Emacs</title> <rect x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperamp</text></g></a> <a href="https://emacsconf.org/2023/talks/koutline" title="Using Koutline for stream of thought journaling" data-slug="koutline"> <title> 9:40-10:00 Using Koutline for stream of thought journaling</title> <rect x="62" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(91,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> koutline</text></g></a> <a href="https://emacsconf.org/2023/talks/parallel" title="Parallel Text Replacement: Does P = NP?" data-slug="parallel"> <title> 10:10-10:20 Parallel Text Replacement: Does P = NP?</title> <rect x="109" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(122,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> parallel</text></g></a> <a href="https://emacsconf.org/2023/talks/eat" title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs" data-slug="eat"> <title> 10:35-10:45 Eat and Eat powered Eshell, fast featureful terminal inside Emacs</title> <rect x="149" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(162,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eat</text></g></a> <a href="https://emacsconf.org/2023/talks/poltys" title="The browser in a buffer" data-slug="poltys"> <title> 11:00-11:20 The browser in a buffer</title> <rect x="188" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(217,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> poltys</text></g></a> <a href="https://emacsconf.org/2023/talks/cubing" title="Speedcubing in Emacs" data-slug="cubing"> <title> 11:35-11:55 Speedcubing in Emacs</title> <rect x="243" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(272,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> cubing</text></g></a> <a href="https://emacsconf.org/2023/talks/emms" title="Emacs MultiMedia System (EMMS)" data-slug="emms"> <title> 1:00- 1:40 Emacs MultiMedia System (EMMS)</title> <rect x="376" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(436,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emms</text></g></a> <a href="https://emacsconf.org/2023/talks/steno" title="Programming at 200 wpm" data-slug="steno"> <title> 1:55- 2:25 Programming at 200 wpm</title> <rect x="462" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(507,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> steno</text></g></a> <a href="https://emacsconf.org/2023/talks/mentor" title="Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)" data-slug="mentor"> <title> 2:35- 2:45 Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</title> <rect x="525" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(538,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mentor</text></g></a> <a href="https://emacsconf.org/2023/talks/hn" title="The many ways to browse Hacker News from Emacs" data-slug="hn"> <title> 3:00- 3:10 The many ways to browse Hacker News from Emacs</title> <rect x="564" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(577,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hn</text></g></a> <a href="https://emacsconf.org/2023/talks/web" title="Emacs saves the Web" data-slug="web"> <title> 3:25- 4:05 Emacs saves the Web</title> <rect x="603" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(663,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> web</text></g></a> <a href="https://emacsconf.org/2023/talks/sharing" title="Sharing Emacs is Caring Emacs: Emacs education and why I embraced video" data-slug="sharing"> <title> 4:20- 4:40 Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</title> <rect x="690" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(719,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="https://emacsconf.org/2023/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:55- 5:05 Sunday closing remarks</title> <rect x="745" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(758,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="https://emacsconf.org/2023/talks/scheme" title="Bringing joy to Scheme programming" data-slug="scheme"> <title> 10:00-10:20 Bringing joy to Scheme programming</title> <rect x="94" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(123,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> scheme</text></g></a> <a href="https://emacsconf.org/2023/talks/test" title="What I learned by writing test cases for GNU Hyperbole" data-slug="test"> <title> 10:35-10:55 What I learned by writing test cases for GNU Hyperbole</title> <rect x="149" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(178,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> test</text></g></a> <a href="https://emacsconf.org/2023/talks/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title> 11:10-11:30 GNU Emacs: A World of Possibilities</title> <rect x="203" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(232,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> world</text></g></a> <a href="https://emacsconf.org/2023/talks/flat" title="A modern Emacs look-and-feel without pain" data-slug="flat"> <title> 11:45-11:55 A modern Emacs look-and-feel without pain</title> <rect x="258" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(271,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> flat</text></g></a> <a href="https://emacsconf.org/2023/talks/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 1:00- 1:20 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gc</text></g></a> <a href="https://emacsconf.org/2023/talks/hyperdrive" title="hyperdrive.el: Peer-to-peer filesystem in Emacs" data-slug="hyperdrive"> <title> 1:35- 2:15 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="431" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(491,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperdrive</text></g></a> <a href="https://emacsconf.org/2023/talks/lspocaml" title="Writing a language server in OCaml for Emacs, fun, and profit" data-slug="lspocaml"> <title> 2:30- 2:40 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="517" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspocaml</text></g></a> <a href="https://emacsconf.org/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title> 2:55- 3:35 Windows into Freedom</title> <rect x="556" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(616,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <a href="https://emacsconf.org/2023/talks/emacsen" title="The Emacsen family, the design of an Emacs and the importance of Lisp" data-slug="emacsen"> <title> 3:50- 4:10 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="643" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(672,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsen</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg>
+<svg width="800" height="300" 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="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="https://emacsconf.org/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="https://emacsconf.org/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title> 9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="https://emacsconf.org/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title> 9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(76,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="https://emacsconf.org/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="https://emacsconf.org/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="https://emacsconf.org/2023/talks/taming" title="Taming things with Org Mode" data-slug="taming"> <title> 11:05-11:15 Taming things with Org Mode</title> <rect x="196" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(209,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</text></g></a> <a href="https://emacsconf.org/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(264,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="https://emacsconf.org/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title> 1:00- 1:10 Emacs turbo-charges my writing</title> <rect x="376" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(389,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="https://emacsconf.org/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title> 1:25- 1:35 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="415" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(428,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="https://emacsconf.org/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title> 1:50- 2:10 Collaborative data processing and documenting using org-babel</title> <rect x="454" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="yellow"></rect> <g transform="translate(483,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="https://emacsconf.org/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title> 2:20- 2:40 How I play TTRPGs in Emacs</title> <rect x="501" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(530,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="https://emacsconf.org/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title> 2:55- 3:15 Org-Mode workflow: informal reference tracking</title> <rect x="556" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="green"></rect> <g transform="translate(585,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="https://emacsconf.org/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title> 3:25- 3:35 (Un)entangling projects and repos</title> <rect x="603" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(616,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="https://emacsconf.org/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 3:45- 3:55 Emacs development updates</title> <rect x="635" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(648,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="https://emacsconf.org/2023/talks/core" title="Emacs core development: how it works" data-slug="core"> <title> 4:10- 4:50 Emacs core development: how it works</title> <rect x="674" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(734,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <a href="https://emacsconf.org/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 5:05- 5:15 Saturday closing remarks</title> <rect x="760" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(773,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="https://emacsconf.org/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(107,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="https://emacsconf.org/2023/talks/voice" title="Improving access to AI-assisted literate programming with voice control" data-slug="voice"> <title> 10:20-10:40 Improving access to AI-assisted literate programming with voice control</title> <rect x="125" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(154,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="https://emacsconf.org/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="https://emacsconf.org/2023/talks/overlay" title="Improving compiler diagnostics with Overlays" data-slug="overlay"> <title> 1:00- 1:20 Improving compiler diagnostics with Overlays</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="https://emacsconf.org/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title> 1:35- 1:45 Editor Integrated REPL Driven Development for all languages</title> <rect x="431" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(444,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="https://emacsconf.org/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title> 2:00- 2:40 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="https://emacsconf.org/2023/talks/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title> 2:50- 3:10 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="549" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsconf</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,150)"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="https://emacsconf.org/2023/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="https://emacsconf.org/2023/talks/hyperamp" title="Top 10 ways Hyperbole amps up Emacs" data-slug="hyperamp"> <title> 9:05- 9:25 Top 10 ways Hyperbole amps up Emacs</title> <rect x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperamp</text></g></a> <a href="https://emacsconf.org/2023/talks/koutline" title="Using Koutline for stream of thought journaling" data-slug="koutline"> <title> 9:40-10:00 Using Koutline for stream of thought journaling</title> <rect x="62" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(91,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> koutline</text></g></a> <a href="https://emacsconf.org/2023/talks/parallel" title="Parallel Text Replacement: Does P = NP?" data-slug="parallel"> <title> 10:10-10:20 Parallel Text Replacement: Does P = NP?</title> <rect x="109" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(122,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> parallel</text></g></a> <a href="https://emacsconf.org/2023/talks/eat" title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs" data-slug="eat"> <title> 10:35-10:45 Eat and Eat powered Eshell, fast featureful terminal inside Emacs</title> <rect x="149" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(162,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eat</text></g></a> <a href="https://emacsconf.org/2023/talks/poltys" title="The browser in a buffer" data-slug="poltys"> <title> 11:00-11:20 The browser in a buffer</title> <rect x="188" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(217,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> poltys</text></g></a> <a href="https://emacsconf.org/2023/talks/cubing" title="Speedcubing in Emacs" data-slug="cubing"> <title> 11:35-11:55 Speedcubing in Emacs</title> <rect x="243" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(272,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> cubing</text></g></a> <a href="https://emacsconf.org/2023/talks/emms" title="Emacs MultiMedia System (EMMS)" data-slug="emms"> <title> 1:00- 1:40 Emacs MultiMedia System (EMMS)</title> <rect x="376" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(436,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emms</text></g></a> <a href="https://emacsconf.org/2023/talks/steno" title="Programming at 200 wpm" data-slug="steno"> <title> 1:55- 2:25 Programming at 200 wpm</title> <rect x="462" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(507,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> steno</text></g></a> <a href="https://emacsconf.org/2023/talks/mentor" title="Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)" data-slug="mentor"> <title> 2:35- 2:45 Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</title> <rect x="525" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(538,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mentor</text></g></a> <a href="https://emacsconf.org/2023/talks/web" title="Emacs saves the Web" data-slug="web"> <title> 3:10- 3:50 Emacs saves the Web</title> <rect x="580" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(640,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> web</text></g></a> <a href="https://emacsconf.org/2023/talks/sharing" title="Sharing Emacs is Caring Emacs: Emacs education and why I embraced video" data-slug="sharing"> <title> 4:05- 4:25 Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</title> <rect x="666" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(695,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="https://emacsconf.org/2023/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:40- 4:50 Sunday closing remarks</title> <rect x="721" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(734,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="https://emacsconf.org/2023/talks/scheme" title="Bringing joy to Scheme programming" data-slug="scheme"> <title> 10:00-10:20 Bringing joy to Scheme programming</title> <rect x="94" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(123,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> scheme</text></g></a> <a href="https://emacsconf.org/2023/talks/test" title="What I learned by writing test cases for GNU Hyperbole" data-slug="test"> <title> 10:35-10:55 What I learned by writing test cases for GNU Hyperbole</title> <rect x="149" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(178,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> test</text></g></a> <a href="https://emacsconf.org/2023/talks/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title> 11:10-11:30 GNU Emacs: A World of Possibilities</title> <rect x="203" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(232,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> world</text></g></a> <a href="https://emacsconf.org/2023/talks/flat" title="A modern Emacs look-and-feel without pain" data-slug="flat"> <title> 11:45-11:55 A modern Emacs look-and-feel without pain</title> <rect x="258" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(271,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> flat</text></g></a> <a href="https://emacsconf.org/2023/talks/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 1:00- 1:20 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gc</text></g></a> <a href="https://emacsconf.org/2023/talks/hyperdrive" title="hyperdrive.el: Peer-to-peer filesystem in Emacs" data-slug="hyperdrive"> <title> 1:35- 2:15 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="431" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(491,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperdrive</text></g></a> <a href="https://emacsconf.org/2023/talks/lspocaml" title="Writing a language server in OCaml for Emacs, fun, and profit" data-slug="lspocaml"> <title> 2:30- 2:40 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="517" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspocaml</text></g></a> <a href="https://emacsconf.org/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title> 2:55- 3:35 Windows into Freedom</title> <rect x="556" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(616,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <a href="https://emacsconf.org/2023/talks/emacsen" title="The Emacsen family, the design of an Emacs and the importance of Lisp" data-slug="emacsen"> <title> 3:50- 4:10 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="643" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(672,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsen</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg>
- Legend: dashed line means non-BBB Q&A; light gray means penciled-in talk; yellow means video already submitted and being processed
@@ -596,9 +596,9 @@ These times are in EST (GMT-5).
- 2023-12-02 Sat 14:50-15:10 [emacsconf](https://emacsconf.org/2023/talks/emacsconf "EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference"): EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference (Sacha Chua)
- 2023-12-02 Sat 14:55-15:15 - >= 13:00 - [ref](https://emacsconf.org/2023/talks/ref "Org-Mode workflow: informal reference tracking"): Org-Mode workflow: informal reference tracking (Christopher Howard)
- 2023-12-02 Sat 15:25-15:35 - between 15:00-16:00 - [unentangling](https://emacsconf.org/2023/talks/unentangling "(Un)entangling projects and repos"): (Un)entangling projects and repos (Alexey Bochkarev)
-- 2023-12-02 Sat 15:45-15:55 - no live Q&A - [devel](https://emacsconf.org/2023/talks/devel "Emacs development updates"): Emacs development updates (John Wiegley)
-- 2023-12-02 Sat 16:05-16:45 [core](https://emacsconf.org/2023/talks/core "Emacs core development: how it works"): Emacs core development: how it works (Stefan Kangas)
-- 2023-12-02 Sat 17:00-17:10 [sat-close](https://emacsconf.org/2023/talks/sat-close "Saturday closing remarks"): Saturday closing remarks
+- 2023-12-02 Sat 15:45-15:55 - >= 12:00 - [devel](https://emacsconf.org/2023/talks/devel "Emacs development updates"): Emacs development updates (John Wiegley)
+- 2023-12-02 Sat 16:10-16:50 [core](https://emacsconf.org/2023/talks/core "Emacs core development: how it works"): Emacs core development: how it works (Stefan Kangas)
+- 2023-12-02 Sat 17:05-17:15 [sat-close](https://emacsconf.org/2023/talks/sat-close "Saturday closing remarks"): Saturday closing remarks
- 2023-12-03 Sun 09:00-09:05 [sun-open](https://emacsconf.org/2023/talks/sun-open "Sunday opening remarks"): Sunday opening remarks
- 2023-12-03 Sun 09:05-09:25 - <= 12:00 - [hyperamp](https://emacsconf.org/2023/talks/hyperamp "Top 10 ways Hyperbole amps up Emacs"): Top 10 ways Hyperbole amps up Emacs (Robert Weiner)
- 2023-12-03 Sun 09:40-10:00 [koutline](https://emacsconf.org/2023/talks/koutline "Using Koutline for stream of thought journaling"): Using Koutline for stream of thought journaling (Matthew Jorgensen (PlasmaStrike))
@@ -608,7 +608,7 @@ These times are in EST (GMT-5).
- 2023-12-03 Sun 10:35-10:55 - <= 12:00 - [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole"): What I learned by writing test cases for GNU Hyperbole (Mats Lidell)
- 2023-12-03 Sun 11:00-11:20 - <= 13:00 - [poltys](https://emacsconf.org/2023/talks/poltys "The browser in a buffer"): The browser in a buffer (Michael Bauer)
- 2023-12-03 Sun 11:10-11:30 - <= 11:30 - [world](https://emacsconf.org/2023/talks/world "GNU Emacs: A World of Possibilities"): GNU Emacs: A World of Possibilities (Anand Tamariya)
-- 2023-12-03 Sun 11:35-11:55 - <= 17:00 - [cubing](https://emacsconf.org/2023/talks/cubing "Speedcubing in Emacs"): Speedcubing in Emacs (Vasilij &ldquo;wasamasa&rdquo; Schneidermann)
+- 2023-12-03 Sun 11:35-11:55 - <= 17:00 - [cubing](https://emacsconf.org/2023/talks/cubing "Speedcubing in Emacs"): Speedcubing in Emacs (wasamasa)
- 2023-12-03 Sun 11:45-11:55 - between 11:00-13:00 - [flat](https://emacsconf.org/2023/talks/flat "A modern Emacs look-and-feel without pain"): A modern Emacs look-and-feel without pain (Pedro A. Aranda)
- 2023-12-03 Sun 13:00-13:20 - <= 14:00 - [gc](https://emacsconf.org/2023/talks/gc "emacs-gc-stats: Does garbage collection actually slow down Emacs?"): emacs-gc-stats: Does garbage collection actually slow down Emacs? (Ihor Radchenko)
- 2023-12-03 Sun 13:00-13:40 [emms](https://emacsconf.org/2023/talks/emms "Emacs MultiMedia System (EMMS)"): Emacs MultiMedia System (EMMS) (Yoni Rabkin)
@@ -617,11 +617,10 @@ These times are in EST (GMT-5).
- 2023-12-03 Sun 14:30-14:40 [lspocaml](https://emacsconf.org/2023/talks/lspocaml "Writing a language server in OCaml for Emacs, fun, and profit"): Writing a language server in OCaml for Emacs, fun, and profit (Austin Theriault)
- 2023-12-03 Sun 14:35-14:45 [mentor](https://emacsconf.org/2023/talks/mentor "Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)"): Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs) (Jeremy Friesen)
- 2023-12-03 Sun 14:55-15:35 [windows](https://emacsconf.org/2023/talks/windows "Windows into Freedom"): Windows into Freedom (Corwin Brust)
-- 2023-12-03 Sun 15:00-15:10 - >= 15:00 - [hn](https://emacsconf.org/2023/talks/hn "The many ways to browse Hacker News from Emacs"): The many ways to browse Hacker News from Emacs (Mickael Kerjean)
-- 2023-12-03 Sun 15:25-16:05 - >= 15:00 - [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web"): Emacs saves the Web (Yuchen Pei)
+- 2023-12-03 Sun 15:10-15:50 - >= 15:00 - [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web"): Emacs saves the Web (Yuchen Pei)
- 2023-12-03 Sun 15:50-16:10 - no live Q&A - [emacsen](https://emacsconf.org/2023/talks/emacsen "The Emacsen family, the design of an Emacs and the importance of Lisp"): The Emacsen family, the design of an Emacs and the importance of Lisp (Fermin)
-- 2023-12-03 Sun 16:20-16:40 [sharing](https://emacsconf.org/2023/talks/sharing "Sharing Emacs is Caring Emacs: Emacs education and why I embraced video"): Sharing Emacs is Caring Emacs: Emacs education and why I embraced video (Jacob Boxerman)
-- 2023-12-03 Sun 16:55-17:05 [sun-close](https://emacsconf.org/2023/talks/sun-close "Sunday closing remarks"): Sunday closing remarks
+- 2023-12-03 Sun 16:05-16:25 [sharing](https://emacsconf.org/2023/talks/sharing "Sharing Emacs is Caring Emacs: Emacs education and why I embraced video"): Sharing Emacs is Caring Emacs: Emacs education and why I embraced video (Jacob Boxerman)
+- 2023-12-03 Sun 16:40-16:50 [sun-close](https://emacsconf.org/2023/talks/sun-close "Sunday closing remarks"): Sunday closing remarks
### Schedule notes
@@ -707,15 +706,199 @@ When do we want to do this?
We don&rsquo;t have to worry too much, because we can offer them the option of doing it live,
and we can have space in the schedule if they cancel last-minute.
-<a id="check-infra"></a>
+<a id="status"></a>
+
+## Prepare for the conference
+
+<table>
+
+
+<colgroup>
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+</colgroup>
+<thead>
+<tr>
+<th scope="col" class="org-left">ITEM</th>
+<th scope="col" class="org-left">TODO</th>
+<th scope="col" class="org-left">STATUS</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="org-left">Upload</td>
+<td class="org-left">DONE</td>
+<td class="org-left">Ready to go</td>
+</tr>
+
+<tr>
+<td class="org-left">Prerec</td>
+<td class="org-left">DONE</td>
+<td class="org-left">Ready to go</td>
+</tr>
+
+<tr>
+<td class="org-left">Captions</td>
+<td class="org-left">INPROGRESS</td>
+<td class="org-left">Ready to go; waiting for videos and captions</td>
+</tr>
+
+<tr>
+<td class="org-left">Backstage</td>
+<td class="org-left">DONE</td>
+<td class="org-left">Ready to go</td>
+</tr>
+
+<tr>
+<td class="org-left">Test assets</td>
+<td class="org-left">DONE</td>
+<td class="org-left">test videos generated</td>
+</tr>
+
+<tr>
+<td class="org-left">BBB</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">redirects created, confirmed; next: e-mail speakers testing/checkin instructions</td>
+</tr>
+
+<tr>
+<td class="org-left">VNC</td>
+<td class="org-left">DONE</td>
+<td class="org-left">confirmed access to emacsconf-gen and emacsconf-dev</td>
+</tr>
+
+<tr>
+<td class="org-left">OBS</td>
+<td class="org-left">DONE</td>
+<td class="org-left">confirmed that gen and dev can stream</td>
+</tr>
+
+<tr>
+<td class="org-left">Icecast</td>
+<td class="org-left">DONE</td>
+<td class="org-left">gen and dev confirmed with MPV</td>
+</tr>
+
+<tr>
+<td class="org-left">MPV</td>
+<td class="org-left">DONE</td>
+<td class="org-left">confirmed that mpv can watch both streams</td>
+</tr>
+
+<tr>
+<td class="org-left">Watch page</td>
+<td class="org-left">DONE</td>
+<td class="org-left">updated for 2023</td>
+</tr>
+
+<tr>
+<td class="org-left">Status page</td>
+<td class="org-left">DONE</td>
+<td class="org-left">ready to go</td>
+</tr>
+
+<tr>
+<td class="org-left">Public media</td>
+<td class="org-left">DONE</td>
+<td class="org-left">confirmed, set to protected so that we can test publishing live</td>
+</tr>
+
+<tr>
+<td class="org-left">Mumble</td>
+<td class="org-left">DONE</td>
+<td class="org-left">confirmed gen and dev can connect, receive audio</td>
+</tr>
+
+<tr>
+<td class="org-left">Etherpad</td>
+<td class="org-left">DONE</td>
+<td class="org-left">Ready to go, pads created</td>
+</tr>
+
+<tr>
+<td class="org-left">Pad proxy</td>
+<td class="org-left">DONE</td>
+<td class="org-left">Ready to go, pad.emacsconf.org works</td>
+</tr>
+
+<tr>
+<td class="org-left">Overlays</td>
+<td class="org-left">DONE</td>
+<td class="org-left">generated and uploaded</td>
+</tr>
+
+<tr>
+<td class="org-left">Intros</td>
+<td class="org-left">INPROGRESS</td>
+<td class="org-left">all intros recorded, should send them to speakers for review</td>
+</tr>
+
+<tr>
+<td class="org-left">IRC channels</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">Not yet started</td>
+</tr>
+
+<tr>
+<td class="org-left">IRC talk info</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">Not yet started</td>
+</tr>
+
+<tr>
+<td class="org-left">Announcements</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">Not yet started</td>
+</tr>
+
+<tr>
+<td class="org-left">Publishing updates live</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">Not yet started</td>
+</tr>
+
+<tr>
+<td class="org-left">Autopilot</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">Not yet started</td>
+</tr>
+
+<tr>
+<td class="org-left">YouTube</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">Not yet started</td>
+</tr>
+
+<tr>
+<td class="org-left">Peertube</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">Not yet started</td>
+</tr>
+
+<tr>
+<td class="org-left">480p</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">Delegated to corwin</td>
+</tr>
+
+<tr>
+<td class="org-left">Audio processing</td>
+<td class="org-left">&#xa0;</td>
+<td class="org-left">Help wanted</td>
+</tr>
+</tbody>
+</table>
-## Prepare infrastructure
+### DONE Upload
-### DONE Get access to media.emacsconf.org so that we can set up the upload service and the backstage area
+#### DONE Get access to media.emacsconf.org so that we can set up the upload service and the backstage area
-#### DONE Decide what to do for backstage area and upload service :decision:
+##### DONE Decide what to do for backstage area and upload service :decision:
- <span class="timestamp-wrapper"><span class="timestamp">[2023-10-13 Fri]</span></span>: Got access to media.emacsconf.org, set up the backstage area
@@ -728,9 +911,159 @@ and we can have space in the schedule if they cancel last-minute.
- access to media.emacsconf.org might be sorted out by <span class="timestamp-wrapper"><span class="timestamp">[2023-10-13 Fri]</span></span>
- not in a big rush yet
-### TODO Double-check OBS setup and streaming on res
+### DONE Prerec
+
+
+##### Set up for the new year
+
+As orga@res:
+
+- mkdir /data/emacsconf/$year
+- rm ~/current
+- ln -s /data/emacsconf/$year current
+- ln -s /data/emacsconf/$year $year
+
+When we receive files
+
+- change the TODO status to PROCESSING
+- mkdir ~/current/$slug
+- copy the files to there
+- rename-original $slug $file
+- process-prerec $video
+- Copy the files to the res:~/cache, laptop:~/proj/emacsconf/2023/cache, and media:~/backstage
+- emacsconf-cache-all-video-data
+- emacsconf-publish-info-pages
+- emacsconf-publish-backstage-index
+
+
+(check that the reencode.sh process has kicked off; if not, call reencode.sh $video $prefix&#x2013;reencoded.webm)
+
+### INPROGRESS Captions
+
+- OpenAI Whisper SaaS (<https://platform.openai.com/docs/guides/speech-to-text/longer-inputs>) limits audio files to 25MB, so it&rsquo;s probably easier to do it ourselves
+
+#### TODO E-mail previous captioning volunteers to see if they&rsquo;re interested in helping out
+
+#### DONE E-mail captioning volunteers the backstage instructions
+
+#### DONE E-mail current caption volunteers backstage information, captioning process, etc.
+
+I&rsquo;ll wait a few days for Yoni to get back to us about whether he wants
+to caption his own talk and/or seeing if other speakers will get their
+talks in.
+
+`emacsconf-mail-backstage-info`
+
+
+
+Hi ${name}!
+
+You&rsquo;re getting this e-mail because you have volunteered to help out
+with captions for ${conf-name} ${year}. (Thank you so much!)
+
+I&rsquo;m so excited! =) We&rsquo;re starting to get recorded talks, which means
+it&rsquo;s time to get captions going. People really appreciate the
+captions, especially when the captions have been lovingly edited by
+volunteers who change things like &ldquo;Emax&rdquo; to &ldquo;Emacs&rdquo; and &ldquo;metaX&rdquo; to
+&ldquo;M-x&rdquo;.
+
+Just like last year, we&rsquo;re using OpenAI Whisper to give us a
+reasonable starting point for transcripts. If working from scratch
+works better for you, you&rsquo;re welcome to do that too.
+
+We&rsquo;ve set up ${backstage} as the backstage area where you can view the
+videos and resources uploaded so far. You can access it with the
+username "${backstage-user}&ldquo; and the password &rdquo;${backstage-password}&ldquo;.
+Please keep the backstage password and other speakers&rsquo; talk resources
+secret. ${backstage-use}
+
+To call dibs on a video to caption, just send a message to me at
+sacha@sachachua.com and I can update the page so that it&rsquo;s assigned to
+you. You can e-mail me the edited captions when you&rsquo;re done. Don&rsquo;t
+worry too much about timestamps; we can re-align the text with the
+audio afterwards. If life gets suddenly busy and you can&rsquo;t see it all
+the way through, no worries. Just e-mail me what you&rsquo;ve got and I&rsquo;ll
+put it back in the pool. Every little bit helps!
+
+Thank you!
+
+Sacha Chua
+
+#### TODO E-mail the emacsconf-org mailing list the announcement and the invitation to volunteer
-### TODO Generate BBB rooms
+#### TODO Try out Deepgram, play around with it for last-minute submissions?
+
+#### DONE Get the autocaptions for emms up in the backstage area
+
+#### Captions lessons learned :lessons:
+
+- OpenAI had a breaking API change, need to call `whisper.utils.get_writer`
+ - <https://github.com/dmarx/video-killed-the-radio-star/issues/101>
+ vtt_writer = whisper.utils.get_writer('vtt', os.path.dirname(new_file))
+ txt_writer = whisper.utils.get_writer('txt', os.path.dirname(new_file))
+ vtt_writer(result, work['audio'], {'max_line_width': 60, 'max_line_count': None, 'highlight_words': None})
+ txt_writer(result, work['audio'], {'max_line_width': 60, 'max_line_count': None, 'highlight_words': None})
+
+#### Reencoding
+
+### DONE Backstage
+
+<a id="test"></a>
+
+### DONE Test assets
+
+<file://ssh:res:/data/emacsconf/2023/assets/test>
+
+#### DONE Generate test videos
+
+#### Try autopilot
+
+ (let* ((offset-seconds 60)
+ (start-time (time-add (current-time) offset-seconds))
+ (emacsconf-schedule-validation-functions nil)
+ (emacsconf-schedule-default-buffer-minutes 1)
+ (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 1)
+ (emacsconf-schedule-strategies '(emacsconf-schedule-allocate-buffer-time
+ emacsconf-schedule-copy-previous-track))
+ (schedule (emacsconf-schedule-prepare
+ (emacsconf-schedule-inflate-sexp
+ `(("GEN"
+ :start ,(format-time-string "%Y-%m-%d %H:%M" start-time)
+ :set-track "General")
+ (sat-open :time 1)
+ (adventure :time 1) ; pad Q&A
+ (uni :time 1) ; live Q&A
+ (teaching :time 1)
+ (table :time 1)
+ (taming :time 1)
+ (one :time 1)
+ (cubing :time 1) ; IRC
+ ("DEV"
+ :start
+ ,(format-time-string "%Y-%m-%d %H:%M" (time-add start-time 60))
+ :set-track "Development")
+ (matplotllm :time 1)
+ (gc :time 1) ; pad
+ (repl :time 1) ; IRC
+ (voice :time 1)
+ (llm :time 1)
+ (overlay :time 1)
+ (eval :time 1)
+ (emacsconf :time 1))))))
+ (emacsconf-stream-crontabs t schedule))
+
+### BBB
+
+Generate them for possibly live presentations as well? We&rsquo;ll see.
+
+#### DONE Generate redirects
+
+We use redirects for Q&A sessions with BBB web conferences so that people can easily join the web conference.
+
+- <emacsconf-publish-bbb-static-redirects>: generate static redirects
+- <emacsconf-publish-bbb-redirect-all>
+
+#### DONE Generate BBB rooms
BBB name convention from last year
@@ -794,152 +1127,183 @@ Creating new rooms
(dolist (group groups)
(emacsconf-spookfox-create-bbb group)))
-### TODO Double-check icecast
+#### TODO Possibly generate BBB rooms for live presentations?
-<a id="lowres"></a>
+#### TODO Send testing instructions
-### TODO Figure out a better way to handle 480p stream :corwin:
+### DONE VNC
-It kept dropping last year and sachac didn&rsquo;t have the mental bandwidth to figure it out.
-Might need another node so that we don&rsquo;t risk it getting killed for memory reasons?
+We use VNC to connect to the X servers on res.emacsconf.org so that we can stream from it.
-Corwin has volunteered to take this on
+Success:
+- [X] Confirm that you can connect to emacsconf-gen via VNC
+- [X] Confirm that you can connect to emacsconf-dev via VNC
-### BLOCKED Create pads for all the talks
+Setting up
+- <emacsconf-publish-res-index>
-Because the pads refer to the next and previous talks and include the talk titles, this is best done after the schedule has settled down.
+<a id="vnc-instructions"></a>
-### TODO Doublecheck prerec processing workflow
+#### Instructions
+NOTE: VNC+OBS doesn&rsquo;t work well if you have a window manager that
+automatically resizes windows, like i3. Please configure your window
+manager so that the VNC window is not resized.
-#### Process
+1. Install a VNC viewer on your system (ex: tigervnc-viewer).
+2. Set up your local environment:
+
+ - gen: export TRACK=gen; export TRACK\_PORT=5905; export SSH\_PORT=46668
+ - dev: export TRACK=dev; export TRACK\_PORT=5906; export SSH\_PORT=46668
-##### Set up for the new year
+3. Copy the password:
+
+ scp emacsconf-$TRACK@res.emacsconf.org:~/.vnc/passwd vnc-passwd-$TRACK -p $SSH\_PORT
-As orga@res:
+4. Forward your local ports and connect via VNC viewer to the
+ appropriate forwarded port from your laptop:
+
+ ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT -p $SSH_PORT &
+ sleep 5 # Give it time to establish the tunnels
+ xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
-- mkdir /data/emacsconf/$year
-- rm ~/current
-- ln -s /data/emacsconf/$year current
-- ln -s /data/emacsconf/$year $year
+If you get the following error:
-When we receive files
+ channel 2: open failed: connect failed: Connection refused
+ CConn: End of stream
+ CConn: The connection was dropped by the server before the session could
+ be established.
-- change the TODO status to PROCESSING
-- mkdir ~/current/$slug
-- copy the files to there
-- rename-original $slug $file
-- process-prerec $video
-- Copy the files to the res:~/cache, laptop:~/proj/emacsconf/2023/cache, and media:~/backstage
-- emacsconf-cache-all-video-data
-- emacsconf-publish-info-pages
-- emacsconf-publish-backstage-index
+then the VNC server hasn&rsquo;t started yet. You can start it with
+ ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc
-(check that the reencode.sh process has kicked off; if not, call reencode.sh $video $prefix&#x2013;reencoded.webm)
+and then connect with:
-#### Captions
+ xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
-- OpenAI Whisper SaaS (<https://platform.openai.com/docs/guides/speech-to-text/longer-inputs>) limits audio files to 25MB, so it&rsquo;s probably easier to do it ourselves
+#### TODO Ask bandali or zaeph to share their window manager configuration :bandali:zaeph:
-##### TODO E-mail current caption volunteers backstage information, captioning process, etc.
+### DONE OBS
-I&rsquo;ll wait a few days for Yoni to get back to us about whether he wants
-to caption his own talk and/or seeing if other speakers will get their
-talks in.
+We use OBS to stream to Icecast on live.emacsconf.org.
-`emacsconf-mail-backstage-info`
+Success: Confirm that you can stream
+- [X] gen
+- [X] dev
+New year: reprovision with
+ ansible-playbook -i inventory.yml prod-playbook.yml --tags obs
-Hi ${name}!
+so that the year is updated in the shell scripts.
-You&rsquo;re getting this e-mail because you have volunteered to help out
-with captions for ${conf-name} ${year}. (Thank you so much!)
+<a id="obs-instructions"></a>
-I&rsquo;m so excited! =) We&rsquo;re starting to get recorded talks, which means
-it&rsquo;s time to get captions going. People really appreciate the
-captions, especially when the captions have been lovingly edited by
-volunteers who change things like &ldquo;Emax&rdquo; to &ldquo;Emacs&rdquo; and &ldquo;metaX&rdquo; to
-&ldquo;M-x&rdquo;.
+#### Instructions
-Just like last year, we&rsquo;re using OpenAI Whisper to give us a
-reasonable starting point for transcripts. If working from scratch
-works better for you, you&rsquo;re welcome to do that too.
+1. [Connect to the VNC session for the track.](#vnc-instructions)
-We&rsquo;ve set up ${backstage} as the backstage area where you can view the
-videos and resources uploaded so far. You can access it with the
-username "${backstage-user}&ldquo; and the password &rdquo;${backstage-password}&ldquo;.
-Please keep the backstage password and other speakers&rsquo; talk resources
-secret. ${backstage-use}
+2. Start **recording** (not streaming). If you don&rsquo;t see OBS when you connect, it&rsquo;s probably on workspace 2, so you can switch with Alt-2. If you still don&rsquo;t see it there, you can open a terminal with Alt-Enter and then run `track-obs`. After you start recording, confirm that it is now broadcasting to the stream.
-To call dibs on a video to caption, just send a message to me at
-sacha@sachachua.com and I can update the page so that it&rsquo;s assigned to
-you. You can e-mail me the edited captions when you&rsquo;re done. Don&rsquo;t
-worry too much about timestamps; we can re-align the text with the
-audio afterwards. If life gets suddenly busy and you can&rsquo;t see it all
-the way through, no worries. Just e-mail me what you&rsquo;ve got and I&rsquo;ll
-put it back in the pool. Every little bit helps!
+3. Verify with MPV on your local system:
+
+ mpv https://live0.emacsconf.org/$TRACK.webm &
-Thank you!
+#### DONE Double-check OBS setup and streaming on res
-Sacha Chua
+### DONE Icecast
-##### TODO E-mail the emacsconf-org mailing list the announcement and the invitation to volunteer
+Success: You can use [OBS+VNC to record](#obs-instructions), and the results can be viewed by mpv.
+- [X] Gen
+- [X] Dev
-##### TODO Try out Deepgram, play around with it for last-minute submissions?
+New year: reprovision with
-##### DONE Get the autocaptions for emms up in the backstage area
+ ansible-playbook -i inventory.yml prod-playbook.yml --tags stream
-##### Captions lessons learned :lessons:
+so that the year is updated in the configuration.
-- OpenAI had a breaking API change, need to call `whisper.utils.get_writer`
- - <https://github.com/dmarx/video-killed-the-radio-star/issues/101>
- vtt_writer = whisper.utils.get_writer('vtt', os.path.dirname(new_file))
- txt_writer = whisper.utils.get_writer('txt', os.path.dirname(new_file))
- vtt_writer(result, work['audio'], {'max_line_width': 60, 'max_line_count': None, 'highlight_words': None})
- txt_writer(result, work['audio'], {'max_line_width': 60, 'max_line_count': None, 'highlight_words': None})
+This is on live.emacsconf.org and can be restarted with `/etc/init.d/emacsconf restart`.
-#### Reencoding
+#### DONE Double-check icecast
-### TODO Find volunteers for audio processing and document the process :helpwanted:
+### DONE MPV
-- audio normalization
-- noise reduction
+### DONE Watch page
-### TODO Write something for merging in information from previous years if not specified
+live.emacsconf.org is on the front0.emacsconf.org server.
-- availability
-- timezone
-- name
-- short name
-- pronouns
+To set up for the year:
-<a id="prepare-assets"></a>
+1. Create directories and update the Nginx configuration
+ ansible-playbook -i inventory.yml prod-playbook.yml --tags live
-## Prepare assets
+2. Generate the pages
+ (emacsconf-publish-watch-pages)
+3. Add the $year/watch to the wiki.
-### TODO Generate intro slides and overlays
+4. Create a $year/watch.md manually.
-We generate intro slides to display in between talks so that people
-can find out information about the previous talk and learn about the
-next talk. It includes talk titles, speaker names, URLs, and Q&A
-methods. The image will also be used for an introduction video if we
-can record one before the conference.
+### DONE Status page
-We also generate overlays that show talk information during the talk
-itself.
+Manually maintained
-SVGs don&rsquo;t support line-wrapping, so it helps to do a quick pass to
-make sure all the talks are displayed properly.
+/ssh:front0.emacsconf.org:/var/www/status.emacsconf.org/index.html
+
+### DONE Public media
+
+Start of year:
+
+1. Set `media_protect_root` to true in Ansible `group_vars/all.yml`.
+2. `ansible-playbook -i inventory.yml prod-playbook.yml --tags media`
+3. Generate the index with `emacsconf-publish-update-media`
+
+Confirm by setting a submitted talk to `PLAYING` and testing with
+<emacsconf-publish-media-files-on-change> . The public media
+directory should have the files and the entry should be in the index.
+Switching it back to `TO_STREAM` and calling
+<emacsconf-publish-media-files-on-change> should remove it.
+
+#### 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`.
+
+### DONE Mumble
+
+If you see `Server connection rejected: Wrong certificate or password.`, use **Certificate Wizard** to reimport the .p12 file in that user&rsquo;s home directory.
+
+### DONE Etherpad
+
+<emacsconf-pad-prepopulate-all-talks>
+
+#### DONE Create pads for all the talks
+
+Because the pads refer to the next and previous talks and include the talk titles, this is best redone after the schedule has settled down.
+
+### DONE Pad proxy
+
+### DONE Overlays
+
+<emacsconf-stream-generate-overlays>
-### BLOCKED Generate redirects
+### INPROGRESS Intros
-We use redirects for Q&A sessions with BBB web conferences so that people can easily join the web conference. This is blocked while waiting for media.emacsconf.org.
+Intro slides
-### TODO Write 1-2 sentence intros for all the talks
+<emacsconf-stream-generate-in-between-pages>
+<emacsconf-pad-expand-intro>
+[elisp:emacsconf-subed-intro-subtitles](emacsconf-subed-intro-subtitles)
+
+<http://ipa-reader.xyz/>
+
+#### CANCELLED Write 1-2 sentence intros for all the talks
We do a brief introduction before each talk so that people know the
topic of the next talk, the pronunciation of the speaker&rsquo;s name, the
@@ -964,14 +1328,18 @@ Actually recording the introductions can wait until closer to the
conference because talk titles and Q&A methods can change. We can
verify speaker name pronunciations at that time.
-#### Intros :levels:
+Hmm&#x2026; Actually, we can go ahead and record all of these so that
+speakers can doublecheck pronunciations, and then we&rsquo;ll re-record them
+in case someone wants to get fancier about intros.
+
+##### Intros :levels:
- Good: Use the same template as before: In this talk, SPEAKER shares
TITLE OR SUMMARY. Afterwards, PRONOUN will handle questions over Q&A
METHOD.
- Better: Include some more biographical information to give listeners some context.
-#### DONE Do we want to use honorifics like Dr.? :decision:
+##### DONE Do we want to use honorifics like Dr.? :decision:
DECISION: Include in the intro-review email:
> We will usually introduce you by your first name (or handle, if you
@@ -996,18 +1364,110 @@ use it when recording the intros.
- OPTION: Using honorifics based on e-mail signatures and intros:
- Recognizes credentials
-### BLOCKED Record intro videos with 1-2 sentence intros for all the talks
+#### DONE Record intro videos with 1-2 sentence intros for all the talks
-<a id="coordinate-volunteers"></a>
+#### DONE Record the rest of the intros
+
+#### DONE Generate intro slides
+
+We generate intro slides to display in between talks so that people
+can find out information about the previous talk and learn about the
+next talk. It includes talk titles, speaker names, URLs, and Q&A
+methods. The image will also be used for an introduction video if we
+can record one before the conference.
+
+We also generate overlays that show talk information during the talk
+itself.
+
+SVGs don&rsquo;t support line-wrapping, so it helps to do a quick pass to
+make sure all the talks are displayed properly.
+
+Hmm&#x2026; Maybe I should take the names and pronouns off the video
+overlay? Then there&rsquo;s less worry about wrapping, and people can always
+go to the URL to get more information.
+
+<emacsconf-stream-generate-in-between-pages>
+
+#### TODO Ask speakers to review intros
+
+after they&rsquo;ve uploaded their videos, since we might be able to check the pronunciation ourselves
+
+### IRC channels
-## Coordinate volunteers
+- /opall
+- /conftopic
+- /deopall
+#### TODO Confirm that the emacsconf user can connect
-### DONE E-mail captioning volunteers the backstage instructions
+I think I had that on orga@res.emacsconf.org
-### TODO E-mail previous captioning volunteers to see if they&rsquo;re interested in helping out
+### IRC talk info
-### TODO Prepare shift calendar
+### Announcements
+
+### Publishing updates live
+
+### Autopilot
+
+### YouTube
+
+### Peertube
+
+### 480p
+
+Consider increasing memory/cpu configuration on live?
+
+<a id="lowres"></a>
+
+#### TODO Figure out a better way to handle 480p stream :corwin:
+
+It kept dropping last year and sachac didn&rsquo;t have the mental bandwidth to figure it out.
+Might need another node so that we don&rsquo;t risk it getting killed for memory reasons?
+
+Corwin has volunteered to take this on
+
+### Audio processing
+
+
+<a id="audio"></a>
+
+#### TODO Find volunteers for audio processing (normalization, noise reduction) and document the process :helpwanted:
+
+- audio normalization
+- noise reduction
+
+### TODO Write something for merging in information from previous years if not specified
+
+- availability
+- timezone
+- name
+- short name
+- pronouns
+
+<a id="go-live"></a>
+
+## Get ready for production
+
+
+### A day or two before
+
+<a href="https://git.emacsconf.org/emacsconf-ansible/tree/group_vars/all.yml">group_vars/all.yml</a>:
+
+ test_mode: false
+ media_protect_root: false
+
+ ansible-playbook -i inventory.ml prod-playbook.yml --tags stream
+ ansible-playbook -i inventory.ml prod-playbook.yml --tags media
+
+Resize the nodes
+
+<a id="coordinate-volunteers"></a>
+
+## Volunteers
+
+
+### TODO Prepare shift calendar, ask people to sign up
<a name="shifts"></a>
@@ -1015,7 +1475,7 @@ AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)
Saturday Dec 2 2023
-<table id="org7b86601">
+<table id="orgd5d13b1">
<colgroup>
@@ -1089,7 +1549,7 @@ Saturday Dec 2 2023
Sunday Dec 3 2023
-<table id="orgf4c1820">
+<table id="org91d3a58">
<colgroup>
@@ -1348,6 +1808,8 @@ Note: Let&rsquo;s see if we can decide on this by <span class="timestamp-wrapper
e-mail the draft schedules to people.
Compared to [two-track schedule](#draft-schedule):
+<svg width="800" height="300" 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="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="https://emacsconf.org/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="https://emacsconf.org/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title> 9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="https://emacsconf.org/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title> 9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(76,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="https://emacsconf.org/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="https://emacsconf.org/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="https://emacsconf.org/2023/talks/taming" title="Taming things with Org Mode" data-slug="taming"> <title> 11:05-11:15 Taming things with Org Mode</title> <rect x="196" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(209,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</text></g></a> <a href="https://emacsconf.org/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(264,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="https://emacsconf.org/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title> 1:00- 1:10 Emacs turbo-charges my writing</title> <rect x="376" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(389,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="https://emacsconf.org/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title> 1:25- 1:35 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="415" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(428,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="https://emacsconf.org/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title> 1:50- 2:10 Collaborative data processing and documenting using org-babel</title> <rect x="454" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="yellow"></rect> <g transform="translate(483,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="https://emacsconf.org/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title> 2:20- 2:40 How I play TTRPGs in Emacs</title> <rect x="501" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(530,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="https://emacsconf.org/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title> 2:55- 3:15 Org-Mode workflow: informal reference tracking</title> <rect x="556" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="green"></rect> <g transform="translate(585,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="https://emacsconf.org/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title> 3:25- 3:35 (Un)entangling projects and repos</title> <rect x="603" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(616,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="https://emacsconf.org/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 3:45- 3:55 Emacs development updates</title> <rect x="635" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(648,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="https://emacsconf.org/2023/talks/core" title="Emacs core development: how it works" data-slug="core"> <title> 4:10- 4:50 Emacs core development: how it works</title> <rect x="674" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(734,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <a href="https://emacsconf.org/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 5:05- 5:15 Saturday closing remarks</title> <rect x="760" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(773,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="https://emacsconf.org/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(107,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="https://emacsconf.org/2023/talks/voice" title="Improving access to AI-assisted literate programming with voice control" data-slug="voice"> <title> 10:20-10:40 Improving access to AI-assisted literate programming with voice control</title> <rect x="125" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(154,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="https://emacsconf.org/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="https://emacsconf.org/2023/talks/overlay" title="Improving compiler diagnostics with Overlays" data-slug="overlay"> <title> 1:00- 1:20 Improving compiler diagnostics with Overlays</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="https://emacsconf.org/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title> 1:35- 1:45 Editor Integrated REPL Driven Development for all languages</title> <rect x="431" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(444,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="https://emacsconf.org/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title> 2:00- 2:40 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="https://emacsconf.org/2023/talks/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title> 2:50- 3:10 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="549" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsconf</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,150)"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="https://emacsconf.org/2023/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="https://emacsconf.org/2023/talks/hyperamp" title="Top 10 ways Hyperbole amps up Emacs" data-slug="hyperamp"> <title> 9:05- 9:25 Top 10 ways Hyperbole amps up Emacs</title> <rect x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperamp</text></g></a> <a href="https://emacsconf.org/2023/talks/koutline" title="Using Koutline for stream of thought journaling" data-slug="koutline"> <title> 9:40-10:00 Using Koutline for stream of thought journaling</title> <rect x="62" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(91,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> koutline</text></g></a> <a href="https://emacsconf.org/2023/talks/parallel" title="Parallel Text Replacement: Does P = NP?" data-slug="parallel"> <title> 10:10-10:20 Parallel Text Replacement: Does P = NP?</title> <rect x="109" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(122,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> parallel</text></g></a> <a href="https://emacsconf.org/2023/talks/eat" title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs" data-slug="eat"> <title> 10:35-10:45 Eat and Eat powered Eshell, fast featureful terminal inside Emacs</title> <rect x="149" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(162,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eat</text></g></a> <a href="https://emacsconf.org/2023/talks/poltys" title="The browser in a buffer" data-slug="poltys"> <title> 11:00-11:20 The browser in a buffer</title> <rect x="188" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(217,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> poltys</text></g></a> <a href="https://emacsconf.org/2023/talks/cubing" title="Speedcubing in Emacs" data-slug="cubing"> <title> 11:35-11:55 Speedcubing in Emacs</title> <rect x="243" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(272,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> cubing</text></g></a> <a href="https://emacsconf.org/2023/talks/emms" title="Emacs MultiMedia System (EMMS)" data-slug="emms"> <title> 1:00- 1:40 Emacs MultiMedia System (EMMS)</title> <rect x="376" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(436,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emms</text></g></a> <a href="https://emacsconf.org/2023/talks/steno" title="Programming at 200 wpm" data-slug="steno"> <title> 1:55- 2:25 Programming at 200 wpm</title> <rect x="462" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(507,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> steno</text></g></a> <a href="https://emacsconf.org/2023/talks/mentor" title="Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)" data-slug="mentor"> <title> 2:35- 2:45 Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</title> <rect x="525" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(538,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mentor</text></g></a> <a href="https://emacsconf.org/2023/talks/web" title="Emacs saves the Web" data-slug="web"> <title> 3:10- 3:50 Emacs saves the Web</title> <rect x="580" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(640,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> web</text></g></a> <a href="https://emacsconf.org/2023/talks/sharing" title="Sharing Emacs is Caring Emacs: Emacs education and why I embraced video" data-slug="sharing"> <title> 4:05- 4:25 Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</title> <rect x="666" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(695,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="https://emacsconf.org/2023/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:40- 4:50 Sunday closing remarks</title> <rect x="721" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(734,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="https://emacsconf.org/2023/talks/scheme" title="Bringing joy to Scheme programming" data-slug="scheme"> <title> 10:00-10:20 Bringing joy to Scheme programming</title> <rect x="94" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(123,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> scheme</text></g></a> <a href="https://emacsconf.org/2023/talks/test" title="What I learned by writing test cases for GNU Hyperbole" data-slug="test"> <title> 10:35-10:55 What I learned by writing test cases for GNU Hyperbole</title> <rect x="149" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(178,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> test</text></g></a> <a href="https://emacsconf.org/2023/talks/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title> 11:10-11:30 GNU Emacs: A World of Possibilities</title> <rect x="203" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(232,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> world</text></g></a> <a href="https://emacsconf.org/2023/talks/flat" title="A modern Emacs look-and-feel without pain" data-slug="flat"> <title> 11:45-11:55 A modern Emacs look-and-feel without pain</title> <rect x="258" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(271,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> flat</text></g></a> <a href="https://emacsconf.org/2023/talks/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 1:00- 1:20 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gc</text></g></a> <a href="https://emacsconf.org/2023/talks/hyperdrive" title="hyperdrive.el: Peer-to-peer filesystem in Emacs" data-slug="hyperdrive"> <title> 1:35- 2:15 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="431" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(491,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperdrive</text></g></a> <a href="https://emacsconf.org/2023/talks/lspocaml" title="Writing a language server in OCaml for Emacs, fun, and profit" data-slug="lspocaml"> <title> 2:30- 2:40 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="517" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspocaml</text></g></a> <a href="https://emacsconf.org/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title> 2:55- 3:35 Windows into Freedom</title> <rect x="556" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(616,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <a href="https://emacsconf.org/2023/talks/emacsen" title="The Emacsen family, the design of an Emacs and the importance of Lisp" data-slug="emacsen"> <title> 3:50- 4:10 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="643" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(672,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsen</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg>
+
What if we have three tracks instead?
- Two-track advantages as in EmacsConf 2022:
@@ -1365,6 +1827,8 @@ What if we have three tracks instead?
- Allows us to have 20 minutes between talks instead of 15
- Might be easier to test the idea for just one part of the conference
+<svg width="800" height="400" 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="800" height="200" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(13,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title> 9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(28,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title> 9:40-10:00 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="62" y="15" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(91,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:30-10:40 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="141" y="15" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(154,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 11:15-11:35 Teaching computer and data science with literate programming tools</title> <rect x="211" y="15" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(240,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title> 1:00- 1:20 Collaborative data processing and documenting using org-babel</title> <rect x="376" y="15" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(405,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="/2023/talks/woof" title="Watch Over Our Folders" data-slug="woof"> <title> 1:40- 2:00 Watch Over Our Folders</title> <rect x="439" y="15" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(468,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> woof</text></g></a> <a href="/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title> 2:20- 2:40 How I play TTRPGs in Emacs</title> <rect x="501" y="15" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(530,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="/2023/talks/hn" title="The many ways to browse Hacker News from Emacs" data-slug="hn"> <title> 3:00- 3:10 The many ways to browse Hacker News from Emacs</title> <rect x="564" y="15" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(577,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hn</text></g></a> <a href="/2023/talks/web" title="Emacs saves the Web" data-slug="web"> <title> 3:30- 4:10 Emacs saves the Web</title> <rect x="611" y="15" opacity="0.8" width="62" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(671,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> web</text></g></a> <a href="/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:30- 4:40 Saturday closing remarks</title> <rect x="705" y="15" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(718,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 9:40-10:00 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="62" y="71" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(91,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="/2023/talks/poltys" title="The browser in a buffer" data-slug="poltys"> <title> 10:30-10:50 The browser in a buffer</title> <rect x="141" y="71" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(170,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> poltys</text></g></a> <a href="/2023/talks/taming" title="Taming things with Org Mode" data-slug="taming"> <title> 11:15-11:25 Taming things with Org Mode</title> <rect x="211" y="71" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(224,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</text></g></a> <a href="/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title> 1:00- 1:10 Emacs turbo-charges my writing</title> <rect x="376" y="71" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(389,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title> 1:40- 1:50 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="439" y="71" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(452,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="/2023/talks/steno" title="Programming at 200 wpm" data-slug="steno"> <title> 2:20- 2:50 Programming at 200 wpm</title> <rect x="501" y="71" opacity="0.8" width="47" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(546,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> steno</text></g></a> <a href="/2023/talks/emacsen" title="The Emacsen family, the design of an Emacs and the importance of Lisp" data-slug="emacsen"> <title> 3:30- 3:50 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="611" y="71" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(640,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsen</text></g></a> <a href="/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 9:40- 9:50 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="62" y="127" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(75,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="/2023/talks/voice" title="Improving access to AI-assisted literate programming with voice control" data-slug="voice"> <title> 10:30-10:50 Improving access to AI-assisted literate programming with voice control</title> <rect x="141" y="127" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(170,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 11:15-11:35 LLM clients in Emacs, functionality and standardization</title> <rect x="211" y="127" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(240,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2023/talks/overlay" title="Improving compiler diagnostics with Overlays" data-slug="overlay"> <title> 1:00- 1:20 Improving compiler diagnostics with Overlays</title> <rect x="376" y="127" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(405,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title> 1:40- 1:50 Editor Integrated REPL Driven Development for all languages</title> <rect x="439" y="127" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(452,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title> 2:20- 3:00 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="501" y="127" opacity="0.8" width="62" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(561,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="/2023/talks/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title> 3:30- 3:50 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="611" y="127" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(640,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsconf</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,200)"> <title> Schedule for Sunday</title> <rect width="800" height="200" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2023/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(13,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2023/talks/hyperamp" title="Top 10 ways Hyperbole amps up Emacs" data-slug="hyperamp"> <title> 9:10- 9:30 Top 10 ways Hyperbole amps up Emacs</title> <rect x="15" y="15" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(44,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperamp</text></g></a> <a href="/2023/talks/koutline" title="Using Koutline for stream of thought journaling" data-slug="koutline"> <title> 10:00-10:20 Using Koutline for stream of thought journaling</title> <rect x="94" y="15" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(123,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> koutline</text></g></a> <a href="/2023/talks/test" title="What I learned by writing test cases for GNU Hyperbole" data-slug="test"> <title> 11:00-11:20 What I learned by writing test cases for GNU Hyperbole</title> <rect x="188" y="15" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(217,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> test</text></g></a> <a href="/2023/talks/emms" title="Emacs MultiMedia System (EMMS)" data-slug="emms"> <title> 1:00- 1:40 Emacs MultiMedia System (EMMS)</title> <rect x="376" y="15" opacity="0.8" width="62" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(436,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emms</text></g></a> <a href="/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 2:00- 2:10 Emacs development updates</title> <rect x="470" y="15" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(483,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2023/talks/mentor" title="Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)" data-slug="mentor"> <title> 2:30- 2:40 Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</title> <rect x="517" y="15" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(530,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mentor</text></g></a> <a href="/2023/talks/sharing" title="Sharing Emacs is Caring Emacs: Emacs education and why I embraced video" data-slug="sharing"> <title> 3:00- 3:20 Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</title> <rect x="564" y="15" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(593,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2023/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:00- 4:10 Sunday closing remarks</title> <rect x="658" y="15" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(671,69)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2023/talks/parallel" title="Parallel Text Replacement: Does P = NP?" data-slug="parallel"> <title> 10:00-10:10 Parallel Text Replacement: Does P = NP?</title> <rect x="94" y="71" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(107,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> parallel</text></g></a> <a href="/2023/talks/eat" title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs" data-slug="eat"> <title> 10:30-10:40 Eat and Eat powered Eshell, fast featureful terminal inside Emacs</title> <rect x="141" y="71" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(154,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eat</text></g></a> <a href="/2023/talks/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 11:00-11:20 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="188" y="71" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(217,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gc</text></g></a> <a href="/2023/talks/hyperdrive" title="hyperdrive.el: Peer-to-peer filesystem in Emacs" data-slug="hyperdrive"> <title> 1:00- 1:40 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="376" y="71" opacity="0.8" width="62" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(436,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperdrive</text></g></a> <a href="/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title> 2:00- 2:20 Org-Mode workflow: informal reference tracking</title> <rect x="470" y="71" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(499,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title> 3:00- 3:10 (Un)entangling projects and repos</title> <rect x="564" y="71" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(577,125)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="/2023/talks/scheme" title="Bringing joy to Scheme programming" data-slug="scheme"> <title> 10:00-10:20 Bringing joy to Scheme programming</title> <rect x="94" y="127" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(123,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> scheme</text></g></a> <a href="/2023/talks/lspocaml" title="Writing a language server in OCaml for Emacs, fun, and profit" data-slug="lspocaml"> <title> 11:00-11:10 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="188" y="127" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(201,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspocaml</text></g></a> <a href="/2023/talks/flat" title="A modern Emacs look-and-feel without pain" data-slug="flat"> <title> 11:30-11:40 A modern Emacs look-and-feel without pain</title> <rect x="235" y="127" opacity="0.8" width="15" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(248,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> flat</text></g></a> <a href="/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title> 1:00- 1:40 Windows into Freedom</title> <rect x="376" y="127" opacity="0.8" width="62" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(436,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <a href="/2023/talks/cubing" title="Speedcubing in Emacs" data-slug="cubing"> <title> 2:00- 2:20 Speedcubing in Emacs</title> <rect x="470" y="127" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(499,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> cubing</text></g></a> <a href="/2023/talks/extending" title="GNU Emacs for electronics, note-taking, and as lightweight IDE" data-slug="extending"> <title> 3:00- 3:20 GNU Emacs for electronics, note-taking, and as lightweight IDE</title> <rect x="564" y="127" opacity="0.8" width="31" height="55" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(593,181)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> extending</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg>
+
<a id="three-tracks-sun-am"></a>
### Three tracks for Sunday morning?
@@ -1373,3 +1837,5 @@ What if we have three tracks instead?
- world: Ends at 16:20 after 11:30
- Missing talks: core
+<svg width="800" height="400" 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="800" height="200" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,200)"> <title> Schedule for Sunday</title> <rect width="800" height="200" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg>
+