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
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
|
<!-- Automatically generated by emacsconf-publish-after-page -->
<div class="transcript transcript-mainVideo"><a name="literate-mainVideo-transcript"></a><h1>Transcript</h1>
<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""Can you believe it's been a decade since I started""" start="00:00:00.000" video="mainVideo-literate" id="subtitle"]]
[[!template text="""pontificating on literate programming?""" start="00:00:09.360" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I am Howard Abrams. In 2015, I spoke at this EmacsConf""" start="00:00:12.359" video="mainVideo-literate" id="subtitle"]]
[[!template text="""where I described my challenges I called Literate DevOps.""" start="00:00:17.543" video="mainVideo-literate" id="subtitle"]]
[[!template text="""The conference wasn't completely virtual, even though I was.""" start="00:00:21.706" video="mainVideo-literate" id="subtitle"]]
[[!template text="""My city of Portland was suffering a citywide electrical outage""" start="00:00:25.635" video="mainVideo-literate" id="subtitle"]]
[[!template text="""and I was without power, so I gave the talk in a corner of my""" start="00:00:29.318" video="mainVideo-literate" id="subtitle"]]
[[!template text="""friend's living room. People online asking questions and""" start="00:00:33.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""wondering about literate programming... I also see comments""" start="00:00:37.440" video="mainVideo-literate" id="subtitle"]]
[[!template text="""explaining why literate programming hasn't caught on in""" start="00:00:41.440" video="mainVideo-literate" id="subtitle"]]
[[!template text="""corporate practice. I often don't engage. I mean, is the""" start="00:00:44.600" video="mainVideo-literate" id="subtitle"]]
[[!template text="""online arguments and chatter over ignorance or""" start="00:00:49.080" video="mainVideo-literate" id="subtitle"]]
[[!template text="""preference? Sure, we're wired differently. I mean, my""" start="00:00:51.600" video="mainVideo-literate" id="subtitle"]]
[[!template text="""favorite programming languages put the parentheses""" start="00:00:56.720" video="mainVideo-literate" id="subtitle"]]
[[!template text="""before the function name.""" start="00:00:59.560" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Literate programming has come a long way""" start="00:01:01.940" video="mainVideo-literate" id="subtitle"]]
[[!template text="""since Knuth proposed it in the 19th century. I feel""" start="00:01:03.801" video="mainVideo-literate" id="subtitle"]]
[[!template text="""it's come a long way just in the last 10 years. Obviously,""" start="00:01:08.520" video="mainVideo-literate" id="subtitle"]]
[[!template text="""this interest is due to Org. I don't think I would bother if""" start="00:01:13.000" video="mainVideo-literate" id="subtitle"]]
[[!template text="""all I had was Knuth's original preprocessor. But since I'm""" start="00:01:16.400" video="mainVideo-literate" id="subtitle"]]
[[!template text="""talking to fellow nerds about an open source project""" start="00:01:21.360" video="mainVideo-literate" id="subtitle"]]
[[!template text="""without corporate backing, let me change the title of my""" start="00:01:24.840" video="mainVideo-literate" id="subtitle"]]
[[!template text="""talk and re-pitch Literate Programming in the 24th and a""" start="00:01:27.920" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Half Century!""" start="00:01:32.920" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Do I still literate?""" start="00:01:35.253" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""People often ask if I still program that way.""" start="00:01:35.253" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I guess they want to know if there's any long-term benefits,""" start="00:01:36.654" video="mainVideo-literate" id="subtitle"]]
[[!template text="""for many of our tools and our workflows, while initially""" start="00:01:42.760" video="mainVideo-literate" id="subtitle"]]
[[!template text="""tantalizing, often don't last. But yes, when I sit down to""" start="00:01:45.920" video="mainVideo-literate" id="subtitle"]]
[[!template text="""write a program, I create a file with an extension of .org.""" start="00:01:51.080" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I guess you can say I program literally.""" start="00:01:57.760" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Let me be transparent. Do I use literate programming during""" start="00:02:03.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""my day job? Yes, but only for personal tools or for initial""" start="00:02:07.360" video="mainVideo-literate" id="subtitle"]]
[[!template text="""investigation. At the end of the sprint, I tangle the file""" start="00:02:12.600" video="mainVideo-literate" id="subtitle"]]
[[!template text="""and git commit that. My personal projects, on the other""" start="00:02:16.760" video="mainVideo-literate" id="subtitle"]]
[[!template text="""hand, are Org files. Since I can't show you the code from""" start="00:02:21.080" video="mainVideo-literate" id="subtitle"]]
[[!template text="""my day job, I'm afraid my example code will have a lot of""" start="00:02:25.680" video="mainVideo-literate" id="subtitle"]]
[[!template text="""parentheses.""" start="00:02:27.840" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I'm sure you won't mind.""" start="00:02:31.160" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I like having my Emacs configuration in Org.""" start="00:02:33.956" video="mainVideo-literate" id="subtitle"]]
[[!template text="""It's pretty bling. It has over 8,000""" start="00:02:37.357" video="mainVideo-literate" id="subtitle"]]
[[!template text="""lines of code. I know, I can hear the screams and gasps over""" start="00:02:40.360" video="mainVideo-literate" id="subtitle"]]
[[!template text="""the network. However, the surrounding prose in Org adds""" start="00:02:44.560" video="mainVideo-literate" id="subtitle"]]
[[!template text="""10,000 lines, and those lines are non-wrapped paragraphs.""" start="00:02:49.440" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I mean, is that large? Sure, we've all worked on""" start="00:02:53.411" video="mainVideo-literate" id="subtitle"]]
[[!template text="""larger, so I guess it's not huge. Come on, it's still""" start="00:02:58.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""significant.""" start="00:03:03.640" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Advantages""" start="00:03:06.332" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""Advantages? Look who I'm talking to. I'm sure""" start="00:03:06.332" video="mainVideo-literate" id="subtitle"]]
[[!template text="""you know the advantages, but indulge me. I feel that one""" start="00:03:09.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""advantage of literate programming, especially with large""" start="00:03:14.280" video="mainVideo-literate" id="subtitle"]]
[[!template text="""code bases, is how you can organize and manage the""" start="00:03:16.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""complexity. Most programming languages tame large bases""" start="00:03:20.280" video="mainVideo-literate" id="subtitle"]]
[[!template text="""by putting code in separate files. While Org can too, with""" start="00:03:24.840" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Org, we can group related functions together under""" start="00:03:29.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""expandable headlines.""" start="00:03:32.280" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Here's one. You can see that""" start="00:03:35.044" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I've got different sections grouped together.""" start="00:03:37.280" video="mainVideo-literate" id="subtitle"]]
[[!template text="""In my original talk, I mentioned how I would attempt to organize""" start="00:03:40.707" video="mainVideo-literate" id="subtitle"]]
[[!template text="""my thoughts before coding. I appreciate how I can look back""" start="00:03:43.760" video="mainVideo-literate" id="subtitle"]]
[[!template text="""at my notes. In my Emacs configuration, I review the prose to""" start="00:03:47.840" video="mainVideo-literate" id="subtitle"]]
[[!template text="""help memorize key bindings.""" start="00:03:53.600" video="mainVideo-literate" id="subtitle"]]
[[!template text="""My section on getting email working with Emacs using""" start="00:03:57.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""notmuch means creating small collections of scripts and""" start="00:04:01.040" video="mainVideo-literate" id="subtitle"]]
[[!template text="""configuration files. I can tangle them all from one Org""" start="00:04:04.080" video="mainVideo-literate" id="subtitle"]]
[[!template text="""file. I like that I can explain each part separately.""" start="00:04:08.200" video="mainVideo-literate" id="subtitle"]]
[[!template text="""You just can't beat having links back to Stack Overflow or""" start="00:04:16.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""that GitHub repo where you stole, I mean, became inspired to""" start="00:04:20.880" video="mainVideo-literate" id="subtitle"]]
[[!template text="""write your code.""" start="00:04:25.520" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Disadvantages""" start="00:04:28.720" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""Literate programming may push the boundaries of our""" start="00:04:28.720" video="mainVideo-literate" id="subtitle"]]
[[!template text="""workflows and revealing some abrasion, but we aren't""" start="00:04:34.280" video="mainVideo-literate" id="subtitle"]]
[[!template text="""solely working with Org. We have the flexibility of a Lisp""" start="00:04:38.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""engine to file down those rough parts. You may have your""" start="00:04:41.240" video="mainVideo-literate" id="subtitle"]]
[[!template text="""concerns. Perhaps you could reach out to me, and with""" start="00:04:45.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""particular issues, maybe we can figure something out.""" start="00:04:48.160" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Here is my list of frictions, and the rest of my talk""" start="00:04:54.240" video="mainVideo-literate" id="subtitle"]]
[[!template text="""demonstrates my answers and my hacks. The goal in literate""" start="00:04:57.440" video="mainVideo-literate" id="subtitle"]]
[[!template text="""programming with Org is that it should not require more""" start="00:05:02.160" video="mainVideo-literate" id="subtitle"]]
[[!template text="""effort than non-literate programming. For instance, I""" start="00:05:05.040" video="mainVideo-literate" id="subtitle"]]
[[!template text="""shouldn't have to type much more than regular programming""" start="00:05:08.680" video="mainVideo-literate" id="subtitle"]]
[[!template text="""to get my code literate. I also shouldn't have to worry about""" start="00:05:12.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""the state between my Org file and the source code. I want""" start="00:05:15.720" video="mainVideo-literate" id="subtitle"]]
[[!template text="""to be able to jump around my code just as easily.""" start="00:05:20.800" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Ease of typing""" start="00:05:24.133" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""Let me explain more. I've created some templates using""" start="00:05:24.133" video="mainVideo-literate" id="subtitle"]]
[[!template text="""yasnippet. Since I was used to the old org-tempo feature,""" start="00:05:28.655" video="mainVideo-literate" id="subtitle"]]
[[!template text="""my habit has all the snippets starting with a""" start="00:05:34.680" video="mainVideo-literate" id="subtitle"]]
[[!template text="""< character. I'm not sure if I should demonstrate all of them""" start="00:05:37.146" video="mainVideo-literate" id="subtitle"]]
[[!template text="""as you may be doing something similar. I like to build on top""" start="00:05:40.760" video="mainVideo-literate" id="subtitle"]]
[[!template text="""of characters to remind me that if I just enter a <s, I""" start="00:05:46.000" video="mainVideo-literate" id="subtitle"]]
[[!template text="""need to put in the language. But if I append a mnemonic, I can""" start="00:05:50.000" video="mainVideo-literate" id="subtitle"]]
[[!template text="""get a full language. Why not do that with a full function""" start="00:05:53.520" video="mainVideo-literate" id="subtitle"]]
[[!template text="""definition? In this case, I'm smooshing one yasnippet""" start="00:05:56.840" video="mainVideo-literate" id="subtitle"]]
[[!template text="""inside another one in order to save myself some typing.""" start="00:06:01.200" video="mainVideo-literate" id="subtitle"]]
[[!template text="""My point here is to pay attention to what slows you down or""" start="00:06:11.680" video="mainVideo-literate" id="subtitle"]]
[[!template text="""hinders you from getting the advantages you want.""" start="00:06:15.160" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Keep tangled code sync'd""" start="00:06:24.720" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""Do you ever forget to tangle your code? You can append this""" start="00:06:24.720" video="mainVideo-literate" id="subtitle"]]
[[!template text="""code to the bottom of your Org file so that it gets tangled""" start="00:06:28.400" video="mainVideo-literate" id="subtitle"]]
[[!template text="""every time you save. I've written a function so I can visit""" start="00:06:31.520" video="mainVideo-literate" id="subtitle"]]
[[!template text="""that tangled file and then return. I've grouped all my""" start="00:06:36.160" video="mainVideo-literate" id="subtitle"]]
[[!template text="""functions together. I've taken a cue from Charles Choi, you""" start="00:06:40.560" video="mainVideo-literate" id="subtitle"]]
[[!template text="""know, kickingvegas, and his Casual feature set. But""" start="00:06:45.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""instead of Transient, I've just made a hydra using""" start="00:06:48.640" video="mainVideo-literate" id="subtitle"]]
[[!template text="""the major-mode-hydra package. Anyway, this allows me to use and""" start="00:06:52.375" video="mainVideo-literate" id="subtitle"]]
[[!template text="""remember my micro-optimizations.""" start="00:06:57.400" video="mainVideo-literate" id="subtitle"]]
[[!template text="""If you set the :comments property to link,""" start="00:07:00.137" video="mainVideo-literate" id="subtitle"]]
[[!template text="""the tangled output is back-connected.""" start="00:07:03.698" video="mainVideo-literate" id="subtitle"]]
[[!template text="""This allows us to edit the tangled code and have it update the""" start="00:07:07.000" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Org file. Personally, I don't like this. My source of truth""" start="00:07:11.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""is the Org file, and I tangle as a one-way diode.""" start="00:07:16.880" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Code evaluation""" start="00:07:22.501" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""Often a block of code will reference a variable""" start="00:07:22.501" video="mainVideo-literate" id="subtitle"]]
[[!template text="""or call a function to find in another block of code.""" start="00:07:25.604" video="mainVideo-literate" id="subtitle"]]
[[!template text="""In my original literate DevOps talk,""" start="00:07:29.047" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I discussed how to use the output from one block into""" start="00:07:31.509" video="mainVideo-literate" id="subtitle"]]
[[!template text="""another block by naming the first block and referencing it""" start="00:07:34.520" video="mainVideo-literate" id="subtitle"]]
[[!template text="""with a :var for the second. However, if all the blocks use the""" start="00:07:37.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""same language, you can use sessions, which create a""" start="00:07:42.160" video="mainVideo-literate" id="subtitle"]]
[[!template text="""persistent REPL behind the scenes. Let's evaluate the""" start="00:07:46.040" video="mainVideo-literate" id="subtitle"]]
[[!template text="""blocks of Python code in this file.""" start="00:07:51.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""The evaluation created a Python REPL. It's available in""" start="00:07:53.200" video="mainVideo-literate" id="subtitle"]]
[[!template text="""another buffer. This buffer matches the name of the""" start="00:08:00.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""session, but with surrounding asterisks. Evaluating a""" start="00:08:04.280" video="mainVideo-literate" id="subtitle"]]
[[!template text="""code block sends it into the REPL, and now I can work with my""" start="00:08:07.960" video="mainVideo-literate" id="subtitle"]]
[[!template text="""code blocks interactively. (That's not quite right.)""" start="00:08:11.400" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Has that block been eval'd?""" start="00:08:19.960" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""I primarily hack on Emacs Lisp, and textual changes to""" start="00:08:19.960" video="mainVideo-literate" id="subtitle"]]
[[!template text="""variables, functions, or macros--unless you habitually""" start="00:08:24.040" video="mainVideo-literate" id="subtitle"]]
[[!template text="""type C-c C-c--may not represent the state of your""" start="00:08:28.200" video="mainVideo-literate" id="subtitle"]]
[[!template text="""machine. A similar effect happens in any language that""" start="00:08:31.680" video="mainVideo-literate" id="subtitle"]]
[[!template text="""uses sessions. Sure, I can move the point to a block and""" start="00:08:35.440" video="mainVideo-literate" id="subtitle"]]
[[!template text="""evaluate, but I have three functions that allow me to""" start="00:08:39.320" video="mainVideo-literate" id="subtitle"]]
[[!template text="""evaluate all blocks in a buffer or all blocks in a subtree,""" start="00:08:42.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""or I can, without moving the point, evaluate any block I see.""" start="00:08:44.735" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Now, this function here evaluates all blocks in a buffer.""" start="00:08:50.200" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Someone mentioned calling this function when you first""" start="00:08:54.920" video="mainVideo-literate" id="subtitle"]]
[[!template text="""load a file. I'm not sure that's a good policy. I mean, have""" start="00:08:58.280" video="mainVideo-literate" id="subtitle"]]
[[!template text="""you not written a bug?""" start="00:09:02.360" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Evaluating code in a subtree""" start="00:09:05.239" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""Since this function right here""" start="00:09:05.239" video="mainVideo-literate" id="subtitle"]]
[[!template text="""evaluates only visible blocks, we can limit what Emacs""" start="00:09:08.560" video="mainVideo-literate" id="subtitle"]]
[[!template text="""evaluates to a single Org mode section. For instance, with""" start="00:09:12.040" video="mainVideo-literate" id="subtitle"]]
[[!template text="""the cursor in one section, I can evaluate just the blocks in""" start="00:09:18.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""that header section.""" start="00:09:23.760" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Evaluating code from a distance""" start="00:09:26.872" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""If I can see a block, why clumsily""" start="00:09:26.872" video="mainVideo-literate" id="subtitle"]]
[[!template text="""navigate to it when I can extend the avy project to just jump to""" start="00:09:29.400" video="mainVideo-literate" id="subtitle"]]
[[!template text="""it? For instance, let's pull this file up. I can jump to any of""" start="00:09:33.080" video="mainVideo-literate" id="subtitle"]]
[[!template text="""the four blocks.""" start="00:09:40.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I think that's quite slick. Now why navigate to a code block""" start="00:09:41.640" video="mainVideo-literate" id="subtitle"]]
[[!template text="""solely to evaluate it? Yes, this is a terrible example, but""" start="00:09:50.320" video="mainVideo-literate" id="subtitle"]]
[[!template text="""these three blocks set a variable to different values. So""" start="00:09:55.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""without moving the point, I can evaluate any one of them.""" start="00:09:59.680" video="mainVideo-literate" id="subtitle"]]
[[!template text="""To be honest, the reason why I wrote this is because I often""" start="00:10:02.600" video="mainVideo-literate" id="subtitle"]]
[[!template text="""forget to evaluate a block after editing it. I've moved on,""" start="00:10:09.720" video="mainVideo-literate" id="subtitle"]]
[[!template text="""and I just don't want to jump back. Now, I can just evaluate""" start="00:10:14.000" video="mainVideo-literate" id="subtitle"]]
[[!template text="""from a distance. I apologize for the previous terrible""" start="00:10:17.840" video="mainVideo-literate" id="subtitle"]]
[[!template text="""examples, but I'm quite pleased with this feature.""" start="00:10:22.360" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Navigating by headers""" start="00:10:26.020" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""As I mentioned earlier, in a large code base, we organize code by""" start="00:10:26.020" video="mainVideo-literate" id="subtitle"]]
[[!template text="""library or module, and each file contains a class composed""" start="00:10:30.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""of methods, functions, variables, fields, et cetera.""" start="00:10:33.840" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Literate programming in Org files allows me to add a""" start="00:10:37.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""semantic organization layer where I can group related""" start="00:10:40.000" video="mainVideo-literate" id="subtitle"]]
[[!template text="""concepts under headlines. Now, while this isn't specific""" start="00:10:43.160" video="mainVideo-literate" id="subtitle"]]
[[!template text="""to literate programming, I wrote a little user interface to""" start="00:10:46.920" video="mainVideo-literate" id="subtitle"]]
[[!template text="""allow me to jump to any heading in any Org file""" start="00:10:50.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""in a particular project.""" start="00:10:54.297" video="mainVideo-literate" id="subtitle"]]
[[!template text="""These are the headings in my Emacs configuration project.""" start="00:10:57.680" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Notice the file name beforehand, before the colon""" start="00:11:02.880" video="mainVideo-literate" id="subtitle"]]
[[!template text="""character. The header name and its parent headers are""" start="00:11:06.560" video="mainVideo-literate" id="subtitle"]]
[[!template text="""after. Let me search for the LSP sections. Maybe I only want""" start="00:11:09.760" video="mainVideo-literate" id="subtitle"]]
[[!template text="""the one for Python. Now I use ripgrep to search the files and""" start="00:11:14.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""then some Lisp to parse the output. Unless someone has""" start="00:11:20.040" video="mainVideo-literate" id="subtitle"]]
[[!template text="""already done this, I should package this up on MELPA.""" start="00:11:24.560" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Navigating by function names""" start="00:11:26.794" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""What about jumping directly to the definition of a function,""" start="00:11:26.794" video="mainVideo-literate" id="subtitle"]]
[[!template text="""variable, or what have you? We can use Emacs's built-in xref""" start="00:11:32.200" video="mainVideo-literate" id="subtitle"]]
[[!template text="""library, but these functions don't understand that the""" start="00:11:36.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""source code is in Org files. When I started using Emacs""" start="00:11:39.880" video="mainVideo-literate" id="subtitle"]]
[[!template text="""30-something years ago, I would pre-index my source into""" start="00:11:45.320" video="mainVideo-literate" id="subtitle"]]
[[!template text="""tag files, but the dumb-jump project uses the newfangled and""" start="00:11:49.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""faster text search programs like ripgrep to find a symbol in""" start="00:11:53.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""real time. I followed this pattern and wrote an extension""" start="00:11:58.320" video="mainVideo-literate" id="subtitle"]]
[[!template text="""to the xref API. Now, I want to jump around my code from both""" start="00:12:02.320" video="mainVideo-literate" id="subtitle"]]
[[!template text="""code block or in the surrounding prose. I'm sure it""" start="00:12:08.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""comes as no surprise that my presentation is just an Org""" start="00:12:14.520" video="mainVideo-literate" id="subtitle"]]
[[!template text="""file. Let's suppose my cursor is on this symbol. I wrote this""" start="00:12:18.200" video="mainVideo-literate" id="subtitle"]]
[[!template text="""function for this demonstration. We can jump to the""" start="00:12:23.920" video="mainVideo-literate" id="subtitle"]]
[[!template text="""definition and I can jump back.""" start="00:12:28.080" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Notice it jumped into an Org file and back out. References,""" start="00:12:30.760" video="mainVideo-literate" id="subtitle"]]
[[!template text="""unlike definitions, is where something is defined and""" start="00:12:37.640" video="mainVideo-literate" id="subtitle"]]
[[!template text="""where it's used. Well, you know how the xref system works.""" start="00:12:42.280" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Here, I can jump to the definition or where it's""" start="00:12:46.920" video="mainVideo-literate" id="subtitle"]]
[[!template text="""used. Of course, and jump back. I think this is cool. This""" start="00:12:52.680" video="mainVideo-literate" id="subtitle"]]
[[!template text="""should be a nifty package on MELPA. But my code is specific to""" start="00:12:59.520" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Lisp, and I'm not completely sure how to make it general. For""" start="00:13:04.320" video="mainVideo-literate" id="subtitle"]]
[[!template text="""instance, what is a symbol? If you know the language, this is""" start="00:13:08.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""obvious. But what should the language be when your cursor is""" start="00:13:13.400" video="mainVideo-literate" id="subtitle"]]
[[!template text="""in the prose of an Org file? Python only supports sequences""" start="00:13:17.680" video="mainVideo-literate" id="subtitle"]]
[[!template text="""of alphanumeric and underscores, but in Lisp, a symbol can""" start="00:13:22.640" video="mainVideo-literate" id="subtitle"]]
[[!template text="""be almost any character sequence. I've been stewing on how""" start="00:13:25.560" video="mainVideo-literate" id="subtitle"]]
[[!template text="""to do this. I have ideas like prompting during the first""" start="00:13:30.400" video="mainVideo-literate" id="subtitle"]]
[[!template text="""query or scanning the language based on the nearest code""" start="00:13:34.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""block. I think I'm babbling.""" start="00:13:37.720" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Why literate programming?""" start="00:13:40.480" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""In true geek fashion, I dived into the details before""" start="00:13:40.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""answering some better questions. In my original Literate""" start="00:13:47.200" video="mainVideo-literate" id="subtitle"]]
[[!template text="""DevOps talk, I explained the advantages of initially""" start="00:13:52.080" video="mainVideo-literate" id="subtitle"]]
[[!template text="""writing down your thoughts, your plans, goals... the""" start="00:13:55.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""user requirements. But what do you do with all that luscious""" start="00:13:58.960" video="mainVideo-literate" id="subtitle"]]
[[!template text="""prose afterwards? Well, you do the same thing you do to your""" start="00:14:02.880" video="mainVideo-literate" id="subtitle"]]
[[!template text="""initial code. You refactor that prose.""" start="00:14:06.360" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Just because the tech surrounding your code is now a""" start="00:14:09.280" video="mainVideo-literate" id="subtitle"]]
[[!template text="""first-class citizen doesn't excuse bad code. You want""" start="00:14:14.760" video="mainVideo-literate" id="subtitle"]]
[[!template text="""something more from both your code and your prose.""" start="00:14:18.800" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""LP prose isn't comments""" start="00:14:23.166" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""The prose of your literate program isn't""" start="00:14:23.166" video="mainVideo-literate" id="subtitle"]]
[[!template text="""just regurgitation of the code in the block.""" start="00:14:25.587" video="mainVideo-literate" id="subtitle"]]
[[!template text="""You want something more helpful.""" start="00:14:28.668" video="mainVideo-literate" id="subtitle"]]
[[!template text="""You're really writing a research paper to yourself.""" start="00:14:31.528" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I know what you're thinking. You've seen my Git repos.""" start="00:14:35.737" video="mainVideo-literate" id="subtitle"]]
[[!template text="""I'm guilty and not always the best example.""" start="00:14:38.578" video="mainVideo-literate" id="subtitle"]]
[[!template text="""However, I do get great joy""" start="00:14:41.859" video="mainVideo-literate" id="subtitle"]]
[[!template text="""when I see someone ask about something in Emacs""" start="00:14:44.560" video="mainVideo-literate" id="subtitle"]]
[[!template text="""and my response is little more than a link""" start="00:14:48.681" video="mainVideo-literate" id="subtitle"]]
[[!template text="""to my online repo that I've rendered as a website.""" start="00:14:51.042" video="mainVideo-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Summary""" start="00:14:55.800" video="mainVideo-literate" id="subtitle"]]</div>[[!template text="""I'm out of time. I hope this has been interesting""" start="00:14:55.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""philosophically as well as practically, as I think""" start="00:15:01.200" video="mainVideo-literate" id="subtitle"]]
[[!template text="""literate programming is the cat's meow. I'm afraid this""" start="00:15:04.360" video="mainVideo-literate" id="subtitle"]]
[[!template text="""summary slide is about my home-baked solutions that fit my""" start="00:15:08.560" video="mainVideo-literate" id="subtitle"]]
[[!template text="""needs, but hopefully you can recognize your pain points and""" start="00:15:11.880" video="mainVideo-literate" id="subtitle"]]
[[!template text="""address them. If you don't need my Literate""" start="00:15:15.120" video="mainVideo-literate" id="subtitle"]]
[[!template text="""DevOps-specific techniques for connecting code blocks, I""" start="00:15:17.840" video="mainVideo-literate" id="subtitle"]]
[[!template text="""suggest using sessions by default. I highly recommend""" start="00:15:21.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""looking at your workflow and writing snippets to give you""" start="00:15:25.800" video="mainVideo-literate" id="subtitle"]]
[[!template text="""less typing for Org blocks. I now jump by headlines in my""" start="00:15:28.400" video="mainVideo-literate" id="subtitle"]]
[[!template text="""projects, but extending xref to support Org files made""" start="00:15:33.160" video="mainVideo-literate" id="subtitle"]]
[[!template text="""literate programming as easy as programming the""" start="00:15:37.480" video="mainVideo-literate" id="subtitle"]]
[[!template text="""old-fashioned way. I do need to make it more general to put up""" start="00:15:40.160" video="mainVideo-literate" id="subtitle"]]
[[!template text="""on MELPA, though. Thanks for watching.""" start="00:15:44.320" video="mainVideo-literate" id="subtitle"]]
[[!template text="""Happy hacking, my friends.""" start="00:15:47.723" video="mainVideo-literate" id="subtitle"]]
</div>
Captioner: sachac
<div class="transcript transcript-qanda"><a name="literate-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
[[!template text="""I'm doing great. Good to hear from you guys. Yeah, I mean,""" start="00:00:00.000" video="qanda-literate" id="subtitle"]]
[[!template text="""you've been a regular of the show, I would say, for quite a""" start="00:00:04.840" video="qanda-literate" id="subtitle"]]
[[!template text="""while, and it's good. I really like the retrospective that""" start="00:00:07.960" video="qanda-literate" id="subtitle"]]
[[!template text="""you did the first time you attended EmacsConf. And when was""" start="00:00:11.400" video="qanda-literate" id="subtitle"]]
[[!template text="""it? Was it 2015? I can't actually remember. 2015 was when I""" start="00:00:14.960" video="qanda-literate" id="subtitle"]]
[[!template text="""presented that, but I did an earlier talk the year before. So""" start="00:00:18.760" video="qanda-literate" id="subtitle"]]
[[!template text="""yeah, that's why it's kind of thing. It's like, wow, it's""" start="00:00:22.320" video="qanda-literate" id="subtitle"]]
[[!template text="""been a decade. It's been a while. Yeah, and I'm glad that you""" start="00:00:25.480" video="qanda-literate" id="subtitle"]]
[[!template text="""are in a much better recording situation than you were in""" start="00:00:31.280" video="qanda-literate" id="subtitle"]]
[[!template text="""2015 at the back of your colleague's house. It's good to see""" start="00:00:35.560" video="qanda-literate" id="subtitle"]]
[[!template text="""you at your own place. Well, it's also nice to pre-record and""" start="00:00:39.440" video="qanda-literate" id="subtitle"]]
[[!template text="""then just share. Yeah, I mean, that's why we keep talking""" start="00:00:44.360" video="qanda-literate" id="subtitle"]]
[[!template text="""about pre-recording. You know, when we really pushed""" start="00:00:48.240" video="qanda-literate" id="subtitle"]]
[[!template text="""pre-recordings, I think it was five years ago when we""" start="00:00:51.520" video="qanda-literate" id="subtitle"]]
[[!template text="""started, people were not really liking it. They thought,""" start="00:00:53.760" video="qanda-literate" id="subtitle"]]
[[!template text="""oh, but most conferences are just asking you to come and""" start="00:00:57.680" video="qanda-literate" id="subtitle"]]
[[!template text="""chat. And, you know, I don't need to do the pesky""" start="00:01:00.040" video="qanda-literate" id="subtitle"]]
[[!template text="""pre-recording. But now, and especially for you regulars,""" start="00:01:02.920" video="qanda-literate" id="subtitle"]]
[[!template text="""you're really starting to realize that pre-recordings are""" start="00:01:06.320" video="qanda-literate" id="subtitle"]]
[[!template text="""actually amazing for everyone. You're less stressed on the""" start="00:01:08.360" video="qanda-literate" id="subtitle"]]
[[!template text="""day of the conference. We, the organizers, are way less""" start="00:01:11.280" video="qanda-literate" id="subtitle"]]
[[!template text="""stressed. So it's a win-win scenario for absolutely""" start="00:01:14.200" video="qanda-literate" id="subtitle"]]
[[!template text="""everyone in the equation. Okay, so there's some""" start="00:01:16.520" video="qanda-literate" id="subtitle"]]
[[!template text="""confirmation bias at work, but I'm not really arguing with""" start="00:01:19.360" video="qanda-literate" id="subtitle"]]
[[!template text="""what Leo says for the record. It may be that we are just that""" start="00:01:22.520" video="qanda-literate" id="subtitle"]]
[[!template text="""this stoked that we're lying to ourselves by the""" start="00:01:27.640" video="qanda-literate" id="subtitle"]]
[[!template text="""opportunity that we have to chat with each of you. Sure.""" start="00:01:30.760" video="qanda-literate" id="subtitle"]]
[[!template text="""Sure. Sure. I have really appreciated all of the, the""" start="00:01:33.960" video="qanda-literate" id="subtitle"]]
[[!template text="""transcripts. It's been great that, you know, to be able to""" start="00:01:38.760" video="qanda-literate" id="subtitle"]]
[[!template text="""read and copy and paste and all that kind of thing. Yeah, it's""" start="00:01:43.560" video="qanda-literate" id="subtitle"]]
[[!template text="""great. So yeah, let's answer some questions here.""" start="00:01:46.520" video="qanda-literate" id="subtitle"]]
[[!template text="""Let's see. Yeah, just feel free to jump onto the Etherpad and""" start="00:01:49.960" video="qanda-literate" id="subtitle"]]
[[!template text="""just drop on the questions. I'll keep answering them all day""" start="00:01:58.160" video="qanda-literate" id="subtitle"]]
[[!template text="""kind of thing and get better answers as we go along.""" start="00:02:01.240" video="qanda-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: What's the largest code base you've ever tackled with the literate approach (esp. Emacs + Org-mode)?""" start="00:02:07.400" video="qanda-literate" id="subtitle"]]</div>[[!template text="""So yeah, the first question here is, what's my largest code base?""" start="00:02:07.400" video="qanda-literate" id="subtitle"]]
[[!template text="""I kind of touched it in my presentation. However, I think""" start="00:02:12.440" video="qanda-literate" id="subtitle"]]
[[!template text="""someone just went through and did a better count than it""" start="00:02:18.360" video="qanda-literate" id="subtitle"]]
[[!template text="""looks like. a little bit more. So""" start="00:02:22.440" video="qanda-literate" id="subtitle"]]
[[!template text="""as I joked about in the video, we've all worked on larger code""" start="00:02:27.880" video="qanda-literate" id="subtitle"]]
[[!template text="""bases, but that's still, it's kind of significant. So it's""" start="00:02:32.960" video="qanda-literate" id="subtitle"]]
[[!template text="""not, so yeah, anyway. So let's talk a little bit about""" start="00:02:36.800" video="qanda-literate" id="subtitle"]]
[[!template text="""searching for functions here. If you've got your functions""" start="00:02:43.680" video="qanda-literate" id="subtitle"]]
[[!template text="""in your code or code block, well, you can search for the""" start="00:02:49.520" video="qanda-literate" id="subtitle"]]
[[!template text="""descriptions, you know, as long as you've evaluated it. And""" start="00:02:53.680" video="qanda-literate" id="subtitle"]]
[[!template text="""so that wasn't so much of a problem, but I did want to like look""" start="00:02:59.320" video="qanda-literate" id="subtitle"]]
[[!template text="""at the commentary around any function that I would define.""" start="00:03:04.520" video="qanda-literate" id="subtitle"]]
[[!template text="""And that's where, yeah, you know, the C-x or the""" start="00:03:07.840" video="qanda-literate" id="subtitle"]]
[[!template text="""C-f to define that function and display it. It won't""" start="00:03:14.040" video="qanda-literate" id="subtitle"]]
[[!template text="""pull out the literate stuff around it, obviously, it'll""" start="00:03:18.920" video="qanda-literate" id="subtitle"]]
[[!template text="""only do the doc header. But if you could search for it and find""" start="00:03:22.280" video="qanda-literate" id="subtitle"]]
[[!template text="""it quick, then it might be just as useful. And I guess that's""" start="00:03:27.160" video="qanda-literate" id="subtitle"]]
[[!template text="""why I started getting into seeing if I can't tie that into the""" start="00:03:30.560" video="qanda-literate" id="subtitle"]]
[[!template text="""X ref. you know, just the standard ways. My first part, I""" start="00:03:36.080" video="qanda-literate" id="subtitle"]]
[[!template text="""noticed that evil has a different way of searching through""" start="00:03:40.840" video="qanda-literate" id="subtitle"]]
[[!template text="""for looking for code definitions. That was my first foray""" start="00:03:45.800" video="qanda-literate" id="subtitle"]]
[[!template text="""into it. It's like, oh, that's not a bad idea. Let's hook it up""" start="00:03:51.000" video="qanda-literate" id="subtitle"]]
[[!template text="""under, you know, in the standard way.""" start="00:03:53.960" video="qanda-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Have you ever used org-transclusion?""" start="00:03:58.080" video="qanda-literate" id="subtitle"]]</div>[[!template text="""Let's see. Have I ever used org-transclusion?""" start="00:03:58.080" video="qanda-literate" id="subtitle"]]
[[!template text="""No, I haven't, but I think I want to""" start="00:04:02.280" video="qanda-literate" id="subtitle"]]
[[!template text="""take a look at it. I haven't heard of it before.""" start="00:04:05.320" video="qanda-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: What is your usage of dynamic blocks in such workflows?""" start="00:04:08.440" video="qanda-literate" id="subtitle"]]</div>[[!template text="""Let's see. What's my usage of dynamic blocks in my""" start="00:04:08.440" video="qanda-literate" id="subtitle"]]
[[!template text="""workflows? You know, that's a real good question. I haven't""" start="00:04:16.520" video="qanda-literate" id="subtitle"]]
[[!template text="""really used them a lot in all of my workflows, but yeah, it's""" start="00:04:21.440" video="qanda-literate" id="subtitle"]]
[[!template text="""an interesting, you know, we always start.""" start="00:04:26.320" video="qanda-literate" id="subtitle"]]
[[!template text="""At first, all""" start="00:04:29.440" video="qanda-literate" id="subtitle"]]
[[!template text="""we're doing is just taking a few notes, then we start""" start="00:04:31.000" video="qanda-literate" id="subtitle"]]
[[!template text="""organizing, then we've got links, and then we're writing""" start="00:04:33.680" video="qanda-literate" id="subtitle"]]
[[!template text="""code blocks, and then agendas, and table, you know, we keep""" start="00:04:36.040" video="qanda-literate" id="subtitle"]]
[[!template text="""building up on it.""" start="00:04:39.520" video="qanda-literate" id="subtitle"]]
[[!template text="""I guess I haven't really added that to""" start="00:04:41.000" video="qanda-literate" id="subtitle"]]
[[!template text="""my workflow, but maybe I'll have to come back""" start="00:04:44.400" video="qanda-literate" id="subtitle"]]
[[!template text="""and report on that.""" start="00:04:46.979" video="qanda-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Is the minibuffer being deliberately hidden in this video?""" start="00:04:48.840" video="qanda-literate" id="subtitle"]]</div>[[!template text="""Is the mini buffer being deliberately hidden in my""" start="00:04:48.840" video="qanda-literate" id="subtitle"]]
[[!template text="""video? Not deliberately. I recorded it first and""" start="00:04:51.600" video="qanda-literate" id="subtitle"]]
[[!template text="""accidentally not clipped the video and turned that all off.""" start="00:04:57.880" video="qanda-literate" id="subtitle"]]
[[!template text="""So I went through and started fixing all of it. But yeah, so""" start="00:05:03.760" video="qanda-literate" id="subtitle"]]
[[!template text="""you'll notice the mini buffer kind of comes and goes in the""" start="00:05:07.360" video="qanda-literate" id="subtitle"]]
[[!template text="""video. Sorry about that.""" start="00:05:10.760" video="qanda-literate" id="subtitle"]]
[[!template text="""So yeah, it wasn't intentional at all.""" start="00:05:12.445" video="qanda-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: What's your take on Emacs+Org vs. Jupyter notebooks (for interactive programming)?""" start="00:05:17.341" video="qanda-literate" id="subtitle"]]</div>[[!template text="""What's my take on Emacs Org versus Jupyter? That's a real""" start="00:05:17.341" video="qanda-literate" id="subtitle"]]
[[!template text="""good question. I've been toying about seeing if I could do""" start="00:05:21.840" video="qanda-literate" id="subtitle"]]
[[!template text="""everything that some people do with Jupyter notebooks in""" start="00:05:29.520" video="qanda-literate" id="subtitle"]]
[[!template text="""order. I don't need to do it as much because I'm still kind of""" start="00:05:32.480" video="qanda-literate" id="subtitle"]]
[[!template text="""doing a lot of list programming and a lot of my DevOps, which""" start="00:05:36.080" video="qanda-literate" id="subtitle"]]
[[!template text="""is a lot of shell work and a lot of Python. Most of the Jupyter""" start="00:05:40.320" video="qanda-literate" id="subtitle"]]
[[!template text="""notebooks, they automatically include a lot of things in""" start="00:05:45.560" video="qanda-literate" id="subtitle"]]
[[!template text="""from either Julia or Python, like NumPy and all the dynamic""" start="00:05:49.640" video="qanda-literate" id="subtitle"]]
[[!template text="""stuff that's going on there. Since it has a server,""" start="00:05:56.680" video="qanda-literate" id="subtitle"]]
[[!template text="""it seems like it's running a lot more stuff and then just""" start="00:06:01.440" video="qanda-literate" id="subtitle"]]
[[!template text="""shipping it back off into the web app. That has been the""" start="00:06:07.440" video="qanda-literate" id="subtitle"]]
[[!template text="""biggest challenge as I've tried to kind of duplicate that. I""" start="00:06:10.720" video="qanda-literate" id="subtitle"]]
[[!template text="""don't really know NumPy and all the math stuff and that sort""" start="00:06:16.240" video="qanda-literate" id="subtitle"]]
[[!template text="""of stuff that well. So trying to do like matrix""" start="00:06:20.440" video="qanda-literate" id="subtitle"]]
[[!template text="""multiplications and that kind of thing that seemed to be""" start="00:06:25.040" video="qanda-literate" id="subtitle"]]
[[!template text="""pretty easy in the Jupyter, it's not very easy in Org. I've""" start="00:06:27.360" video="qanda-literate" id="subtitle"]]
[[!template text="""attempted to kind of work with Julia and the Julia support""" start="00:06:33.120" video="qanda-literate" id="subtitle"]]
[[!template text="""for Org is really limited it seems. That's the, So, yeah,""" start="00:06:36.640" video="qanda-literate" id="subtitle"]]
[[!template text="""there's some improvements we could probably make. So, I""" start="00:06:45.760" video="qanda-literate" id="subtitle"]]
[[!template text="""think if somebody is comfortable with Jupiter, and that""" start="00:06:49.200" video="qanda-literate" id="subtitle"]]
[[!template text="""seems to work, you may have to stay there. I don't know how""" start="00:06:53.160" video="qanda-literate" id="subtitle"]]
[[!template text="""easy. I would be curious to try to see what we could do as a""" start="00:06:59.040" video="qanda-literate" id="subtitle"]]
[[!template text="""community to kind of make that transition a lot easier.""" start="00:07:04.680" video="qanda-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Do you think any programming language is more suited to literate programming than another?""" start="00:07:07.800" video="qanda-literate" id="subtitle"]]</div>[[!template text="""Do you think any programming language""" start="00:07:07.800" video="qanda-literate" id="subtitle"]]
[[!template text="""is more suited to literate""" start="00:07:12.417" video="qanda-literate" id="subtitle"]]
[[!template text="""programming than another? Hey, that's a real good""" start="00:07:13.560" video="qanda-literate" id="subtitle"]]
[[!template text="""question. A lot of mine is with Emacs Lisp, and obviously""" start="00:07:16.960" video="qanda-literate" id="subtitle"]]
[[!template text="""that's a first-class citizen in Emacs. Go figure, right? So""" start="00:07:22.360" video="qanda-literate" id="subtitle"]]
[[!template text="""that one certainly works. A lot depends on the support in the""" start="00:07:27.640" video="qanda-literate" id="subtitle"]]
[[!template text="""OB version for the Babel work. Python is really well""" start="00:07:33.520" video="qanda-literate" id="subtitle"]]
[[!template text="""supported, and yeah, Emacs Lisp. Others, Shell, you know,""" start="00:07:38.200" video="qanda-literate" id="subtitle"]]
[[!template text="""it works, but it's hard to get both the values, the variables""" start="00:07:45.600" video="qanda-literate" id="subtitle"]]
[[!template text="""out of the environment variables into your thing. So most""" start="00:07:50.440" video="qanda-literate" id="subtitle"]]
[[!template text="""everything is just with the results of output. So, you know,""" start="00:07:53.480" video="qanda-literate" id="subtitle"]]
[[!template text="""some languages aren't quite as good as others for sure. I""" start="00:07:58.960" video="qanda-literate" id="subtitle"]]
[[!template text="""would love to see better support for more interesting""" start="00:08:03.080" video="qanda-literate" id="subtitle"]]
[[!template text="""languages, especially ones that are compiled. I've been""" start="00:08:06.880" video="qanda-literate" id="subtitle"]]
[[!template text="""dabbling with Rust and like, yeah, what can we do to have Rust""" start="00:08:10.440" video="qanda-literate" id="subtitle"]]
[[!template text="""more iterative as well? So...""" start="00:08:16.640" video="qanda-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Do you use inline org function calls and org babel library and such?""" start="00:08:21.560" video="qanda-literate" id="subtitle"]]</div>[[!template text="""Do you use inline org function calls in Org Babel library? So""" start="00:08:21.560" video="qanda-literate" id="subtitle"]]
[[!template text="""I used to do a lot of Org Babel libraries to kind of share""" start="00:08:29.160" video="qanda-literate" id="subtitle"]]
[[!template text="""things.""" start="00:08:33.600" video="qanda-literate" id="subtitle"]]
[[!template text="""Yeah. What I. But yeah. Sorry, I'm just kind of thinking""" start="00:08:35.640" video="qanda-literate" id="subtitle"]]
[[!template text="""through here. I've done a lot of it in the past. There were a""" start="00:08:46.400" video="qanda-literate" id="subtitle"]]
[[!template text="""lot of bugs in it. Oh, I don't know, eight years ago when I was""" start="00:08:49.840" video="qanda-literate" id="subtitle"]]
[[!template text="""playing with it. I bet things have improved a lot more and it""" start="00:08:54.920" video="qanda-literate" id="subtitle"]]
[[!template text="""probably saved me a lot more effort. Right now, most of the""" start="00:08:59.360" video="qanda-literate" id="subtitle"]]
[[!template text="""literate devops, the devops kind of stuff that I'm doing, is""" start="00:09:04.240" video="qanda-literate" id="subtitle"]]
[[!template text="""calling a lot of back-end programs and that sort of thing. So""" start="00:09:08.640" video="qanda-literate" id="subtitle"]]
[[!template text="""the Org Babel kind of has limited help in that regard. And as""" start="00:09:14.080" video="qanda-literate" id="subtitle"]]
[[!template text="""far as my Emacs work, well, it's just part of the session. So""" start="00:09:19.360" video="qanda-literate" id="subtitle"]]
[[!template text="""it's going to be available or not. So that hasn't been as""" start="00:09:24.000" video="qanda-literate" id="subtitle"]]
[[!template text="""helpful either. So it's kind of dropped off. But I bet if""" start="00:09:26.760" video="qanda-literate" id="subtitle"]]
[[!template text="""you're using something like, say, Python, it might be a lot""" start="00:09:30.560" video="qanda-literate" id="subtitle"]]
[[!template text="""more helpful.""" start="00:09:34.520" video="qanda-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: How do you handle the cases where org markup may sometimes interfere with some of the code?""" start="00:09:36.970" video="qanda-literate" id="subtitle"]]</div>[[!template text="""Another question, how do you handle the cases""" start="00:09:36.970" video="qanda-literate" id="subtitle"]]
[[!template text="""where markup may sometimes interfere with some of the code""" start="00:09:40.160" video="qanda-literate" id="subtitle"]]
[[!template text="""in places where you can't escape? Oh, okay. All right. Let me""" start="00:09:44.000" video="qanda-literate" id="subtitle"]]
[[!template text="""see if I understand the question correctly.""" start="00:09:50.560" video="qanda-literate" id="subtitle"]]
[[!template text="""When I, like, when I'm making prose, and I'm talking about a""" start="00:09:54.720" video="qanda-literate" id="subtitle"]]
[[!template text="""function that I've written somewhere else, like, oh, I need""" start="00:10:01.760" video="qanda-literate" id="subtitle"]]
[[!template text="""to work on this, or this calls this, and yeah, I'll use the""" start="00:10:04.840" video="qanda-literate" id="subtitle"]]
[[!template text="""tildes or the equal signs on either side to make sure it's.""" start="00:10:09.440" video="qanda-literate" id="subtitle"]]
[[!template text="""that it's clear that it's code. In my xref, when I'm doing a""" start="00:10:14.840" video="qanda-literate" id="subtitle"]]
[[!template text="""thing-at-point so it can go look for that symbol, I do look for""" start="00:10:20.400" video="qanda-literate" id="subtitle"]]
[[!template text="""those things at the end and strip them off so that I can mark it""" start="00:10:27.480" video="qanda-literate" id="subtitle"]]
[[!template text="""up and still search and it's still okay. I'm not sure if""" start="00:10:31.920" video="qanda-literate" id="subtitle"]]
[[!template text="""that's the answer to the question. Yeah, clarifying. I'm""" start="00:10:35.040" video="qanda-literate" id="subtitle"]]
[[!template text="""making prose. I'm talking about a function I've written""" start="00:10:39.360" video="qanda-literate" id="subtitle"]]
[[!template text="""somewhere else. Yeah, yeah, yeah, that is what I'm talking""" start="00:10:41.760" video="qanda-literate" id="subtitle"]]
[[!template text="""about, where a function with tildes on either end, and if I do""" start="00:10:47.320" video="qanda-literate" id="subtitle"]]
[[!template text="""an xref search find for that symbol, it'll strip that off and""" start="00:10:53.280" video="qanda-literate" id="subtitle"]]
[[!template text="""then still look for the function name, so I can still mark it""" start="00:10:57.360" video="qanda-literate" id="subtitle"]]
[[!template text="""correctly.""" start="00:11:01.440" video="qanda-literate" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: You said at the start that literate didn't catch on in corporate DevOps - why not?""" start="00:11:06.220" video="qanda-literate" id="subtitle"]]</div>[[!template text="""You said at the start that literate didn't catch on in""" start="00:11:06.220" video="qanda-literate" id="subtitle"]]
[[!template text="""corporate devops, why not? You know,""" start="00:11:08.440" video="qanda-literate" id="subtitle"]]
[[!template text="""I guess the big thing is not everybody's using Emacs, and I""" start="00:11:12.320" video="qanda-literate" id="subtitle"]]
[[!template text="""don't think anybody would be doing literate programming if""" start="00:11:18.320" video="qanda-literate" id="subtitle"]]
[[!template text="""you didn't have Emacs. I mean, you gotta have org, or it just""" start="00:11:22.360" video="qanda-literate" id="subtitle"]]
[[!template text="""doesn't work that well, right?""" start="00:11:27.880" video="qanda-literate" id="subtitle"]]
[[!template text="""Why not that full stack on Markdown? Yeah, so I often do a lot""" start="00:11:30.800" video="qanda-literate" id="subtitle"]]
[[!template text="""of Markdown. I have got, so I've gone through and make my""" start="00:11:36.360" video="qanda-literate" id="subtitle"]]
[[!template text="""markdown look a lot like org. So my headers are the same size""" start="00:11:44.280" video="qanda-literate" id="subtitle"]]
[[!template text="""as org. When I mark, do the triple back ticks, you know, and""" start="00:11:49.040" video="qanda-literate" id="subtitle"]]
[[!template text="""specify your language, we can now colorize that. So you can""" start="00:11:54.760" video="qanda-literate" id="subtitle"]]
[[!template text="""kind of now have it syntactically marked up. It would be""" start="00:12:00.200" video="qanda-literate" id="subtitle"]]
[[!template text="""interesting if we kind of expanded on Markdown so that I""" start="00:12:05.680" video="qanda-literate" id="subtitle"]]
[[!template text="""could do a C-c twice on it and run that code block.""" start="00:12:11.200" video="qanda-literate" id="subtitle"]]
[[!template text="""That's a real good idea. Maybe we should work on that.""" start="00:12:14.480" video="qanda-literate" id="subtitle"]]
[[!template text="""How does your management of to do's project and tasks""" start="00:12:22.120" video="qanda-literate" id="subtitle"]]
[[!template text="""interact with this literate mindset? I can't believe I'm""" start="00:12:28.040" video="qanda-literate" id="subtitle"]]
[[!template text="""going to do this, but Howard, I'm going to break right in""" start="00:12:31.680" video="qanda-literate" id="subtitle"]]
[[!template text="""there because I just can't. I need to talk about that. So this""" start="00:12:33.880" video="qanda-literate" id="subtitle"]]
[[!template text="""is I bought a domain. And really what I mean is I have this""" start="00:12:37.120" video="qanda-literate" id="subtitle"]]
[[!template text="""domain of somebody get some work done in this area. I'm""" start="00:12:41.800" video="qanda-literate" id="subtitle"]]
[[!template text="""fascinated by this. That's mostly really actually my whole""" start="00:12:45.600" video="qanda-literate" id="subtitle"]]
[[!template text="""comment. But I just wanted to say, indeed, that is something""" start="00:12:48.840" video="qanda-literate" id="subtitle"]]
[[!template text="""maybe we should work on. Well said. I think the idea of having""" start="00:12:52.600" video="qanda-literate" id="subtitle"]]
[[!template text="""something that's full stack baked around Emacs is pretty""" start="00:12:56.600" video="qanda-literate" id="subtitle"]]
[[!template text="""fascinating, just thinking about it as some command line""" start="00:12:59.560" video="qanda-literate" id="subtitle"]]
[[!template text="""tool that we can run to get some work done and then there are""" start="00:13:03.080" video="qanda-literate" id="subtitle"]]
[[!template text="""documents involved and as you know coming back to the kind of""" start="00:13:05.640" video="qanda-literate" id="subtitle"]]
[[!template text="""corporate you know sense of some of the things like there's""" start="00:13:09.240" video="qanda-literate" id="subtitle"]]
[[!template text="""that's that's a little dicey the same way a free software""" start="00:13:12.760" video="qanda-literate" id="subtitle"]]
[[!template text="""project raising money for itself is a little dicey it might""" start="00:13:15.320" video="qanda-literate" id="subtitle"]]
[[!template text="""be a necessary way to get through certain kinds of things and""" start="00:13:19.360" video="qanda-literate" id="subtitle"]]
[[!template text="""like what the corporate side of the world brings to the table""" start="00:13:23.600" video="qanda-literate" id="subtitle"]]
[[!template text="""here in my mind is that idea of I've got a formal process, like""" start="00:13:26.560" video="qanda-literate" id="subtitle"]]
[[!template text="""the process itself is an asset. If I were selling my company,""" start="00:13:32.200" video="qanda-literate" id="subtitle"]]
[[!template text="""that would be visibly of value to outside auditors that""" start="00:13:35.240" video="qanda-literate" id="subtitle"]]
[[!template text="""would help us arbitrate the sale. It's just empirical. Then""" start="00:13:39.400" video="qanda-literate" id="subtitle"]]
[[!template text="""tie that together with free software is maybe a little""" start="00:13:43.480" video="qanda-literate" id="subtitle"]]
[[!template text="""unstated ethos of doing our work in the open, and you might""" start="00:13:48.240" video="qanda-literate" id="subtitle"]]
[[!template text="""even deal with some of the ick factor. that you know that for a""" start="00:13:53.160" video="qanda-literate" id="subtitle"]]
[[!template text="""handler. Maybe so, but yeah, the downside to that is you'd""" start="00:13:58.760" video="qanda-literate" id="subtitle"]]
[[!template text="""still need to use Emacs to run through it, right? You know,""" start="00:14:05.120" video="qanda-literate" id="subtitle"]]
[[!template text="""for all those cool features, yes, it would be kind of a yet""" start="00:14:09.680" video="qanda-literate" id="subtitle"]]
[[!template text="""another killer app that we would have. So my domain name is""" start="00:14:13.720" video="qanda-literate" id="subtitle"]]
[[!template text="""orgvm, and my concept is really put org into a box, build a UI""" start="00:14:17.520" video="qanda-literate" id="subtitle"]]
[[!template text="""around it, it executes things that manipulate files that""" start="00:14:22.240" video="qanda-literate" id="subtitle"]]
[[!template text="""generate, let's say, And that's just one conceptual""" start="00:14:25.120" video="qanda-literate" id="subtitle"]]
[[!template text="""solution. But I really do think this is a super fun topic. And""" start="00:14:30.240" video="qanda-literate" id="subtitle"]]
[[!template text="""that's the space. I'm not sure my idea is that wonderful. I""" start="00:14:34.360" video="qanda-literate" id="subtitle"]]
[[!template text="""personally haven't soaked too many weekends into it. But I""" start="00:14:37.480" video="qanda-literate" id="subtitle"]]
[[!template text="""just love the way you're thinking in terms of, well, we""" start="00:14:42.440" video="qanda-literate" id="subtitle"]]
[[!template text="""should think more about that. Gosh, that's great to hear.""" start="00:14:45.160" video="qanda-literate" id="subtitle"]]
[[!template text="""Yeah. Yeah, I mean, just like the talk yesterday on the""" start="00:14:49.520" video="qanda-literate" id="subtitle"]]
[[!template text="""future of org, it's like, let's standardize it. Because,""" start="00:14:53.400" video="qanda-literate" id="subtitle"]]
[[!template text="""yeah, we don't want to have org fragmented like Markdown is.""" start="00:14:57.640" video="qanda-literate" id="subtitle"]]
[[!template text="""Markdown is terribly fragmented. You know, everybody's""" start="00:15:03.240" video="qanda-literate" id="subtitle"]]
[[!template text="""got different implementations. And Yeah, what I've ended""" start="00:15:06.840" video="qanda-literate" id="subtitle"]]
[[!template text="""up doing, I don't know if you've seen my blog, but I often I'm""" start="00:15:10.200" video="qanda-literate" id="subtitle"]]
[[!template text="""always just writing an org and talking to myself and writing""" start="00:15:15.040" video="qanda-literate" id="subtitle"]]
[[!template text="""questions and answers and essays come out of that. And then""" start="00:15:19.120" video="qanda-literate" id="subtitle"]]
[[!template text="""I'll put them on my web page and easy. It's easy to publish to a""" start="00:15:22.920" video="qanda-literate" id="subtitle"]]
[[!template text="""web page. Well, I do the same thing at work, but I need to have""" start="00:15:26.320" video="qanda-literate" id="subtitle"]]
[[!template text="""it marked down. I don't start Markdown though. I'm always""" start="00:15:30.080" video="qanda-literate" id="subtitle"]]
[[!template text="""starting an org because that, you know, I can really work""" start="00:15:33.320" video="qanda-literate" id="subtitle"]]
[[!template text="""through the problem space, you know, executing code blocks""" start="00:15:36.480" video="qanda-literate" id="subtitle"]]
[[!template text="""and making sure they work and all of that sort of stuff. And""" start="00:15:40.240" video="qanda-literate" id="subtitle"]]
[[!template text="""then I just export to Markdown and then go cleaned up a little""" start="00:15:44.760" video="qanda-literate" id="subtitle"]]
[[!template text="""bit if I need to. And that makes sense. But I am editing""" start="00:15:47.960" video="qanda-literate" id="subtitle"]]
[[!template text="""Markdown afterwards. So yeah, it would be nice. It would be""" start="00:15:51.680" video="qanda-literate" id="subtitle"]]
[[!template text="""nice. It's just, it's all done over here as opposed to, you""" start="00:15:56.000" video="qanda-literate" id="subtitle"]]
[[!template text="""know, Adding it over there, but yeah, let's think about""" start="00:16:00.360" video="qanda-literate" id="subtitle"]]
[[!template text="""every bit as much as as that. You know, I jumped in in the""" start="00:16:02.880" video="qanda-literate" id="subtitle"]]
[[!template text="""spirit of yes, let's think about it. You know, your, your""" start="00:16:06.520" video="qanda-literate" id="subtitle"]]
[[!template text="""comments about, let's think about the workflows that work""" start="00:16:09.960" video="qanda-literate" id="subtitle"]]
[[!template text="""for us. Wow. Does that hit home? Right? So great. Yeah. Yeah.""" start="00:16:12.600" video="qanda-literate" id="subtitle"]]
[[!template text="""Yeah. Okay. So, uh, on to do's and that sort of thing, um. You""" start="00:16:17.920" video="qanda-literate" id="subtitle"]]
[[!template text="""know, a lot is the same as it was 10 years ago. At the beginning""" start="00:16:25.280" video="qanda-literate" id="subtitle"]]
[[!template text="""of every sprint,""" start="00:16:32.200" video="qanda-literate" id="subtitle"]]
[[!template text="""my company, we're using JIRA.""" start="00:16:33.320" video="qanda-literate" id="subtitle"]]
[[!template text="""All jokes are valid when I say that. But I just go to its web""" start="00:16:38.280" video="qanda-literate" id="subtitle"]]
[[!template text="""page. I copy all the tasks that I need to do that sprint. I""" start="00:16:46.160" video="qanda-literate" id="subtitle"]]
[[!template text="""wrote a function that takes that code and reformats it as a""" start="00:16:49.640" video="qanda-literate" id="subtitle"]]
[[!template text="""bunch of org tasks for me to do that I can just now have all my""" start="00:16:54.120" video="qanda-literate" id="subtitle"]]
[[!template text="""to-dos. And I start to work off of that from that point on. So""" start="00:16:58.200" video="qanda-literate" id="subtitle"]]
[[!template text="""it'll reference all the projects, and I do symlinks to every""" start="00:17:02.800" video="qanda-literate" id="subtitle"]]
[[!template text="""code base that I need to use. Most of the to-dos I put inside my""" start="00:17:06.480" video="qanda-literate" id="subtitle"]]
[[!template text="""code block is kind of just for me, just so I can remember it.""" start="00:17:12.480" video="qanda-literate" id="subtitle"]]
[[!template text="""Because the work that I have to do needs to be tracked a little""" start="00:17:16.640" video="qanda-literate" id="subtitle"]]
[[!template text="""more""" start="00:17:22.760" video="qanda-literate" id="subtitle"]]
[[!template text="""fine-grained, I guess. Yeah. Do I use LP also on larger""" start="00:17:24.120" video="qanda-literate" id="subtitle"]]
[[!template text="""projects? More files and nested directories? Yeah, I""" start="00:17:33.440" video="qanda-literate" id="subtitle"]]
[[!template text="""haven't really done nested directories, but I can now. Now""" start="00:17:37.200" video="qanda-literate" id="subtitle"]]
[[!template text="""that I've now kind of realized that I have the feature that I""" start="00:17:43.880" video="qanda-literate" id="subtitle"]]
[[!template text="""demonstrated where I can just jump to any projects for a""" start="00:17:49.840" video="qanda-literate" id="subtitle"]]
[[!template text="""particular project, all the org files and all the headings""" start="00:17:54.440" video="qanda-literate" id="subtitle"]]
[[!template text="""show up, that works in nested directories.""" start="00:17:59.560" video="qanda-literate" id="subtitle"]]
[[!template text="""Oh, okay, yeah, somebody's typing it in. Yeah, so it's""" start="00:18:02.440" video="qanda-literate" id="subtitle"]]
[[!template text="""definitely possible. And I have now, since I recorded the""" start="00:18:11.000" video="qanda-literate" id="subtitle"]]
[[!template text="""talk, I've been busy typing in and trying to extract that out""" start="00:18:15.360" video="qanda-literate" id="subtitle"]]
[[!template text="""of my init file and make it into a package. I'm looking for a""" start="00:18:20.520" video="qanda-literate" id="subtitle"]]
[[!template text="""good name right now. I'm calling it jobs, jump to project""" start="00:18:24.480" video="qanda-literate" id="subtitle"]]
[[!template text="""sections. Anyway, but yeah, I think that's kind of a nice,""" start="00:18:30.240" video="qanda-literate" id="subtitle"]]
[[!template text="""useful feature. Have I used Cucumber, Gherkin, and other""" start="00:18:36.400" video="qanda-literate" id="subtitle"]]
[[!template text="""behavior-driven development?""" start="00:18:41.920" video="qanda-literate" id="subtitle"]]
[[!template text="""Have I, I mean, I do a lot of...""" start="00:18:44.480" video="qanda-literate" id="subtitle"]]
[[!template text="""more test driven. I do a lot of unit tests and I just put it""" start="00:18:50.720" video="qanda-literate" id="subtitle"]]
[[!template text="""right in my code base because if it's in my pros, I can just""" start="00:19:00.280" video="qanda-literate" id="subtitle"]]
[[!template text="""shove it in there. I've got the test right next to the""" start="00:19:04.680" video="qanda-literate" id="subtitle"]]
[[!template text="""function that I'm testing. I like that so I can kind of see it.""" start="00:19:07.200" video="qanda-literate" id="subtitle"]]
[[!template text="""I don't tangle it out to that same source file. I tangle it""" start="00:19:11.520" video="qanda-literate" id="subtitle"]]
[[!template text="""somewhere else if I tangle it at all because I don't need to. I""" start="00:19:15.360" video="qanda-literate" id="subtitle"]]
[[!template text="""can just, you know, control C that and run it. I like that""" start="00:19:19.120" video="qanda-literate" id="subtitle"]]
[[!template text="""aspect of it.""" start="00:19:23.200" video="qanda-literate" id="subtitle"]]
[[!template text="""Yeah, just keeping things together. That's the big problem""" start="00:19:24.880" video="qanda-literate" id="subtitle"]]
[[!template text="""I have with a lot of tests is the tests are somewhere else.""" start="00:19:29.320" video="qanda-literate" id="subtitle"]]
[[!template text="""It's separate from the code. I like seeing it all together,""" start="00:19:32.480" video="qanda-literate" id="subtitle"]]
[[!template text="""but a lot depends on how extensive it is. So for a lot of the,""" start="00:19:35.320" video="qanda-literate" id="subtitle"]]
[[!template text="""you know, the tests that we end up doing where, you know,""" start="00:19:39.880" video="qanda-literate" id="subtitle"]]
[[!template text="""you've got to do a lot of mocks and a lot of startup and tear""" start="00:19:43.360" video="qanda-literate" id="subtitle"]]
[[!template text="""down, that kind of thing. Yeah, that doesn't help as much.""" start="00:19:47.760" video="qanda-literate" id="subtitle"]]
[[!template text="""And you probably have to kind of go old school on that.""" start="00:19:51.840" video="qanda-literate" id="subtitle"]]
[[!template text="""What granularity I'm looking for with my org files and my""" start="00:19:54.600" video="qanda-literate" id="subtitle"]]
[[!template text="""subcontent? That's a real good question and really""" start="00:20:01.360" video="qanda-literate" id="subtitle"]]
[[!template text="""subjective. I change that over time. I begin by just dump. I""" start="00:20:04.880" video="qanda-literate" id="subtitle"]]
[[!template text="""just dump everything in my head into a file and then I go""" start="00:20:13.160" video="qanda-literate" id="subtitle"]]
[[!template text="""through and start to refine it.""" start="00:20:17.080" video="qanda-literate" id="subtitle"]]
[[!template text="""My goal at one point was to have an Emacs config file that was""" start="00:20:19.680" video="qanda-literate" id="subtitle"]]
[[!template text="""really small and simple. And boy, that just doesn't happen.""" start="00:20:26.160" video="qanda-literate" id="subtitle"]]
[[!template text="""It's just too fun to add things and try new ideas. And I found""" start="00:20:29.920" video="qanda-literate" id="subtitle"]]
[[!template text="""my files were just littered with good ideas that were""" start="00:20:35.760" video="qanda-literate" id="subtitle"]]
[[!template text="""half-baked and not finished. And so it's like, oh, I need to""" start="00:20:41.840" video="qanda-literate" id="subtitle"]]
[[!template text="""extract these and put them into different files so I can keep""" start="00:20:47.120" video="qanda-literate" id="subtitle"]]
[[!template text="""it clean. And so I think it's like with any code base, you're""" start="00:20:49.960" video="qanda-literate" id="subtitle"]]
[[!template text="""just going to keep refactoring. It's an iterative process.""" start="00:20:54.360" video="qanda-literate" id="subtitle"]]
[[!template text="""So having the ability to, like with an org file, where you can""" start="00:20:59.000" video="qanda-literate" id="subtitle"]]
[[!template text="""archive a subtree. Okay, this idea didn't pan out. Archive""" start="00:21:04.200" video="qanda-literate" id="subtitle"]]
[[!template text="""it. I can come back to it later. Being able to just kind of""" start="00:21:09.160" video="qanda-literate" id="subtitle"]]
[[!template text="""shove it somewhere else is really a nice little feature. All""" start="00:21:13.520" video="qanda-literate" id="subtitle"]]
[[!template text="""right. Not a question, just a comment. We need more of your""" start="00:21:20.400" video="qanda-literate" id="subtitle"]]
[[!template text="""insightful posts and videos. Oh, thanks.""" start="00:21:25.080" video="qanda-literate" id="subtitle"]]
[[!template text="""I appreciate it. Yes, it's been a fun journey. And I think we""" start="00:21:29.240" video="qanda-literate" id="subtitle"]]
[[!template text="""are coming up on our time, actually. So that is just an""" start="00:21:35.520" video="qanda-literate" id="subtitle"]]
[[!template text="""amazing quiz. And it helps me from manipulating, as I said,""" start="00:21:38.520" video="qanda-literate" id="subtitle"]]
[[!template text="""or as I put it earlier, like my chance as an organizer, or not""" start="00:21:41.920" video="qanda-literate" id="subtitle"]]
[[!template text="""manipulating, monopolizing my chance as an organizer to""" start="00:21:46.960" video="qanda-literate" id="subtitle"]]
[[!template text="""just get a chance to pick your brain on all kinds of things,""" start="00:21:50.680" video="qanda-literate" id="subtitle"]]
[[!template text="""which is too kind, too kind. Appreciate it. It's been fun.""" start="00:21:53.440" video="qanda-literate" id="subtitle"]]
[[!template text="""All right, I'll try answering more questions online as""" start="00:21:58.960" video="qanda-literate" id="subtitle"]]
[[!template text="""well. All right, talk to you later. And we appreciate your""" start="00:22:04.680" video="qanda-literate" id="subtitle"]]
[[!template text="""being in a huge resource that you are to the community.""" start="00:22:07.960" video="qanda-literate" id="subtitle"]]
[[!template text="""Thanks to everyone for tuning in and we'll be coming over to""" start="00:22:10.400" video="qanda-literate" id="subtitle"]]
[[!template text="""our next talk in just a moment here. And so bear with us""" start="00:22:14.200" video="qanda-literate" id="subtitle"]]
[[!template text="""through the transition as we slip into, I think it's our, is""" start="00:22:18.240" video="qanda-literate" id="subtitle"]]
[[!template text="""that our penultimate or our ultimate talk? We have one or two""" start="00:22:23.240" video="qanda-literate" id="subtitle"]]
[[!template text="""left, I'm not sure. I think we've got a couple of talks left.""" start="00:22:26.920" video="qanda-literate" id="subtitle"]]
[[!template text="""I'm back. Thank you, Howard. And we will be moving to the next""" start="00:22:30.120" video="qanda-literate" id="subtitle"]]
[[!template text="""talk in about six minutes. So if you need to grab some coffee,""" start="00:22:34.080" video="qanda-literate" id="subtitle"]]
[[!template text="""some tea, use the time wisely. And to confirm, we will have""" start="00:22:37.160" video="qanda-literate" id="subtitle"]]
[[!template text="""one, two, three more talks this afternoon. So there's still""" start="00:22:42.120" video="qanda-literate" id="subtitle"]]
[[!template text="""plenty to go around. See you in a bit, folks.""" start="00:22:44.320" video="qanda-literate" id="subtitle"]]
</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20literate%3A%20Literate%20programming%20for%20the%2021st%20Century)
<!-- End of emacsconf-publish-after-page -->
|