summaryrefslogtreecommitdiffstats
path: root/2022/info/workflows-after.md
blob: b9b9229576e054f16378af5f8b21b9d4120fe961 (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
<!-- Automatically generated by emacsconf-publish-after-page -->


<a name="workflows-mainVideo-transcript"></a>
# Transcript

[[!template new="1" text="""Hello. Welcome to my first ever EmacsConf talk.""" start="00:00:00.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This is really exciting for me.""" start="00:00:04.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I've done lots of conferences,""" start="00:00:06.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""but rarely ones this technical and this nerdy.""" start="00:00:08.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I also feel like""" start="00:00:12.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I have something interesting to share.""" start="00:00:13.508" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I come to Emacs relatively late in my career,""" start="00:00:15.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""only about six years ago,""" start="00:00:18.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""but I've been absolutely amazed""" start="00:00:20.920" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""at the innovation and commitment of the community""" start="00:00:22.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to do things their own way.""" start="00:00:25.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Oftentimes, these become things""" start="00:00:28.200" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that are not readily available anywhere else.""" start="00:00:30.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, as I've been using Emacs""" start="00:00:33.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""(and Org mode specifically)""" start="00:00:35.307" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""a great deal in my day-to-day workflows,""" start="00:00:37.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I've been leaning more and more into""" start="00:00:39.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""some of these tips and tricks.""" start="00:00:41.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I find that there is almost every day""" start="00:00:43.607" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that I discover some useful tweak""" start="00:00:46.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that can make my development better.""" start="00:00:48.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I want to share them with you now.""" start="00:00:50.760" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""[Future George]: Hey, hold on!""" start="00:00:53.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Who are you?""" start="00:00:54.874" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[Future George]: I'm you from the future!""" start="00:00:56.200" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Oh, nice. How good.""" start="00:01:00.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""No, I'm you from, like, a month from now.""" start="00:01:02.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Look, you know how these talks are pre-recorded,""" start="00:01:05.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and you know how you've spent the last two years""" start="00:01:08.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""criticizing conference speakers""" start="00:01:10.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""for trying to do the same old thing""" start="00:01:12.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and not creatively adapting""" start="00:01:14.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to the online conference medium?""" start="00:01:15.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Well, you are recording this back in November.""" start="00:01:17.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm in December when everyone is watching this""" start="00:01:20.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""for the first time.""" start="00:01:23.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""That is something we can do now.""" start="00:01:24.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[George]: Okay, so this is a gimmick.""" start="00:01:27.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Cool! And I see you still haven't figured out""" start="00:01:29.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""how to remove backgrounds with OBS.""" start="00:01:32.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[Future George]: Oh my god! It's such a pain,""" start="00:01:35.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I have to get a plugin or something.""" start="00:01:37.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, yes, it's kind of a gimmick,""" start="00:01:40.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""but I also have a cool point.""" start="00:01:42.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""You know, how you just said""" start="00:01:44.920" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that you discover something new every day?""" start="00:01:46.200" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Well, your talk isn't that long,""" start="00:01:48.840" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and I found a bunch of cool new workflow synths.""" start="00:01:49.920" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[George]: Oh, okay, that makes sense.""" start="00:01:52.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm starting a new job in the intervening time.""" start="00:01:55.920" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[Future George]: Exactly!""" start="00:01:58.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, I have more stuff I want to add.""" start="00:01:59.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[George]: Oh, and I bet that""" start="00:02:02.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""once we set the ground rules,""" start="00:02:03.740" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""the audience might have""" start="00:02:05.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""some of their own suggestions.""" start="00:02:07.136" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""That is a good idea.""" start="00:02:08.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Okay, go away now.""" start="00:02:11.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[Future George]: Fine, but""" start="00:02:11.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""aren't you gonna explain the dino?""" start="00:02:13.574" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[George]: This is EmacsConf, dude.""" start="00:02:15.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""You think a dinosaur built out of""" start="00:02:18.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""boxes and old dishwasher parts""" start="00:02:20.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""is the weirdest background thing we'll see?""" start="00:02:22.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[Both making dinosaur roaring sound: ROAAAAR!]""" start="00:02:24.207" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Okay, bye now.""" start="00:02:27.880" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""Hey everyone, you heard the idea.""" start="00:02:30.200" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This is going to be a thinly-veiled attempt""" start="00:02:33.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to show you stuff about""" start="00:02:35.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Emacs and Org mode, specifically,""" start="00:02:36.940" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that I think is super cool and immediately useful""" start="00:02:38.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""while you're doing development.""" start="00:02:41.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Let's define the scope of Org development workflow""" start="00:02:43.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""as something specific you do with Org mode""" start="00:02:46.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that helps in certain common""" start="00:02:49.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""development related activities.""" start="00:02:50.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now, tie-dye me from the future said""" start="00:02:52.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""he's got some more ideas""" start="00:02:54.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""beyond what I'm presenting here.""" start="00:02:56.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm sure many of you have ideas as well.""" start="00:02:58.840" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, we're going to share a collaborative document,""" start="00:03:01.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and let's all as we're listening to this""" start="00:03:07.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""be talking, and chatting, and entering""" start="00:03:10.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""our own ideas and workflows,""" start="00:03:11.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""so that we can learn and improve together.""" start="00:03:13.240" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""And now with that, let's begin.""" start="00:03:15.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I've got a ton of ground to cover,""" start="00:03:17.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and I want to start by talking about note-taking.""" start="00:03:20.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Shrink down! [transition]""" start="00:03:23.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Note-taking is incredibly important.""" start="00:03:25.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""We can't keep all this stuff in our heads.""" start="00:03:30.074" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, for example, I find myself with""" start="00:03:33.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""the need to learn about the solid project.""" start="00:03:36.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This right here is the solid project,""" start="00:03:41.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and I want to play around with it.""" start="00:03:44.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I am going to start by creating a note for it.""" start="00:03:47.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now, one of the things that I want to do""" start="00:03:50.920" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""is explore one of their tutorials.""" start="00:03:53.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""That's the site I just saw.""" start="00:03:57.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I can go ahead and create a note for myself.""" start="00:03:58.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Right, &quot;Solid React Example&quot;,""" start="00:04:03.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and maybe a set of stuff ending on there.""" start="00:04:10.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going to clone this project,""" start="00:04:12.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""which I've already done,""" start="00:04:14.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and I can pull it up right here.""" start="00:04:15.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, I can pull it up right here,""" start="00:04:18.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and I can now start to explore it.""" start="00:04:22.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, for example, this code base sounds…,""" start="00:04:24.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""it seems interesting.""" start="00:04:26.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going to want to""" start="00:04:27.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""store a link to this in my code.""" start="00:04:28.996" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going to run `org-store-link`,""" start="00:04:31.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and I can come in here and say,""" start="00:04:34.840" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""let's explore structure. Local link,""" start="00:04:37.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and here I'm going to put that right there.""" start="00:04:48.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now, at any given time I can come into this note""" start="00:04:50.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and be thrown right into the structure.""" start="00:04:52.960" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""I want to go and now start investigating the code,""" start="00:04:54.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""but before doing that""" start="00:04:58.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going to take an extra step""" start="00:05:02.474" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and customize the Org capture system.""" start="00:05:08.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going to create a playground node here,""" start="00:05:13.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""where I can do whatever.""" start="00:05:16.297" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now, what does this template do?""" start="00:05:17.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Well, it's just going to create a new template.""" start="00:05:20.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And whenever I hit the s key,""" start="00:05:22.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""it is going to go ahead and add a new heading""" start="00:05:24.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to which I will enter,""" start="00:05:31.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and it's going to grab a link""" start="00:05:36.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to wherever I'm pointing at,""" start="00:05:38.326" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and any highlighted code""" start="00:05:39.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""will also be inserted into a source block,""" start="00:05:41.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and eventually, drop my cursor""" start="00:05:44.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""where I can work on it.""" start="00:05:49.407" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, we can grab our template,""" start="00:05:52.107" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and the one thing I'm going to need to add it here""" start="00:05:55.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""is to say what file this goes to.""" start="00:05:57.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going to copy the name of this file,""" start="00:05:59.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and put it right in there.""" start="00:06:03.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going to go ahead now run this template.""" start="00:06:08.040" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""Now, we can explore our code.""" start="00:06:10.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""For example, I can look in the server,""" start="00:06:14.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and say, &quot;Oh yeah, this slide looks interesting.""" start="00:06:16.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Go ahead and capture that.&quot;""" start="00:06:18.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""There you see our template.""" start="00:06:21.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""You see, yeah, this is Next.js app,""" start="00:06:23.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and you can see it got added right in here""" start="00:06:26.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""right next to my other code.""" start="00:06:29.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, that's interesting.""" start="00:06:33.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I can always go ahead and click that link,""" start="00:06:34.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and get thrown directly to where in the code I was.""" start="00:06:36.920" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm kind of building up my own dashboard""" start="00:06:40.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""as I explore this project""" start="00:06:43.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""of interesting points within the project.""" start="00:06:45.040" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""One of the things I noticed here""" start="00:06:49.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""by looking at the file structure is that""" start="00:06:52.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""there is an area for certificates.""" start="00:06:57.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""That's a little unusual, so we'll make a note""" start="00:07:02.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""of that by again running `org-store-link`.""" start="00:07:05.625" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This comes with certificates,""" start="00:07:08.007" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""so we'll put that there.""" start="00:07:12.707" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""One of the good standbys is,""" start="00:07:18.007" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""just to use our regular shell commands.""" start="00:07:21.607" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, we will go ahead and say,""" start="00:07:23.540" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""the default directory for this is our project.""" start="00:07:26.774" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And we can go ahead and say,""" start="00:07:29.807" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""`cat certificates/localhost.key`,""" start="00:07:31.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and then we'll output the first five lines of it,""" start="00:07:38.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""just to make sure it's a regular certificate.""" start="00:07:43.760" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""Now, notice this got broken up a little bit.""" start="00:07:45.848" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This is due to Emacs auto formatting.""" start="00:07:49.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""We can come in here, and tell it to""" start="00:07:51.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""format it as code,""" start="00:07:55.866" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""which will be the same as this block right here.""" start="00:07:57.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now, there are other options available.""" start="00:07:59.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""If, for example, we don't want [it]""" start="00:08:02.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to be a shell block,""" start="00:08:05.453" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""we wanted a Python block for some reason,""" start="00:08:06.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""we do `:wrap src python`, and execute that,""" start="00:08:09.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and it's now wrapped as a Python block,""" start="00:08:15.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""but I like it as a shell.""" start="00:08:18.440" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""Let's, for example, go down into pages here""" start="00:08:21.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and look at this document file.""" start="00:08:24.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""We're saying, &quot;Okay. Well, this looks interesting""" start="00:08:25.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""maybe highlight that,&quot; and we'll go ahead""" start="00:08:29.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and capture that template""" start="00:08:32.474" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and say, grab all this code and paste it in here.""" start="00:08:36.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now, there is a bug at the moment,""" start="00:08:39.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""where if you highlight more than one lines of code,""" start="00:08:42.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""the link will not work, and that honestly""" start="00:08:46.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""might be something I look into fixing.""" start="00:08:50.760" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""One of the things that might be useful here""" start="00:08:54.540" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""would be to check out""" start="00:08:57.507" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""how this file has evolved over time.""" start="00:08:59.274" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""To do that, I'm going to use Magit.""" start="00:09:02.107" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'll pull up a log.""" start="00:09:05.340" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Look, there's only a single change.""" start="00:09:09.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going to run a command""" start="00:09:11.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""called `orgit-store-link`,""" start="00:09:13.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and now I can come in here and say,""" start="00:09:16.840" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""&quot;It's only changed once.&quot;""" start="00:09:22.174" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Go ahead and insert that link.""" start="00:09:26.207" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now, this file…""" start="00:09:30.507" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""the arguments here are kind of weird,""" start="00:09:33.340" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and in fact, if I click this,""" start="00:09:35.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""it will actually go to the full log of that branch.""" start="00:09:38.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""However, we can fix that pretty easily.""" start="00:09:42.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Grab the path of our file,""" start="00:09:45.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and this right here is really just the arguments""" start="00:09:49.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that are passed into the log command.""" start="00:09:53.874" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, here we go, we put that in there,""" start="00:09:56.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and there we go. We get the full file history.""" start="00:09:58.880" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""Now, I want to actually build the program.""" start="00:10:04.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, &quot;Build the app.&quot;""" start="00:10:09.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now, I could of course run it as a shell, right.""" start="00:10:16.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""`npm ci`. The problem with that is that""" start="00:10:18.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Emacs is single-threaded. So, if I were to do that,""" start="00:10:22.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""the entire time while it was running,""" start="00:10:26.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""it would be locking out my Emacs.""" start="00:10:30.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Additionally, I might not actually want""" start="00:10:33.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""all that scroll--`npm ci` produces a lot of it--""" start="00:10:35.740" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""actually in my document.""" start="00:10:38.707" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So instead, what we could do is""" start="00:10:40.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""use an Emacs Lisp function,""" start="00:10:43.840" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and it's called `async-shell-command`.""" start="00:10:46.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And when you run something in async-shell-command,""" start="00:10:49.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""it's going to a comint buffer with a process""" start="00:10:52.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""attached to it, and run it in there.""" start="00:10:58.007" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I will need to set the directory here first,""" start="00:11:00.107" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and since, again, this is going to be""" start="00:11:04.907" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""opening up in a new buffer.""" start="00:11:07.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I don't need to see that.""" start="00:11:08.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going to run it.""" start="00:11:09.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And what's going to happen is""" start="00:11:11.407" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""this is actually not going to work.""" start="00:11:13.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And it doesn't work,""" start="00:11:17.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Not for any particular reason I can control.""" start="00:11:18.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""It's unfortunately that the repo is broken,""" start="00:11:20.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""but that is a totally valid""" start="00:11:24.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""result of our investigation.""" start="00:11:26.307" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""One of the things that I really love""" start="00:11:29.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to do with Org mode is to actually use it for""" start="00:11:33.107" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""literate programming,""" start="00:11:37.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""because Org mode has a pretty capable""" start="00:11:38.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""code generation facility built into it.""" start="00:11:43.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""It's called tangling.""" start="00:11:46.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, if I go ahead and take my document...""" start="00:11:47.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This is for a little Arduino project,""" start="00:11:51.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""where I was figuring out to spin things around""" start="00:11:54.107" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""using an old Roomba motor.""" start="00:11:56.907" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I can go ahead and write a script like this,""" start="00:12:00.074" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and then notice, I use the tangle variable""" start="00:12:05.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that is just going to determine""" start="00:12:09.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""where that file gets written""" start="00:12:11.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""when we call the command `org-babel-tangle`.""" start="00:12:13.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, if I go ahead and run this,""" start="00:12:17.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""you can see down in the minibuffer,""" start="00:12:20.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""it's going to write to""" start="00:12:21.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""`/tmp/go-batsy-playground/go-batsy-playground.ino`.""" start="00:12:23.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""That's where this right here would write,""" start="00:12:26.707" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and then I could run commands on it.""" start="00:12:29.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Then I want to start being able to use this""" start="00:12:33.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to build out a program.""" start="00:12:36.574" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I'm going ahead and writing in prose""" start="00:12:38.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and interspersing it with code.""" start="00:12:42.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, it's the inverse of code,""" start="00:12:43.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""in which you intersperse comments, [here]""" start="00:12:47.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""you write prose, and then you intersperse code""" start="00:12:49.374" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""where as needed.""" start="00:12:51.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Tangle is implicitly defined up at the higher level""" start="00:12:54.920" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""in this property block right here,""" start="00:12:58.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""which I will talk about in a little bit.""" start="00:12:59.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""But if you want to see what properties""" start="00:13:02.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""are available at any given time,""" start="00:13:04.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""you can hit `org-babel-view-src-block-info`""" start="00:13:07.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""right there, and you can see that tangle is enabled.""" start="00:13:10.140" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""All of these blocks have the exact same tangle.""" start="00:13:14.274" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""If I run and see what it is, it's just going to""" start="00:13:16.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""write to this directory to `go-batsy.ino`.""" start="00:13:20.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""`org-babel-tangle` is going to go ahead""" start="00:13:23.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and tangle all these source code blocks,""" start="00:13:28.920" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and I can go ahead and look at my file""" start="00:13:30.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and here it is.""" start="00:13:33.174" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This is the full Arduino file""" start="00:13:34.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that was generated from there.""" start="00:13:36.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I start writing code here,""" start="00:13:37.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and I'm basically doing it in a prose way.""" start="00:13:40.807" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""As I'm thinking about it,""" start="00:13:43.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I write down what I'm going to do.""" start="00:13:44.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now these braces, we haven't seen these before.""" start="00:13:46.080" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""This is an aspect of Org called `noweb`,""" start="00:13:49.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""which again is not too much of a""" start="00:13:52.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""templating system too.""" start="00:13:55.374" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""But it does one thing, which is insert code,""" start="00:13:56.400" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""which turns out to be enough.""" start="00:13:58.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, this right here basically says,""" start="00:14:00.200" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""take that block with that exact name""" start="00:14:03.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and just insert here.""" start="00:14:08.507" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""If you want to see exactly what a block expands to,""" start="00:14:09.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""you're going to come in here.""" start="00:14:13.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""You're going to run `org-babel-expand-src-block`,""" start="00:14:15.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and there we go. That's what this block expands to.""" start="00:14:18.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""That's what all those places""" start="00:14:21.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""of this little bits and pieces expand to.""" start="00:14:22.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, that becomes really useful, and notice""" start="00:14:24.807" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""basically we just take these little blocks""" start="00:14:28.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that are not going to be tangled directly""" start="00:14:29.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""but it will be in this other block.""" start="00:14:32.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And we turn off their tangling.""" start="00:14:33.920" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""Now that you have some sort of tangling,""" start="00:14:38.074" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""you want to be able to interact with those files""" start="00:14:40.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that are written to that directory.""" start="00:14:42.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, right here I have an area""" start="00:14:46.707" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""where I can do things like run a compiler.""" start="00:14:48.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Now what does that compiler do?""" start="00:14:52.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Well, this right here references""" start="00:14:55.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""a source code block that appears in another Org file.""" start="00:14:57.841" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And I find that when doing these sort of things""" start="00:15:01.874" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""it can be useful to have a little""" start="00:15:04.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""utility Org directory.""" start="00:15:06.007" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, here it is, `org/ci.org`.""" start="00:15:08.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This is just part of my repo.""" start="00:15:10.374" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""We open up, and here we go.""" start="00:15:11.640" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I have a compile function.""" start="00:15:14.140" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Basically, it's doing some stuff""" start="00:15:15.200" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to clean up things correctly.""" start="00:15:18.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""But then using that same `async-shell-command`""" start="00:15:20.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to open things up and a new buffer.""" start="00:15:23.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""In this case, named after""" start="00:15:26.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""whatever heading it was under.""" start="00:15:28.674" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And then we're going to go ahead and inside of it""" start="00:15:31.200" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""run Arduino CLI command to compile,""" start="00:15:35.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and pass that into `watchexec`.""" start="00:15:39.874" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""which is a little Rust program""" start="00:15:43.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that watches inode[??] files for any changes,""" start="00:15:46.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and when they detect them, we will run this.""" start="00:15:49.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""If I were to, for example, add a line here,""" start="00:15:51.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and now run `org-babel-tangle`,""" start="00:15:56.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""you can see watchexec immediately""" start="00:15:59.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""picks it up and restarts it.""" start="00:16:02.400" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""Now it's kind of a pain to remember""" start="00:16:04.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to run `org-babel-tangle` all the time.""" start="00:16:07.475" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, I can come here and click this button.""" start="00:16:09.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""It asks me to execute it there.""" start="00:16:13.807" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And what does that do?""" start="00:16:17.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Here you go. It's just a very simple hyperlink,""" start="00:16:18.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""but to the Elisp protocol.""" start="00:16:23.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""The Elisp protocol just adds a hook that says,""" start="00:16:25.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""whenever a document is saved, run `org-babel-tangle`.""" start="00:16:30.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And now that I've run that, I can go ahead,""" start="00:16:35.107" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""come in here, and delete that.""" start="00:16:37.600" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And look at that. It tangles automatically for me.""" start="00:16:39.307" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Because I don't want to actually have this""" start="00:16:42.340" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""playground script tangle to my real file,""" start="00:16:45.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I need this concept of""" start="00:16:49.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""some sort of workspace directory.""" start="00:16:51.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And a workspace directory""" start="00:16:52.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""what I really want is a variable that is tied to""" start="00:16:54.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""where in my document hierarchy this appears.""" start="00:16:58.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I want a dynamically scoped variable""" start="00:17:02.674" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that's scoped to my document.""" start="00:17:06.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And you can do that. For example, in this case,""" start="00:17:08.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I have in my properties""" start="00:17:12.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""a key value declared `workspace-directory`,""" start="00:17:15.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[it] goes into a temp directory.""" start="00:17:20.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And here, by running `org-get-entry`""" start="00:17:22.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""starting at the current point,""" start="00:17:24.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""find `workspace-directory`""" start="00:17:25.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""with a second parameter 1.""" start="00:17:27.507" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""You can see down in the minibuffer,""" start="00:17:28.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""goes to `/tmp/go-batsy-playground/`.""" start="00:17:31.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This right here is going to override""" start="00:17:37.174" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""the `workspace-directory` at the top level,""" start="00:17:42.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""which is dot. Dot means here.""" start="00:17:44.307" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""That's what makes sure""" start="00:17:47.607" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that the rest of these tangle to""" start="00:17:48.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that go-batsy file right relevant to here.""" start="00:17:50.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And that does mean that we need""" start="00:17:54.560" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""a little bit more complex thing here.""" start="00:17:55.740" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, we're saying go ahead and `org-entry-get`""" start="00:17:58.207" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""the `workspace-directory`.""" start="00:18:01.760" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""If anyone hasn't seen this syntax,""" start="00:18:04.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""this dash arrow is from the dash.el library,""" start="00:18:06.807" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""which is basically a big library of all""" start="00:18:16.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""the utility functions that you wish""" start="00:18:19.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Emacs Lisp had. They're well-named.""" start="00:18:20.940" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I highly, highly recommend it.""" start="00:18:22.880" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""This is the threading operator.""" start="00:18:24.480" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, we're just basically taking it,""" start="00:18:26.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""getting the `workspace-directory`,""" start="00:18:28.200" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""if it happens to be dot, then we're just going to""" start="00:18:29.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""return the current directory,""" start="00:18:32.307" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""otherwise whatever directory said.""" start="00:18:33.320" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""And then I want to just take a moment""" start="00:18:36.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and look at the rest of this structure.""" start="00:18:39.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, `workspace-directory` we talked about.""" start="00:18:41.280" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""`header-args` if you noticed, none of my""" start="00:18:43.080" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""code blocks for the most part""" start="00:18:46.774" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""have any header arguments.""" start="00:18:48.707" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""You can drop the `header-args` property,""" start="00:18:50.840" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""which is going to be header arguments""" start="00:18:53.174" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""that are added automatically""" start="00:18:55.607" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to all source code blocks under this heading.""" start="00:18:57.840" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""`header-args+`. Well,""" start="00:19:03.407" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""sometimes you don't want to type…""" start="00:19:05.407" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""you have a bunch of args,""" start="00:19:06.540" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""you don't want to type them out""" start="00:19:07.507" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""in this one big line.""" start="00:19:08.240" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""So, you basically are adding a new header-arg""" start="00:19:09.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to the existing list of header.""" start="00:19:13.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And then you can have header-args that are specific""" start="00:19:15.407" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""to certain languages, like, for example,""" start="00:19:18.160" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""this `default-directory` var is going to be set""" start="00:19:20.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""for all Emacs Lisps.""" start="00:19:23.720" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""And for all Arduinos, evaluation will be disabled,""" start="00:19:25.200" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""and tangling will be automatically enabled.""" start="00:19:29.574" video="mainVideo-workflows" id="subtitle"]]
[[!template new="1" text="""These are just some of the workflows that become""" start="00:19:32.440" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""useful when you're actually doing the coding.""" start="00:19:35.307" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[Future George]: Oh, hello again!""" start="00:19:38.320" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Me from the six months from now.""" start="00:19:41.374" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[George]: Cool.""" start="00:19:45.307" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[Future George]: The talk got over, people liked it,""" start="00:19:49.107" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""thought the pacing was all over the place.""" start="00:19:51.000" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[George]: Yeah, I had to cut two thirds of it,""" start="00:19:53.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""going to be filling in those gaps in the Etherpad.""" start="00:19:56.360" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[Future George]: And the editing was uneven, at best.""" start="00:19:59.800" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[George]: I got way better at it""" start="00:20:03.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""as I worked on it, didn't I?""" start="00:20:05.507" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Kdenlive is pretty cool.""" start="00:20:06.680" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""But yeah, I wanted to take a shot at""" start="00:20:09.960" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""something different, and I figured if anyone can""" start="00:20:13.540" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""appreciate trying something different,""" start="00:20:16.040" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""it's EmacsConf, right?""" start="00:20:17.760" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""I hope people found it useful.""" start="00:20:20.120" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""[Future George]: Yeah, some did.""" start="00:20:21.520" video="mainVideo-workflows" id="subtitle"]]
[[!template text="""Oh, I should tell you about the coming Orca war.""" start="00:20:22.600" video="mainVideo-workflows" id="subtitle"]]



Captioner: bhavin192

Questions or comments? Please e-mail [gmauer+emacsconf@gmail.com](mailto:gmauer+emacsconf@gmail.com?subject=Comment%20for%20EmacsConf%202022%20workflows%3A%20Org%20workflows%20for%20developers)


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