summaryrefslogtreecommitdiffstats
path: root/2022/info/async-before.md
blob: 0fc354d8fe6860ee77f9ebfc86ec39f5fdaf4d27 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<!-- Automatically generated by emacsconf-publish-before-page -->

The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="async">
<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" 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.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <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:06- 9:26 Results of the 2022 Emacs Survey</title> <rect x="9" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <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.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <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>  9:57-10:22 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="89" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(126,73)"> <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.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</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.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <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:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <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:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <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:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <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:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <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.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <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.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <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="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <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:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title>  1:01- 1:16 Getting detached from Emacs</title> <rect x="378" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(399,133)"> <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:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <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:20- 2:40 Emacs was async before async was cool</title> <rect stroke-width="3" x="501" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text font-weight="bold" 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:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <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:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title>  4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>

[[!toc  ]]
Format: 18-min talk followed by live Q&A (done)  
Etherpad: <https://pad.emacsconf.org/2022-async>  
Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev)  
Status: TO_INDEX_QA  
<div>Times in different timezones:</div><div class="times" start="2022-12-04T19:20:00Z" end="2022-12-04T19:40:00Z"><div class="conf-time">Sunday, Dec 4 2022, ~2:20 PM - 2:40 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 4 2022, ~1:20 PM - 1:40 PM CST (US/Central)<br />Sunday, Dec 4 2022, ~12:20 PM - 12:40 PM MST (US/Mountain)<br />Sunday, Dec 4 2022, ~11:20 AM - 11:40 AM PST (US/Pacific)<br />Sunday, Dec 4 2022, ~7:20 PM - 7:40 PM UTC <br />Sunday, Dec 4 2022, ~8:20 PM - 8:40 PM CET (Europe/Paris)<br />Sunday, Dec 4 2022, ~9:20 PM - 9:40 PM EET (Europe/Athens)<br />Monday, Dec 5 2022, ~12:50 AM - 1:10 AM IST (Asia/Kolkata)<br />Monday, Dec 5 2022, ~3:20 AM - 3:40 AM +08 (Asia/Singapore)<br />Monday, Dec 5 2022, ~4:20 AM - 4:40 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div>

# Talk

[[!template id="vid" vidid="async-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--main.webm" poster="${poster}" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--main.vtt" default />"""
size="98M" duration="17:48" other_resources="""[Download --main.webm (98MB)](https://media.emacsconf.org/2022/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--main.webm)  
[Download --main.vtt](https://media.emacsconf.org/2022/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--main.vtt)  
[Download --main--chapters.vtt](https://media.emacsconf.org/2022/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--main--chapters.vtt)  
[View transcript](https://emacsconf.org/2022/talks/async#async-mainVideo-transcript)  
[View on Toobnix](https://toobnix.org/w/6mKNBvuubwoWFA9SFsgUQS)  
"""]]
[[!template id="chapters" vidid="async-mainVideo" data="""
00:00:00.000 Asynchronous programming
00:47.200 Automating my music player
01:42.600 Working with the API
03:22.080 make-network-process
05:05.200 The sequence of events
05:57.920 Queues
07:50.480 Callbacks
09:24.240 Client-side code
11:48.080 Demo
12:27.760 Logic
13:15.520 Callback hell
14:53.520 Lisp macros
16:46.400 Conclusion

"""]]


# Q&A

[[!template id="vid" vidid="async-qanda" src="https://media.emacsconf.org/2022/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--answers.webm" poster="${poster}" ${captions}
size="34M" duration="17:48" other_resources="""[Download --answers--chapters.vtt](https://media.emacsconf.org/2022/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--answers--chapters.vtt)  
"""]]
[[!template id="chapters" vidid="async-qanda" data="""
00:00:00.000 Introduction
00:21.600 How does this approach compare to using tq.el, Emacs' built-in library for transaction queues?
01:10.480 Have you considered using the aio.el library (written by Chris Wellons) that implements async/await for Emacs lisp using promises?
02:45.440 Are you aware that EMMS has an MPD client? There's also mpc.el built into Emacs.
05:20.360 Have you seen the Lonesome Pine Specials?
07:44.400 Would using dynamic/special vars add anything interesting / easier to async elisp in your opinion?
10:16.560 How does your project compare to some of the other MPD clients?
11:55.040 Can you share the code to the macro that creates the callback tree?
14:42.880 There's another package (chuntaro?) in addition to wellon's aio that also implements a coroutine trampoline on the emacs event loop. any thoughts on the async/await paradigm generally red/blue functions, etc?
15:03.440 Any thoughts on the async await paradigm generally, red-blue functions, etc.?
21:06.320 Do you think it's a viable future for Emacs to get out of callback hell?
24:39.320 Generators

"""]]

# Description


<!-- End of emacsconf-publish-before-page -->