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.md | 321 +++++++++++++++++++++++++--------- 2022/organizers-notebook/index.org | 136 +++++++++++--- 2022/organizers-notebook/schedule.svg | 2 +- 3 files changed, 355 insertions(+), 104 deletions(-) diff --git a/2022/organizers-notebook.md b/2022/organizers-notebook.md index 99e9a19e..4f6274db 100644 --- a/2022/organizers-notebook.md +++ b/2022/organizers-notebook.md @@ -6,14 +6,14 @@ This file is automatically exported from [2022/organizers-notebook/index.org](.. # Table of Contents -1. [Current tasks / status](#current) -2. [Things to figure out / decisions to make](#decisions) -3. [Roles needed](#roles) -4. [Other tasks and processes](#other) -5. [Task archive](#archive):ARCHIVE: -6. [Communications](#comms) -7. [Supporting code](#code) -8. [Lessons learned](#lessons) +- [Current tasks / status](#current) +- [Things to figure out / decisions to make](#decisions) +- [Roles needed](#roles) +- [Other tasks and processes](#other) +- [Task archive](#archive):ARCHIVE: +- [Communications](#comms) +- [Supporting code](#code) +- [Lessons learned](#lessons) @@ -101,9 +101,9 @@ Planned dates and phases: Current phase: No prerecs to process yet, so it's a good time to focus on infrastructure -1. [Time-sensitive](#time-sensitive) -2. [Projects and other long-running tasks](#projects) -3. [Projects to bear in mind but which are not actual](#maybe-projects) +- [Time-sensitive](#time-sensitive) +- [Projects and other long-running tasks](#projects) +- [Projects to bear in mind but which are not actual](#maybe-projects) [Overall prioritization of effort](#overall) @@ -114,11 +114,12 @@ on infrastructure Ordered chronologically (and therefore by importance). -1. [Volunteer communications: E-mail update for Oct 9, 2022](#volunteer-2022-10-09):email:volunteers: -2. [Remind people about confirming e-mail communications](#confirm-email):sachac:email:speakers: -3. [Send people schedule information and doublecheck their availability/Q&A preference](#check-sched):sachac:email:speakers: -4. [Send program-published email for emacsconf-discuss](#announce-program):needsowner:timesensitive:email: -5. [Prepare email for nudging speakers to send prerec, and inform on upload workflow](#mail-upload):timesensitive:needsowner: +- [Volunteer communications: E-mail update for Oct 9, 2022](#volunteer-2022-10-09):email:volunteers: +- [Remind people about confirming e-mail communications](#confirm-email):sachac:email:speakers: +- [Plan communication rhythm](#orgd828032) +- [Send people schedule information and doublecheck their availability/Q&A preference](#check-sched):sachac:email:speakers: +- [Send program-published email for emacsconf-discuss](#announce-program):needsowner:timesensitive:email: +- [Prepare email for nudging speakers to send prerec, and inform on upload workflow](#mail-upload):timesensitive:needsowner: @@ -151,15 +152,192 @@ 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: +### DONE Remind people about confirming e-mail communications :sachac:email:speakers: Look for the TO\_CONFIRM status in conf.org, probably include in schedule e-mail + + +### TODO Plan communication rhythm + + + + +++ ++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 SpeakersVolunteers
[2022-09-30 Fri]acceptance, reply to confirmoverall priorities
[2022-10-09 Sun]schedule, reply if not okayinfra update
[2022-10-16 Sun] shifts
[2022-10-23 Sun]file upload instructionscaption training?
[2022-10-30 Sun]  
[2022-11-06 Sun]prerec confirmation/reminder, caption progresscaption 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: + (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 ")))))) + + +#### Template + +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 . 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 + @@ -199,24 +377,24 @@ Blocked by [Figure out web-based file upload](#upload) ## Projects and other long-running tasks -1. [Figure out web-based file upload](#upload):needsowner:zaeph:bandali: -2. [Coordinate and help volunteers](#coordinate-volunteers):sachac: -3. [Prepare for prerecs](#prepare-prerec-process):zaeph: -4. [Delete all the EmacsConf BBB rooms from last year](#bbb-cleanup):chore:bbb: -5. [Plan Etherpad use and hosting](#etherpad):sachac: -6. [Update IRC instructions because of multiple tracks](#irc) -7. [Investigate streaming options, maybe OBS in the cloud](#streaming):corwin:zaeph: -8. [Work on the OBS scenes](#obs-scenes):zaeph:corwin: -9. [Make intro and exit videos](#intro) -10. [Move scheduling and publishing code to Emacs on a VPS so that other people can help out](#publishing-sched):sachac: -11. [Add nice-to-have stuff to prepare.md](#extra-prepare):zaeph: -12. [Find volunteers for tech-checks](#tech-checks):zaeph: -13. [Update viewing instructions and watch pages](#write-viewing):zaeph: -14. [Make talk pages easy to update when the talk is live](#publish-live):sachac: -15. [Set up talks on Toobnix and YouTube](#video-platforms):sachac: -16. [Add category tags and possibly links between talks across 2022 and all previous years](#link-pages):needsowner:wiki: -17. [Figure out why ikiwiki runs into complex regular expression issues?](#org110cc76):infra:wiki: -18. [Ask speakers for bios or support nudges to include on their talk pages](#org58a15b2) +- [Figure out web-based file upload](#upload):needsowner:zaeph:bandali: +- [Coordinate and help volunteers](#coordinate-volunteers):sachac: +- [Prepare for prerecs](#prepare-prerec-process):zaeph: +- [Delete all the EmacsConf BBB rooms from last year](#bbb-cleanup):chore:bbb: +- [Plan Etherpad use and hosting](#etherpad):sachac: +- [Update IRC instructions because of multiple tracks](#irc) +- [Investigate streaming options, maybe OBS in the cloud](#streaming):corwin:zaeph: +- [Work on the OBS scenes](#obs-scenes):zaeph:corwin: +- [Make intro and exit videos](#intro) +- [Move scheduling and publishing code to Emacs on a VPS so that other people can help out](#publishing-sched):sachac: +- [Add nice-to-have stuff to prepare.md](#extra-prepare):zaeph: +- [Find volunteers for tech-checks](#tech-checks):zaeph: +- [Update viewing instructions and watch pages](#write-viewing):zaeph: +- [Make talk pages easy to update when the talk is live](#publish-live):sachac: +- [Set up talks on Toobnix and YouTube](#video-platforms):sachac: +- [Add category tags and possibly links between talks across 2022 and all previous years](#link-pages):needsowner:wiki: +- [Figure out why ikiwiki runs into complex regular expression issues?](#org8ab2dd1):infra:wiki: +- [Ask speakers for bios or support nudges to include on their talk pages](#org8947d3c) Ordered by importance. @@ -278,7 +456,7 @@ Considerations: - Figure out what information volunteers need in order to feel comfortable signing up for tasks. ex: -- Encourage people to sign up for [3.3.1](#shifts) +- Encourage people to sign up for [Shifts](#shifts) @@ -384,7 +562,7 @@ See break commercials -### Move scheduling and publishing code to Emacs on a VPS so that other people can help out :sachac: +### DONE Move scheduling and publishing code to Emacs on a VPS so that other people can help out :sachac: Ideal: @@ -398,9 +576,11 @@ Where: Nice if there's an Ansible playbook sachac's notes: - + - probably good to set it up on front +It's now on front. + @@ -476,12 +656,12 @@ Also add to watch page You can make a new heading called `# Related talks` - + ### TODO Figure out why ikiwiki runs into complex regular expression issues? :infra:wiki: - + ### TODO Ask speakers for bios or support nudges to include on their talk pages @@ -507,16 +687,16 @@ Note on how DebConf handled incidents: # Things to figure out / decisions to make -1. [How fancy do we want to get this year? (overall prioritization)](#overall) -2. [How do we want to make the full schedule more manageable?](#sched-decision) -3. [How much do we want to enrich the wiki with JS?](#wiki-design) -4. [What ideas do we want to borrow from other conferences?](#other-confs) -5. [Do we want to make the ikiwiki web-editable?](#cgi) -6. [How do we want to make better use of Etherpad?](#pad-decision) -7. [Can we nudge people to ask IRC questions in a way that will make it easier for us to follow them?](#irc-markers) -8. [How many BBB rooms do we want to set up?](#bbb-rooms) -9. [Do we want people to advertise any openings with their companies or any work that they're looking for?](#advertising) -10. [Decision archive](#decision-archive) +- [How fancy do we want to get this year? (overall prioritization)](#overall) +- [How do we want to make the full schedule more manageable?](#sched-decision) +- [How much do we want to enrich the wiki with JS?](#wiki-design) +- [What ideas do we want to borrow from other conferences?](#other-confs) +- [Do we want to make the ikiwiki web-editable?](#cgi) +- [How do we want to make better use of Etherpad?](#pad-decision) +- [Can we nudge people to ask IRC questions in a way that will make it easier for us to follow them?](#irc-markers) +- [How many BBB rooms do we want to set up?](#bbb-rooms) +- [Do we want people to advertise any openings with their companies or any work that they're looking for?](#advertising) +- [Decision archive](#decision-archive) @@ -1191,16 +1371,16 @@ Interested in a shift? Please e-mail and # Other tasks and processes -1. [Giving conf.org access to a new volunteer or fake user](#org15be4bc) -2. [As prerecorded talks come in](#prerec-process) -3. [When a talk is captioned](#when-captioned) -4. [Other tasks before the conference](#before) -5. [During the conference](#during-conference) -6. [After the conference](#after-conference) -7. [In case of](#exceptions) +- [Giving conf.org access to a new volunteer or fake user](#org7f2fc7c) +- [As prerecorded talks come in](#prerec-process) +- [When a talk is captioned](#when-captioned) +- [Other tasks before the conference](#before) +- [During the conference](#during-conference) +- [After the conference](#after-conference) +- [In case of](#exceptions) - + ## Giving conf.org access to a new volunteer or fake user @@ -1728,7 +1908,7 @@ Probably focus on grabbing the audio first and seeing what's worth keeping Make a table of the form - +
@@ -2031,17 +2211,10 @@ Objectives for this e-mail: - Get them to reply - Ask for public contact information or any changes to the wiki page + (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)) @@ -2096,17 +2269,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/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