From 5a7f580cd11680c9a6784adecee3977480b71d23 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 10 Jan 2021 01:14:30 -0500 Subject: Timezones and meeting --- 2020/meetings.org | 32 +++++++++++++++++++++++++++++--- 2020/organizers-notebook.md | 38 ++++++++++++++++++++++++++++++++++++++ 2020/organizers-notebook.org | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+), 3 deletions(-) diff --git a/2020/meetings.org b/2020/meetings.org index 7f312430..126ec877 100644 --- a/2020/meetings.org +++ b/2020/meetings.org @@ -39,6 +39,15 @@ - bandali - met with organizers of EmacsNYC. They were curious about BBB and Jitsi, streaming, IRC web client - met with gopar last night re: podcast + - will work on a blog post about the technical setup + - someone wanted to set up a meetup in Mexico, too, so maybe we can make an updated starting-a-meetup guide (https://harryrschwartz.com/2015/09/14/starting-an-emacs-meetup.html) + - how to find people and advertise + - reddit.com/r/emacs + - Emacs News + - https://www.emacswiki.org/emacs/Usergroups + - how to stream and record + - what it might be like if there are no presentations (don't worry! hang out, share cool stuff, figure things out together, flip through Emacs News) + - sharing afterwards - CRDT: see BBB chat if you want to try it - dto: - tutorial; (also, SystemCrafters just livestreamed an Emacs Lisp tutorial too) @@ -49,10 +58,27 @@ - BBB has breakout rooms, might be worth looking into if it scales up a lot; Jitsi can have multiple people sharing screens at the same time; - EmacsNYC said Jitsi is okay for the 20-30 people they've seen so far; EmacsBerlin said the same too (I think they self-host; want to see how they're doing it?). Sounds like it's much better now than it was last year - dto will figure it out and write things up =) - - bhavin192: Mailing list for meetups (some common prefix or something similar). - - bhavin192: Update to Code of Conduct (I was hoping to use the same text or page for Emacs APAC meetup) + - one-on-one tutorial was nice; finger memory for how to type some of these Lisp expressions + - it's better to have that interactivity, I think, since there are plenty of lecture-type resources on the Net + - one-on-one is fine, and then you can scale up (1-on-2, etc.) as you become more comfortable with it and see what can help you scale (ex: having them SSH into a shared server with emacsclients and then being able to quickly flip through their buffers so that you can peek over their shoulder or quickly show something?) - gopar: upcoming podcast recording re: EmacsConf experience - - + - figuring out name + - planning to have a little buffer + - Hey, do you want to blend that into the Emacs Lisp / Emacs tutorial/workshop idea? Whenever you don't have any content, you can teach people a little more + + - + - bhavin192: Mailing list for meetups (some common prefix or something similar). + - *let's remember to discuss this and the next point* =) + - bhavin192: Update to Code of Conduct (I was hoping to use the same text or page for Emacs APAC meetup) + - zaeph: figuring out collaborating via Org Mode + - per-project pages make sense if you think about it from the web publishing point of view + - bandali: can be a different wiki if you want + - zaeph is a little intimidated by the idea of working with the garage door open + - there is already a private organizer wiki, so we can use that to incubate things if you want to collaboratively work on notes and stuff + - also totally okay to work on things individually and not collectively if you want, and we don't have to figure out workflows that work for everyone or a name that covers everything; sounding official increases expectations and may cause problems + - + - Next: + * January 2, 2020 meeting :PROPERTIES: :CUSTOM_ID: january-2-2020-meeting diff --git a/2020/organizers-notebook.md b/2020/organizers-notebook.md index 5ccc5d0b..dfb9b719 100644 --- a/2020/organizers-notebook.md +++ b/2020/organizers-notebook.md @@ -867,6 +867,44 @@ and run like this: `fix.py # Other useful tidbits +## Translating timezones + + (setq my/timezones '("America/Toronto" "America/Los_Angeles" "UTC" "Europe/Berlin" "Asia/Kolkata" "Asia/Shanghai" "Asia/Singapore")) + (defun my/summarize-times (time timezones) + (let (prev-day) + (mapconcat + (lambda (tz) + (let ((cur-day (format-time-string "%a %b %-e" time tz)) + (cur-time (format-time-string "%H%MH %Z" time tz))) + (if (equal prev-day cur-day) + cur-time + (setq prev-day cur-day) + (concat cur-day " " cur-time)))) + (sort timezones (lambda (a b) (< (car (current-time-zone nil a)) (car (current-time-zone nil b))))) + " / "))) + (defun my/org-summarize-event-in-timezones () + (interactive) + (save-window-excursion + (save-excursion + (when (derived-mode-p 'org-agenda-mode) (org-agenda-goto)) + (when (re-search-forward org-element--timestamp-regexp nil (save-excursion (org-end-of-subtree) (point))) + (goto-char (match-beginning 0)) + (let* ((times (org-element-timestamp-parser)) + (start-time (org-timestamp-to-time (org-timestamp-split-range times))) + (msg (format "%s - %s - %s" + (org-get-heading t t t t) + (my/summarize-times start-time my/timezones) + ;; (cond + ;; ((time-less-p (org-timestamp-to-time (org-timestamp-split-range times t)) (current-time)) + ;; "(past)") + ;; ((time-less-p (current-time) start-time) + ;; (concat "in " (format-seconds "%D %H %M%Z" (time-subtract start-time (current-time))))) + ;; (t "(ongoing)")) + (org-entry-get (point) "LOCATION")))) + (message "%s" msg) + (kill-new msg)))))) + + ## Restarting ikiwiki manually This is needed when you change the template or if the ikiwiki process gets stuck on something. diff --git a/2020/organizers-notebook.org b/2020/organizers-notebook.org index 9a6d42f2..fcb4bbb0 100644 --- a/2020/organizers-notebook.org +++ b/2020/organizers-notebook.org @@ -863,6 +863,44 @@ If TALK is not specified, do it in the current buffer." #+end_src * Other useful tidbits +** Translating timezones + +#+begin_src emacs-lisp + (setq my/timezones '("America/Toronto" "America/Los_Angeles" "UTC" "Europe/Berlin" "Asia/Kolkata" "Asia/Shanghai" "Asia/Singapore")) + (defun my/summarize-times (time timezones) + (let (prev-day) + (mapconcat + (lambda (tz) + (let ((cur-day (format-time-string "%a %b %-e" time tz)) + (cur-time (format-time-string "%H%MH %Z" time tz))) + (if (equal prev-day cur-day) + cur-time + (setq prev-day cur-day) + (concat cur-day " " cur-time)))) + (sort timezones (lambda (a b) (< (car (current-time-zone nil a)) (car (current-time-zone nil b))))) + " / "))) + (defun my/org-summarize-event-in-timezones () + (interactive) + (save-window-excursion + (save-excursion + (when (derived-mode-p 'org-agenda-mode) (org-agenda-goto)) + (when (re-search-forward org-element--timestamp-regexp nil (save-excursion (org-end-of-subtree) (point))) + (goto-char (match-beginning 0)) + (let* ((times (org-element-timestamp-parser)) + (start-time (org-timestamp-to-time (org-timestamp-split-range times))) + (msg (format "%s - %s - %s" + (org-get-heading t t t t) + (my/summarize-times start-time my/timezones) + ;; (cond + ;; ((time-less-p (org-timestamp-to-time (org-timestamp-split-range times t)) (current-time)) + ;; "(past)") + ;; ((time-less-p (current-time) start-time) + ;; (concat "in " (format-seconds "%D %H %M%Z" (time-subtract start-time (current-time))))) + ;; (t "(ongoing)")) + (org-entry-get (point) "LOCATION")))) + (message "%s" msg) + (kill-new msg)))))) +#+end_src ** Restarting ikiwiki manually -- cgit v1.2.3