summaryrefslogtreecommitdiffstats
path: root/2026/organizers-notebook
diff options
context:
space:
mode:
Diffstat (limited to '2026/organizers-notebook')
-rw-r--r--2026/organizers-notebook/index.org150
-rw-r--r--2026/organizers-notebook/schedule.svg2
2 files changed, 114 insertions, 38 deletions
diff --git a/2026/organizers-notebook/index.org b/2026/organizers-notebook/index.org
index 7c052325..937f92fb 100644
--- a/2026/organizers-notebook/index.org
+++ b/2026/organizers-notebook/index.org
@@ -138,6 +138,9 @@ interests you!
:END:
** DONE Set up organizers notebook
CLOSED: [2026-07-02 Thu 11:35]
+:PROPERTIES:
+:CUSTOM_ID: phases-set-up-organizers-notebook
+:END:
:LOGBOOK:
- State "DONE" from "TODO" [2025-06-17 Tue 10:41]
:END:
@@ -164,14 +167,23 @@ CLOSED: [2026-07-02 Thu 11:35]
:END:
**** DONE Update dates in emacsconf.el
CLOSED: [2026-07-02 Thu 11:35]
+:PROPERTIES:
+:CUSTOM_ID: phases-draft-cfp-update-dates-in-emacsconf-el
+:END:
[[file:~/proj/emacsconf/lisp/emacsconf.el]]
[[file:~/proj/emacsconf/lisp/emacsconf-erc.el]]
**** DONE Update conf topic
CLOSED: [2026-07-02 Thu 11:35]
+:PROPERTIES:
+:CUSTOM_ID: phases-draft-cfp-update-conf-topic
+:END:
[[file:~/proj/emacsconf/wiki/organizers-notebook/index.org::#phases-and-lessons-learned-draft-cfp-update-the-irc-topic][Update the IRC topic]]
**** DONE Remove draft marker
CLOSED: [2026-07-02 Thu 11:35]
+:PROPERTIES:
+:CUSTOM_ID: phases-draft-cfp-remove-draft-marker
+:END:
- [ ] cfp
- [ ] submit
@@ -202,15 +214,15 @@ CLOSED: [2026-07-02 Thu 11:35]
'((:label "Saturday"
:start "2026-12-12 9:00"
:end "2026-12-12 18:00"
- :tracks ("General" "Development"))
+ :tracks ("General" "B"))
(:label "Sunday"
:start "2026-12-13 9:00"
:end "2026-12-13 18:00"
- :tracks ("General" "Development"))))
+ :tracks ("General" "B"))))
(let ((emacsconf-schedule-default-buffer-minutes 10)
(emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 20)
(emacsconf-schedule-break-time 10)
- (emacsconf-schedule-lunch-time 45)
+ (emacsconf-schedule-lunch-time 60)
(emacsconf-use-absolute-url t)
(emacsconf-schedule-strategies '(emacsconf-schedule-allocate-buffer-time
emacsconf-schedule-copy-previous-track))
@@ -225,28 +237,43 @@ CLOSED: [2026-07-02 Thu 11:35]
(setq emacsconf-schedule-plan
'(("GEN Saturday, Dec 6" :start "2026-12-12 09:00" :set-track "General")
sat-open
- emacspeak
- cadet
- local
- hutch
- rau
- bone
+ planning ; The Emacs Planning Habits of a Questionably Effective Person
+ listen ; Controlling Emacs by voice using Emacslisten
+ emacspeak ; Multi-dimensional information processing with Emacs and Emacspeak
+ rau ; <= 13:00
(lunch :start "12:00")
- align
- portable
- planning
- writing
- koutliner
+ plots ; <= 14:00 Plots with ROOTs
+ ffs ; Plain text presentations in GNU Emacs with ffs
bible
- anju
- open-mic
+ svg
+ anju ; >= 12:00
+ ghostel ; >= 14:00 Ghost in the Shell: a libghostty powered terminal for Emacs
sat-close
- ("DEV Saturday, Dec 6" :start "2026-12-12 9:30" :set-track "Development")
+ ("B Saturday, Dec 6" :start "2026-12-12 9:30" :set-track "B")
(lunch :start "12:00")
+ llms
+ portable ; Emacs as my portable user space across operating platforms
+ os
+ cadet ; My Space Cadet Deck
("GEN Sunday, Dec 7" :start "2026-12-13 09:00" :set-track "General")
sun-open
- (lunch :start "12:00" :start "16:30")
+ bone ; <= 13:00 bug reports
+ local
+ hutch ; hutch: code reviews for the mildly disenfranchised
+ team
+ compile ; >= 11:00
+ (lunch :start "12:00")
+ mobile ; How I fixed Org Mode's biggest mobile and collaboration problems
+ writing
+ hyperbole ; Hyperbole, My Dear Watson
+ koutliner ; >= 11:00 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs
+ dnd ; DnD and Org Roam: Becoming a Better DM with Emacs
+ align
(sun-close)
+ ("B Saturday, Dec 6" :start "2026-12-13 10:00" :set-track "B")
+ community
+ (lunch :start "12:00")
+;; open-mic
))
(setq emacsconf-schedule-draft (emacsconf-schedule-prepare (emacsconf-schedule-inflate-sexp emacsconf-schedule-plan)))
(prog1 (string-join (emacsconf-schedule-validate emacsconf-schedule-draft) "\n")
@@ -266,14 +293,13 @@ CLOSED: [2026-07-02 Thu 11:35]
(clear-image-cache))))
#+end_src
+#+ATTR_ORG: :width 500
+[[file:schedule.svg]]
+
#+RESULTS: schedule
:results:
-sunday closing remarks: Starts at 12:45 before 16:30
:end:
-#+ATTR_ORG: :width 500
-[[file:schedule.svg]]
-
Legend:
- light blue: constraint is <= a time
- peach: constraint is >= a time
@@ -282,8 +308,17 @@ Legend:
Notes:
+- Let's see if we can pair these up:
+ - emacsconf:listen and emacsconf:emacspeak
+ - emacsconf:mobile, emacsconf:hyperbole, emacsconf:koutliner, emacsconf:dnd: PIM
+ - emacsconf:hutch and emacsconf:team and emacsconf:compile - LLM-related; people who aren't interested in LLMs can continue to hang out with bzg in the emacsconf:bone talk
+ - emacsconf:portable, emacsconf:os and emacsconf:cadet
+ - emacsconf:community and emacsconf:llms might be either panels or open-mic meetup-type things
** Review rescheduled talks
+:PROPERTIES:
+:CUSTOM_ID: phases-review-rescheduled-talks
+:END:
#+begin_src emacs-lisp :results table replace
(mapcar (lambda (o)
@@ -298,11 +333,15 @@ For big changes, use emacsconf-mail-schedule-updates
** While speakers are working on their videos
+:PROPERTIES:
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos
+:END:
*** TODO Send draft schedule :email:
SCHEDULED: <2026-09-25 Fri>
:PROPERTIES:
:CREATED: [2025-09-30 Tue 09:38]
:Effort: 0:30
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos-send-draft-schedule
:END:
:LOGBOOK:
CLOCK: [2025-10-03 Fri 10:26]--[2025-10-03 Fri 11:07] => 0:41
@@ -311,14 +350,25 @@ CLOCK: [2025-10-03 Fri 10:26]--[2025-10-03 Fri 11:07] => 0:41
*** TODO Send backstage and upload instructions :email:
:PROPERTIES:
:CREATED: [2025-09-30 Tue 09:39]
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos-send-backstage-and-upload-instructions
:END:
*** TODO Record pronunciations
+:PROPERTIES:
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos-record-pronunciations
+:END:
*** TODO Post the schedule publicly
+:PROPERTIES:
+:CUSTOM_ID: phases-while-speakers-are-working-on-their-videos-post-the-schedule-publicly
+:END:
** While volunteers are working on captions
+:PROPERTIES:
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions
+:END:
*** TODO E-mail speakers asking them to confirm the pronunciations :email:
SCHEDULED: <2026-12-01 Tue>
:PROPERTIES:
:CREATED: [2025-09-30 Tue 09:39]
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions-e-mail-speakers-asking-them-to-confirm-the-pronunciations
:END:
*** Record intros and opening remarks
:PROPERTIES:
@@ -331,7 +381,7 @@ SCHEDULED: <2026-12-01 Tue>
:CUSTOM_ID: phases-record-intros-and-opening-remarks-record-sat-open-remarks
:END:
-Welcome to EmacsConf 2025, where we have fun
+Welcome to EmacsConf 2026, where we have fun
exploring how much we can do with a text editor.
It's hard to give a general overview
of all the cool talks today and tomorrow,
@@ -404,7 +454,7 @@ so you can follow the links to get to the next one
or go back to the schedule and get the link from there.
If you have general feedback about
the conference itself, please put it in
-pad.emacsconf.org/2025 , which is linked on each pad.
+pad.emacsconf.org/2026 , which is linked on each pad.
You can also use this as a general community message board
for things like Help Wanted.
Internet Relay Chat or IRC can be another great way
@@ -451,13 +501,13 @@ and you'll probably meet us in the closing remarks.
That's also where we get to thank
all the people and organizations
who make EmacsConf possible.
-Thanks for coming to EmacsConf 2025.
+Thanks for coming to EmacsConf 2026.
**** TODO Record sun-open remarks
:PROPERTIES:
:CUSTOM_ID: phases-record-intros-and-opening-remarks-record-sun-open-remarks
:END:
-Welcome to the second day of EmacsConf 2025.
+Welcome to the second day of EmacsConf 2026.
The best parts of EmacsConf are the conversations.
The wiki has a page on how to watch and participate,
and I'll give you a quick overview as well.
@@ -531,7 +581,7 @@ so you can follow the links to get to the next one
or go back to the schedule and get the link from there.
If you have general feedback about
the conference itself, please put it in
-pad.emacsconf.org/2025 , which is linked on each pad.
+pad.emacsconf.org/2026 , which is linked on each pad.
You can also use this as a general community message board
for things like Help Wanted.
Internet Relay Chat or IRC can be another great way
@@ -577,12 +627,27 @@ and you'll probably meet us in the closing remarks.
That's also where we get to thank
all the people and organizations
who make EmacsConf even possible.
-Thanks for coming to EmacsConf 2025.
+Thanks for coming to EmacsConf 2026.
*** TODO Generate assets
+:PROPERTIES:
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions-generate-assets
+:END:
*** TODO Send check-in details :email:
+:PROPERTIES:
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions-send-check-in-details
+:END:
*** TODO Ask libera.chat to increase IRC limit
+:PROPERTIES:
+:CUSTOM_ID: phases-while-volunteers-are-working-on-captions-ask-libera-chat-to-increase-irc-limit
+:END:
** After the conference
+:PROPERTIES:
+:CUSTOM_ID: phases-after-the-conference
+:END:
*** TODO Send thanks and follow-up questions :email:
+:PROPERTIES:
+:CUSTOM_ID: phases-after-the-conference-send-thanks-and-follow-up-questions
+:END:
** TODO Confirm shifts
SCHEDULED: <2026-12-01 Tue>
:PROPERTIES:
@@ -600,23 +665,21 @@ SCHEDULED: <2026-12-01 Tue>
AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)
-Saturday Dec 6 2025
+Saturday Dec 12 2026
#+NAME: saturday-shifts
| | Start | End | [[https://emacsconf.org/2023/volunteer/host/][Host]] | Streamer | [[https://emacsconf.org/2023/volunteer/checkin/][Checkin]] | [[https://emacsconf.org/2023/volunteer/irc/][IRC]] | [[https://emacsconf.org/2023/volunteer/pad/][Pad]] | Coord |
|--------+-------+-------+--------+----------+---------+-----+-----+--------|
-| Gen AM | 09:00 | 12:00 | zaeph | sachac | sachac | | | sachac |
-| Gen PM | 13:00 | 17:00 | zaeph | sachac | sachac | | | sachac |
-| Dev AM | 10:00 | 12:00 | corwin | sachac | sachac | | | sachac |
-| Dev PM | 13:00 | 17:00 | corwin | sachac | sachac | | | sachac |
+| Gen AM | 09:00 | 12:00 |
+| Gen PM | 13:00 | 17:00 |
-Sunday Dec 7 2025
+Sunday Dec 13 2026
#+NAME: sunday-shifts
| | Start | End | [[https://emacsconf.org/2023/volunteer/host/][Host]] | Streamer | [[https://emacsconf.org/2023/volunteer/checkin/][Checkin]] | [[https://emacsconf.org/2023/volunteer/irc/][IRC]] | [[https://emacsconf.org/2023/volunteer/pad/][Pad]] | Coord |
|--------+-------+-------+--------------+----------+---------+-----+-----+--------|
-| Gen AM | 09:00 | 12:00 | zaeph/corwin | sachac | sachac | | | sachac |
-| Gen PM | 13:00 | 17:00 | zaeph/corwin | sachac | sachac | | | sachac |
+| Gen AM | 09:00 | 12:00 |
+| Gen PM | 13:00 | 17:00 |
Backups:
- dev host/streamer:
@@ -678,7 +741,7 @@ Interested in a shift? Please e-mail [[mailto:emacsconf-org-private@gnu.org]] an
#+RESULTS:
:results:
-(setq emacsconf-shifts (list (list :id "sat-am-gen" :track "General" :start "2025-12-06T09:00:00-0500" :end "2025-12-06T12:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sat-pm-gen" :track "General" :start "2025-12-06T13:00:00-0500" :end "2025-12-06T17:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sat-am-dev" :track "Development" :start "2025-12-06T10:00:00-0500" :end "2025-12-06T12:00:00-0500" :host "corwin" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sat-pm-dev" :track "Development" :start "2025-12-06T13:00:00-0500" :end "2025-12-06T17:00:00-0500" :host "corwin" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sun-am-gen" :track "General" :start "2025-12-07T09:00:00-0500" :end "2025-12-07T12:00:00-0500" :host "zaeph/corwin" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sun-pm-gen" :track "General" :start "2025-12-07T13:00:00-0500" :end "2025-12-07T17:00:00-0500" :host "zaeph/corwin" :streamer "sachac" :checkin "sachac" :coord "sachac")))
+(setq emacsconf-shifts (list (list :id "sat-am-gen" :track "General" :start "2025-12-06T09:00:00-0500" :end "2025-12-06T12:00:00-0500") (list :id "sat-pm-gen" :track "General" :start "2025-12-06T13:00:00-0500" :end "2025-12-06T17:00:00-0500") (list :id "sun-am-gen" :track "General" :start "2025-12-07T09:00:00-0500" :end "2025-12-07T12:00:00-0500") (list :id "sun-pm-gen" :track "General" :start "2025-12-07T13:00:00-0500" :end "2025-12-07T17:00:00-0500")))
:end:
@@ -743,6 +806,9 @@ CLOCK: [2024-11-20 Wed 10:48]--[2024-11-20 Wed 12:18] => 1:30
:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-check-bbb-audio-from-my-phone
:END:
*** Customize BigBlueButton branding
+:PROPERTIES:
+:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-customize-bigbluebutton-branding
+:END:
**** TODO [#C] Change background presentation
:PROPERTIES:
:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-change-background-presentation
@@ -853,6 +919,7 @@ emacsconf-stream-generate-test-videos
*** TODO Try upgrading to 2.x
:PROPERTIES:
:Effort: 2:00
+:CUSTOM_ID: check-emacsconf-infrastructure-etherpad-try-upgrading-to-2-x
:END:
:LOGBOOK:
CLOCK: [2025-09-22 Mon 12:46]
@@ -954,12 +1021,21 @@ Some convenient commands are defined in emacsconf-el:emacsconf-erc.el.
| /deopall | Remove operator status in the Emacsconf channels |
| /conftopic | Set the first part of the topic |
** Uploading videos
+:PROPERTIES:
+:CUSTOM_ID: processes-and-notes-uploading-videos
+:END:
*** YouTube
+:PROPERTIES:
+:CUSTOM_ID: processes-and-notes-uploading-videos-youtube
+:END:
emacsconf-publish-youtube-step-through-publishing
*** Toobnix
+:PROPERTIES:
+:CUSTOM_ID: processes-and-notes-uploading-videos-toobnix
+:END:
* Decisions
:PROPERTIES:
diff --git a/2026/organizers-notebook/schedule.svg b/2026/organizers-notebook/schedule.svg
index 034b5735..e29bdbe4 100644
--- a/2026/organizers-notebook/schedule.svg
+++ b/2026/organizers-notebook/schedule.svg
@@ -1 +1 @@
-<svg width="500" height="700" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday</title><rect width="166" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Saturday</text><a href="https://emacsconf.org/2026/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"><title> 9:00- 9:10 Saturday opening remarks</title><rect x="40" y="40" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-open</text></g></a><a href="https://emacsconf.org/2026/talks/emacspeak" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title> 9:10- 9:40 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="40" y="53" opacity="0.8" width="42" height="41" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,92)"><text fill="black" x="0" y="0" font-size="10" transform="nil">emacspeak</text></g></a><a href="https://emacsconf.org/2026/talks/cadet" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title> 9:50-10:00 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="40" y="108" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,119)"><text fill="black" x="0" y="0" font-size="10" transform="nil">cadet</text></g></a><a href="https://emacsconf.org/2026/talks/local" title="Local file history possibilities in Emacs" data-slug="local"><title>10:20-10:30 Local file history possibilities in Emacs</title><rect x="40" y="149" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,160)"><text fill="black" x="0" y="0" font-size="10" transform="nil">local</text></g></a><a href="https://emacsconf.org/2026/talks/hutch" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>10:50-11:00 hutch: code reviews for the mildly disenfranchised</title><rect x="40" y="190" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect><g transform="translate(40,201)"><text fill="black" x="0" y="0" font-size="10" transform="nil">hutch</text></g></a><a href="https://emacsconf.org/2026/talks/rau" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>11:10-11:30 Emacs as a Window Manager and concurrency</title><rect x="40" y="218" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,243)"><text fill="black" x="0" y="0" font-size="10" transform="nil">rau</text></g></a><a href="https://emacsconf.org/2026/talks/bone" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title>11:50-12:00 BONE and gnaw.el: tracking what matters</title><rect x="40" y="273" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,284)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bone</text></g></a><a href="https://emacsconf.org/2026/talks/align" title="Column-aligning text in Emacs" data-slug="align"><title>12:45- 1:05 Column-aligning text in Emacs</title><rect x="40" y="348" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,373)"><text fill="black" x="0" y="0" font-size="10" transform="nil">align</text></g></a><a href="https://emacsconf.org/2026/talks/portable" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title> 1:25- 1:35 Emacs as my portable user space across operating platforms</title><rect x="40" y="403" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,414)"><text fill="black" x="0" y="0" font-size="10" transform="nil">portable</text></g></a><a href="https://emacsconf.org/2026/talks/planning" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title> 1:55- 2:15 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="40" y="444" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,469)"><text fill="black" x="0" y="0" font-size="10" transform="nil">planning</text></g></a><a href="https://emacsconf.org/2026/talks/writing" title="Close the writing accountability gap with Emacs" data-slug="writing"><title> 2:35- 2:55 Close the writing accountability gap with Emacs</title><rect x="40" y="499" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,524)"><text fill="black" x="0" y="0" font-size="10" transform="nil">writing</text></g></a><a href="https://emacsconf.org/2026/talks/koutliner" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title> 3:15- 3:35 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="40" y="554" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,579)"><text fill="black" x="0" y="0" font-size="10" transform="nil">koutliner</text></g></a><a href="https://emacsconf.org/2026/talks/bible" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title> 3:55- 4:15 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="40" y="609" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,634)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bible</text></g></a><a href="https://emacsconf.org/2026/talks/anju" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title> 4:35- 4:55 Revisiting Emacs Mouse Interactions with Anju</title><rect x="40" y="664" opacity="0.8" width="42" height="27" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(40,689)"><text fill="black" x="0" y="0" font-size="10" transform="nil">anju</text></g></a><a href="https://emacsconf.org/2026/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"><title> 5:05- 5:15 Saturday closing remarks / open session</title><rect x="40" y="705" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,716)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-close</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g><g transform="translate(166,0)"><title>Schedule for Sunday</title><rect width="166" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Sunday</text><a href="https://emacsconf.org/2026/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"><title> 9:00- 9:10 Sunday opening remarks</title><rect x="40" y="40" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-open</text></g></a><a href="https://emacsconf.org/2026/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"><title>12:45-12:55 Sunday closing remarks</title><rect x="40" y="348" opacity="0.8" width="42" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,359)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-close</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g><g transform="translate(332,0)"><title>Schedule for Wednesday</title><rect width="166" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Wednesday</text><a href="https://emacsconf.org/2026/talks/open-mic" title="Open session" data-slug="open-mic"><title> 7:58- 7:58 Open session</title><rect x="40" y="-128" opacity="0.8" width="42" height="0" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,-130)"><text fill="black" x="0" y="0" font-size="10" transform="nil">open-mic</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="126" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">6 PM</text></g></g></svg> \ No newline at end of file
+<svg width="500" height="700" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Saturday</text><a href="https://emacsconf.org/2026/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"><title> 9:00- 9:10 Saturday opening remarks</title><rect x="40" y="40" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-open</text></g></a><a href="https://emacsconf.org/2026/talks/planning" title="The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc." data-slug="planning"><title> 9:10- 9:30 The Emacs Planning Habits of a Questionably Effective Person: My 40-year journey of planning with Emacs, Org Mode, paper journals, etc.</title><rect x="40" y="53" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,78)"><text fill="black" x="0" y="0" font-size="10" transform="nil">planning</text></g></a><a href="https://emacsconf.org/2026/talks/listen" title="Controlling Emacs by voice using Emacslisten" data-slug="listen"><title> 9:50-10:10 Controlling Emacs by voice using Emacslisten</title><rect x="40" y="108" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,133)"><text fill="black" x="0" y="0" font-size="10" transform="nil">listen</text></g></a><a href="https://emacsconf.org/2026/talks/emacspeak" title="Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective" data-slug="emacspeak"><title>10:30-11:00 Multi-dimensional information processing with Emacs and Emacspeak: a blind man's perspective</title><rect x="40" y="163" opacity="0.8" width="84" height="41" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,202)"><text fill="black" x="0" y="0" font-size="10" transform="nil">emacspeak</text></g></a><a href="https://emacsconf.org/2026/talks/rau" title="Emacs as a Window Manager and concurrency" data-slug="rau"><title>11:10-11:30 Emacs as a Window Manager and concurrency</title><rect x="40" y="218" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,243)"><text fill="black" x="0" y="0" font-size="10" transform="nil">rau</text></g></a><a href="https://emacsconf.org/2026/talks/plots" title="Plots with ROOTs: Resilient data visualization with Emacs, Org and gnuplot" data-slug="plots"><title> 1:00- 1:20 Plots with ROOTs: Resilient data visualization with Emacs, Org and gnuplot</title><rect x="40" y="369" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,394)"><text fill="black" x="0" y="0" font-size="10" transform="nil">plots</text></g></a><a href="https://emacsconf.org/2026/talks/ffs" title="Plain text presentations in GNU Emacs with ffs" data-slug="ffs"><title> 1:40- 2:00 Plain text presentations in GNU Emacs with ffs</title><rect x="40" y="424" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,449)"><text fill="black" x="0" y="0" font-size="10" transform="nil">ffs</text></g></a><a href="https://emacsconf.org/2026/talks/bible" title="bible-gateway: A Two-Edged Sword in Emacs" data-slug="bible"><title> 2:20- 2:40 bible-gateway: A Two-Edged Sword in Emacs</title><rect x="40" y="479" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,504)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bible</text></g></a><a href="https://emacsconf.org/2026/talks/svg" title="A (sort of) REPL for learning SVG" data-slug="svg"><title> 3:00- 3:20 A (sort of) REPL for learning SVG</title><rect x="40" y="534" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,559)"><text fill="black" x="0" y="0" font-size="10" transform="nil">svg</text></g></a><a href="https://emacsconf.org/2026/talks/anju" title="Revisiting Emacs Mouse Interactions with Anju" data-slug="anju"><title> 3:40- 4:00 Revisiting Emacs Mouse Interactions with Anju</title><rect x="40" y="589" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(40,614)"><text fill="black" x="0" y="0" font-size="10" transform="nil">anju</text></g></a><a href="https://emacsconf.org/2026/talks/ghostel" title="Ghost in the Shell: a libghostty powered terminal for Emacs" data-slug="ghostel"><title> 4:10- 4:30 Ghost in the Shell: a libghostty powered terminal for Emacs</title><rect x="40" y="630" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,655)"><text fill="black" x="0" y="0" font-size="10" transform="nil">ghostel</text></g></a><a href="https://emacsconf.org/2026/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"><title> 4:50- 5:00 Saturday closing remarks / open session</title><rect x="40" y="685" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,696)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sat-close</text></g></a><a href="https://emacsconf.org/2026/talks/llms" title="Meetup about LLMs" data-slug="llms"><title> 1:00- 2:00 Meetup about LLMs</title><rect x="125" y="369" opacity="0.8" width="84" height="82" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,449)"><text fill="black" x="0" y="0" font-size="10" transform="nil">llms</text></g></a><a href="https://emacsconf.org/2026/talks/portable" title="Emacs as my portable user space across operating platforms" data-slug="portable"><title> 2:20- 2:30 Emacs as my portable user space across operating platforms</title><rect x="125" y="479" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(125,490)"><text fill="black" x="0" y="0" font-size="10" transform="nil">portable</text></g></a><a href="https://emacsconf.org/2026/talks/os" title="Emacs Everywhere: A Fun Romp Through Esoteric Operating Systems" data-slug="os"><title> 2:50- 3:10 Emacs Everywhere: A Fun Romp Through Esoteric Operating Systems</title><rect x="125" y="520" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,545)"><text fill="black" x="0" y="0" font-size="10" transform="nil">os</text></g></a><a href="https://emacsconf.org/2026/talks/cadet" title="My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration" data-slug="cadet"><title> 3:30- 3:40 My Space Cadet Deck - an Android Stream Deck replacement with deep Emacs integration</title><rect x="125" y="575" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,586)"><text fill="black" x="0" y="0" font-size="10" transform="nil">cadet</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g><g transform="translate(250,0)"><title>Schedule for Sunday</title><rect width="250" height="700" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="30" x="3">Sunday</text><a href="https://emacsconf.org/2026/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"><title> 9:00- 9:10 Sunday opening remarks</title><rect x="40" y="40" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect><g transform="translate(40,51)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-open</text></g></a><a href="https://emacsconf.org/2026/talks/bone" title="BONE and gnaw.el: tracking what matters" data-slug="bone"><title> 9:10- 9:20 BONE and gnaw.el: tracking what matters</title><rect x="40" y="53" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,64)"><text fill="black" x="0" y="0" font-size="10" transform="nil">bone</text></g></a><a href="https://emacsconf.org/2026/talks/local" title="Local file history possibilities in Emacs" data-slug="local"><title> 9:40- 9:50 Local file history possibilities in Emacs</title><rect x="40" y="94" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="lightblue"></rect><g transform="translate(40,105)"><text fill="black" x="0" y="0" font-size="10" transform="nil">local</text></g></a><a href="https://emacsconf.org/2026/talks/hutch" title="hutch: code reviews for the mildly disenfranchised" data-slug="hutch"><title>10:10-10:20 hutch: code reviews for the mildly disenfranchised</title><rect x="40" y="136" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect><g transform="translate(40,147)"><text fill="black" x="0" y="0" font-size="10" transform="nil">hutch</text></g></a><a href="https://emacsconf.org/2026/talks/team" title="Beyond the Chatbot: Team-Oriented AI in Emacs" data-slug="team"><title>10:30-10:50 Beyond the Chatbot: Team-Oriented AI in Emacs</title><rect x="40" y="163" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,188)"><text fill="black" x="0" y="0" font-size="10" transform="nil">team</text></g></a><a href="https://emacsconf.org/2026/talks/compile" title="Beyond Shell History: Saving Compilation Output in Emacs" data-slug="compile"><title>11:10-11:30 Beyond Shell History: Saving Compilation Output in Emacs</title><rect x="40" y="218" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,243)"><text fill="black" x="0" y="0" font-size="10" transform="nil">compile</text></g></a><a href="https://emacsconf.org/2026/talks/mobile" title="How I fixed Org Mode's biggest mobile and collaboration problems" data-slug="mobile"><title> 1:00- 1:10 How I fixed Org Mode's biggest mobile and collaboration problems</title><rect x="40" y="369" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,380)"><text fill="black" x="0" y="0" font-size="10" transform="nil">mobile</text></g></a><a href="https://emacsconf.org/2026/talks/writing" title="Close the writing accountability gap with Emacs" data-slug="writing"><title> 1:30- 1:50 Close the writing accountability gap with Emacs</title><rect x="40" y="410" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,435)"><text fill="black" x="0" y="0" font-size="10" transform="nil">writing</text></g></a><a href="https://emacsconf.org/2026/talks/hyperbole" title="Hyperbole, My Dear Watson" data-slug="hyperbole"><title> 2:10- 2:30 Hyperbole, My Dear Watson</title><rect x="40" y="465" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,490)"><text fill="black" x="0" y="0" font-size="10" transform="nil">hyperbole</text></g></a><a href="https://emacsconf.org/2026/talks/koutliner" title="Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs" data-slug="koutliner"><title> 2:50- 3:10 Hyperbole Koutliner: The Best Autonumbered, Hyperlinking Outliner for Emacs</title><rect x="40" y="520" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,545)"><text fill="black" x="0" y="0" font-size="10" transform="nil">koutliner</text></g></a><a href="https://emacsconf.org/2026/talks/dnd" title="DnD and Org Roam: Becoming a Better DM with Emacs" data-slug="dnd"><title> 3:30- 3:40 DnD and Org Roam: Becoming a Better DM with Emacs</title><rect x="40" y="575" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(40,586)"><text fill="black" x="0" y="0" font-size="10" transform="nil">dnd</text></g></a><a href="https://emacsconf.org/2026/talks/align" title="Column-aligning text in Emacs" data-slug="align"><title> 4:00- 4:20 Column-aligning text in Emacs</title><rect x="40" y="616" opacity="0.8" width="84" height="27" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,641)"><text fill="black" x="0" y="0" font-size="10" transform="nil">align</text></g></a><a href="https://emacsconf.org/2026/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"><title> 4:40- 4:50 Sunday closing remarks</title><rect x="40" y="671" opacity="0.8" width="84" height="13" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(40,682)"><text fill="black" x="0" y="0" font-size="10" transform="nil">sun-close</text></g></a><a href="https://emacsconf.org/2026/talks/community" title="Community brainstorming" data-slug="community"><title>10:00-11:00 Community brainstorming</title><rect x="125" y="122" opacity="0.8" width="84" height="82" stroke="black" stroke-dasharray="" fill="gray"></rect><g transform="translate(125,202)"><text fill="black" x="0" y="0" font-size="10" transform="nil">community</text></g></a><g transform="translate(3,40)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">9 AM</text></g><g transform="translate(3,122)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">10 AM</text></g><g transform="translate(3,204)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">11 AM</text></g><g transform="translate(3,287)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">12 PM</text></g><g transform="translate(3,369)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">1 PM</text></g><g transform="translate(3,451)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">2 PM</text></g><g transform="translate(3,534)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">3 PM</text></g><g transform="translate(3,616)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">4 PM</text></g><g transform="translate(3,698)"><line stroke="darkgray" x1="40" y1="0" x2="210" y2="0"></line><text fill="black" x="0" y="0" font-size="10" dy=".4em">5 PM</text></g></g></svg> \ No newline at end of file