summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2022-11-21 13:36:53 -0500
committerSacha Chua <sacha@sachachua.com>2022-11-21 13:36:53 -0500
commitc5511e6f69a8afe5f81d1260105ceb0ba5c81e9d (patch)
tree63025e0527cd6965b433e136b74708c3484fb991
parentc18e0b5955df2967d7799eac242d4c371756cdda (diff)
downloademacsconf-wiki-c5511e6f69a8afe5f81d1260105ceb0ba5c81e9d.tar.xz
emacsconf-wiki-c5511e6f69a8afe5f81d1260105ceb0ba5c81e9d.zip
add pad to sched
-rw-r--r--2022/organizers-notebook/index.org818
-rw-r--r--2022/schedule-details.md86
-rw-r--r--templates/sched.md1
3 files changed, 610 insertions, 295 deletions
diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org
index f9d7d97c..8312cf88 100644
--- a/2022/organizers-notebook/index.org
+++ b/2022/organizers-notebook/index.org
@@ -2,7 +2,7 @@
#+OPTIONS: h:6 toc:nil num:nil ':t
#+PROPERTY: header-args :results silent :exports code :tangle yes
#+EXPORT_FILE_NAME: ../organizers-notebook.md
-#+QUANTIFIED: Emacs
+#+PROPERTY: QUANTIFIED Emacs
#+begin_export md
<!-- organizers-notebook.md is exported from organizers-notebook/index.org, please modify that instead. -->
@@ -113,282 +113,71 @@ interests you!
:END:
#+TOC: headlines 1 local
-
-** TODO [#A] Prepare intros for the hosts to read :sachac:
+** [#A] Look for ways to reduce risk
:PROPERTIES:
-:CUSTOM_ID: host-intros
+:CUSTOM_ID: derisk
:END:
-https://pad.emacsconf.org/intros
-also in :INTRO_NOTE: in conf.org so that we can plop it into the hyperlists.
-*** TODO Write intros for all the other talks
+https://pad.emacsconf.org/premortem
+*** TODO [#A] Make copyable version of bbb redirect :derisk:
SCHEDULED: <2022-11-21 Mon>
-*** DONE Set up Etherpad with the talks and see if we can involve the speakers and captioning volunteers :sachac:
-CLOSED: [2022-11-19 Sat 11:06]
-** TODO [#A] Write check-in email :sachac:
-DEADLINE: <2022-11-20 Sun> SCHEDULED: <2022-11-19 Sat>
:PROPERTIES:
-:CUSTOM_ID: check-in-email
+:CREATED: [2022-11-21 Mon 06:45]
:END:
-*** DONE Switch all the rooms to allow anyone to start them - one less step for the check-in person
-CLOSED: [2022-11-20 Sun 09:33]
+*** STARTED Make sure all the important tasks are scheduled over the next two weeks
+SCHEDULED: <2022-11-21 Mon>
:PROPERTIES:
:Effort: 0:30
:QUANTIFIED: Emacs
:END:
:LOGBOOK:
-CLOCK: [2022-11-20 Sun 08:46]--[2022-11-20 Sun 09:33] => 0:47
-:END:
-
-#+begin_src js2 :eval no
-//list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
-card = document.querySelector('a[href=\"%s\"] .card-body');
-card.querySelector('.item-action.dropdown a').click()
-card.querySelector('.update-room').click()
-if (!document.querySelector('#room_anyone_can_start').checked) {
- document.querySelector('#room_anyone_can_start').click();
-}
-document.querySelector('.update-only.create-room-button').click();
-#+end_src
-
-okay, next thing, it automatically refreshes. so I can't run the whole Javascript, I need to xdotool it.
-
-#+begin_src emacs-lisp :eval no
-(setq list (mapcar (lambda (o) (plist-get o :bbb-room)) (emacsconf-get-talk-info)))
-(setq list (seq-drop list (seq-position list "https://bbb.emacsverse.org/b/sac-rvc-kd2-pev")))
-(progn
- (setq item (pop list))
- (when (string-match "/b/\\(.*\\)" item)
- (kill-new (format "card = document.querySelector('a[href=\"%s\"] .card-body');
-card.querySelector('.item-action.dropdown a').click()
-card.querySelector('.update-room').click()
-if (!document.querySelector('#room_anyone_can_start').checked) {
- document.querySelector('#room_anyone_can_start').click();
-}
-document.querySelector('.update-only.create-room-button').click();
-"
- (match-string 0 item)))
- (sleep-for 2)
- (shell-command "xdotool key alt+Tab")))
-#+end_src
-
-Relying on xdotool seems a little fragile. Let's just check the page
-itself for the next one that needs to be done.
-
-#+begin_src js2 :eval no
-list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
-list.reduce(async(prev, elem) => {
- await prev;
- if (!sessionStorage.getItem(elem.value)) {
- return new Promise((resolve, reject) => {
- card = elem.closest('.card-body');
- card.querySelector('.item-action.dropdown a').click();
- card.querySelector('.update-room').click();
- sessionStorage.setItem(elem.value, true);
- setTimeout(function() {
- if (!document.querySelector('#room_anyone_can_start').checked) {
- document.querySelector('#room_anyone_can_start').click();
- document.querySelector('.update-only.create-room-button').click();
- } else {
- document.querySelector('#createRoomModal').click();
- }
- resolve(true);
- }, 500);
- });
- }
-});
-#+end_src
-
-*** DONE Update checkin instructions
-CLOSED: [2022-11-20 Sun 10:58]
-:PROPERTIES:
-:Effort: 0:30
-:END:
-:LOGBOOK:
-CLOCK: [2022-11-20 Sun 10:12]--[2022-11-20 Sun 10:58] => 0:46
-:END:
-*** Templates
-:PROPERTIES:
-:SUBJECT: Getting ready for EmacsConf ${year}
+CLOCK: [2022-11-21 Mon 13:17]
:END:
-Goals:
-- Ask speaker verify their scheduled time
- It has already been confirmed with them, but it might have changed slightly
- - HOW: They should check the time at the top of their talk page on the day of the conference
-- Double-check Q&A preference, encourage tech checks for live talks/Q&A
- - If they are available:
- - Direct to tech-checks via https://emacsconf.org/${year}/prepare/
- - Inform them of the check-in process
- - They come say hi to us 30' before their session in #emacsconf-org or #emacsconf (they can use chat.emacsconf.org )
- - We get them set up in a room where they can wait until the end of the broadcast of their pretention
- - They’re joined by the streamer and host.
-- Warning about potential emergency changes
-
-Slightly more complex because of the conditionals
-
-#+begin_src emacs-lisp :lexical t
-(defun emacsconf-mail-checkin-instructions (group &optional template)
- "Send checkin instructions.
-GROUP is (email . (talk talk))"
- (interactive (list (emacsconf-mail-complete-email-group
- (seq-filter
- (lambda (o)
- (or
- (string= (plist-get o :status) "CANCELLED")
- (null (plist-get o :email))
- (string-match "after" (or (plist-get o :q-and-a) ""))))
- (emacsconf-get-talk-info)))))
- (let* ((talks (seq-remove
- (lambda (o)
- (or
- (string= (plist-get o :status) "CANCELLED")
- (null (plist-get o :email))
- (string-match "after" (or (plist-get o :q-and-a) ""))
- (save-window-excursion
- (emacsconf-with-talk-heading o
- (re-search-forward "checkin instructions" (save-excursion (org-end-of-subtree)) t)))))
- (cdr group)))
- (waiting-talks (seq-find (lambda (o) (string= (plist-get o :status) "WAITING_FOR_PREREC")) talks)))
- (when talks
- (emacsconf-mail-prepare
- (or template (emacsconf-mail-merge-get-template "checkin-at-conf"))
- (car group)
- (list
- :year emacsconf-year
- :base-url emacsconf-base-url
- :conf-name emacsconf-name
- :email (plist-get (car talks) :email)
- :emergency emacsconf-emergency-contact
- :plural (if (> (length (cdr group)) 1) "s" "")
- :speakers-short (plist-get (car talks) :speakers-short)
- :url (mapconcat (lambda (o) (concat emacsconf-base-url (plist-get o :url)))
- talks" , ")
- :waiting
- (cond
- ((> (length waiting-talks) 1)
- " If you can upload your talk videos before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload them as early as you can.${wrap}")
- ((= (length waiting-talks) 1)
- " If you can upload your talk video before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload it as early as you can.${wrap}")
- (t ""))
- :checkin-info
- (mapconcat
- (lambda (o)
- (let ((base-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) emacsconf-timezone))
- (speaker-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) (plist-get o :timezone))))
- (emacsconf-replace-plist-in-string
- (append (list :base-url emacsconf-base-url
- :check-in
- (concat
- "Before "
- base-checkin " in " emacsconf-timezone
- (if (string= base-checkin speaker-checkin)
- ""
- (concat
- ", which is the same as " speaker-checkin " in " (plist-get o :timezone))) "\n"
- " (this is " (plist-get o :checkin-label) ")")
- :qa-info-speakers
- (cond
- ;; aaaaah, no prerec yet
- ((string= (plist-get o :status) "WAITING_FOR_PREREC")
- (concat "Talk and Q&A BigBlueButton room: " (plist-get o :bbb-room)))
- ((null (plist-get o :q-and-a)) "")
- ((string-match "live" (plist-get o :q-and-a)) (concat "Q&A BigBlueButton room: " (plist-get o :bbb-room)))
- ((string-match "irc" (plist-get o :q-and-a)) (concat "Q&A: " (plist-get o :channel) " (" (plist-get o :webchat-url) ")"))
- ((string-match "pad" (plist-get o :q-and-a)) "Q&A: On the pad")
- (t "Q&A: After the event")))
- o)
- "- ${title}
- Info and sched: ${base-url}${url}
- Check-in: ${check-in}
- Pad: ${pad-url}
- ${qa-info-speakers}")))
- talks "\n\n")))
- (mapc (lambda (o)
- (emacsconf-mail-log-message-when-sent o "Sent checkin instructions"))
- talks))))
+#+begin_src emacs-lisp :eval yes
+(defun emacsconf-agenda ()
+ (interactive)
+ (let* ((notebook (expand-file-name "index.org" (expand-file-name "organizers-notebook" (expand-file-name emacsconf-year emacsconf-directory))))
+ (org-agenda-custom-commands
+ `(("a" "Agenda"
+ ((tags-todo "-PRIORITY=\"C\"-SCHEDULED={.}-nextyear"
+ ((org-agenda-files (list ,notebook))))
+ (agenda ""
+ ((org-agenda-files (list ,notebook))
+ (org-agenda-span 7)))
+ )))))
+ (org-agenda nil "a")))
#+end_src
-
-**** E-mail for speakers who are planning to be at the conference
+** Facilitate Q&A
:PROPERTIES:
-:EMAIL_ID: checkin-instructions
-:SUBJECT: ${conf-name} ${year}: Check-in instructions
-:REPLY_TO: emacsconf-submit@gnu.org, ${email}
-:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email}
-:CC: emacsconf-submit@gnu.org
-:FUNCTION: emacsconf-mail-checkin-instructions
+:CUSTOM_ID: qa
:END:
-Hello, ${speakers-short}!
-
-We're looking forward to having you join us at EmacsConf!
-
-We've updated the schedule based on the submissions and cancellations,
-and we'll probably update the schedule even on the day of the
-conference. You can get a rough idea of your schedule at the talk
-pages with the URL${plural} below. You might want to check your talk
-page${plural} some time next week to get a rough sense of where it is,
-and then check it again on the day of your talk${plural}. Please let
-me know if the times don't work for you.
-
-We'll try our best to keep your talk in the same general timeslot (ex:
-Saturday morning, Saturday afternoon, Sunday morning, Sunday
-afternoon). We've done some dry-runs, but just in case it turns out
-that running two tracks at the same time leaves us too frazzled, we
-may drop back to one track with Q&A on an alternate stream, like last
-year. If there are big changes to your schedule on the day of your
-talk${plural}, you'll get an e-mail from us with a subject like
-"URGENT: EmacsConf 2022: ...".${wrap}
-
-Here's your checkin info:
-
-${checkin-info}
-
-Please check in early so that we can deal with scheduling changes or
-technical issues. You can find the check-in process at
-${base-url}${year}/speakers/ .${waiting}
-
-If something comes up, please let us know as soon as you can. Here's
-my emergency contact information: ${emergency}
-
-Thank you for sharing your time and energy with the EmacsConf community!
-
-Sacha
-
-p.s. If you need to cancel, that's okay too, life happens. Let me know
-as soon as you can and I'll try to shuffle things around. Thank you!
-
-**** E-mail for speakers who are not planning to be around, but who have sent us their prerecs
+*** SOMEDAY [#C] Upload a presentation & enable for download – Blindside Networks Customer Support Portal
:PROPERTIES:
-:EMAIL_ID: checkin-after
-:SUBJECT: EmacsConf ${year}: Check-in instructions
+:CREATED: [2022-11-20 Sun 22:26]
:END:
-Hello, ${name}!
+Low priority because people were able to do Q&A last year without us holding their hand
-Thank you so much for contributing a talk for EmacsConf ${year}! We're
-looking forward to collecting questions and forwarding them to you by
-e-mail after the conference. We'll also post the prerecording at the
-time that it gets streamed, so people will be able to access it at
-${url} once it has gone live.
-
-If it turns out that you can make it to the conference after all, feel
-free to drop us a line at #emacsconf-org and we'll let people know
-you're around. You can find the check-in process at
-https://emacsconf.org/${year}/speakers/ .
+https://support.blindsidenetworks.com/hc/en-us/articles/360024688392-Upload-a-presentation-enable-for-download#:~:text=BigBlueButton%20will%20accept%20Office%20documents,pptx)%2C%20text%20documents%20(.
-Thank you again for being part of EmacsConf ${year}!
-
-Sacha
-*** TODO Draft e-mail to send speakers who may need to do it live
+** [#A] Prepare intros for the hosts to read :sachac:
:PROPERTIES:
-:CUSTOM_ID: live-speakers
+:CUSTOM_ID: host-intros
:END:
+https://pad.emacsconf.org/intros
+also in :INTRO_NOTE: in conf.org so that we can plop it into the hyperlists.
+*** TODO Write intros for all the other talks
+SCHEDULED: <2022-11-28 Mon>
+*** DONE Set up Etherpad with the talks and see if we can involve the speakers and captioning volunteers :sachac:
+CLOSED: [2022-11-19 Sat 11:06]
** TODO [#A] Review the submissions for encoding issues :zaeph:
+SCHEDULED: <2022-11-28 Mon>
:PROPERTIES:
:CUSTOM_ID: review-submissions
:END:
so that we don't get surprised by missing or corrupted videos
-** TODO [#B] Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning :sachac:
+** [#B] Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning :sachac:derisk:
:PROPERTIES:
:CUSTOM_ID: one-track
:END:
@@ -396,7 +185,8 @@ so that we don't get surprised by missing or corrupted videos
We might be able to do it on a modular basis (Saturday afternoon, Sunday morning, or Sunday afternoon).
We need a quick way to notify the affected speakers, and we should give them a heads-up as well.
We also need a quick way to update the schedule.
-*** STARTED Update conf.org and the wiki based on the selected schedule
+*** STARTED Update conf.org and the wiki based on the selected emergency schedule
+SCHEDULED: <2022-11-28 Mon>
:PROPERTIES:
:Effort: 0:30
:END:
@@ -407,6 +197,7 @@ CLOCK: [2022-11-17 Thu 21:15]--[2022-11-17 Thu 21:15] => 0:00
*** TODO Give speakers a heads-up regarding schedule tweaks and the potential for bigger schedule changes
SCHEDULED: <2022-11-18 Fri>
*** TODO Draft the code for mailing all the affected speakers
+SCHEDULED: <2022-11-28 Mon>
*** Saturday afternoon
#+begin_src emacs-lisp :exports results :results replace :var filename="emergency-back-to-one-sat-pm.svg" :eval never-export
(emacsconf-schedule-test
@@ -488,10 +279,14 @@ SCHEDULED: <2022-11-18 Fri>
:end:
*** TODO Get the emergency schedule sorted out so that we can easily switch to it
+SCHEDULED: <2022-11-22 Tue>
:PROPERTIES:
:CREATED: [2022-11-19 Sat 08:01]
:END:
+
+It needs to be applied
** TODO [#B] Create protocol for live Q&A :zaeph:
+SCHEDULED: <2022-11-28 Mon>
:PROPERTIES:
:CUSTOM_ID: live-protocol
:END:
@@ -500,7 +295,10 @@ Objective:
Comments:
- It would be nice to have a protocol with speakers to tell us that they’re uncomfortable with a question, just so that we can find a smooth way to skip it.
+
+
** TODO Update viewing instructions and watch pages :sachac:
+SCHEDULED: <2022-11-21 Mon>
:PROPERTIES:
:CUSTOM_ID: write-viewing
:END:
@@ -517,7 +315,13 @@ CLOSED: [2022-10-17 Mon 00:39]
CLOSED: [2022-11-19 Sat 11:08]
Maybe links to the current shift's pads
*** TODO Add pad to sched directive so that it will be linked when the pads are live
-*** TODO Update https://live.emacsconf.org/ as well
+*** TODO [#A] Update https://live.emacsconf.org/ as well
+SCHEDULED: <2022-11-21 Mon>
+Ansible or Emacs Lisp? Emacs Lisp
+control the status too
+
+also 2022/ and 2022/watch
+
** TODO Prepare to handle talk state changes :sachac:publish:
SCHEDULED: <2022-11-21 Mon>
:PROPERTIES:
@@ -621,6 +425,10 @@ Creating the events
This is for the general track of EmacsConf, the conference about the joy of Emacs and Emacs Lisp.
+Schedule:
+Saturday Dec 3, 2022, 9 AM - 12 PM EST, 1 PM - 5 PM EST
+Sunday Dec 4, 2022, 9 AM - 12 PM EST, 1 PM - 5 PM EST
+
Watch using free/open source software: https://live.emacsconf.org/2022/watch/gen/
Conference info: https://emacsconf.org/2022/
Schedule: https://emacsconf.org/2022/talks/
@@ -634,6 +442,10 @@ International (CC BY-SA 4.0) license. Please observe the guidelines for conduct:
This is for the development track of EmacsConf, the conference about the joy of Emacs and Emacs Lisp.
+Schedule:
+Saturday Dec 3, 2022, 9 AM - 12 PM EST, 1 PM - 5 PM EST
+Sunday Dec 4, 2022, 9 AM - 12 PM EST, 1 PM - 5 PM EST
+
Watch using free/open source software: https://live.emacsconf.org/2022/watch/dev/
Conference info: https://emacsconf.org/2022/
Schedule: https://emacsconf.org/2022/talks/
@@ -812,6 +624,16 @@ SCHEDULED: <2022-11-26 Sat>
| jman | X | |
| vetrivln | X | [2022-11-19 Sat] access granted, needs to figure out audio |
+*** TODO set up Mumble channels for host-dev and host-gen?
+ :PROPERTIES:
+ :CREATED: [2022-11-20 Sun 10:38]
+ :END:
+
+*** TODO add dry-run check of whispering to hosts
+ :PROPERTIES:
+ :CREATED: [2022-11-20 Sun 10:34]
+ :END:
+
** Satellite events
:PROPERTIES:
:CUSTOM_ID: satellite
@@ -882,6 +704,12 @@ SCHEDULED: <2022-11-26 Sat>
:CREATED: [2022-11-19 Sat 13:54]
:END:
+*** SOMEDAY [#B] Regenerate hyperlist if sched changes
+ SCHEDULED: <2022-11-21 Mon>
+ :PROPERTIES:
+ :CREATED: [2022-11-17 Thu 22:17]
+ :END:
+
** TODO [#C] Record intro/outro for day-1 and day-2 :zaeph:
:PROPERTIES:
:CUSTOM_ID: rec-intro
@@ -1087,7 +915,7 @@ CLOSED: [2022-10-13 Thu 13:55]
*** DONE Export pad initial content HTML to make it easier to reimport into wikimedia or elsewhere
CLOSED: [2022-10-13 Thu 13:46]
~emacsconf-pad-export-initial-content-for-all-talks~
-* Ideas for next year
+* Ideas for next year :nextyear:
:PROPERTIES:
:CUSTOM_ID: maybe-projects
:END:
@@ -1097,6 +925,132 @@ CLOSED: [2022-10-13 Thu 13:46]
:CREATED: [2022-11-19 Sat 22:42]
:END:
+** SOMEDAY Suggest public submissions next time
+ :PROPERTIES:
+ :CREATED: [2022-09-22 Thu 21:09]
+ :END:
+would it be interesting to see if other people can build on what's submitted?
+
+** SOMEDAY [#C] Match /names with speakers, maybe make a page with people currently online
+ :PROPERTIES:
+ :CREATED: [2022-10-01 Sat 23:58]
+ :END:
+
+** SOMEDAY EmacsWiki: Erc Robot
+ :PROPERTIES:
+ :CREATED: [2022-10-01 Sat 21:11]
+ :END:
+
+https://www.emacswiki.org/emacs/ErcRobot
+
+After I get ikiwiki sorted out, I can use Erc to control it so that I can test it a lot before letting it mess with the real thing
+
+Goals:
+Update schedule
+Publish prerec when talk is playing
+
+** TODO Consider making a bot to support announcing, updating, publishing, who's here, announcing when speakers are here
+ :PROPERTIES:
+ :CREATED: [2022-10-03 Mon 23:43]
+ :END:
+
+https://salsa.debian.org/rhonda/schedulebot
+
+- announces:
+ - $talk will start in $min minutes
+ - $talk has just begun
+ - $talk has just finished
+- seen
+
+** SOMEDAY indentation - CSS - successive indenting of siblings after headings - Stack Overflow
+ :PROPERTIES:
+ :CREATED: [2022-10-07 Fri 21:15]
+ :END:
+
+https://stackoverflow.com/questions/31872535/css-successive-indenting-of-siblings-after-headings
+
+** SOMEDAY html - Indent everything after h1, h2, etc. before the next, one, while stacking the indents, with CSS - Stack Overflow
+ :PROPERTIES:
+ :CREATED: [2022-10-07 Fri 21:13]
+ :END:
+
+https://stackoverflow.com/questions/69711847/indent-everything-after-h1-h2-etc-before-the-next-one-while-stacking-the-in
+
+** Video
+*** SOMEDAY infrastructure/source-recording.sh at master · FOSDEM/infrastructure
+ :PROPERTIES:
+ :CREATED: [2022-10-04 Tue 00:11]
+ :END:
+
+https://github.com/FOSDEM/infrastructure/blob/master/ansible/playbooks/roles/video-bbb/files/scripts/source-recording.sh
+
+*** SOMEDAY c3voc/voctomix - Docker Image | Docker Hub
+ :PROPERTIES:
+ :CREATED: [2022-10-04 Tue 00:09]
+ :END:
+
+https://hub.docker.com/r/c3voc/voctomix/
+
+*** SOMEDAY DebConf video team / vogol · GitLab
+ :PROPERTIES:
+ :CREATED: [2022-10-04 Tue 00:07]
+ :END:
+
+https://salsa.debian.org/debconf-video-team/vogol
+
+*** SOMEDAY roles/vogol · master · DebConf video team / ansible · GitLab web interface for voctomix
+ :PROPERTIES:
+ :CREATED: [2022-10-04 Tue 00:06]
+ :END:
+
+https://salsa.debian.org/debconf-video-team/ansible/-/tree/master/roles/vogol
+
+*** SOMEDAY CarlFK/veyepar: Video Eyeball Processor and Review
+ :PROPERTIES:
+ :CREATED: [2022-10-04 Tue 00:02]
+ :END:
+
+https://github.com/CarlFK/veyepar
+
+*** SOMEDAY timvideos/streaming-system: Tim Video's - Live Streaming for user groups and other events.
+ :PROPERTIES:
+ :CREATED: [2022-10-04 Tue 00:01]
+ :END:
+
+https://github.com/timvideos/streaming-system
+
+*** SOMEDAY <no title> — DebConf Videoteam Ansible documentation
+ :PROPERTIES:
+ :CREATED: [2022-10-03 Mon 23:40]
+ :END:
+
+https://debconf-video-team.pages.debian.net/ansible/ansible_roles/etherpad.html
+
+*** SOMEDAY DebConf video team / ansible · GitLab
+ :PROPERTIES:
+ :CREATED: [2022-10-03 Mon 23:38]
+ :END:
+
+https://salsa.debian.org/debconf-video-team/ansible
+
+** SOMEDAY handprint · PyPI
+ :PROPERTIES:
+ :CREATED: [2022-11-14 Mon 23:22]
+ :END:
+
+https://pypi.org/project/handprint/
+That might be interesting for reviewing text recognition output
+
+** TODO Update websocket
+ SCHEDULED: <2022-12-18 Sun>
+
+** TODO Idea for next year: save talk details in an org note so that I can easily send e-mails comparing previous with current
+ :PROPERTIES:
+ :CREATED: [2022-11-20 Sun 10:31]
+ :END:
+
+[[file:~/proj/emacsconf/wiki/2022/speakers.md::you beforehand.]]
+
* Things to figure out / decisions to make
:PROPERTIES:
:CUSTOM_ID: decisions
@@ -1402,6 +1356,20 @@ Options:
- https://www.collabmagazine.com/organizing-a-multi-track-virtual-conference-with-microsoft-teams-live-events-a-technical-playbook-and-lessons-learned/ : 4-person team, post-prod, break commercials
+**** SOMEDAY virtual-conf-resources/foss-north.md at master · e8johan/virtual-conf-resources
+ :PROPERTIES:
+ :CREATED: [2022-10-01 Sat 23:50]
+ :END:
+
+https://github.com/e8johan/virtual-conf-resources/blob/master/foss-north.md
+
+**** SOMEDAY e8johan/virtual-conf-resources: Resources for virtual conferences
+ :PROPERTIES:
+ :CREATED: [2022-10-01 Sat 23:49]
+ :END:
+
+https://github.com/e8johan/virtual-conf-resources
+
** SOMEDAY Think about what to do with schedule gaps due to cancelled talks :thoughts:
:PROPERTIES:
:CREATED: [2022-11-19 Sat 17:30]
@@ -2255,6 +2223,12 @@ ${description}
***** publishing
***** webm
***** media directory
+**** TODO [#A] Fix mapconcat error in updating task status
+SCHEDULED: <2022-11-21 Mon>
+:PROPERTIES:
+:CREATED: [2022-11-21 Mon 07:23]
+:END:
+
*** Handle Q&A
:PROPERTIES:
:CUSTOM_ID: questions
@@ -4077,6 +4051,22 @@ Overlay considerations:
CLOSED: [2022-11-07 Mon 14:46]
https://gitlab.com/akshay196/emacsconf-artwork/-/blob/main/2022/talk-banner/sample.svg
+*** TODO Make a list of different things to plug during commercial breaks, like Mastodon
+ SCHEDULED: <2022-11-25 Fri>
+ :PROPERTIES:
+ :CREATED: [2022-11-17 Thu 14:25]
+ :END:
+
+[[file:~/sync/Phone/Wednesday at 23-00.txt::So see Oh, that beginner elephant make a list of different things to plug during commercial breaks and elephant.]]
+
+*** TODO Make Q&A process slide
+ SCHEDULED: <2022-11-22 Tue>
+ :PROPERTIES:
+ :CREATED: [2022-11-20 Sun 10:04]
+ :END:
+
+Raise hands
+
** DONE Find volunteers for tech-checks :zaeph:
CLOSED: [2022-11-19 Sat 11:08]
:PROPERTIES:
@@ -4147,6 +4137,44 @@ CLOSED: [2022-11-08 Tue 09:48] DEADLINE: <2022-11-18 Fri>
- FlowyCoder: sat-pm-gen, sun-pm-gen
- jman: sun-pm-gen
+*** DONE Doublecheck mute on join
+CLOSED: [2022-11-21 Mon 12:05]
+:PROPERTIES:
+:CREATED: [2022-11-21 Mon 11:31]
+:Effort: 0:15
+:QUANTIFIED: Emacs
+:END:
+:LOGBOOK:
+CLOCK: [2022-11-21 Mon 11:49]--[2022-11-21 Mon 12:05] => 0:16
+:END:
+[[file:~/proj/emacsconf/wiki/2022/organizers-notebook/index.org::*Shifts][Shifts]]
+
+#+begin_src js2 :eval no
+list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
+list.reduce(async(prev, elem) => {
+ await prev;
+ if (!sessionStorage.getItem(elem.value)) {
+ return new Promise(async (resolve, reject) => {
+ card = elem.closest('.card-body');
+ card.querySelector('.item-action.dropdown a').click();
+ await new Promise(r => setTimeout(r, 1000));
+ card.querySelector('.update-room').click();
+ await new Promise(r => setTimeout(r, 1000));
+ if (!document.querySelector('#room_mute_on_join').checked) {
+ document.querySelector('#room_mute_on_join').click();
+ sessionStorage.setItem(elem.value, true);
+ await new Promise(r => setTimeout(r, 1000));
+ document.querySelector('.update-only.create-room-button').click();
+ } else {
+ sessionStorage.setItem(elem.value, true);
+ document.querySelector('#createRoomModal').click();
+ }
+ resolve(true);
+ });
+ }
+});
+
+#+end_src
** DONE Coordinate and help volunteers :sachac:
CLOSED: [2022-11-19 Sat 11:14]
:PROPERTIES:
@@ -4485,6 +4513,32 @@ CLOSED: [2022-11-19 Sat 11:15]
:CREATED: [2022-11-20 Sun 08:33]
:END:
[[file:~/proj/emacsconf/wiki/2022/organizers-notebook/index.org::*Think about what to do with schedule gaps due to cancelled talks][Think about what to do with schedule gaps due to cancelled talks]]
+*** TODO [#A] Separate mumble audio so that panic button can still bring in our audio
+ SCHEDULED: <2022-11-21 Mon>
+ :PROPERTIES:
+ :CREATED: [2022-11-20 Sun 10:14]
+ :END:
+
+*** SOMEDAY Prepare for rms talk and Q&A with bandali
+ DEADLINE: <2022-11-25 Fri>
+ :PROPERTIES:
+ :CREATED: [2022-11-18 Fri 12:27]
+ :END:
+
+Mumble?
+
+**** TODO [#C] Reflow and edit VTT for RMS TEDx talk so that things are on one line
+ :PROPERTIES:
+ :CREATED: [2022-11-19 Sat 19:02]
+ :END:
+
+[[file:~/proj/emacsconf/lisp/emacsconf-stream.el]]
+
+*** TODO Add panic button to OBS settings
+ :PROPERTIES:
+ :CREATED: [2022-11-20 Sun 10:13]
+ :END:
+
** DONE [#C] Smoothen captioning workflow :sachac:
CLOSED: [2022-11-19 Sat 11:10]
:PROPERTIES:
@@ -4676,6 +4730,266 @@ this year, but we need to keep this at the back of our minds.
Note on how DebConf handled incidents:
https://www.mail-archive.com/search?l=debconf-team@lists.debian.org&q=subject:%22Re%5C%3A+DebConf+21+Incident+Response%22&o=newest&f=1
+** DONE [#A] Write check-in email :sachac:
+CLOSED: [2022-11-21 Mon 13:30] DEADLINE: <2022-11-20 Sun> SCHEDULED: <2022-11-19 Sat>
+:PROPERTIES:
+:CUSTOM_ID: check-in-email
+:END:
+*** DONE Switch all the rooms to allow anyone to start them - one less step for the check-in person
+CLOSED: [2022-11-20 Sun 09:33]
+:PROPERTIES:
+:Effort: 0:30
+:QUANTIFIED: Emacs
+:END:
+:LOGBOOK:
+CLOCK: [2022-11-20 Sun 08:46]--[2022-11-20 Sun 09:33] => 0:47
+:END:
+
+#+begin_src js2 :eval no
+//list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
+card = document.querySelector('a[href=\"%s\"] .card-body');
+card.querySelector('.item-action.dropdown a').click()
+card.querySelector('.update-room').click()
+if (!document.querySelector('#room_anyone_can_start').checked) {
+ document.querySelector('#room_anyone_can_start').click();
+}
+document.querySelector('.update-only.create-room-button').click();
+#+end_src
+
+okay, next thing, it automatically refreshes. so I can't run the whole Javascript, I need to xdotool it.
+
+#+begin_src emacs-lisp :eval no
+(setq list (mapcar (lambda (o) (plist-get o :bbb-room)) (emacsconf-get-talk-info)))
+(setq list (seq-drop list (seq-position list "https://bbb.emacsverse.org/b/sac-rvc-kd2-pev")))
+(progn
+ (setq item (pop list))
+ (when (string-match "/b/\\(.*\\)" item)
+ (kill-new (format "card = document.querySelector('a[href=\"%s\"] .card-body');
+card.querySelector('.item-action.dropdown a').click()
+card.querySelector('.update-room').click()
+if (!document.querySelector('#room_anyone_can_start').checked) {
+ document.querySelector('#room_anyone_can_start').click();
+}
+document.querySelector('.update-only.create-room-button').click();
+"
+ (match-string 0 item)))
+ (sleep-for 2)
+ (shell-command "xdotool key alt+Tab")))
+#+end_src
+
+Relying on xdotool seems a little fragile. Let's just check the page
+itself for the next one that needs to be done.
+
+#+begin_src js2 :eval no
+list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
+list.reduce(async(prev, elem) => {
+ await prev;
+ if (!sessionStorage.getItem(elem.value)) {
+ return new Promise((resolve, reject) => {
+ card = elem.closest('.card-body');
+ card.querySelector('.item-action.dropdown a').click();
+ card.querySelector('.update-room').click();
+ sessionStorage.setItem(elem.value, true);
+ setTimeout(function() {
+ if (!document.querySelector('#room_anyone_can_start').checked) {
+ document.querySelector('#room_anyone_can_start').click();
+ document.querySelector('.update-only.create-room-button').click();
+ } else {
+ document.querySelector('#createRoomModal').click();
+ }
+ resolve(true);
+ }, 500);
+ });
+ }
+});
+#+end_src
+
+*** DONE Update checkin instructions
+CLOSED: [2022-11-20 Sun 10:58]
+:PROPERTIES:
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-11-20 Sun 10:12]--[2022-11-20 Sun 10:58] => 0:46
+:END:
+*** Templates
+:PROPERTIES:
+:SUBJECT: Getting ready for EmacsConf ${year}
+:END:
+
+Goals:
+- Ask speaker verify their scheduled time
+ It has already been confirmed with them, but it might have changed slightly
+ - HOW: They should check the time at the top of their talk page on the day of the conference
+- Double-check Q&A preference, encourage tech checks for live talks/Q&A
+ - If they are available:
+ - Direct to tech-checks via https://emacsconf.org/${year}/prepare/
+ - Inform them of the check-in process
+ - They come say hi to us 30' before their session in #emacsconf-org or #emacsconf (they can use chat.emacsconf.org )
+ - We get them set up in a room where they can wait until the end of the broadcast of their pretention
+ - They’re joined by the streamer and host.
+- Warning about potential emergency changes
+
+Slightly more complex because of the conditionals
+
+#+begin_src emacs-lisp :lexical t
+(defun emacsconf-mail-checkin-instructions (group &optional template)
+ "Send checkin instructions.
+GROUP is (email . (talk talk))"
+ (interactive (list (emacsconf-mail-complete-email-group
+ (seq-filter
+ (lambda (o)
+ (or
+ (string= (plist-get o :status) "CANCELLED")
+ (null (plist-get o :email))
+ (string-match "after" (or (plist-get o :q-and-a) ""))))
+ (emacsconf-get-talk-info)))))
+ (let* ((talks (seq-remove
+ (lambda (o)
+ (or
+ (string= (plist-get o :status) "CANCELLED")
+ (null (plist-get o :email))
+ (string-match "after" (or (plist-get o :q-and-a) ""))
+ (save-window-excursion
+ (emacsconf-with-talk-heading o
+ (re-search-forward "checkin instructions" (save-excursion (org-end-of-subtree)) t)))))
+ (cdr group)))
+ (waiting-talks (seq-find (lambda (o) (string= (plist-get o :status) "WAITING_FOR_PREREC")) talks)))
+ (when talks
+ (emacsconf-mail-prepare
+ (or template (emacsconf-mail-merge-get-template "checkin-at-conf"))
+ (car group)
+ (list
+ :year emacsconf-year
+ :base-url emacsconf-base-url
+ :conf-name emacsconf-name
+ :email (plist-get (car talks) :email)
+ :emergency emacsconf-emergency-contact
+ :plural (if (> (length (cdr group)) 1) "s" "")
+ :speakers-short (plist-get (car talks) :speakers-short)
+ :url (mapconcat (lambda (o) (concat emacsconf-base-url (plist-get o :url)))
+ talks" , ")
+ :waiting
+ (cond
+ ((> (length waiting-talks) 1)
+ " If you can upload your talk videos before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload them as early as you can.${wrap}")
+ ((= (length waiting-talks) 1)
+ " If you can upload your talk video before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload it as early as you can.${wrap}")
+ (t ""))
+ :checkin-info
+ (mapconcat
+ (lambda (o)
+ (let ((base-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) emacsconf-timezone))
+ (speaker-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) (plist-get o :timezone))))
+ (emacsconf-replace-plist-in-string
+ (append (list :base-url emacsconf-base-url
+ :check-in
+ (concat
+ "Before "
+ base-checkin " in " emacsconf-timezone
+ (if (string= base-checkin speaker-checkin)
+ ""
+ (concat
+ ", which is the same as " speaker-checkin " in " (plist-get o :timezone))) "\n"
+ " (this is " (plist-get o :checkin-label) ")")
+ :qa-info-speakers
+ (cond
+ ;; aaaaah, no prerec yet
+ ((string= (plist-get o :status) "WAITING_FOR_PREREC")
+ (concat "Talk and Q&A BigBlueButton room: " (plist-get o :bbb-room)))
+ ((null (plist-get o :q-and-a)) "")
+ ((string-match "live" (plist-get o :q-and-a)) (concat "Q&A BigBlueButton room: " (plist-get o :bbb-room)))
+ ((string-match "irc" (plist-get o :q-and-a)) (concat "Q&A: " (plist-get o :channel) " (" (plist-get o :webchat-url) ")"))
+ ((string-match "pad" (plist-get o :q-and-a)) "Q&A: On the pad")
+ (t "Q&A: After the event")))
+ o)
+ "- ${title}
+ Info and sched: ${base-url}${url}
+ Check-in: ${check-in}
+ Pad: ${pad-url}
+ ${qa-info-speakers}")))
+ talks "\n\n")))
+ (mapc (lambda (o)
+ (emacsconf-mail-log-message-when-sent o "Sent checkin instructions"))
+ talks))))
+#+end_src
+
+**** E-mail for speakers who are planning to be at the conference
+:PROPERTIES:
+:EMAIL_ID: checkin-instructions
+:SUBJECT: ${conf-name} ${year}: Check-in instructions
+:REPLY_TO: emacsconf-submit@gnu.org, ${email}
+:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email}
+:CC: emacsconf-submit@gnu.org
+:FUNCTION: emacsconf-mail-checkin-instructions
+:END:
+
+Hello, ${speakers-short}!
+
+We're looking forward to having you join us at EmacsConf!
+
+We've updated the schedule based on the submissions and cancellations,
+and we'll probably update the schedule even on the day of the
+conference. You can get a rough idea of your schedule at the talk
+pages with the URL${plural} below. You might want to check your talk
+page${plural} some time next week to get a rough sense of where it is,
+and then check it again on the day of your talk${plural}. Please let
+me know if the times don't work for you.
+
+We'll try our best to keep your talk in the same general timeslot (ex:
+Saturday morning, Saturday afternoon, Sunday morning, Sunday
+afternoon). We've done some dry-runs, but just in case it turns out
+that running two tracks at the same time leaves us too frazzled, we
+may drop back to one track with Q&A on an alternate stream, like last
+year. If there are big changes to your schedule on the day of your
+talk${plural}, you'll get an e-mail from us with a subject like
+"URGENT: EmacsConf 2022: ...".${wrap}
+
+Here's your checkin info:
+
+${checkin-info}
+
+Please check in early so that we can deal with scheduling changes or
+technical issues. You can find the check-in process at
+${base-url}${year}/speakers/ .${waiting}
+
+If something comes up, please let us know as soon as you can. Here's
+my emergency contact information: ${emergency}
+
+Thank you for sharing your time and energy with the EmacsConf community!
+
+Sacha
+
+p.s. If you need to cancel, that's okay too, life happens. Let me know
+as soon as you can and I'll try to shuffle things around. Thank you!
+
+**** E-mail for speakers who are not planning to be around, but who have sent us their prerecs
+:PROPERTIES:
+:EMAIL_ID: checkin-after
+:SUBJECT: EmacsConf ${year}: Check-in instructions
+:END:
+
+Hello, ${name}!
+
+Thank you so much for contributing a talk for EmacsConf ${year}! We're
+looking forward to collecting questions and forwarding them to you by
+e-mail after the conference. We'll also post the prerecording at the
+time that it gets streamed, so people will be able to access it at
+${url} once it has gone live.
+
+If it turns out that you can make it to the conference after all, feel
+free to drop us a line at #emacsconf-org and we'll let people know
+you're around. You can find the check-in process at
+https://emacsconf.org/${year}/speakers/ .
+
+Thank you again for being part of EmacsConf ${year}!
+
+Sacha
+*** CANCELLED Draft e-mail to send speakers who may need to do it live
+CLOSED: [2022-11-21 Mon 13:30]
+:PROPERTIES:
+:CUSTOM_ID: live-speakers
+:END:
* Communications
:PROPERTIES:
:CUSTOM_ID: comms
diff --git a/2022/schedule-details.md b/2022/schedule-details.md
index a3abc041..90b7b59e 100644
--- a/2022/schedule-details.md
+++ b/2022/schedule-details.md
@@ -3,54 +3,54 @@ Jump to: <a href="#date-2022-12-03">Sat Dec 3</a> - <a href="#date-2022-12-04">S
[[!inline pages="internal(2022/schedule-2022-12-03)" raw="yes"]]
<div class="schedule" data-start="2022-12-03T14:00:00+0000" data-end="2022-12-03T22:30:00+0000" data-tracks="General,Development">
-[[!template id=sched title="Saturday opening remarks" url="/2022/talks/sat-open" track="General" slug="sat-open" time="5" startutc="2022-12-03T14:00:00+0000" endutc="2022-12-03T14:05:00+0000" start="9:00" end="9:05"]]
-[[!template id=sched title="Emacs journalism (or everything's a nail if you hit it with Emacs)" url="/2022/talks/journalism" speakers="Alfred Zanini" q-and-a="live" track="General" slug="journalism" time="20" startutc="2022-12-03T14:05:00+0000" endutc="2022-12-03T14:25:00+0000" start="9:05" end="9:25"]]
-[[!template id=sched title="Back to school with Emacs" url="/2022/talks/school" speakers="Daniel Rösel" q-and-a="IRC" track="General" slug="school" time="10" startutc="2022-12-03T14:45:00+0000" endutc="2022-12-03T14:55:00+0000" start="9:45" end="9:55"]]
-[[!template id=sched title="Tree-sitter beyond syntax highlighting" url="/2022/talks/treesitter" speakers="Abin Simon" q-and-a="IRC" track="Development" slug="treesitter" time="15" startutc="2022-12-03T15:00:00+0000" endutc="2022-12-03T15:15:00+0000" start="10:00" end="10:15"]]
-[[!template id=sched title="How to incorporate handwritten notes into Emacs Orgmode" url="/2022/talks/handwritten" speakers="Bala Ramadurai" q-and-a="live" track="General" slug="handwritten" time="10" startutc="2022-12-03T15:05:00+0000" endutc="2022-12-03T15:15:00+0000" start="10:05" end="10:15"]]
-[[!template id=sched title="lsp-bridge: complete asynchronous LSP client" url="/2022/talks/lspbridge" speakers="Andy Stewart, Matthew Zeng" q-and-a="IRC" track="Development" slug="lspbridge" time="20" startutc="2022-12-03T15:25:00+0000" endutc="2022-12-03T15:45:00+0000" start="10:25" end="10:45"]]
-[[!template id=sched title="Writing and organizing literature notes for scientific writing" url="/2022/talks/science" speakers="Vidianos Giannitsis" q-and-a="live" track="General" slug="science" time="20" startutc="2022-12-03T15:45:00+0000" endutc="2022-12-03T16:05:00+0000" start="10:45" end="11:05"]]
-[[!template id=sched title="asm-blox: a game based on WebAssembly that no one asked for" url="/2022/talks/asmblox" speakers="Zachary Romero" q-and-a="live" track="Development" slug="asmblox" time="20" startutc="2022-12-03T15:55:00+0000" endutc="2022-12-03T16:15:00+0000" start="10:55" end="11:15"]]
-[[!template id=sched title="The Emacs Buddy initiative" url="/2022/talks/buddy" speakers="Andrea" q-and-a="IRC" track="General" slug="buddy" time="10" startutc="2022-12-03T16:25:00+0000" endutc="2022-12-03T16:35:00+0000" start="11:25" end="11:35"]]
-[[!template id=sched title="Emacs should become a Wayland compositor" url="/2022/talks/wayland" speakers="Michael Bauer" q-and-a="live" track="Development" slug="wayland" time="10" startutc="2022-12-03T16:25:00+0000" endutc="2022-12-03T16:35:00+0000" start="11:25" end="11:35"]]
-[[!template id=sched title="Attending and organizing Emacs meetups" url="/2022/talks/meetups" speakers="Bhavin Gandhi" q-and-a="live" track="General" slug="meetups" time="20" startutc="2022-12-03T18:00:00+0000" endutc="2022-12-03T18:20:00+0000" start="1:00" end="1:20"]]
-[[!template id=sched title="Using SQLite as a data source: a framework and an example" url="/2022/talks/sqlite" speakers="Andrew Hyatt" q-and-a="live" track="Development" slug="sqlite" time="25" startutc="2022-12-03T18:00:00+0000" endutc="2022-12-03T18:25:00+0000" start="1:00" end="1:25"]]
-[[!template id=sched title="Linking personal info with Hyperbole implicit buttons" url="/2022/talks/buttons" speakers="Mats Lidell" q-and-a="live" track="General" slug="buttons" time="15" startutc="2022-12-03T18:40:00+0000" endutc="2022-12-03T18:55:00+0000" start="1:40" end="1:55"]]
-[[!template id=sched title="Revisiting the anatomy of Emacs mail user agents" url="/2022/talks/mail" speakers="Mohsen BANAN" q-and-a="live" track="Development" slug="mail" time="40" startutc="2022-12-03T18:50:00+0000" endutc="2022-12-03T19:30:00+0000" start="1:50" end="2:30"]]
-[[!template id=sched title="Real estate and Org table formulas" url="/2022/talks/realestate" speakers="Daniel Gopar" q-and-a="pad" track="General" slug="realestate" time="25" startutc="2022-12-03T19:15:00+0000" endutc="2022-12-03T19:40:00+0000" start="2:15" end="2:40"]]
-[[!template id=sched title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" url="/2022/talks/maint" speakers="Sid Kasivajhula" q-and-a="live" track="Development" slug="maint" time="20" startutc="2022-12-03T19:50:00+0000" endutc="2022-12-03T20:10:00+0000" start="2:50" end="3:10"]]
-[[!template id=sched title="Health data journaling and visualization with Org Mode and GNUplot" url="/2022/talks/health" speakers="David O'Toole" q-and-a="live" track="General" slug="health" time="25" startutc="2022-12-03T20:00:00+0000" endutc="2022-12-03T20:25:00+0000" start="3:00" end="3:25"]]
-[[!template id=sched title="Bidirectional links with eev" url="/2022/talks/eev" speakers="Eduardo Ochs" q-and-a="IRC" track="Development" slug="eev" time="5" startutc="2022-12-03T20:35:00+0000" endutc="2022-12-03T20:40:00+0000" start="3:35" end="3:40"]]
-[[!template id=sched title="Edit live Jupyter notebook cells with Emacs" url="/2022/talks/jupyter" speakers="Blaine Mooers" q-and-a="live" track="General" slug="jupyter" time="20" startutc="2022-12-03T20:45:00+0000" endutc="2022-12-03T21:05:00+0000" start="3:45" end="4:05"]]
-[[!template id=sched title="Short hyperlinks to Python docs" url="/2022/talks/python" speakers="Eduardo Ochs" q-and-a="IRC" track="Development" slug="python" time="5" startutc="2022-12-03T20:50:00+0000" endutc="2022-12-03T20:55:00+0000" start="3:50" end="3:55"]]
-[[!template id=sched title="Haskell code exploration with Emacs" url="/2022/talks/haskell" speakers="Yuchen Pei" q-and-a="live" track="Development" slug="haskell" time="30" startutc="2022-12-03T21:05:00+0000" endutc="2022-12-03T21:35:00+0000" start="4:05" end="4:35"]]
-[[!template id=sched title="Saturday closing remarks" url="/2022/talks/sat-close" track="General" slug="sat-close" time="5" startutc="2022-12-03T21:50:00+0000" endutc="2022-12-03T21:55:00+0000" start="4:50" end="4:55"]]</div>
+[[!template id=sched title="Saturday opening remarks" url="/2022/talks/sat-open" pad="https://pad.emacsconf.org/2022-sat-open" track="General" slug="sat-open" time="5" startutc="2022-12-03T14:00:00+0000" endutc="2022-12-03T14:05:00+0000" start="9:00" end="9:05"]]
+[[!template id=sched title="Emacs journalism (or everything's a nail if you hit it with Emacs)" url="/2022/talks/journalism" speakers="Alfred Zanini" q-and-a="live" pad="https://pad.emacsconf.org/2022-journalism" track="General" slug="journalism" time="20" startutc="2022-12-03T14:05:00+0000" endutc="2022-12-03T14:25:00+0000" start="9:05" end="9:25"]]
+[[!template id=sched title="Back to school with Emacs" url="/2022/talks/school" speakers="Daniel Rösel" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-school" track="General" slug="school" time="10" startutc="2022-12-03T14:45:00+0000" endutc="2022-12-03T14:55:00+0000" start="9:45" end="9:55"]]
+[[!template id=sched title="Tree-sitter beyond syntax highlighting" url="/2022/talks/treesitter" speakers="Abin Simon" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-treesitter" track="Development" slug="treesitter" time="15" startutc="2022-12-03T15:00:00+0000" endutc="2022-12-03T15:15:00+0000" start="10:00" end="10:15"]]
+[[!template id=sched title="How to incorporate handwritten notes into Emacs Orgmode" url="/2022/talks/handwritten" speakers="Bala Ramadurai" q-and-a="live" pad="https://pad.emacsconf.org/2022-handwritten" track="General" slug="handwritten" time="10" startutc="2022-12-03T15:05:00+0000" endutc="2022-12-03T15:15:00+0000" start="10:05" end="10:15"]]
+[[!template id=sched title="lsp-bridge: complete asynchronous LSP client" url="/2022/talks/lspbridge" speakers="Andy Stewart, Matthew Zeng" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-lspbridge" track="Development" slug="lspbridge" time="20" startutc="2022-12-03T15:25:00+0000" endutc="2022-12-03T15:45:00+0000" start="10:25" end="10:45"]]
+[[!template id=sched title="Writing and organizing literature notes for scientific writing" url="/2022/talks/science" speakers="Vidianos Giannitsis" q-and-a="live" pad="https://pad.emacsconf.org/2022-science" track="General" slug="science" time="20" startutc="2022-12-03T15:45:00+0000" endutc="2022-12-03T16:05:00+0000" start="10:45" end="11:05"]]
+[[!template id=sched title="asm-blox: a game based on WebAssembly that no one asked for" url="/2022/talks/asmblox" speakers="Zachary Romero" q-and-a="live" pad="https://pad.emacsconf.org/2022-asmblox" track="Development" slug="asmblox" time="20" startutc="2022-12-03T15:55:00+0000" endutc="2022-12-03T16:15:00+0000" start="10:55" end="11:15"]]
+[[!template id=sched title="The Emacs Buddy initiative" url="/2022/talks/buddy" speakers="Andrea" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-buddy" track="General" slug="buddy" time="10" startutc="2022-12-03T16:25:00+0000" endutc="2022-12-03T16:35:00+0000" start="11:25" end="11:35"]]
+[[!template id=sched title="Emacs should become a Wayland compositor" url="/2022/talks/wayland" speakers="Michael Bauer" q-and-a="live" pad="https://pad.emacsconf.org/2022-wayland" track="Development" slug="wayland" time="10" startutc="2022-12-03T16:25:00+0000" endutc="2022-12-03T16:35:00+0000" start="11:25" end="11:35"]]
+[[!template id=sched title="Attending and organizing Emacs meetups" url="/2022/talks/meetups" speakers="Bhavin Gandhi" q-and-a="live" pad="https://pad.emacsconf.org/2022-meetups" track="General" slug="meetups" time="20" startutc="2022-12-03T18:00:00+0000" endutc="2022-12-03T18:20:00+0000" start="1:00" end="1:20"]]
+[[!template id=sched title="Using SQLite as a data source: a framework and an example" url="/2022/talks/sqlite" speakers="Andrew Hyatt" q-and-a="live" pad="https://pad.emacsconf.org/2022-sqlite" track="Development" slug="sqlite" time="25" startutc="2022-12-03T18:00:00+0000" endutc="2022-12-03T18:25:00+0000" start="1:00" end="1:25"]]
+[[!template id=sched title="Linking personal info with Hyperbole implicit buttons" url="/2022/talks/buttons" speakers="Mats Lidell" q-and-a="live" pad="https://pad.emacsconf.org/2022-buttons" track="General" slug="buttons" time="15" startutc="2022-12-03T18:40:00+0000" endutc="2022-12-03T18:55:00+0000" start="1:40" end="1:55"]]
+[[!template id=sched title="Revisiting the anatomy of Emacs mail user agents" url="/2022/talks/mail" speakers="Mohsen BANAN" q-and-a="live" pad="https://pad.emacsconf.org/2022-mail" track="Development" slug="mail" time="40" startutc="2022-12-03T18:50:00+0000" endutc="2022-12-03T19:30:00+0000" start="1:50" end="2:30"]]
+[[!template id=sched title="Real estate and Org table formulas" url="/2022/talks/realestate" speakers="Daniel Gopar" q-and-a="pad" pad="https://pad.emacsconf.org/2022-realestate" track="General" slug="realestate" time="25" startutc="2022-12-03T19:15:00+0000" endutc="2022-12-03T19:40:00+0000" start="2:15" end="2:40"]]
+[[!template id=sched title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" url="/2022/talks/maint" speakers="Sid Kasivajhula" q-and-a="live" pad="https://pad.emacsconf.org/2022-maint" track="Development" slug="maint" time="20" startutc="2022-12-03T19:50:00+0000" endutc="2022-12-03T20:10:00+0000" start="2:50" end="3:10"]]
+[[!template id=sched title="Health data journaling and visualization with Org Mode and GNUplot" url="/2022/talks/health" speakers="David O'Toole" q-and-a="live" pad="https://pad.emacsconf.org/2022-health" track="General" slug="health" time="25" startutc="2022-12-03T20:00:00+0000" endutc="2022-12-03T20:25:00+0000" start="3:00" end="3:25"]]
+[[!template id=sched title="Bidirectional links with eev" url="/2022/talks/eev" speakers="Eduardo Ochs" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-eev" track="Development" slug="eev" time="5" startutc="2022-12-03T20:35:00+0000" endutc="2022-12-03T20:40:00+0000" start="3:35" end="3:40"]]
+[[!template id=sched title="Edit live Jupyter notebook cells with Emacs" url="/2022/talks/jupyter" speakers="Blaine Mooers" q-and-a="live" pad="https://pad.emacsconf.org/2022-jupyter" track="General" slug="jupyter" time="20" startutc="2022-12-03T20:45:00+0000" endutc="2022-12-03T21:05:00+0000" start="3:45" end="4:05"]]
+[[!template id=sched title="Short hyperlinks to Python docs" url="/2022/talks/python" speakers="Eduardo Ochs" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-python" track="Development" slug="python" time="5" startutc="2022-12-03T20:50:00+0000" endutc="2022-12-03T20:55:00+0000" start="3:50" end="3:55"]]
+[[!template id=sched title="Haskell code exploration with Emacs" url="/2022/talks/haskell" speakers="Yuchen Pei" q-and-a="live" pad="https://pad.emacsconf.org/2022-haskell" track="Development" slug="haskell" time="30" startutc="2022-12-03T21:05:00+0000" endutc="2022-12-03T21:35:00+0000" start="4:05" end="4:35"]]
+[[!template id=sched title="Saturday closing remarks" url="/2022/talks/sat-close" pad="https://pad.emacsconf.org/2022-sat-close" track="General" slug="sat-close" time="5" startutc="2022-12-03T21:50:00+0000" endutc="2022-12-03T21:55:00+0000" start="4:50" end="4:55"]]</div>
Jump to: <a href="#date-2022-12-03">Sat Dec 3</a> - <a href="#date-2022-12-04">Sun Dec 4</a><a name="date-2022-12-04"></a>
# Sunday Dec 4, 2022
[[!inline pages="internal(2022/schedule-2022-12-04)" raw="yes"]]
<div class="schedule" data-start="2022-12-04T14:00:00+0000" data-end="2022-12-04T22:30:00+0000" data-tracks="General,Development">
-[[!template id=sched title="Sunday opening remarks" url="/2022/talks/sun-open" track="General" slug="sun-open" time="5" startutc="2022-12-04T14:00:00+0000" endutc="2022-12-04T14:05:00+0000" start="9:00" end="9:05"]]
-[[!template id=sched title="Results of the 2022 Emacs Survey" url="/2022/talks/survey" speakers="Timothy" q-and-a="IRC" track="General" slug="survey" time="20" startutc="2022-12-04T14:05:00+0000" endutc="2022-12-04T14:25:00+0000" start="9:05" end="9:25"]]
-[[!template id=sched title="This Year in Org" url="/2022/talks/orgyear" speakers="Timothy" q-and-a="IRC" track="General" slug="orgyear" time="10" startutc="2022-12-04T14:35:00+0000" endutc="2022-12-04T14:45:00+0000" start="9:35" end="9:45"]]
-[[!template id=sched title="Build a Zettelkasten with the Hyperbole Rolodex" url="/2022/talks/rolodex" speakers="Ramin Honary" q-and-a="IRC" track="General" slug="rolodex" time="25" startutc="2022-12-04T14:55:00+0000" endutc="2022-12-04T15:20:00+0000" start="9:55" end="10:20"]]
-[[!template id=sched title="rde Emacs introduction" url="/2022/talks/rde" speakers="Andrew Tropin" q-and-a="live" track="Development" slug="rde" time="25" startutc="2022-12-04T15:00:00+0000" endutc="2022-12-04T15:25:00+0000" start="10:00" end="10:25"]]
-[[!template id=sched title="Linking headings with org-super-links (poor-man's Zettelkasten)" url="/2022/talks/orgsuperlinks" speakers="Karl Voit" q-and-a="live" track="General" slug="orgsuperlinks" time="10" startutc="2022-12-04T15:40:00+0000" endutc="2022-12-04T15:50:00+0000" start="10:40" end="10:50"]]
-[[!template id=sched title="justl: Driving recipes within Emacs" url="/2022/talks/justl" speakers="Sibi Prabakaran" q-and-a="IRC" track="Development" slug="justl" time="15" startutc="2022-12-04T15:50:00+0000" endutc="2022-12-04T16:05:00+0000" start="10:50" end="11:05"]]
-[[!template id=sched title="orgvm: a simple HTTP server for org" url="/2022/talks/orgvm" speakers="Corwin Brust" q-and-a="live" track="General" slug="orgvm" time="10" startutc="2022-12-04T16:10:00+0000" endutc="2022-12-04T16:20:00+0000" start="11:10" end="11:20"]]
-[[!template id=sched title="Message from RMS" url="/2022/talks/rms" speakers="Richard M. Stallman" q-and-a="moderated Mumble" track="Development" slug="rms" time="20" startutc="2022-12-04T16:15:00+0000" endutc="2022-12-04T16:35:00+0000" start="11:15" end="11:35"]]
-[[!template id=sched title="Powerful productivity with Hyperbole and Org Mode" url="/2022/talks/hyperorg" speakers="Robert Weiner" q-and-a="live" track="General" slug="hyperorg" time="30" startutc="2022-12-04T18:00:00+0000" endutc="2022-12-04T18:30:00+0000" start="1:00" end="1:30"]]
-[[!template id=sched title="Getting detached from Emacs" url="/2022/talks/detached" speakers="Niklas Eklund" q-and-a="live" track="Development" slug="detached" time="15" startutc="2022-12-04T18:00:00+0000" endutc="2022-12-04T18:15:00+0000" start="1:00" end="1:15"]]
-[[!template id=sched title="Top 10 reasons why you should be using Eshell" url="/2022/talks/eshell" speakers="Howard Abrams" q-and-a="live" track="Development" slug="eshell" time="15" startutc="2022-12-04T18:40:00+0000" endutc="2022-12-04T18:55:00+0000" start="1:40" end="1:55"]]
-[[!template id=sched title="Org workflows for developers" url="/2022/talks/workflows" speakers="George Mauer" q-and-a="live" track="General" slug="workflows" time="25" startutc="2022-12-04T18:50:00+0000" endutc="2022-12-04T19:15:00+0000" start="1:50" end="2:15"]]
-[[!template id=sched title="Emacs was async before async was cool" url="/2022/talks/async" speakers="Michael Herstine" q-and-a="live" track="Development" slug="async" time="20" startutc="2022-12-04T19:20:00+0000" endutc="2022-12-04T19:40:00+0000" start="2:20" end="2:40"]]
-[[!template id=sched title="GRAIL---A Generalized Representation and Aggregation of Information Layers" url="/2022/talks/grail" speakers="Sameer Pradhan" q-and-a="live" track="General" slug="grail" time="20" startutc="2022-12-04T19:35:00+0000" endutc="2022-12-04T19:55:00+0000" start="2:35" end="2:55"]]
-[[!template id=sched title="The Wheels on D-Bus" url="/2022/talks/dbus" speakers="Ian Eure" q-and-a="live" track="Development" slug="dbus" time="20" startutc="2022-12-04T20:15:00+0000" endutc="2022-12-04T20:35:00+0000" start="3:15" end="3:35"]]
-[[!template id=sched title="Putting Org Mode on the Indieweb" url="/2022/talks/indieweb" speakers="Michael Herstine" q-and-a="live" track="General" slug="indieweb" time="20" startutc="2022-12-04T20:25:00+0000" endutc="2022-12-04T20:45:00+0000" start="3:25" end="3:45"]]
-[[!template id=sched title="Pre-localizing Emacs" url="/2022/talks/localizing" speakers="Jean-Christophe Helary" q-and-a="live" track="Development" slug="localizing" time="10" startutc="2022-12-04T21:00:00+0000" endutc="2022-12-04T21:10:00+0000" start="4:00" end="4:10"]]
-[[!template id=sched title="Emacs development updates" url="/2022/talks/devel" speakers="John Wiegley" q-and-a="after the conference" track="General" slug="devel" time="10" startutc="2022-12-04T21:05:00+0000" endutc="2022-12-04T21:15:00+0000" start="4:05" end="4:15"]]
-[[!template id=sched title="Fanfare for the Common Emacs User" url="/2022/talks/fanfare" speakers="John Cummings" q-and-a="live" track="General" slug="fanfare" time="10" startutc="2022-12-04T21:25:00+0000" endutc="2022-12-04T21:35:00+0000" start="4:25" end="4:35"]]
-[[!template id=sched title="Sunday closing remarks" url="/2022/talks/sun-close" track="General" slug="sun-close" time="10" startutc="2022-12-04T21:50:00+0000" endutc="2022-12-04T22:00:00+0000" start="4:50" end="5:00"]]</div><div class="cancelled">Cancelled:<ul><li>The ship that builds itself: How we used Emacs to develop a workshop for communities - Noorah Alhasan, Joseph Corneli, Leo Vivier</li>
+[[!template id=sched title="Sunday opening remarks" url="/2022/talks/sun-open" pad="https://pad.emacsconf.org/2022-sun-open" track="General" slug="sun-open" time="5" startutc="2022-12-04T14:00:00+0000" endutc="2022-12-04T14:05:00+0000" start="9:00" end="9:05"]]
+[[!template id=sched title="Results of the 2022 Emacs Survey" url="/2022/talks/survey" speakers="Timothy" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-survey" track="General" slug="survey" time="20" startutc="2022-12-04T14:05:00+0000" endutc="2022-12-04T14:25:00+0000" start="9:05" end="9:25"]]
+[[!template id=sched title="This Year in Org" url="/2022/talks/orgyear" speakers="Timothy" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-orgyear" track="General" slug="orgyear" time="10" startutc="2022-12-04T14:35:00+0000" endutc="2022-12-04T14:45:00+0000" start="9:35" end="9:45"]]
+[[!template id=sched title="Build a Zettelkasten with the Hyperbole Rolodex" url="/2022/talks/rolodex" speakers="Ramin Honary" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-rolodex" track="General" slug="rolodex" time="25" startutc="2022-12-04T14:55:00+0000" endutc="2022-12-04T15:20:00+0000" start="9:55" end="10:20"]]
+[[!template id=sched title="rde Emacs introduction" url="/2022/talks/rde" speakers="Andrew Tropin" q-and-a="live" pad="https://pad.emacsconf.org/2022-rde" track="Development" slug="rde" time="25" startutc="2022-12-04T15:00:00+0000" endutc="2022-12-04T15:25:00+0000" start="10:00" end="10:25"]]
+[[!template id=sched title="Linking headings with org-super-links (poor-man's Zettelkasten)" url="/2022/talks/orgsuperlinks" speakers="Karl Voit" q-and-a="live" pad="https://pad.emacsconf.org/2022-orgsuperlinks" track="General" slug="orgsuperlinks" time="10" startutc="2022-12-04T15:40:00+0000" endutc="2022-12-04T15:50:00+0000" start="10:40" end="10:50"]]
+[[!template id=sched title="justl: Driving recipes within Emacs" url="/2022/talks/justl" speakers="Sibi Prabakaran" q-and-a="IRC" pad="https://pad.emacsconf.org/2022-justl" track="Development" slug="justl" time="15" startutc="2022-12-04T15:50:00+0000" endutc="2022-12-04T16:05:00+0000" start="10:50" end="11:05"]]
+[[!template id=sched title="orgvm: a simple HTTP server for org" url="/2022/talks/orgvm" speakers="Corwin Brust" q-and-a="live" pad="https://pad.emacsconf.org/2022-orgvm" track="General" slug="orgvm" time="10" startutc="2022-12-04T16:10:00+0000" endutc="2022-12-04T16:20:00+0000" start="11:10" end="11:20"]]
+[[!template id=sched title="Message from RMS" url="/2022/talks/rms" speakers="Richard M. Stallman" q-and-a="moderated Mumble" pad="https://pad.emacsconf.org/2022-rms" track="Development" slug="rms" time="20" startutc="2022-12-04T16:15:00+0000" endutc="2022-12-04T16:35:00+0000" start="11:15" end="11:35"]]
+[[!template id=sched title="Powerful productivity with Hyperbole and Org Mode" url="/2022/talks/hyperorg" speakers="Robert Weiner" q-and-a="live" pad="https://pad.emacsconf.org/2022-hyperorg" track="General" slug="hyperorg" time="30" startutc="2022-12-04T18:00:00+0000" endutc="2022-12-04T18:30:00+0000" start="1:00" end="1:30"]]
+[[!template id=sched title="Getting detached from Emacs" url="/2022/talks/detached" speakers="Niklas Eklund" q-and-a="live" pad="https://pad.emacsconf.org/2022-detached" track="Development" slug="detached" time="15" startutc="2022-12-04T18:00:00+0000" endutc="2022-12-04T18:15:00+0000" start="1:00" end="1:15"]]
+[[!template id=sched title="Top 10 reasons why you should be using Eshell" url="/2022/talks/eshell" speakers="Howard Abrams" q-and-a="live" pad="https://pad.emacsconf.org/2022-eshell" track="Development" slug="eshell" time="15" startutc="2022-12-04T18:40:00+0000" endutc="2022-12-04T18:55:00+0000" start="1:40" end="1:55"]]
+[[!template id=sched title="Org workflows for developers" url="/2022/talks/workflows" speakers="George Mauer" q-and-a="live" pad="https://pad.emacsconf.org/2022-workflows" track="General" slug="workflows" time="25" startutc="2022-12-04T18:50:00+0000" endutc="2022-12-04T19:15:00+0000" start="1:50" end="2:15"]]
+[[!template id=sched title="Emacs was async before async was cool" url="/2022/talks/async" speakers="Michael Herstine" q-and-a="live" pad="https://pad.emacsconf.org/2022-async" track="Development" slug="async" time="20" startutc="2022-12-04T19:20:00+0000" endutc="2022-12-04T19:40:00+0000" start="2:20" end="2:40"]]
+[[!template id=sched title="GRAIL---A Generalized Representation and Aggregation of Information Layers" url="/2022/talks/grail" speakers="Sameer Pradhan" q-and-a="live" pad="https://pad.emacsconf.org/2022-grail" track="General" slug="grail" time="20" startutc="2022-12-04T19:35:00+0000" endutc="2022-12-04T19:55:00+0000" start="2:35" end="2:55"]]
+[[!template id=sched title="The Wheels on D-Bus" url="/2022/talks/dbus" speakers="Ian Eure" q-and-a="live" pad="https://pad.emacsconf.org/2022-dbus" track="Development" slug="dbus" time="20" startutc="2022-12-04T20:15:00+0000" endutc="2022-12-04T20:35:00+0000" start="3:15" end="3:35"]]
+[[!template id=sched title="Putting Org Mode on the Indieweb" url="/2022/talks/indieweb" speakers="Michael Herstine" q-and-a="live" pad="https://pad.emacsconf.org/2022-indieweb" track="General" slug="indieweb" time="20" startutc="2022-12-04T20:25:00+0000" endutc="2022-12-04T20:45:00+0000" start="3:25" end="3:45"]]
+[[!template id=sched title="Pre-localizing Emacs" url="/2022/talks/localizing" speakers="Jean-Christophe Helary" q-and-a="live" pad="https://pad.emacsconf.org/2022-localizing" track="Development" slug="localizing" time="10" startutc="2022-12-04T21:00:00+0000" endutc="2022-12-04T21:10:00+0000" start="4:00" end="4:10"]]
+[[!template id=sched title="Emacs development updates" url="/2022/talks/devel" speakers="John Wiegley" q-and-a="after the conference" pad="https://pad.emacsconf.org/2022-devel" track="General" slug="devel" time="10" startutc="2022-12-04T21:05:00+0000" endutc="2022-12-04T21:15:00+0000" start="4:05" end="4:15"]]
+[[!template id=sched title="Fanfare for the Common Emacs User" url="/2022/talks/fanfare" speakers="John Cummings" q-and-a="live" pad="https://pad.emacsconf.org/2022-fanfare" track="General" slug="fanfare" time="10" startutc="2022-12-04T21:25:00+0000" endutc="2022-12-04T21:35:00+0000" start="4:25" end="4:35"]]
+[[!template id=sched title="Sunday closing remarks" url="/2022/talks/sun-close" pad="https://pad.emacsconf.org/2022-sun-close" track="General" slug="sun-close" time="10" startutc="2022-12-04T21:50:00+0000" endutc="2022-12-04T22:00:00+0000" start="4:50" end="5:00"]]</div><div class="cancelled">Cancelled:<ul><li>The ship that builds itself: How we used Emacs to develop a workshop for communities - Noorah Alhasan, Joseph Corneli, Leo Vivier</li>
<li>Elisp and the TRAMP: How to NOT write code you don't have to - Grant Shangreaux</li>
<li>Emacs News highlights - Sacha Chua</li></ul></div> \ No newline at end of file
diff --git a/templates/sched.md b/templates/sched.md
index 9aa892c7..27358deb 100644
--- a/templates/sched.md
+++ b/templates/sched.md
@@ -5,6 +5,7 @@
<TMPL_IF end> - <span class="sched-end"><TMPL_VAR end></span></TMPL_IF end>
</span></TMPL_IF start>
<TMPL_IF track> <span class="sched-track <TMPL_VAR track>"><TMPL_VAR track></span></TMPL_IF track>
+<TMPL_IF pad> <span class="sched-pad"><a href="<TMPL_VAR pad>"><TMPL_VAR pad></a></TMPL_IF pad>
<TMPL_IF q-and-a> <span class="sched-q-and-a <TMPL_VAR q-and-a>">Q&amp;A: <TMPL_VAR q-and-a>;</span> </TMPL_IF q-and-a>
<TMPL_IF slug> <span class="sched-slug">id:<TMPL_VAR slug></span></TMPL_IF slug>
</div>