summaryrefslogtreecommitdiffstats
path: root/2022/organizers-notebook.md
diff options
context:
space:
mode:
Diffstat (limited to '2022/organizers-notebook.md')
-rw-r--r--2022/organizers-notebook.md379
1 files changed, 248 insertions, 131 deletions
diff --git a/2022/organizers-notebook.md b/2022/organizers-notebook.md
index 9fcd1b06..a19ecf45 100644
--- a/2022/organizers-notebook.md
+++ b/2022/organizers-notebook.md
@@ -3,52 +3,58 @@
# Table of Contents
-- [Current tasks / status](#org1c2376c)
- - [Organizers: Review the submissions in emacsconf-2022-private and e-mail emacsconf-org-private with any objections or comments by Sept 26 for possible early speaker notification, Oct 7 for everything](#org8790269)
- - [zaeph: Write preparation instructions and decide on deadline for prerecs](#orgfa8f729):zaeph:
- - [sacha: add more submissions (CFP deadline Sept 30)](#orga7b99da):sacha:
- - [sacha: copy things over from previous notebooks](#orgc5ed90d):sacha:
- - [corwin: Double-check sachac’s timezone conversions for availability](#orgd322767):corwin:
- - [corwin: Investigate streaming options, maybe OBS in the cloud](#orgb0742dd):corwin:
- - [corwin: document such that someone else could use/fix it](#org8ed4ca8):corwin:
- - [corwin: recruit at least one more person to help operate the "video bouncer"](#org27e2bb4):corwin:
- - [corwn, zaeph: Work on the OBS scenes](#orgde446f6):zaeph:corwin:
- - [???: Figure out web-based file upload](#org3416742):needsowner:
- - [sacha: Prepare to export talk information to wiki](#org2e90911):sacha:
- - [zaeph: Give access to emacsconf-2022-private to dto](#orgdaa5da1):zaeph:
-- [Other tasks and processes](#org7fbf476)
- - [Sacha: Organize volunteer information](#org4529b4b):sacha:
- - [bandali: Set up file upload](#org8703318):bandali:
- - [Once talks are approved](#org178397d)
- - [As prerecorded talks come in](#orgc528fc5)
- - [Compress the video](#org511d3ca)
- - [When a talk is captioned](#org44bb04f)
- - [Other tasks before the conference](#orgfd7736f)
- - [Test stream setup](#org291640a)
- - [Set up MPV for captions](#org09cf74d)
- - [mpv profile](#orga632a72)
- - [Font: Clear Sans](#org9e6ade2)
+- [Current tasks / status](#current)
+ - [Organizers: Review the submissions in the pad (see emacsconf-org-private or conf.org for the link) and add any objections or comments by Sept 26 for possible early speaker notification, Oct 7 for everything](#org7dd3cca)
+ - [zaeph: Write preparation instructions and decide on deadline for prerecs](#org5ef61be):zaeph:
+ - [sacha: add more submissions (CFP deadline Sept 30)](#org4eda430):sacha:
+ - [sacha: copy things over from previous notebooks](#org820679a):sacha:
+ - [corwin: Double-check sachac’s timezone conversions for availability](#orge36480b):corwin:
+ - [corwin: Investigate streaming options, maybe OBS in the cloud](#org84c8a2a):corwin:
+ - [corwin: document such that someone else could use/fix it](#orgf8a881e):corwin:
+ - [corwin: recruit at least one more person to help operate the "video bouncer"](#org2078b30):corwin:
+ - [corwn, zaeph: Work on the OBS scenes](#orgaf00d7b):zaeph:corwin:
+ - [???: Figure out web-based file upload](#org0cd33ba):needsowner:
+ - [sacha: Prepare to export talk information to wiki](#orgc18872f):sacha:
+ - [zaeph: Give access to emacsconf-2022-private to dto](#org5dac6bb):zaeph:
+ - [dto: create Org heading for scheduling caption team's live IRC duty shifts](#org1e19a83):dto:
+- [Other tasks and processes](#org535c437)
+ - [Sacha: Organize volunteer information](#org02b9309):sacha:
+ - [Export talk information to wiki](#org4df5f59)
+ - [${year}/info/${slug}-nav](#org47f96c9)
+ - [${year}/info/${slug}-schedule](#orgeadb7f1)
+ - [${year}/talks/${slug}](#orgf4aec27)
+ - [bandali: Set up file upload](#orgf62dce4):bandali:
+ - [](#org822de18)
+ - [Once talks are approved](#org9ebe7b9)
+ - [As prerecorded talks come in](#org5897170)
+ - [Compress the video](#org2d83b88)
+ - [When a talk is captioned](#orgb67fdcc)
+ - [Other tasks before the conference](#orgc5d1b90)
+ - [Test stream setup](#org4a193b4)
+ - [Set up MPV for captions](#org8559a58)
+ - [mpv profile](#org0bf9899)
+ - [Font: Clear Sans](#org1b4b0ef)
- [Download prerecorded videos from ${protected}](#days-before)
- - [During the conference](#org5cdd8d4)
+ - [During the conference](#orgfef775b)
- [Roles needed](#roles)
- [Set up](#setup)
- [Arrange screens](#screens)
- [Start streaming](#start-streaming):stream:
- [Check in a speaker](#check-in)
- - [bandali's check-in steps](#orgc3adc8b)
+ - [bandali's check-in steps](#org7098fe0)
- [Present talk](#present)
- [Publish information](#publish)
- [Handle Q&A](#questions)
- [During each talk](#each-talk)
- [Break time](#break)
- [End of stream](#end)
- - [After the conference](#org125206a)
- - [Send thanks](#orgae63fc6)
- - [Update the wiki](#org266989c)
- - [Update captions](#org48744cb)
- - [Downsize the server](#org1c13162):bandali:
+ - [After the conference](#org5488095)
+ - [Send thanks](#orgbfd32aa)
+ - [Update the wiki](#org80c0797)
+ - [Update captions](#org9bae14a)
+ - [Downsize the server](#org24f2175):bandali:
- [In case of](#exceptions)
- - [Stuck wiki](#orgee73cf7)
+ - [Stuck wiki](#org2d273bb)
- [Last-minute prerecording submission](#last-minute-prerec)
- [Last-minute caption update](#last-minute-captions)
- [Speaker has not checked in](#missing)
@@ -64,36 +70,38 @@
- [Technical issues during a live presentation](#live-issues)
- [Big technical issues with streaming](#stream-issues)
- [live0 can't handle the load or is close to network transfer limit](#network)
-- [Communications](#org48aec98)
- - [Ask emacsconf-org-private for feedback on early submissions](#org30dead3)
- - [Early speaker notification](#org84d7e41)
- - [Option A: Early speaker notification(?)](#org24fa701)
- - [Option B: Just letting them know it's been postponed](#org96616dc)
- - [Future](#org577e665)
- - [Acceptance](#org6abf1ef)
- - [Code](#org77d8711)
- - [Template](#org44c0c23)
- - [Acknowledge pre-rec submission](#org81f2950)
- - [Captions for approval](#org4324da9)
- - [Speakers we haven't confirmed e-mail communications with](#org01d182a)
- - [Speakers who are missing prerecs](#org7bde509)
- - [Template](#org889eae8)
- - [Check-in instructions](#org870a8ec)
- - [Code](#orgfe4d71f)
- - [E-mail for speakers who are planning to be at the conference](#orgfcc6405)
- - [E-mail for speakers who are not planning to be around, but who have sent us their prerecs](#orge9d0751)
- - [Last email before the conference](#org18d1b15)
- - [Thank you, next steps](#org975dc9e)
- - [Code](#org090b205)
- - [Text](#orgc12d656)
- - [Archive](#orge9c9fba)
- - [Second announcement: CFP](#orgb302bad)
- - [First announcement: CFP](#orge8304a7)
-- [Supporting code](#org411adc7)
- - [Publish this page](#orge4dd909)
-
-
-<a id="org1c2376c"></a>
+- [Communications](#orge6aa5aa)
+ - [Ask emacsconf-org-private for feedback on early submissions](#orgf6d9903)
+ - [Early speaker notification](#org3ceb710)
+ - [Option A: Early speaker notification(?)](#org0812853)
+ - [Option B: Just letting them know it's been postponed](#org10d6eff)
+ - [Future](#org8a32a5b)
+ - [Acceptance](#orgf5bb15b)
+ - [Code](#org059d42b)
+ - [Template](#org7b28658)
+ - [Acknowledge pre-rec submission](#org53c8ce1)
+ - [Captions for approval](#org9703bb9)
+ - [Speakers we haven't confirmed e-mail communications with](#org2c67553)
+ - [Speakers who are missing prerecs](#orgd65ac71)
+ - [Template](#org3cad38b)
+ - [Check-in instructions](#org32a7007)
+ - [Code](#orgbf482c9)
+ - [E-mail for speakers who are planning to be at the conference](#org333a72f)
+ - [E-mail for speakers who are not planning to be around, but who have sent us their prerecs](#org178b2ae)
+ - [Last email before the conference](#org0899d50)
+ - [Thank you, next steps](#orge7135bb)
+ - [Code](#orga823703)
+ - [Text](#org210d912)
+ - [Archive](#org52569dd)
+ - [Second announcement: CFP](#org176bdbe)
+ - [First announcement: CFP](#org39f992e)
+- [Supporting code](#org4cbe778)
+ - [Publish this page](#org0c25406)
+ - [Tangle and publish on save](#org923bc99)
+- [Lessons learned for next year](#org8fdf431)
+
+
+<a id="current"></a>
# Current tasks / status
@@ -127,13 +135,13 @@ Planned dates and phases:
<tr>
-<td class="org-left">[2022-09-??]</td>
+<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-09-30 Fri]</span></span></td>
<td class="org-left">Early speaker notification for original submissions</td>
</tr>
<tr>
-<td class="org-left">[2022-10-??]</td>
+<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-10-07 Fri]</span></span></td>
<td class="org-left">Yes/no decisions for late submissions</td>
</tr>
@@ -188,14 +196,14 @@ Planned dates and phases:
</table>
-<a id="org8790269"></a>
+<a id="org7dd3cca"></a>
-## TODO Organizers: Review the submissions in emacsconf-2022-private and e-mail emacsconf-org-private with any objections or comments by Sept 26 for possible [early speaker notification](#org84d7e41), Oct 7 for everything
+## TODO Organizers: Review the submissions in the pad (see emacsconf-org-private or conf.org for the link) and add any objections or comments by Sept 26 for possible [early speaker notification](#org3ceb710), Oct 7 for everything
- zaeph: will start reviewing on Sep 21
-<a id="orgfa8f729"></a>
+<a id="org5ef61be"></a>
## TODO zaeph: Write preparation instructions and decide on deadline for prerecs :zaeph:
@@ -209,24 +217,24 @@ We need time after the prerecs get submitted to:
zaeph will also figure out the ffmpeg incantation for converting videos and the process for handling submitted prerecs
-<a id="orga7b99da"></a>
+<a id="org4eda430"></a>
## WAITING sacha: add more submissions (CFP deadline Sept 30) :sacha:
- Sacha: Add submissions to emacsconf-2022-private, draft 2-day schedule by Oct 10
-<a id="orgc5ed90d"></a>
+<a id="org820679a"></a>
## INPROGRESS sacha: copy things over from previous notebooks :sacha:
-<a id="orgd322767"></a>
+<a id="orge36480b"></a>
## TODO corwin: Double-check sachac’s timezone conversions for availability :corwin:
-<a id="orgb0742dd"></a>
+<a id="org84c8a2a"></a>
## TODO corwin: Investigate streaming options, maybe OBS in the cloud :corwin:
@@ -235,24 +243,24 @@ zaeph will also figure out the ffmpeg incantation for converting videos and the
**\*** TODO corwin: plan an approach to use a centralized OBS/nginix "bouncer" :corwin:
-<a id="org8ed4ca8"></a>
+<a id="orgf8a881e"></a>
### TODO corwin: document such that someone else could use/fix it :corwin:
-<a id="org27e2bb4"></a>
+<a id="org2078b30"></a>
### TODO corwin: recruit at least one more person to help operate the "video bouncer" :corwin:
-<a id="orgde446f6"></a>
+<a id="orgaf00d7b"></a>
## TODO corwn, zaeph: Work on the OBS scenes :zaeph:corwin:
- [ ] corwin is out from Nov 11-20, and we should start working on them before then.
-<a id="org3416742"></a>
+<a id="org0cd33ba"></a>
## TODO ???: Figure out web-based file upload :needsowner:
@@ -260,42 +268,117 @@ Lesson learned from last year: "Since people kept running into ftp problems, we
Maybe we could ask some of the volunteers who wanted to help us with the infra? It shouldn’t be complicated to deploy a ready-made solution.
-<a id="org2e90911"></a>
+<a id="orgc18872f"></a>
+
+## DONE sacha: Prepare to export talk information to wiki :sacha:
-## TODO sacha: Prepare to export talk information to wiki :sacha:
+[Export talk information to wiki](#org4df5f59)
+Tested code in a fork, can publish talk information once talks are approved.
-<a id="orgdaa5da1"></a>
+
+<a id="org5dac6bb"></a>
## DONE zaeph: Give access to emacsconf-2022-private to dto :zaeph:
-<a id="org7fbf476"></a>
+<a id="org1e19a83"></a>
+
+## TODO dto: create Org heading for scheduling caption team's live IRC duty shifts :dto:
+
+
+<a id="org535c437"></a>
# Other tasks and processes
-<a id="org4529b4b"></a>
+<a id="org02b9309"></a>
## DONE Sacha: Organize volunteer information :sacha:
-<a id="org8703318"></a>
+<a id="org4df5f59"></a>
+
+## Export talk information to wiki
+
+[sacha: Prepare to export talk information to wiki](#orgc18872f)
+
+
+<a id="org47f96c9"></a>
+
+### ${year}/info/${slug}-nav
+
+Automatically generated by emacsconf-create-info-pages
+
+Example:
+
+ Back to the [[schedule]]
+ Previous: <a href="/2021/talks/teach">Using Org-mode to teach programming</a>
+ Next: <a href="/2021/talks/research">Managing a research workflow (bibliographies, note-taking, and arXiv)</a>
+
+
+<a id="orgeadb7f1"></a>
+
+### ${year}/info/${slug}-schedule
+
+Automatically generated by emacsconf-create-info-pages
+
+
+<a id="orgf4aec27"></a>
+
+### ${year}/talks/${slug}
+
+Initially generated by emacsconf-create-talk-pages
+
+ [[!meta title="${title}"]]
+ [[!meta copyright="Copyright &copy; ${year} ${speakers}"]]
+ [[!inline pages="internal(${year}/info/${slug}-nav)" raw="yes"]]
+
+ <!-- You can manually edit this file to update the abstract, add links, etc. --->
+
+ # ${title}
+ ${speakers}
+
+ <!-- tags go here like !taglink CategoryOrgMode -->
+ [[!inline pages="internal(${year}/info/${slug}-schedule)" raw="yes"]]
+
+ ${abstract}
+
+ # Links
+
+ # Discussion
+
+ # Speaker information
+ - Name pronunciation: ${pronunciation}
+ - Pronouns: ${pronouns}
+ - Email: ${public-email}
+
+ [[!inline pages="internal(${year}/captions/${slug})" raw="yes"]]
+
+ [[!inline pages="internal(${year}/info/${slug}-nav)" raw="yes"]]
+
+
+<a id="orgf62dce4"></a>
## TODO bandali: Set up file upload :bandali:
-<a id="org178397d"></a>
+<a id="org822de18"></a>
+
+##
+
+
+<a id="org9ebe7b9"></a>
## Once talks are approved
-- Publish initial talk information pages
-- Format them nicely
+- sacha: Publish initial talk information pages
+- Double-check talk pages, format them nicely
- Publish draft schedule
- Confirm e-mail communication with all of the speakers
-<a id="orgc528fc5"></a>
+<a id="org5897170"></a>
## As prerecorded talks come in
@@ -306,7 +389,7 @@ Maybe we could ask some of the volunteers who wanted to help us with the infra?
- Make sure all the links/resources mentioned are written down somewhere (web page and enriched captions for pasting into #emacsconf-accessible)
-<a id="org511d3ca"></a>
+<a id="org2d83b88"></a>
### Compress the video
@@ -321,31 +404,31 @@ Usage: `compress-video.sh original-file output-file`:
We tried using q56 before, but it was a little too aggressive. Q=32 is the default and is probably a reasonable space vs. quality compromise.
-<a id="org44bb04f"></a>
+<a id="orgb67fdcc"></a>
## When a talk is captioned
-<a id="orgfd7736f"></a>
+<a id="orgc5d1b90"></a>
## Other tasks before the conference
- Coordinate volunteer schedules so all the roles are covered
-<a id="org291640a"></a>
+<a id="org4a193b4"></a>
### Test stream setup
-[Stream](#org184f14d)
+[Stream](#orgacab040)
-<a id="org09cf74d"></a>
+<a id="org8559a58"></a>
### Set up MPV for captions
-<a id="orga632a72"></a>
+<a id="org0bf9899"></a>
#### mpv profile
@@ -380,7 +463,7 @@ Add the following profile to `~/.config/mpv/mpv.conf`:
(Thanks, zaeph)
-<a id="org9e6ade2"></a>
+<a id="org1b4b0ef"></a>
#### Font: Clear Sans
@@ -399,7 +482,7 @@ Links:
rsync -avzue ssh front:/var/www/media.emacsconf.org/2021/protected/*--main.webm .
-<a id="org5cdd8d4"></a>
+<a id="orgfef775b"></a>
## During the conference
@@ -577,7 +660,7 @@ Exception: [CHECK is unavailable](#check-gone)
information.
-<a id="orgc3adc8b"></a>
+<a id="org7098fe0"></a>
#### bandali's check-in steps
@@ -722,24 +805,24 @@ Exceptions:
- bandali figures out the downstream
-<a id="org125206a"></a>
+<a id="org5488095"></a>
## After the conference
-<a id="orgae63fc6"></a>
+<a id="orgbfd32aa"></a>
### Send thanks
-[Thank you, next steps](#org975dc9e)
+[Thank you, next steps](#orge7135bb)
-<a id="org266989c"></a>
+<a id="org80c0797"></a>
### Update the wiki
-<a id="org48744cb"></a>
+<a id="org9bae14a"></a>
### Update captions
@@ -765,7 +848,7 @@ Exceptions:
- Update ${conf-year}/${captions}/${slug}.md in the wiki. To make this from scratch, use `M-x conf-prepare-transcript-directives` from the talk heading in the conference Org file.
-<a id="org1c13162"></a>
+<a id="org24f2175"></a>
### BLOCKED Downsize the server :bandali:
@@ -775,7 +858,7 @@ Exceptions:
## In case of
-<a id="orgee73cf7"></a>
+<a id="org2d273bb"></a>
### Stuck wiki
@@ -870,7 +953,7 @@ sudo -iu ikiwiki &#x2013; ikiwiki &#x2013;setup ~ikiwiki/emacsconf.setup
command to be the audio monitor, so you get system output as
well.
- OR:
- - [? splitting audio]
+ - [? splitting audio] (look for “Set up sinks for sound” under 2021/)
- [? same audio]
- Set up audio monitor as the input for FFMPEG
- MPV goes to MPV sink, browser goes to recording sink, FFMPEG takes in recording monitor
@@ -962,12 +1045,12 @@ sudo -iu ikiwiki &#x2013; ikiwiki &#x2013;setup ~ikiwiki/emacsconf.setup
- Add additional node to Linode account for shared transfer pool (TODO: doublecheck)
-<a id="org48aec98"></a>
+<a id="orge6aa5aa"></a>
# Communications
-<a id="org30dead3"></a>
+<a id="orgf6d9903"></a>
## TODO Ask emacsconf-org-private for feedback on early submissions
@@ -992,14 +1075,14 @@ Thanks!
Sacha
-<a id="org84d7e41"></a>
+<a id="org3ceb710"></a>
## TODO Early speaker notification
We can accept early or send people a note saying notification of acceptance will be on Oct 15, because of the extended CFP.
-<a id="org24fa701"></a>
+<a id="org0812853"></a>
### TODO Option A: Early speaker notification(?)
@@ -1040,7 +1123,7 @@ Thank you so much!
Sacha
-<a id="org96616dc"></a>
+<a id="org10d6eff"></a>
### TODO Option B: Just letting them know it's been postponed
@@ -1053,17 +1136,17 @@ for your patience!
Sacha
-<a id="org577e665"></a>
+<a id="org8a32a5b"></a>
## Future
-<a id="org6abf1ef"></a>
+<a id="orgf5bb15b"></a>
### Acceptance
-<a id="org77d8711"></a>
+<a id="org059d42b"></a>
#### Code
@@ -1121,7 +1204,7 @@ Sacha
(save-excursion (conf-replace-plist-in-string attrs (plist-get attrs :body)))))
-<a id="org44c0c23"></a>
+<a id="org7b28658"></a>
#### Template
@@ -1152,7 +1235,7 @@ EmacsConf organization team
P.S. Please keep emacsconf-submit@gnu.org in To or Cc when replying.
-<a id="org81f2950"></a>
+<a id="org53c8ce1"></a>
### Acknowledge pre-rec submission
@@ -1185,7 +1268,7 @@ P.S. Please keep emacsconf-submit@gnu.org in To or Cc when replying.
"Thank you so much for all the work you put into preparing a talk for EmacsConf ${year}, and thank you for submitting the prerecorded video before the conference!\n\nSacha"))))
-<a id="org4324da9"></a>
+<a id="org9703bb9"></a>
### Captions for approval
@@ -1202,7 +1285,7 @@ ${url} . Thanks again for your contribution!
Sacha
-<a id="org01d182a"></a>
+<a id="org2c67553"></a>
### Speakers we haven't confirmed e-mail communications with
@@ -1247,7 +1330,7 @@ Sacha Chua
(Please use Reply to All to keep emacsconf-submit@gnu.org in the loop. Thanks!)
-<a id="org7bde509"></a>
+<a id="orgd65ac71"></a>
### Speakers who are missing prerecs
@@ -1268,7 +1351,7 @@ Sacha Chua
(conf-get-talk-info))))))
-<a id="org889eae8"></a>
+<a id="org3cad38b"></a>
#### Template
@@ -1324,7 +1407,7 @@ stream for you. Hope to hear from you soon!
Sacha
-<a id="org870a8ec"></a>
+<a id="org32a7007"></a>
### Check-in instructions
@@ -1342,7 +1425,7 @@ Goals:
- They’re joined by the streamer and host.
-<a id="orgfe4d71f"></a>
+<a id="orgbf482c9"></a>
#### Code
@@ -1399,7 +1482,7 @@ Slightly more complex because of the conditionals
(buffer-list)))
-<a id="orgfcc6405"></a>
+<a id="org333a72f"></a>
#### E-mail for speakers who are planning to be at the conference
@@ -1427,7 +1510,7 @@ Looking forward to seeing you soon!
Sacha
-<a id="orge9d0751"></a>
+<a id="org178b2ae"></a>
#### E-mail for speakers who are not planning to be around, but who have sent us their prerecs
@@ -1449,7 +1532,7 @@ Thank you again for being part of EmacsConf ${year}!
Sacha
-<a id="org18d1b15"></a>
+<a id="org0899d50"></a>
### Last email before the conference
@@ -1468,12 +1551,12 @@ Sacha
> also be the time at which the talk will be made available on the same page.
-<a id="org975dc9e"></a>
+<a id="orge7135bb"></a>
### Thank you, next steps
-<a id="org090b205"></a>
+<a id="orga823703"></a>
#### Code
@@ -1505,7 +1588,7 @@ Sacha
(plist-get template :body)))))))
-<a id="orgc12d656"></a>
+<a id="org210d912"></a>
#### Text
@@ -1535,12 +1618,12 @@ Thanks again for speaking at EmacsConf!
Sacha
-<a id="orge9c9fba"></a>
+<a id="org52569dd"></a>
## Archive
-<a id="orgb302bad"></a>
+<a id="org176bdbe"></a>
### DONE Second announcement: CFP
@@ -1571,7 +1654,7 @@ emacsconf-discuss list, so as to help avoid generating extra off-topic
chatter in the other lists cc'd on this message. Thank you.
-<a id="orge8304a7"></a>
+<a id="org39f992e"></a>
### DONE First announcement: CFP
@@ -1601,12 +1684,12 @@ emacsconf-discuss list, so as to help avoid generating extra off-topic
chatter in the other lists Cc'd on this message. Thank you.
-<a id="org411adc7"></a>
+<a id="org4cbe778"></a>
# Supporting code
-<a id="orge4dd909"></a>
+<a id="org0c25406"></a>
## Publish this page
@@ -1618,3 +1701,37 @@ chatter in the other lists Cc'd on this message. Thank you.
(magit-commit-create (list "-m" (read-string "Commit message: ")))
(call-interactively #'magit-push-current-to-pushremote))
+
+<a id="org923bc99"></a>
+
+## Tangle and publish on save
+
+ (defun emacsconf-export-md-on-save ()
+ "Export markdown on save.
+ Meant to be used with `after-save-hook'."
+ (org-md-export-to-markdown)
+ (org-babel-tangle))
+
+ (defvar emacsconf-export-md-on-save-configured t
+ "Non-nil when the setup code-block has been executed.")
+
+ (unless (bound-and-true-p emacsconf-export-md-on-save-configured)
+ (org-babel-ref-resolve "md-export-on-save-setup()"))
+
+ (add-hook 'after-save-hook #'emacsconf-export-md-on-save nil t)
+
+ (when (memq #'emacsconf-export-md-on-save after-save-hook)
+ (message "Hook is active"))
+
+ (remove-hook 'after-save-hook #'emacsconf-export-md-on-save t)
+
+ (unless (memq #'emacsconf-export-md-on-save after-save-hook)
+ (message "Hook is no longer active"))
+
+
+<a id="org8fdf431"></a>
+
+# Lessons learned for next year
+
+- Ask for public e-mail or contact information, IRC handle in CFP
+