From 80ce7daccb7b1a8187860b2da188ab04ed4ad834 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sat, 8 Oct 2022 21:56:42 -0400 Subject: Add check-sched e-mail template --- 2022/organizers-notebook/index.org | 136 ++++++++++++++++++++++++++++------ 2022/organizers-notebook/schedule.svg | 2 +- 2 files changed, 113 insertions(+), 25 deletions(-) (limited to '2022/organizers-notebook') diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org index 70bd7252..bd1afa74 100644 --- a/2022/organizers-notebook/index.org +++ b/2022/organizers-notebook/index.org @@ -104,21 +104,126 @@ Help wanted / upcoming tasks: You're receiving this e-mail because you're on the emacsconf-org mailing list. -*** TODO Remind people about confirming e-mail communications :sachac:email:speakers: -SCHEDULED: <2022-10-08 Sat> +*** DONE Remind people about confirming e-mail communications :sachac:email:speakers: +CLOSED: [2022-10-08 Sat 18:55] SCHEDULED: <2022-10-08 Sat> :PROPERTIES: :CUSTOM_ID: confirm-email :END: Look for the TO_CONFIRM status in conf.org, probably include in schedule e-mail - - +*** TODO Plan communication rhythm + +| | Speakers | Volunteers | +| [2022-09-30] | acceptance, reply to confirm | overall priorities | +| [2022-10-09 Sun] | schedule, reply if not okay | infra update | +| [2022-10-16 Sun] | | shifts | +| [2022-10-23 Sun] | file upload instructions | caption training? | +| [2022-10-30 Sun] | | | +| [2022-11-06 Sun] | prerec confirmation/reminder, caption progress | caption kickoff | +| [2022-11-13 Sun] | tech check | | +| [2022-11-20 Sun] | checkin instructions | | +| [2022-11-27 Sun] | last weekend before EmacsConf | | *** TODO Send people schedule information and doublecheck their availability/Q&A preference :sachac:email:speakers: SCHEDULED: <2022-10-08 Sat> :PROPERTIES: :CUSTOM_ID: check-sched :END: +#+begin_src emacs-lisp +(defun emacsconf-mail-schedule (group &optional template) + "Send draft schedule. +GROUP is (email . (talk talk))" + (interactive (list (emacsconf-mail-complete-email-group))) + (require 'emacsconf-ical) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "check-sched")) + group + (list + :titles + (mapconcat (lambda (o) (format "%s %s" + (plist-get o :title) + (format-time-string + "%b %-e %I:%M %Z" + (plist-get o :start-time) + emacsconf-timezone))) + (cdr group) " and ") + :speakers-short + (plist-get (cadr group) :speakers-short) + :plural + (if (= (length (cdr group)) 1) "" "s") + :email + (plist-get (cadr group) :email) + :year + (or (plist-get (cadr group) :year) emacsconf-year) + :schedule + (mapconcat + (lambda (o) (format "\"%s\" (%s) - %s track\n%s" + (plist-get o :title) + (plist-get o :slug) + (plist-get o :track) + (string-join + (let ((emacsconf-timezones + (if (plist-get o :timezone) + (seq-uniq (list emacsconf-timezone (plist-get o :timezone) "UTC")) + emacsconf-timezones))) + (emacsconf-timezone-strings o)) + "\n"))) + (cdr group) + "\n----------------------------------------------------------------\n") + :timezone-note + (if (plist-get (cadr group) :timezone) + (format "I've included a conversion to the %s timezone. Let me know if you'd like me to use a different timezone in future e-mails." + (plist-get (cadr group) :timezone)) + "I can translate times into your local timezone. Let me know what timezone you'd like me to use.") + :availability-note + (if (seq-find (lambda (o) (string-match "yes" (or (plist-get o :availability) ""))) (cdr group)) + (format "I think you've indicated that you're available during the conference.") + (format "I think it respects your indicated availability, which we've noted as %s. " + (string-join + (seq-uniq + (mapcar + (lambda (o) (format "\"%s\"" (plist-get o :availability))) + (cdr group))) + " and ")))))) +#+end_src + +**** Template +:PROPERTIES: +:EMAIL_ID: check-sched +:SUBJECT: EmacsConf draft schedule: ${titles} +:REPLY_TO: emacsconf-submit@gnu.org, ${email} +:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email} +:FUNCTION: emacsconf-mail-schedule +:END: +Hi, ${speakers-short}! + +Here's the tentative schedule for when your EmacsConf talk${plural} +will be streamed. Your talk${plural} will be streamed once, but I've +included a few timezone conversions for convenience. + +---------------------------------------------------------------- +${schedule} +---------------------------------------------------------------- + +You'll also have time for Q&A afterwards, which can be as short or as +long as you like. We'll send you more information about how the Q&A +will work as the conference gets closer. + +If you'd like to see the other talks for context, please check out the +draft schedule at https://emacsconf.org/${year}/draft-schedule/ . The +times may move around a bit as we update the schedule, so I'll check +in with you if things change a lot. + +${availability-note} Please let us know if the times don't work for +you or if you think your talk would go better next to a different +talk. We're aiming to publish the schedule by *Oct 15*, so we'd love +to hear from you by then if we need to tweak things. We can +shuffle things around even after that date if something comes up. +${timezone-note} Please keep emacsconf-submit@gnu.org in To or Cc when +replying. Thanks!${wrap} + +Sacha + *** TODO Send program-published email for emacsconf-discuss :needsowner:timesensitive:email: DEADLINE: <2022-10-14 Fri> SCHEDULED: <2022-10-11 Tue> :PROPERTIES: @@ -1810,17 +1915,10 @@ Objectives for this e-mail: - Ask for public contact information or any changes to the wiki page #+begin_src emacs-lisp + (defun emacsconf-draft-acceptance-for-email-group (group &optional template) "GROUP is (email . (talk talk))." - (interactive - (list - (save-window-excursion - (let* ((emacsconf-talk-info-functions (append emacsconf-talk-info-functions '(emacsconf-get-talk-comments-from-subtree))) - (info (emacsconf-filter-talks (emacsconf-get-talk-info))) - (grouped (seq-group-by (lambda (o) (plist-get o :email)) info)) - (slug (emacsconf-get-slug-from-string (emacsconf-complete-talk))) - (email (plist-get (seq-find (lambda (o) (string= (plist-get o :slug) slug)) info) :email))) - (assoc email grouped))))) + (interactive (list (emacsconf-mail-complete-email-group))) (let* ((template (or template (emacsconf-mail-merge-get-template "acceptance"))) (talks (cdr group)) (first (car talks)) @@ -1875,17 +1973,7 @@ Objectives for this e-mail: :prerec-target (format-time-string "%b %-e" prerec-target))) (plist-get o :acceptance-comment)) 72))) talks "\n---------------------------------------------------------------------\n")))) - (compose-mail - (car group) - (emacsconf-replace-plist-in-string attrs (plist-get template :subject)) - `(("Reply-To" . ,(emacsconf-replace-plist-in-string attrs (plist-get template :reply-to))) - ("Mail-Followup-To" . ,(emacsconf-replace-plist-in-string attrs (plist-get template :mail-followup-to))) - ("Cc" . ,(plist-get template :cc)))) - (message-sort-headers) - (message-goto-body) - (save-excursion (insert (emacsconf-replace-plist-in-string attrs (plist-get template :body))) - (goto-char (point-min)) - (emacsconf-mail-merge-wrap)))) + (emacsconf-mail-prepare template group attrs))) (defun emacsconf-draft-all-acceptances () (interactive) diff --git a/2022/organizers-notebook/schedule.svg b/2022/organizers-notebook/schedule.svg index a5c4b3c5..940f4922 100644 --- a/2022/organizers-notebook/schedule.svg +++ b/2022/organizers-notebook/schedule.svg @@ -1 +1 @@ - Saturday GEN Saturday, December 3 GEN Saturday, December 3 Saturday opening remarks Saturday opening remarks Emacs journalism (or everything's a nail if you hit it with Emacs) journalism Back to school with Emacs school How to incorporate handwritten notes into Emacs Orgmode handwritten BREAK BREAK Writing and organizing literature notes for scientific writing science LUNCH LUNCH Attending and organizing Emacs meetups meetups The Emacs Buddy initiative buddy The ship that builds itself: How we used Emacs to develop a workshop for communities community BREAK BREAK Real estate and Org table formulas realestate Health data journaling and visualization with Org Mode and GNUplot health Edit live Jupyter notebook cells with Emacs jupyter orgvm: a simple HTTP server for org orgvm Saturday closing remarks Saturday closing remarks GEN Sunday, December 4 GEN Sunday, December 4 Sunday opening remarks Sunday opening remarks Results of the 2022 Emacs Survey survey This Year in Org orgyear Build a Zettelkasten with the Hyperbole Rolodex rolodex BREAK BREAK Linking headings with org-super-links (poor-man's Zettelkasten) orgsuperlinks Linking personal info with Hyperbole implicit buttons buttons LUNCH LUNCH Powerful productivity with Hyperbole and Org Mode hyperorg Org workflows for developers workflows GRAIL---A Generalized Representation and Aggregation of Information Layers grail BREAK BREAK Putting Org Mode on the Indieweb indieweb Fanfare for the Common Emacs User fanfare Sunday closing remarks Sunday closing remarks DEV Saturday, December 3 DEV Saturday, December 3 DEV Sunday, December 4 DEV Sunday, December 4 Pre-localizing Emacs localizing Tree-sitter beyond syntax highlighting treesitter lsp-bridge: complete asynchronous LSP client lspbridge LUNCH LUNCH Using SQLite as a data source: a framework and an example sqlite Revisiting the anatomy of Emacs mail user agents mail BREAK BREAK Maintaining the Maintainers: Attribution as an Economic Model for Open Source maint Bidirectional links with eev eev Short hyperlinks to Python docs python Haskell code exploration with Emacs haskell rde Emacs introduction rde justl: Driving recipes within Emacs justl Elisp and the TRAMP: How to NOT write code you don't have to tramp LUNCH LUNCH Getting detached from Emacs detached Top 10 reasons why you should be using Eshell eshell Emacs was async before async was cool async BREAK BREAK Emacs should become a Wayland compositor wayland asm-blox: a game based on WebAssembly that no one asked for asmblox The Wheels on D-Bus dbus 9 10 11 12 1 2 3 4 5 Sunday GEN Saturday, December 3 GEN Saturday, December 3 Saturday opening remarks Saturday opening remarks Emacs journalism (or everything's a nail if you hit it with Emacs) journalism Back to school with Emacs school How to incorporate handwritten notes into Emacs Orgmode handwritten BREAK BREAK Writing and organizing literature notes for scientific writing science LUNCH LUNCH Attending and organizing Emacs meetups meetups The Emacs Buddy initiative buddy The ship that builds itself: How we used Emacs to develop a workshop for communities community BREAK BREAK Real estate and Org table formulas realestate Health data journaling and visualization with Org Mode and GNUplot health Edit live Jupyter notebook cells with Emacs jupyter orgvm: a simple HTTP server for org orgvm Saturday closing remarks Saturday closing remarks GEN Sunday, December 4 GEN Sunday, December 4 Sunday opening remarks Sunday opening remarks Results of the 2022 Emacs Survey survey This Year in Org orgyear Build a Zettelkasten with the Hyperbole Rolodex rolodex BREAK BREAK Linking headings with org-super-links (poor-man's Zettelkasten) orgsuperlinks Linking personal info with Hyperbole implicit buttons buttons LUNCH LUNCH Powerful productivity with Hyperbole and Org Mode hyperorg Org workflows for developers workflows GRAIL---A Generalized Representation and Aggregation of Information Layers grail BREAK BREAK Putting Org Mode on the Indieweb indieweb Fanfare for the Common Emacs User fanfare Sunday closing remarks Sunday closing remarks DEV Saturday, December 3 DEV Saturday, December 3 DEV Sunday, December 4 DEV Sunday, December 4 Pre-localizing Emacs localizing Tree-sitter beyond syntax highlighting treesitter lsp-bridge: complete asynchronous LSP client lspbridge LUNCH LUNCH Using SQLite as a data source: a framework and an example sqlite Revisiting the anatomy of Emacs mail user agents mail BREAK BREAK Maintaining the Maintainers: Attribution as an Economic Model for Open Source maint Bidirectional links with eev eev Short hyperlinks to Python docs python Haskell code exploration with Emacs haskell rde Emacs introduction rde justl: Driving recipes within Emacs justl Elisp and the TRAMP: How to NOT write code you don't have to tramp LUNCH LUNCH Getting detached from Emacs detached Top 10 reasons why you should be using Eshell eshell Emacs was async before async was cool async BREAK BREAK Emacs should become a Wayland compositor wayland asm-blox: a game based on WebAssembly that no one asked for asmblox The Wheels on D-Bus dbus 9 10 11 12 1 2 3 4 5 \ No newline at end of file + Saturday GEN Saturday, December 3 GEN Saturday, December 3 Saturday opening remarks Saturday opening remarks Emacs journalism (or everything's a nail if you hit it with Emacs) journalism Back to school with Emacs school How to incorporate handwritten notes into Emacs Orgmode handwritten BREAK BREAK Writing and organizing literature notes for scientific writing science LUNCH LUNCH Attending and organizing Emacs meetups meetups The Emacs Buddy initiative buddy The ship that builds itself: How we used Emacs to develop a workshop for communities community BREAK BREAK Real estate and Org table formulas realestate Health data journaling and visualization with Org Mode and GNUplot health Edit live Jupyter notebook cells with Emacs jupyter orgvm: a simple HTTP server for org orgvm Saturday closing remarks Saturday closing remarks GEN Sunday, December 4 GEN Sunday, December 4 Sunday opening remarks Sunday opening remarks Results of the 2022 Emacs Survey survey This Year in Org orgyear Build a Zettelkasten with the Hyperbole Rolodex rolodex BREAK BREAK Linking headings with org-super-links (poor-man's Zettelkasten) orgsuperlinks Linking personal info with Hyperbole implicit buttons buttons LUNCH LUNCH Powerful productivity with Hyperbole and Org Mode hyperorg Org workflows for developers workflows GRAIL---A Generalized Representation and Aggregation of Information Layers grail BREAK BREAK Putting Org Mode on the Indieweb indieweb Fanfare for the Common Emacs User fanfare Sunday closing remarks Sunday closing remarks DEV Saturday, December 3 DEV Saturday, December 3 DEV Sunday, December 4 DEV Sunday, December 4 Pre-localizing Emacs localizing Tree-sitter beyond syntax highlighting treesitter lsp-bridge: complete asynchronous LSP client lspbridge LUNCH LUNCH Using SQLite as a data source: a framework and an example sqlite Revisiting the anatomy of Emacs mail user agents mail BREAK BREAK Maintaining the Maintainers: Attribution as an Economic Model for Open Source maint Bidirectional links with eev eev Short hyperlinks to Python docs python Haskell code exploration with Emacs haskell rde Emacs introduction rde Elisp and the TRAMP: How to NOT write code you don't have to tramp justl: Driving recipes within Emacs justl LUNCH LUNCH Getting detached from Emacs detached Top 10 reasons why you should be using Eshell eshell Emacs was async before async was cool async BREAK BREAK Emacs should become a Wayland compositor wayland asm-blox: a game based on WebAssembly that no one asked for asmblox The Wheels on D-Bus dbus 9 10 11 12 1 2 3 4 5 Sunday GEN Saturday, December 3 GEN Saturday, December 3 Saturday opening remarks Saturday opening remarks Emacs journalism (or everything's a nail if you hit it with Emacs) journalism Back to school with Emacs school How to incorporate handwritten notes into Emacs Orgmode handwritten BREAK BREAK Writing and organizing literature notes for scientific writing science LUNCH LUNCH Attending and organizing Emacs meetups meetups The Emacs Buddy initiative buddy The ship that builds itself: How we used Emacs to develop a workshop for communities community BREAK BREAK Real estate and Org table formulas realestate Health data journaling and visualization with Org Mode and GNUplot health Edit live Jupyter notebook cells with Emacs jupyter orgvm: a simple HTTP server for org orgvm Saturday closing remarks Saturday closing remarks GEN Sunday, December 4 GEN Sunday, December 4 Sunday opening remarks Sunday opening remarks Results of the 2022 Emacs Survey survey This Year in Org orgyear Build a Zettelkasten with the Hyperbole Rolodex rolodex BREAK BREAK Linking headings with org-super-links (poor-man's Zettelkasten) orgsuperlinks Linking personal info with Hyperbole implicit buttons buttons LUNCH LUNCH Powerful productivity with Hyperbole and Org Mode hyperorg Org workflows for developers workflows GRAIL---A Generalized Representation and Aggregation of Information Layers grail BREAK BREAK Putting Org Mode on the Indieweb indieweb Fanfare for the Common Emacs User fanfare Sunday closing remarks Sunday closing remarks DEV Saturday, December 3 DEV Saturday, December 3 DEV Sunday, December 4 DEV Sunday, December 4 Pre-localizing Emacs localizing Tree-sitter beyond syntax highlighting treesitter lsp-bridge: complete asynchronous LSP client lspbridge LUNCH LUNCH Using SQLite as a data source: a framework and an example sqlite Revisiting the anatomy of Emacs mail user agents mail BREAK BREAK Maintaining the Maintainers: Attribution as an Economic Model for Open Source maint Bidirectional links with eev eev Short hyperlinks to Python docs python Haskell code exploration with Emacs haskell rde Emacs introduction rde Elisp and the TRAMP: How to NOT write code you don't have to tramp justl: Driving recipes within Emacs justl LUNCH LUNCH Getting detached from Emacs detached Top 10 reasons why you should be using Eshell eshell Emacs was async before async was cool async BREAK BREAK Emacs should become a Wayland compositor wayland asm-blox: a game based on WebAssembly that no one asked for asmblox The Wheels on D-Bus dbus 9 10 11 12 1 2 3 4 5 \ No newline at end of file -- cgit v1.2.3