diff options
Diffstat (limited to '')
-rw-r--r-- | 2022/organizers-notebook.md | 133 | ||||
-rw-r--r-- | 2022/organizers-notebook/index.org | 156 | ||||
-rw-r--r-- | 2022/organizers-notebook/schedule.svg | 2 |
3 files changed, 216 insertions, 75 deletions
diff --git a/2022/organizers-notebook.md b/2022/organizers-notebook.md index beb6516a..4af5a3a1 100644 --- a/2022/organizers-notebook.md +++ b/2022/organizers-notebook.md @@ -27,8 +27,9 @@ Time-sensitive tasks: Other projects: +- [Record intro/outro for day-1 and day-2](#org4067ddb):zaeph: - [Prepare for prerecs](#prepare-prerec-process):zaeph: -- [Work on the OBS scenes](#obs-scenes):zaeph:corwin: +- [Work on the OBS scenes](#obs-scenes):zaeph:corwin:sachac: - [Make something to display between talks](#intro):akshay196: - [Create protocol for live Q&A](#live-protocol):zaeph: - [Find volunteers for tech-checks](#tech-checks):zaeph: @@ -50,6 +51,10 @@ Other projects: - [Coordinate and help volunteers](#coordinate-volunteers):sachac: - [Investigate streaming options, maybe OBS in the cloud](#streaming):sachac: +Schedule by status: (gray: waiting, light yellow: processing, yellow: to assign, light green: captioning, green: captioned and ready) - Updated by conf.org and the wiki repository + +![img](schedule.svg) + <a id="cadence"></a> @@ -358,7 +363,7 @@ interests you! <tr> <td class="org-left"><a href="#wiki-design">wiki</a></td> <td class="org-left">plain text, markdown</td> -<td class="org-left"><b>S: some JS and CSS enrichment</b></td> +<td class="org-left"><b>DONE S: some JS and CSS enrichment</b></td> <td class="org-left">more JS and CSS, embeds, videoplayer</td> </tr> @@ -366,7 +371,7 @@ interests you! <tr> <td class="org-left"><a href="#ansible">ansible</a></td> <td class="org-left">none</td> -<td class="org-left"><b>S: some automation</b></td> +<td class="org-left"><b>DONE S: some automation</b></td> <td class="org-left">comprehensive, can also work against containers</td> </tr> </tbody> @@ -442,8 +447,9 @@ chatter in the other lists cc’d in this message; thank you. # Projects and other long-running tasks +- [Record intro/outro for day-1 and day-2](#org4067ddb):zaeph: - [Prepare for prerecs](#prepare-prerec-process):zaeph: -- [Work on the OBS scenes](#obs-scenes):zaeph:corwin: +- [Work on the OBS scenes](#obs-scenes):zaeph:corwin:sachac: - [Make something to display between talks](#intro):akshay196: - [Create protocol for live Q&A](#live-protocol):zaeph: - [Find volunteers for tech-checks](#tech-checks):zaeph: @@ -468,6 +474,11 @@ chatter in the other lists cc’d in this message; thank you. Ordered by importance. +<a id="org4067ddb"></a> + +## TODO Record intro/outro for day-1 and day-2 :zaeph: + + <a id="prepare-prerec-process"></a> ## DONE Prepare for prerecs :zaeph: @@ -521,7 +532,7 @@ Make changes in [As prerecorded talks come in](#prerec-process) <a id="obs-scenes"></a> -## TODO Work on the OBS scenes :zaeph:corwin: +## INPROGRESS Work on the OBS scenes :zaeph:corwin:sachac: - [ ] corwin is out from Nov 11-20, and we should start working on them before then. @@ -784,7 +795,7 @@ Agenda: - Dev: rsync -avze ssh emacsconf-dev@res.emacsconf.org:~/.config/obs-studio/basic/profiles/ ~/.config/obs-studio/basic/profiles/ - Sacha will turn off the OBS recordings on res so that you can test streaming from your computer - - If you’re doing this independently, you can jump ahead to “Test connecting to the VNC” in order to stop the recording yourself + - If you’re doing this independently, you can jump ahead to &lsquo ;Test connecting to the VNC’ in order to stop the recording yourself - Verify with MPV: @@ -835,7 +846,7 @@ Agenda: cd /data/emacsconf/stream/2022 track-mpv filename.webm -11. Test Q&A. You can either wait for the video to finish or quit it with “q”. +11. Test Q&A. You can either wait for the video to finish or quit it with &lsquo ;q’. You can paste in the URLs or use `firefox /data/emacsconf/2022/index-$TRACK.html` @@ -868,13 +879,17 @@ You can then use - emacsconf-agenda-by-track - emacsconf-agenda -If things are going well, you can use C-c C-t on the agenda view to change a talk to PLAYING, CLOSED\_Q, or OPEN\_Q, and various things should appen in the background. +If things are going well, you can use C-c C-t on the agenda view to change a talk to PLAYING, CLOSED\_Q, or OPEN\_Q, and various things should happen in the background. If they don’t happen in the background, use emacsconf-add-org-after-todo-state-change-hook to add the todo state change hook, then try again. -Task shortcut: +Task state shortcuts for C-c C-t: - **m (mpv):** PLAYING - -stream-play-video, emacsconf-stream-set-talk-info, publish the files to the media directory - **q (Q&A):** CLOSED\_Q - **o (open):** update the BBB redirect URLs to let people into the room +- u (unstreamed) +- r (to archive) + +You can leave the emacsclient with `C-x 5 0` ### Checklist for later dry run @@ -1026,6 +1041,46 @@ Large and medium might do better on a system with a GPU. I’ll default to t ### DONE E-mail for bringing new captioning volunteers onboard + (defun emacsconf-mail-backstage-intro (volunteer &optional template) + (interactive (list (emacsconf-complete-volunteer))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "backstage-intro")) + (assoc-default "EMAIL" volunteer 'string=) + (list + :backstage "https://media.emacsconf.org/2022/backstage/" + :backstage-user "emacsconf" + :backstage-password emacsconf-backstage-password + :conf-name emacsconf-name + :year emacsconf-year + :name (assoc-default "NAME_SHORT" volunteer 'string=) + :email (assoc-default "EMAIL" volunteer 'string=)))) + + +#### Template + +Hi ${name}! + +Thank you for volunteering for ${conf-name} ${year}! + +We’ve set up ${backstage} as the backstage area where you can view the +videos and resources uploaded so far. You can access it with the +username "${backstage-user}&lsquo ; and the password ’${backstage-password}&lsquo ;. +Please keep the backstage password and other speakers” talk resources +secret. + +For some ideas on ways to help, you can check out +<https://emacsconf.org/2022/volunteer/> . You can also suggest other +things you might be interested in. + +To ask questions or chat with other volunteers, please e-mail the +mailing list at emacsconf-org@gnu.org or drop by #emacsconf on the +libera.chat IRC network. + +Sacha Chua + + +### DONE E-mail for bringing new captioning volunteers onboard + (defun emacsconf-mail-captioning-intro (volunteer &optional template) (interactive (list (emacsconf-complete-volunteer) (emacsconf-mail-merge-get-template "captioning-intro"))) @@ -1282,7 +1337,7 @@ see conf.org for the rest of the process <a id="coordinate-volunteers"></a> -## TODO Coordinate and help volunteers :sachac: +## INPROGRESS Coordinate and help volunteers :sachac: - <../volunteer> - Figure out what information volunteers need in order to feel @@ -1299,7 +1354,7 @@ see conf.org for the rest of the process <a id="streaming"></a> -## TODO Investigate streaming options, maybe OBS in the cloud :sachac: +## DONE Investigate streaming options, maybe OBS in the cloud :sachac: Current status @@ -1328,7 +1383,7 @@ Goals: 3. Start up the VNC server if it’s not already running - ssh emacsconf-$TRACK@res.emacsconf.org ~/bin/track-vnc + ssh emacsconf-$TRACK@res.emacsconf.org &lsquo ;~/bin/track-vnc’ 4. Forward your local ports @@ -1487,11 +1542,23 @@ echo ’{ &lsquo ;command’: [&lsquo ;loadfile’, &lsquo ;test2.we (let ((emacsconf-schedule-strategies '(emacsconf-schedule-test-buffer))) (emacsconf-stream-schedule-timers (emacsconf-schedule-prepare (emacsconf-schedule-inflate-sexp - `(("Test" :start ,(format-time-string "%Y-%m-%d %H:%M" - (time-add (current-time) (seconds-to-time 60)))) - (journalism :time "1") - (school :time "1") - (handwritten :time "1")))))) + `(("Test gen" :start ,(format-time-string "%Y-%m-%d %H:%M" + (time-add (current-time) (seconds-to-time 60)))) + (journalism :time "1") + (school :time "2") + (handwritten :time "1") + ("Test dev" :start ,(format-time-string "%Y-%m-%d %H:%M" + (time-add (current-time) (seconds-to-time 60)))) + (treesitter :time "2") + (lspbridge :time "1") + (asmblox :time "1")))))) + +the dev one worked, but the gen one gets +Couldn’t find local shell prompt for /bin/sh +Tramp: Opening connection **Async Shell Command** for emacsconf-gen@res.emacsconf.org using ssh…failed + +Maybe I need to stagger them, or maybe I need to use a shell command. +Changed to call ssh directly instead of using tramp. ### TODO Figure out how to work with the layout @@ -1595,13 +1662,6 @@ Note on how DebConf handled incidents: ## How do we want to make the full schedule more manageable? -updated by conf.org -![img](schedule.svg) - -- Green: no availability constraints -- Red: invalid because of availability constraint -- Dashed: IRC/pad Q&A, not live - Host role: - Give the speaker a heads-up before their Q&A session begins @@ -3088,7 +3148,7 @@ Probably focus on grabbing the audio first and seeing what’s worth keeping Make a table of the form -<table id="org54251e6" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> +<table id="orgaf3d908" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <colgroup> @@ -3350,6 +3410,17 @@ mpv –vf=negate $url - E-mail affected speakers - see emacsconf-mail-schedule-update function +### New talk + +- Create entry in conf.org +- Fit it into the schedule using the emacsconf-schedule-plan variable +- When happy, execute the draft-schedule block to update the SCHEDULED properties +- emacsconf-generate-talk-page +- emacsconf-update-schedule +- emacsconf +- emacsconf-stream-generate-assets-for-talk + + <a id="archive"></a> # Task archive @@ -4056,7 +4127,7 @@ Where: Nice if there’s an Ansible playbook sachac’s notes: - <file:///home/sacha/code/docker/emacsconf-publish/> + <file:///home/zaeph/code/docker/emacsconf-publish/> - probably good to set it up on front It’s now on front. @@ -4111,8 +4182,8 @@ talk page when your talk goes live. If you happen to have a script or a transcript, please include them as well (it’ll speed up the captioning for us). -Please start your filenames with the ID for the talk that it’s for: -${slugs}. +Please add a comment or start your filenames with the ID for the talk +that it’s for: ${slugs}. If you’re still working on your talk, you might find the tips at <https://emacsconf.org/2022/prepare> useful. In brief: @@ -4121,8 +4192,10 @@ If you’re still working on your talk, you might find the tips at - we recommend dark text on a light background, with enough contrast to make it easy to read - if possible, use a headset or external microphone to record audio -- leave 5 seconds of quiet at the end of the video to facilitate noise - reduction for us + in order to minimize computer noise +- upload a separate 5 second recording of quiet or leave 5 seconds + of quiet at the end of your talk video so that we can process your + video for noise reduction Please plan to upload your talk by November 4 (next Friday) so that we can get started preparing it for streaming. If you can’t make it by diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org index 86502a36..f64b2c79 100644 --- a/2022/organizers-notebook/index.org +++ b/2022/organizers-notebook/index.org @@ -20,6 +20,10 @@ Other projects: #+TOC: headlines 1 :target #projects +Schedule by status: (gray: waiting, light yellow: processing, yellow: to assign, light green: captioning, green: captioned and ready) - Updated by conf.org and the wiki repository + +[[file:schedule.svg]] + * Working with this file :noexport: :PROPERTIES: :CUSTOM_ID: this @@ -103,8 +107,8 @@ interests you! | [[#video-platforms][other platforms]] | *S: Toobnix & YT after event* | | S: Toobnix + YT when live | | schedule view | text table | imagemap fallback | *DONE S: interactive SVG* | | [[#caption-workflow][caption workflow]] | YT autosubs | Whisper autosubs | *DONE: Whisper + more granular timestamps* | -| [[#wiki-design][wiki]] | plain text, markdown | *S: some JS and CSS enrichment* | more JS and CSS, embeds, videoplayer | -| [[#ansible][ansible]] | none | *S: some automation* | comprehensive, can also work against containers | +| [[#wiki-design][wiki]] | plain text, markdown | *DONE S: some JS and CSS enrichment* | more JS and CSS, embeds, videoplayer | +| [[#ansible][ansible]] | none | *DONE S: some automation* | comprehensive, can also work against containers | * Time-sensitive :PROPERTIES: @@ -179,6 +183,22 @@ chatter in the other lists cc'd in this message; thank you. #+TOC: headlines 1 local Ordered by importance. +** TODO Record intro/outro for day-1 and day-2 :zaeph: +:PROPERTIES: +:CUSTOM_ID: rec-intro +:END: + +- Opening remarks + - Schedule overview + - How to participate + +- Closing remarks Sat + - Thanks + - Come back tomorrow +- Closing remarks Sun + - Thanks + - + ** DONE Prepare for prerecs :zaeph: CLOSED: [2022-10-29 Sat 09:58] DEADLINE: <2022-11-04 Fri> :PROPERTIES: @@ -227,7 +247,7 @@ We need time after the prerecs get submitted to: Make changes in [[#prerec-process]] -** TODO Work on the OBS scenes :zaeph:corwin: +** INPROGRESS Work on the OBS scenes :zaeph:corwin:sachac: DEADLINE: <2022-11-11 Fri> :PROPERTIES: :CUSTOM_ID: obs-scenes @@ -488,38 +508,36 @@ Agenda: - dev: export TRACK=dev; export TRACK_PORT=5906 4. Copy the password: - scp emacsconf-$TRACK@res:~/.vnc/passwd vnc-passwd-$TRACK + scp emacsconf-$TRACK@res.emacsconf.org:~/.vnc/passwd vnc-passwd-$TRACK - 5. Forward your local ports: + 5. Forward your local ports and connect via VNC viewer to the + appropriate forwarded port from your laptop: ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT & - - 6. Connect via VNC viewer to the appropriate forwarded port from your laptop - - xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK + xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK & (If this doesn't find a VNC server to connect to, you can start it with ~ssh emacsconf-$TRACK@res.emacsconf.org ~/bin/track-vnc~) - 7. Start recording. It's probably on workspace 2, so you can switch with Alt-2. Confirm that it is now broadcasting to the stream. + 6. Start recording. It's probably on workspace 2, so you can switch with Alt-2. Confirm that it is now broadcasting to the stream. - 8. Verify with MPV on your local system: + 7. Verify with MPV on your local system: #+begin_example - mpv https://live0.emacsconf.org/emacsconf/$TRACK.webm + mpv https://live0.emacsconf.org/emacsconf/$TRACK.webm & #+end_example - 9. With luck, the 480p streams will be up automatically as well. On your local system: + 8. With luck, the 480p streams will be up automatically as well. On your local system: #+begin_example - mpv https://live0.emacsconf.org/emacsconf/$TRACK-480p.webm + mpv https://live0.emacsconf.org/emacsconf/$TRACK-480p.webm & #+end_example - 10. Play a video. It should display the video and update the overlays. If you need to update the overlays manually, you can copy files from ~/data/emacsconf/overlays~ onto ~$HOME/other.png~ and ~$HOME/video.png~. + 9. Play a video. It should display the video and update the overlays. If you need to update the overlays manually, you can copy files from ~/data/emacsconf/overlays~ onto ~$HOME/other.png~ and ~$HOME/video.png~. - #+begin_example - cd /data/emacsconf/stream/2022 - track-mpv filename.webm - #+end_example + #+begin_example + cd /data/emacsconf/stream/2022 + track-mpv filename.webm + #+end_example - 11. Test Q&A. You can either wait for the video to finish or quit it with "q". + 10. Test Q&A. You can either wait for the video to finish or quit it with "q". You can paste in the URLs or use ~firefox /data/emacsconf/2022/index-$TRACK.html~ @@ -534,9 +552,9 @@ Agenda: - Alt-Shift-Left moves the current window to the left - Alt-Shift-Right moves the current window to the right - 12. Use OBS or ~pavucontrol~ to adjust the volume of BBB as needed. + - Use OBS or ~pavucontrol~ to adjust the volume of BBB as needed. - 13. Start an Emacs for emergency announcements. + - Start an Emacs for emergency announcements. *** Managing the stream from the agenda @@ -550,12 +568,17 @@ You can then use - emacsconf-agenda-by-track - emacsconf-agenda -If things are going well, you can use C-c C-t on the agenda view to change a talk to PLAYING, CLOSED_Q, or OPEN_Q, and various things should appen in the background. +If things are going well, you can use C-c C-t on the agenda view to change a talk to PLAYING, CLOSED_Q, or OPEN_Q, and various things should happen in the background. If they don't happen in the background, use emacsconf-add-org-after-todo-state-change-hook to add the todo state change hook, then try again. + +Task state shortcuts for C-c C-t: -Task shortcut: - m (mpv) :: PLAYING - -stream-play-video, emacsconf-stream-set-talk-info, publish the files to the media directory - q (Q&A) :: CLOSED_Q - o (open) :: update the BBB redirect URLs to let people into the room +- u (unstreamed) +- r (to archive) + +You can leave the emacsclient with ~C-x 5 0~ *** Test list for managing EmacsConf @@ -678,6 +701,52 @@ CLOSED: [2022-10-22 Sat 23:16] *** CANCELLED [#C] Compare with Google Cloud Speech API CLOSED: [2022-10-29 Sat 09:58] ~/code/speech + +*** DONE E-mail for bringing new captioning volunteers onboard +CLOSED: [2022-10-29 Sat 09:58] +#+begin_src emacs-lisp +(defun emacsconf-mail-backstage-intro (volunteer &optional template) + (interactive (list (emacsconf-complete-volunteer))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "backstage-intro")) + (assoc-default "EMAIL" volunteer 'string=) + (list + :backstage "https://media.emacsconf.org/2022/backstage/" + :backstage-user "emacsconf" + :backstage-password emacsconf-backstage-password + :conf-name emacsconf-name + :year emacsconf-year + :name (assoc-default "NAME_SHORT" volunteer 'string=) + :email (assoc-default "EMAIL" volunteer 'string=)))) +#+end_src +**** Template +:PROPERTIES: +:TO: ${email} +:FUNCTION: emacsconf-mail-backstage-intro +:EMAIL_ID: backstage-intro +:SUBJECT: ${conf-name} ${year}: Thanks for volunteering! +:END: + +Hi ${name}! + +Thank you for volunteering for ${conf-name} ${year}! + +We've set up ${backstage} as the backstage area where you can view the +videos and resources uploaded so far. You can access it with the +username "${backstage-user}" and the password "${backstage-password}". +Please keep the backstage password and other speakers' talk resources +secret. + +For some ideas on ways to help, you can check out +https://emacsconf.org/2022/volunteer/ . You can also suggest other +things you might be interested in. + +To ask questions or chat with other volunteers, please e-mail the +mailing list at emacsconf-org@gnu.org or drop by #emacsconf on the +libera.chat IRC network. + +Sacha Chua + *** DONE E-mail for bringing new captioning volunteers onboard CLOSED: [2022-10-29 Sat 09:58] #+begin_src emacs-lisp @@ -948,7 +1017,7 @@ console.log(JSON.stringify([...document.querySelectorAll('.delete-room')].map((o see conf.org for the rest of the process *** TODO Add volunteers to the BBB rooms DEADLINE: <2022-11-05 Sat> -** TODO Coordinate and help volunteers :sachac: +** INPROGRESS Coordinate and help volunteers :sachac: :PROPERTIES: :CUSTOM_ID: coordinate-volunteers :END: @@ -964,8 +1033,8 @@ DEADLINE: <2022-11-05 Sat> :PROPERTIES: :CUSTOM_ID: schedule-volunteer-qna :END: -** TODO Investigate streaming options, maybe OBS in the cloud :sachac: -DEADLINE: <2022-11-20 Sun> +** DONE Investigate streaming options, maybe OBS in the cloud :sachac: +CLOSED: [2022-11-06 Sun 18:16] DEADLINE: <2022-11-20 Sun> :PROPERTIES: :CUSTOM_ID: streaming :END: @@ -996,7 +1065,7 @@ Goals: 3. Start up the VNC server if it's not already running - ssh emacsconf-$TRACK@res.emacsconf.org ~/bin/track-vnc + ssh emacsconf-$TRACK@res.emacsconf.org "~/bin/track-vnc" 4. Forward your local ports @@ -1077,8 +1146,7 @@ If that doesn't work, use the VNC session to switch to an Emacs window and type your message in. **** Kill the VNC server: -ssh emacsconf-gen@res.emacsconf.org "vncserver -kill" -ssh emacsconf-dev@res.emacsconf.org "vncserver -kill" +ssh emacsconf-$TRACK@res.emacsconf.org "vncserver -kill" | ~/bin/track-obs | start OBS with the track's profile and scene collection | | ~/bin/track-mpv file.webm | play the file using the track's sink | @@ -1166,8 +1234,6 @@ so that the streamer can adjust volume offscreen? - https://github.com/soonum/hubangl - https://obsproject.com/forum/threads/run-obs-on-vm-in-the-cloud.122543/ *** TODO recruit at least one more person to help operate the "video bouncer" - - * Projects to bear in mind but which are not actual :PROPERTIES: :CUSTOM_ID: maybe-projects @@ -1192,13 +1258,6 @@ https://www.mail-archive.com/search?l=debconf-team@lists.debian.org&q=subject:%2 :CUSTOM_ID: sched-decision :END: -updated by conf.org -[[file:schedule.svg]] - -- Green: no availability constraints -- Red: invalid because of availability constraint -- Dashed: IRC/pad Q&A, not live - Host role: - Give the speaker a heads-up before their Q&A session begins - If needed, read the questions from the pad to the speaker (Many speakers are comfortable reading the pad on their own.) @@ -2709,7 +2768,14 @@ mpv --vf=negate $url - Test it using the blocks near the beginning of conf.org - emacsconf-publish-update-schedule - E-mail affected speakers - see emacsconf-mail-schedule-update function - +*** New talk +- Create entry in conf.org +- Fit it into the schedule using the emacsconf-schedule-plan variable +- When happy, execute the draft-schedule block to update the SCHEDULED properties +- emacsconf-generate-talk-page +- emacsconf-update-schedule +- emacsconf +- emacsconf-stream-generate-assets-for-talk * Task archive :PROPERTIES: :CUSTOM_ID: archive @@ -3405,8 +3471,8 @@ talk page when your talk goes live. If you happen to have a script or a transcript, please include them as well (it’ll speed up the captioning for us). -Please start your filenames with the ID for the talk that it's for: -${slugs}. +Please add a comment or start your filenames with the ID for the talk +that it's for: ${slugs}. If you're still working on your talk, you might find the tips at https://emacsconf.org/2022/prepare useful. In brief: @@ -3415,8 +3481,10 @@ https://emacsconf.org/2022/prepare useful. In brief: - we recommend dark text on a light background, with enough contrast to make it easy to read - if possible, use a headset or external microphone to record audio -- leave 5 seconds of quiet at the end of the video to facilitate noise - reduction for us + in order to minimize computer noise +- upload a separate 5 second recording of quiet or leave 5 seconds + of quiet at the end of your talk video so that we can process your + video for noise reduction Please plan to upload your talk by November 4 (next Friday) so that we can get started preparing it for streaming. If you can't make it by diff --git a/2022/organizers-notebook/schedule.svg b/2022/organizers-notebook/schedule.svg index 65acea80..1b75cf56 100644 --- a/2022/organizers-notebook/schedule.svg +++ b/2022/organizers-notebook/schedule.svg @@ -1 +1 @@ -<svg width="800" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" background="white"> <g transform="translate(0,0)"> <rect width="800" height="100" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(5,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(36,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45-10:05 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgreen"></rect> <g transform="translate(99,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:15-10:25 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="117" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(130,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:55-11:15 Writing and organizing literature notes for scientific writing</title> <rect x="180" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(209,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:35-11:45 The Emacs Buddy initiative</title> <rect x="243" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgreen"></rect> <g transform="translate(256,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:05- 1:25 Attending and organizing Emacs meetups</title> <rect x="384" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(413,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/community" title="The ship that builds itself: How we used Emacs to develop a workshop for communities" data-slug="community"> <title> 1:50- 2:20 The ship that builds itself: How we used Emacs to develop a workshop for communities</title> <rect x="454" y="15" opacity="0.8" width="47" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(499,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> community</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:50- 3:15 Real estate and Org table formulas</title> <rect x="549" y="15" opacity="0.8" width="39" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgreen"></rect> <g transform="translate(586,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and GNUplot" data-slug="health"> <title> 3:20- 3:40 Health data journaling and visualization with Org Mode and GNUplot</title> <rect x="596" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(625,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 4:00- 4:10 Edit live Jupyter notebook cells with Emacs</title> <rect x="658" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(671,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 4:30- 4:40 orgvm: a simple HTTP server for org</title> <rect x="705" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(718,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 5:00- 5:05 Saturday closing remarks</title> <rect x="752" y="15" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(757,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:10 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgray"></rect> <g transform="translate(107,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: complete asynchronous LSP client" data-slug="lspbridge"> <title> 10:20-10:40 lsp-bridge: complete asynchronous LSP client</title> <rect x="125" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgray"></rect> <g transform="translate(154,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:50-11:07 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="172" y="50" opacity="0.8" width="26" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(196,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(240,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:20 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(405,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:45- 2:15 Revisiting the anatomy of Emacs mail user agents</title> <rect x="447" y="50" opacity="0.8" width="47" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(492,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(578,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="50" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgreen"></rect> <g transform="translate(624,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="50" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgreen"></rect> <g transform="translate(648,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="50" opacity="0.8" width="47" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(711,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 9</text></g> <g transform="translate(94,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 10</text></g> <g transform="translate(188,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 11</text></g> <g transform="translate(282,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 12</text></g> <g transform="translate(376,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 1</text></g> <g transform="translate(470,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 2</text></g> <g transform="translate(564,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 3</text></g> <g transform="translate(658,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 4</text></g> <g transform="translate(752,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 5</text></g></g> <g transform="translate(0,100)"> <rect width="800" height="100" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(5,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgray"></rect> <g transform="translate(36,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgray"></rect> <g transform="translate(67,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 10:00-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="94" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgray"></rect> <g transform="translate(123,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(169,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 11:10-11:20 Linking personal info with Hyperbole implicit buttons</title> <rect x="203" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(216,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.8" width="47" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(421,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:10 Org workflows for developers</title> <rect x="454" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(483,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:30- 2:50 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="517" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(546,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:20- 3:40 Putting Org Mode on the Indieweb</title> <rect x="596" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(625,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:00- 4:10 Fanfare for the Common Emacs User</title> <rect x="658" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(671,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 5:00- 5:10 Sunday closing remarks</title> <rect x="752" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(765,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="50" opacity="0.8" width="39" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(131,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:45-10:55 justl: Driving recipes within Emacs</title> <rect x="164" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgray"></rect> <g transform="translate(177,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/tramp" title="Elisp and the TRAMP: How to NOT write code you don't have to" data-slug="tramp"> <title> 11:05-11:35 Elisp and the TRAMP: How to NOT write code you don't have to</title> <rect x="196" y="50" opacity="0.8" width="47" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(241,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> tramp</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:10 Getting detached from Emacs</title> <rect x="376" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(389,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:35- 1:45 Top 10 reasons why you should be using Eshell</title> <rect x="431" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(444,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:10- 2:30 Emacs was async before async was cool</title> <rect x="486" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(515,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:05- 3:25 The Wheels on D-Bus</title> <rect x="572" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(601,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:20 Pre-localizing Emacs</title> <rect x="658" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(687,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 9</text></g> <g transform="translate(94,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 10</text></g> <g transform="translate(188,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 11</text></g> <g transform="translate(282,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 12</text></g> <g transform="translate(376,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 1</text></g> <g transform="translate(470,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 2</text></g> <g transform="translate(564,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 3</text></g> <g transform="translate(658,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 4</text></g> <g transform="translate(752,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 5</text></g></g></svg>
\ No newline at end of file +<svg width="800" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" background="white"> <g transform="translate(0,0)"> <rect width="800" height="100" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(5,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(36,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45-10:05 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(99,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:15-10:25 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="117" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(130,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:55-11:15 Writing and organizing literature notes for scientific writing</title> <rect x="180" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(209,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:35-11:45 The Emacs Buddy initiative</title> <rect x="243" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="5,5,5" fill="green"></rect> <g transform="translate(256,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:05- 1:25 Attending and organizing Emacs meetups</title> <rect x="384" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(413,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/community" title="The ship that builds itself: How we used Emacs to develop a workshop for communities" data-slug="community"> <title> 1:45- 1:55 The ship that builds itself: How we used Emacs to develop a workshop for communities</title> <rect x="447" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(460,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> community</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:25- 2:50 Real estate and Org table formulas</title> <rect x="509" y="15" opacity="0.8" width="39" height="34" stroke="black" stroke-dasharray="5,5,5" fill="lightgreen"></rect> <g transform="translate(546,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and GNUplot" data-slug="health"> <title> 3:00- 3:20 Health data journaling and visualization with Org Mode and GNUplot</title> <rect x="564" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(593,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:40- 3:50 Edit live Jupyter notebook cells with Emacs</title> <rect x="627" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(640,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 4:10- 4:20 orgvm: a simple HTTP server for org</title> <rect x="674" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(687,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(742,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:10 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="5,5,5" fill="yellow"></rect> <g transform="translate(107,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: complete asynchronous LSP client" data-slug="lspbridge"> <title> 10:20-10:40 lsp-bridge: complete asynchronous LSP client</title> <rect x="125" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(154,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:50-11:07 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="172" y="50" opacity="0.8" width="26" height="34" stroke="black" stroke-dasharray="" fill="yellow"></rect> <g transform="translate(196,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(240,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:20 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(405,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:45- 2:15 Revisiting the anatomy of Emacs mail user agents</title> <rect x="447" y="50" opacity="0.8" width="47" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(492,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(578,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="50" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(624,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="50" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(648,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="50" opacity="0.8" width="47" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(711,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 9</text></g> <g transform="translate(94,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 10</text></g> <g transform="translate(188,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 11</text></g> <g transform="translate(282,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 12</text></g> <g transform="translate(376,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 1</text></g> <g transform="translate(470,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 2</text></g> <g transform="translate(564,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 3</text></g> <g transform="translate(658,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 4</text></g> <g transform="translate(752,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 5</text></g></g> <g transform="translate(0,100)"> <rect width="800" height="100" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(5,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(36,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(67,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 10:00-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="94" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="5,5,5" fill="green"></rect> <g transform="translate(123,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(169,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 11:10-11:20 Linking personal info with Hyperbole implicit buttons</title> <rect x="203" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(216,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.8" width="47" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(421,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:10 Org workflows for developers</title> <rect x="454" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(483,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:30- 2:50 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="517" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(546,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:20- 3:40 Putting Org Mode on the Indieweb</title> <rect x="596" y="15" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(625,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:00- 4:05 Emacs development updates</title> <rect x="658" y="15" opacity="0.8" width="7" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(663,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(711,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(750,48)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="50" opacity="0.8" width="39" height="34" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(131,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:45-10:55 justl: Driving recipes within Emacs</title> <rect x="164" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="5,5,5" fill="green"></rect> <g transform="translate(177,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/tramp" title="Elisp and the TRAMP: How to NOT write code you don't have to" data-slug="tramp"> <title> 11:05-11:35 Elisp and the TRAMP: How to NOT write code you don't have to</title> <rect x="196" y="50" opacity="0.8" width="47" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(241,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> tramp</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:10 Getting detached from Emacs</title> <rect x="376" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="yellow"></rect> <g transform="translate(389,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:35- 1:45 Top 10 reasons why you should be using Eshell</title> <rect x="431" y="50" opacity="0.8" width="15" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(444,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:10- 2:30 Emacs was async before async was cool</title> <rect x="486" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="yellow"></rect> <g transform="translate(515,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:05- 3:25 The Wheels on D-Bus</title> <rect x="572" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(601,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:20 Pre-localizing Emacs</title> <rect x="658" y="50" opacity="0.8" width="31" height="34" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(687,83)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 9</text></g> <g transform="translate(94,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 10</text></g> <g transform="translate(188,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 11</text></g> <g transform="translate(282,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 12</text></g> <g transform="translate(376,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 1</text></g> <g transform="translate(470,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 2</text></g> <g transform="translate(564,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 3</text></g> <g transform="translate(658,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 4</text></g> <g transform="translate(752,15)"> <line stroke="lightgray" x1="0" y1="0" x2="0" y2="70"></line> <text fill="darkgray" x="0" y="83" font-size="10" text-anchor="middle"> 5</text></g></g></svg>
\ No newline at end of file |