summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy.vtt
blob: 46b7433f1ad30f582af7b41020a938f45a1feb71 (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
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
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
WEBVTT

00:00:04.080 --> 00:00:07.359
All right, then. Well, hello everyone.

00:00:07.359 --> 00:00:11.519
I hope you're all enjoying the EmacsConf.

00:00:11.519 --> 00:00:15.040
My name is Musa Al-hassy, and I hope you're

00:00:15.040 --> 00:00:19.840
excited to learn about powering up special blocks.

00:00:19.840 --> 00:00:25.574
Let's first off find out
what these special blocks are,

00:00:25.574 --> 00:00:27.920
and see what we can go from.

00:00:27.920 --> 00:00:30.240
Yesterday, I saw a lot of cool talks

00:00:30.240 --> 00:00:33.200
and people were chatting about

00:00:33.200 --> 00:00:37.200
how should you present? Should you
do it this way or that way?

00:00:37.200 --> 00:00:39.931
I thought maybe I should try a different way.

00:00:39.931 --> 00:00:42.567
But I'm talking about special blocks

00:00:42.567 --> 00:00:45.039
and if I show you an Emacs, then I have to export

00:00:45.039 --> 00:00:47.840
the HTML so you can see what it looks like

00:00:47.840 --> 00:00:51.920
or export to a PDF so you can see what it looks like.

00:00:51.920 --> 00:00:54.239
So I ended up writing in org-reveal,

00:00:54.239 --> 00:00:58.233
and joyously, this just works.

00:00:58.960 --> 00:01:00.879
You can just see things here.

00:01:00.879 --> 00:01:03.452
I was worried that I'd have to take pictures

00:01:03.452 --> 00:01:09.760
and then insert pings, so that was a delight.

00:01:09.760 --> 00:01:15.704
Okay. Special blocks are these things like a center small quote.

00:01:15.704 --> 00:01:17.280
That's what a special block is,

00:01:17.280 --> 00:01:19.733
and with a bit of Lisp, we can make

00:01:19.733 --> 00:01:22.741
special blocks and link types.

00:01:22.741 --> 00:01:24.799
Right. Using a single interface.

00:01:24.799 --> 00:01:27.344
The interface is going to be similar

00:01:27.344 --> 00:01:29.281
to one many people are familiar with.

00:01:29.281 --> 00:01:34.712
In particular, Org Babel's src interface

00:01:34.712 --> 00:01:37.840
as well as using global header arguments for link types.

00:01:37.840 --> 00:01:39.450
The idea is to write it once

00:01:39.450 --> 00:01:41.200
and generate many different kinds.

00:01:41.200 --> 00:01:45.213
You write in Org markup and you can have HTML,

00:01:45.213 --> 00:01:49.767
you can have PDF, and joyously, org-reveal.

00:01:49.767 --> 00:01:53.600
That was an unexpected delight.

00:01:53.600 --> 00:01:57.840
Here are a few that you'll just see

00:01:57.840 --> 00:02:01.759
in this presentation.

00:02:01.759 --> 00:02:05.040
I won't show some of these link-only ones,

00:02:05.040 --> 00:02:06.799
but we'll see a few of these other ones

00:02:06.799 --> 00:02:09.500
just to make the presentation look nice

00:02:09.500 --> 00:02:11.520
So the presentation is really going to

00:02:11.520 --> 00:02:14.000
present these blocks and the mechanism

00:02:14.000 --> 00:02:15.120
at the same time.

00:02:15.120 --> 00:02:18.400
No HTML was written.

00:02:18.400 --> 00:02:21.280
Look, Ma! No HTML, just pure Org Mode,

00:02:21.280 --> 00:02:25.840
and you get all these beautiful boxes and things.

00:02:25.840 --> 00:02:27.680
The motivation for this is...

00:02:29.120 --> 00:02:31.200
you're online, you run into a blog,

00:02:31.200 --> 00:02:32.120
and you see something you like,

00:02:32.120 --> 00:02:33.120
and you're like, man,

00:02:33.120 --> 00:02:36.640
you know, I wish I could produce that.

00:02:36.640 --> 00:02:41.639
But you check, and the author wrote raw HTML.

00:02:41.639 --> 00:02:44.239
You know, #+HTML: everywhere.

00:02:44.239 --> 00:02:49.533
That's going to obscure your real content.

00:02:49.533 --> 00:02:51.200
It's going to be surrounded by all this

00:02:51.200 --> 00:02:54.239
styling information. That's unfortunate.

00:02:54.239 --> 00:02:57.033
The author decides to use an Org macro.

00:02:57.033 --> 00:02:58.959
All right, a bit better,

00:02:58.959 --> 00:03:00.333
but then what if you decide,

00:03:00.333 --> 00:03:04.667
hey I want to make a PDF? Not great.

00:03:04.667 --> 00:03:06.000
And then the worst of all,

00:03:06.000 --> 00:03:07.840
the author doesn't give you the source,

00:03:07.840 --> 00:03:10.159
and then you have to view page source,

00:03:10.159 --> 00:03:13.760
and learn cascading style sheets,

00:03:14.239 --> 00:03:15.767
and sit in a corner and cry,

00:03:15.767 --> 00:03:18.080
and decide to do other things with your life.

00:03:18.080 --> 00:03:22.640
We want to give you Org users numerous styles

00:03:22.640 --> 00:03:27.200
and an extensible mechanism to add more of these

00:03:27.200 --> 00:03:28.799
aesthetically pleasing styles,

00:03:28.799 --> 00:03:31.200
to have really nice things

00:03:31.200 --> 00:03:33.933
look one way in the HTML

00:03:33.933 --> 00:03:36.567
and look almost the same way in the PDF

00:03:36.567 --> 00:03:38.667
and other back ends.

00:03:38.667 --> 00:03:41.680
And if by having these newer ones,

00:03:41.680 --> 00:03:45.519
people might be encouraged to try making new ones,

00:03:45.519 --> 00:03:49.040
especially when the interface is not so difficult,

00:03:49.040 --> 00:03:54.159
that's the aim.

00:03:54.159 --> 00:03:59.120
So let's have a real story to motivate this even more.

00:03:59.120 --> 00:04:03.533
Here's three friends. I hope I don't butcher their names,

00:04:03.533 --> 00:04:04.640
but these friends are called

00:04:04.640 --> 00:04:08.720
Amin, Sacha, and Corwin. They're organizing a conference,

00:04:08.720 --> 00:04:12.080
EmacsConf 2020.

00:04:12.080 --> 00:04:14.239
So Sacha decides to write an Org file

00:04:14.239 --> 00:04:16.479
and she would like some feedback.

00:04:16.479 --> 00:04:19.840
Okay. Just to make it clear, there's no...

00:04:19.840 --> 00:04:22.960
just how easy this looks,

00:04:22.960 --> 00:04:27.280
let's look at the source for this block.

00:04:27.280 --> 00:04:30.720
Notice it's just the word "green," then a colon,

00:04:30.720 --> 00:04:37.333
then Amin. No div style coloring,

00:04:37.333 --> 00:04:38.479
just green:Amin.

00:04:38.479 --> 00:04:41.520
A very pleasant Org markup.

00:04:41.520 --> 00:04:44.960
So that's quite nice. Put some bold around it.

00:04:44.960 --> 00:04:46.433
Not too difficult.

00:04:46.433 --> 00:04:49.900
Hopefully, this will be useful to other people as well.

00:04:49.900 --> 00:04:52.240
So what kind of feedback

00:04:52.240 --> 00:04:55.233
would Sacha expect to get?

00:04:55.233 --> 00:04:59.120
Maybe she would expect top-level remarks

00:04:59.120 --> 00:05:00.833
visible in the export.

00:05:00.833 --> 00:05:04.400
When she makes an HTML, she can see right there a big block.

00:05:04.400 --> 00:05:09.533
Right. Maybe Amin will suggest to Sacha,

00:05:09.533 --> 00:05:11.120
please replace this part

00:05:11.120 --> 00:05:12.267
with this other part

00:05:12.267 --> 00:05:13.333
or replace this word

00:05:13.333 --> 00:05:14.639
with this other word.

00:05:14.639 --> 00:05:16.960
This is not really possible

00:05:16.960 --> 00:05:21.919
with raw HTML or with even LaTeX.

00:05:21.919 --> 00:05:24.000
You'd have to have multiple arguments:

00:05:24.000 --> 00:05:25.360
the first argument, and then

00:05:25.360 --> 00:05:28.800
the replacement argument. It's a bit clunky.

00:05:28.800 --> 00:05:32.080
But with our setup, you just write some text,

00:05:32.080 --> 00:05:34.367
write #+replace_with

00:05:34.367 --> 00:05:36.240
and then write more text, and you're good to go.

00:05:36.240 --> 00:05:39.440
Normal Org markup.

00:05:39.440 --> 00:05:40.720
Everyone speaks different languages.

00:05:40.720 --> 00:05:43.833
Maybe they want to use one word,

00:05:43.833 --> 00:05:45.919
or they're arguing about

00:05:45.919 --> 00:05:48.000
whether we talk about frames or windows,

00:05:48.000 --> 00:05:50.560
so maybe they want to have some translations.

00:05:50.560 --> 00:05:53.433
So there are different kinds of feedback.

00:05:53.433 --> 00:05:55.360
Let's take an example.

00:05:55.360 --> 00:05:59.360
Look at what they are.

00:05:59.360 --> 00:06:02.560
For example, Sacha might write

00:06:02.560 --> 00:06:06.160
this Org Mode right here,

00:06:06.160 --> 00:06:09.759
and then in her HTML exports, you might see this,

00:06:09.759 --> 00:06:12.733
and her feedback might look really nicely

00:06:12.733 --> 00:06:13.840
from anyone who says

00:06:14.560 --> 00:06:17.400
let's do some Lisp instead of mathematics.

00:06:17.400 --> 00:06:18.560
Let's just do some Lisp.

00:06:18.560 --> 00:06:22.479
Corwin says, let's not be so silly.

00:06:22.479 --> 00:06:25.120
Let's just say 9 a.m. and move on.

00:06:28.080 --> 00:06:31.360
Amin likes to export to PDF,

00:06:31.360 --> 00:06:34.333
and so he writes his top-level remarks using LaTeX.

00:06:34.333 --> 00:06:36.900
That's how. To get this square

00:06:36.900 --> 00:06:38.960
Amin: please change whatever,

00:06:38.960 --> 00:06:43.120
he might write like this: #+latex:.

00:06:43.120 --> 00:06:50.880
But then Sacha only exports to HTML, for example,

00:06:50.880 --> 00:06:54.880
so she doesn't look at the PDF,

00:06:54.880 --> 00:06:57.867
and she may not see his top-level feedback

00:06:57.867 --> 00:07:00.667
with those nice brackets and and bold.

00:07:00.667 --> 00:07:03.120
She might think everything's good.

00:07:03.120 --> 00:07:06.160
That can be a bit disastrous.

00:07:06.160 --> 00:07:08.600
So maybe Sacha will then

00:07:08.600 --> 00:07:13.199
make some of her own feedback.

00:07:13.199 --> 00:07:16.160
To produce it, she might write

00:07:16.560 --> 00:07:21.680
HTML commands, #+html: to get that.

00:07:21.680 --> 00:07:24.100
But then Amin will make a PDF,

00:07:24.100 --> 00:07:25.680
and this won't stick out.

00:07:25.680 --> 00:07:28.367
So he might think everything's okay,

00:07:28.367 --> 00:07:30.160
even though it's not.

00:07:30.160 --> 00:07:33.100
Then Corwin actually decides,

00:07:33.100 --> 00:07:35.900
"Hey, let me read the exported result

00:07:35.900 --> 00:07:38.867
and there's all those feedback
from two people

00:07:38.867 --> 00:07:42.633
who haven't read anything,
because maybe they were in a rush,

00:07:42.633 --> 00:07:45.167
and didn't see the top-level feedback.

00:07:45.167 --> 00:07:50.000
So they agree. "Hey, let's have a
uniform Org interface that exports

00:07:50.000 --> 00:07:52.567
to both HTML and PDF.

00:07:52.567 --> 00:07:54.080
Make both of us happy."

00:07:54.080 --> 00:07:58.160
Okay. So they decide to use
Org special blocks.

00:07:58.160 --> 00:08:01.300
Right. To set this up,

00:08:01.300 --> 00:08:04.400
they need to read a little bit of Lisp,

00:08:04.400 --> 00:08:08.879
hooks, advice, macros to get all of this
set up,

00:08:08.879 --> 00:08:12.319
and then they'll use Org as the main
interface.

00:08:12.319 --> 00:08:16.479
It's a lot of work, but it's worth it,
right? maybe?

00:08:16.479 --> 00:08:19.360
But then Corwin's a bit terse.

00:08:19.759 --> 00:08:24.333
Corwin maybe doesn't want to
write using blocks.

00:08:24.333 --> 00:08:26.080
He thinks they're overkill.

00:08:26.080 --> 00:08:32.560
Sacha wants HTML, and Amin wants PDF,
and Corwin wants org-reveal.

00:08:32.560 --> 00:08:35.533
So now they have to reformat
all their code.

00:08:35.533 --> 00:08:36.900
And then they need to use org link types

00:08:36.900 --> 00:08:38.867
to reduce the overkill,

00:08:38.867 --> 00:08:41.367
so they can try to avoid duplication

00:08:41.367 --> 00:08:46.800
by factoring things out into
self-contained functions.

00:08:46.800 --> 00:08:50.320
But now, to set up our links,

00:08:50.320 --> 00:08:55.467
we'll have to learn a new interface, org
setup link.

00:08:55.467 --> 00:09:02.160
Learn a little bit about fonts, follow
links, export handlers...

00:09:02.160 --> 00:09:05.040
It's so much. That's so much. But then,

00:09:05.040 --> 00:09:06.800
the friends, they learn a lot.

00:09:06.800 --> 00:09:08.399
They learn about defun.

00:09:08.399 --> 00:09:11.120
So these words are red.

00:09:11.120 --> 00:09:12.185
You get a little explanation.

00:09:12.185 --> 00:09:14.320
I think it's a bit too small for anyone
to read.

00:09:14.320 --> 00:09:18.000
This is Lisp documentation for defun.

00:09:18.000 --> 00:09:21.600
advice-add. There's some Lisp
documentation.

00:09:21.600 --> 00:09:23.600
They learn about destructuring -let.

00:09:23.600 --> 00:09:25.279
This is from the dash library.

00:09:25.279 --> 00:09:26.959
Here's all that glorious,

00:09:26.959 --> 00:09:28.800
glorious documentation with examples.

00:09:28.800 --> 00:09:30.300
Sorry. I like that.

00:09:30.300 --> 00:09:32.467
They might make
an ad-hoc mechanism

00:09:32.467 --> 00:09:35.400
to simulate arguments for special blocks,

00:09:35.400 --> 00:09:38.500
so something maybe called
extract-arguments,

00:09:38.500 --> 00:09:41.533
and then, of course, to make
new link types,

00:09:41.533 --> 00:09:42.480
they have to learn about

00:09:42.480 --> 00:09:47.400
org-link-set-parameters and
its numerous bits and pieces.

00:09:49.920 --> 00:09:53.600
Let's close all these ones down.

00:09:53.600 --> 00:09:55.800
Of course they also need to be
comfortable

00:09:55.800 --> 00:09:59.920
with loops and maps and matching and
string functions.

00:09:59.920 --> 00:10:02.560
So it's a bit of a pain.

00:10:03.360 --> 00:10:05.839
It's probably not worth it.

00:10:05.839 --> 00:10:07.767
Maybe I'll just rush things quickly,

00:10:07.767 --> 00:10:09.360
or do it ad-hoc...

00:10:10.320 --> 00:10:13.680
We have things to do.

00:10:13.680 --> 00:10:19.367
But maybe the squad wants to have a
modular and unified interface

00:10:19.367 --> 00:10:23.700
so everyone's comfortable with defun to
define a function

00:10:23.700 --> 00:10:29.440
and they say, "It would be nice if we
could just define simultaneously

00:10:29.440 --> 00:10:32.959
both a block and the link type."

00:10:32.959 --> 00:10:36.000
That way, we have a single interface

00:10:36.000 --> 00:10:37.867
Org mode, for these things.

00:10:37.867 --> 00:10:39.767
It would be nice if it was modular.

00:10:39.767 --> 00:10:44.633
If I defined a one kind of block and
you defined another,

00:10:44.633 --> 00:10:45.519
we could compose them,

00:10:45.519 --> 00:10:49.360
then get a nice bigger block, like LEGO.

00:10:49.360 --> 00:10:52.320
That would be nice. Building blocks.

00:10:52.320 --> 00:10:56.240
This is what we have come up with,
called defblock.

00:10:56.240 --> 00:11:01.760
It also has a long documentation string
containing examples and things.

00:11:01.760 --> 00:11:04.800
So that way, it can try to be useful.

00:11:04.800 --> 00:11:10.880
Let's look at a solution to these
friends' trilemma.

00:11:10.880 --> 00:11:14.320
So here's a way to define a block.

00:11:14.320 --> 00:11:22.320
It doesn't look that difficult, but this
is how they can define a block

00:11:22.320 --> 00:11:25.920
for their top-level feedback.

00:11:25.920 --> 00:11:28.959
Let's look at the three main parts
together.

00:11:28.959 --> 00:11:31.233
It's not that difficult, I hope.

00:11:31.233 --> 00:11:35.300
Just six lines, and that's including a
documentation string,

00:11:35.300 --> 00:11:37.633
newlines and things.

00:11:37.633 --> 00:11:43.300
So in line 1, we define the block just
like you define a function.

00:11:43.300 --> 00:11:44.880
We define a block.

00:11:44.880 --> 00:11:47.433
The block name is going to be called
"feedback."

00:11:47.433 --> 00:11:49.680
It has an author, "who."

00:11:49.680 --> 00:11:54.133
The author has no default value.

00:11:54.133 --> 00:11:57.760
It has a color, and the color has a
default value of red.

00:11:57.760 --> 00:12:01.680
So just as when you define functions,

00:12:01.680 --> 00:12:06.233
you start by define or defblock,

00:12:06.233 --> 00:12:13.440
then the name, some mandatory argument,
and some optional arguments.

00:12:13.440 --> 00:12:18.480
Then the next stage is definition.
Documentation.

00:12:18.480 --> 00:12:20.133
The people who use this,

00:12:20.133 --> 00:12:22.880
which are future you or future me,

00:12:22.880 --> 00:12:25.519
might want to know what this is.

00:12:25.519 --> 00:12:27.839
So let's get to document this.

00:12:27.839 --> 00:12:32.079
For Corwin, who might want to use
tooltips...

00:12:32.079 --> 00:12:37.120
When Corwin writes feedback in Emacs,
they'll see a nice little tooltip,

00:12:37.120 --> 00:12:38.639
and the tooltip will have

00:12:38.639 --> 00:12:41.279
this documentation string.

00:12:41.279 --> 00:12:43.279
That'll be nice.

00:12:43.279 --> 00:12:45.980
And then here's the third part.

00:12:45.980 --> 00:12:48.067
The last three lines are not so
difficult.

00:12:48.067 --> 00:12:52.800
If the backend is HTML,

00:12:52.800 --> 00:12:55.360
please use this template string.

00:12:55.360 --> 00:12:57.440
Otherwise, use the other string.

00:12:57.440 --> 00:13:01.279
For each of these string markers,

00:13:01.279 --> 00:13:04.959
please put in the color, who wrote it,
and then the contents

00:13:04.959 --> 00:13:07.279
of the special block or the link type.

00:13:08.160 --> 00:13:11.600
So that's pretty neat. Not so difficult.

00:13:11.600 --> 00:13:14.639
I thought that was kind of cool,

00:13:14.639 --> 00:13:16.600
then noticed it's anaphoric.

00:13:16.600 --> 00:13:21.033
This defblock gives you two new names.

00:13:21.033 --> 00:13:23.433
It gives you a name called contents,

00:13:23.433 --> 00:13:26.480
and it gives you a name called backend.

00:13:26.480 --> 00:13:29.733
So even if you're writing a defblock

00:13:29.733 --> 00:13:32.560
and you intend it to be used
only for links...

00:13:32.560 --> 00:13:35.440
Like these colors, for example.

00:13:35.440 --> 00:13:38.399
These colors were defined using defblock.

00:13:38.399 --> 00:13:41.279
I used them as links right here.

00:13:41.279 --> 00:13:43.360
You don't need to worry

00:13:43.360 --> 00:13:45.300
where does the text come from
in the link.

00:13:45.300 --> 00:13:48.959
If I say "red:Bob," is it Bob?

00:13:48.959 --> 00:13:52.000
Or if I put a description, is it the
description?

00:13:52.000 --> 00:13:54.000
So it's whatever is available will

00:13:54.000 --> 00:13:56.720
become the value of contents.

00:13:56.720 --> 00:13:59.199
If you're really interested

00:13:59.199 --> 00:14:02.433
and you want to do some intricate stuff,

00:14:02.433 --> 00:14:06.933
defblock also gives you something called
raw-contents,

00:14:06.933 --> 00:14:08.633
if you really want to touch

00:14:08.633 --> 00:14:12.639
the raw contents with all of the Org
markups still there.

00:14:12.639 --> 00:14:19.440
Let's see how everyone can communicate
amongst themselves

00:14:19.440 --> 00:14:22.480
using this new interface.

00:14:22.480 --> 00:14:26.000
So, Sacha speculates and she... How does

00:14:26.000 --> 00:14:28.399
she speculate for her Org HTML?

00:14:28.399 --> 00:14:33.733
She might just write. Hey look at that,
no HTML, nice.

00:14:34.800 --> 00:14:36.833
Amin wants to have some green,

00:14:36.833 --> 00:14:39.600
and so he just says, hey here's some
color green.

00:14:39.600 --> 00:14:42.959
There you go. It looks almost the same.

00:14:42.959 --> 00:14:48.267
Notice that the main argument is right
here.

00:14:48.267 --> 00:14:49.680
defblock took an author,

00:14:49.680 --> 00:14:51.333
and here's the author again.

00:14:51.333 --> 00:14:53.920
And now the optional argument

00:14:53.920 --> 00:14:57.007
uses the org babel source interface

00:14:57.007 --> 00:15:02.867
You just say :, then a key, and then the
argument. Quite nice.

00:15:02.867 --> 00:15:07.920
Corwin doesn't want to use blocks.
It's a bit of an overkill.

00:15:07.920 --> 00:15:12.959
He can just write a link.

00:15:12.959 --> 00:15:17.440
So the main argument is now
the label of the link,

00:15:17.440 --> 00:15:23.667
and the description of the link is the
contents of the feedback.

00:15:23.667 --> 00:15:25.680
So that was quite nice.

00:15:25.680 --> 00:15:29.360
So it looks like everyone uses the same
interface on the left

00:15:29.360 --> 00:15:32.800
and can have varying outputs.

00:15:32.800 --> 00:15:34.480
I think it looks quite nice,

00:15:34.480 --> 00:15:36.639
and I hope you do too.

00:15:36.639 --> 00:15:38.800
There's a few more.

00:15:38.800 --> 00:15:41.800
Maybe, as you saw in some previous ones,

00:15:41.800 --> 00:15:43.920
we had text side beside side,

00:15:43.920 --> 00:15:47.440
or we folded some regions away.

00:15:47.440 --> 00:15:50.959
We put some things in pretty boxes.

00:15:50.959 --> 00:15:57.120
We had some spoilers at the very
beginning that we hid some text.

00:15:57.120 --> 00:16:01.680
We demoed some texts. Here's some Org
and here's what it looks like,

00:16:01.680 --> 00:16:05.199
and most importantly, they compose.

00:16:05.199 --> 00:16:12.639
There's a a macro called thread-block.

00:16:12.639 --> 00:16:17.000
thread-block call, and it lets you
thread the contents

00:16:17.000 --> 00:16:18.000
through a number of blocks,

00:16:18.000 --> 00:16:20.639
treating them as if they were functions.

00:16:20.639 --> 00:16:22.480
So, really, you can think of a block

00:16:23.680 --> 00:16:25.567
as a string-valued function.

00:16:25.567 --> 00:16:28.533
That's pretty neat, I think.

00:16:28.533 --> 00:16:30.959
Thank you for listening.

00:16:31.759 --> 00:16:34.320
I hope you've enjoyed this little

00:16:34.880 --> 00:16:38.160
happy fun time with the Emacs and
friends.

00:16:38.160 --> 00:16:43.730
I'll happily answer questions right now.

00:16:45.360 --> 00:16:49.467
Someone says: "Why did you put
optional arguments

00:16:49.467 --> 00:16:50.480
in a separate list

00:16:50.480 --> 00:16:54.560
rather than using cl-style argument
lists?"

00:16:54.560 --> 00:16:58.399
So that's a very good question,

00:16:58.399 --> 00:17:00.000
and I will answer that

00:17:00.000 --> 00:17:05.467
by showing you a more involved
definition of feedback.

00:17:05.467 --> 00:17:14.567
Let's look at a more involved one right
here.

00:17:14.567 --> 00:17:19.280
So, for example, this one is
called rremark.

00:17:19.280 --> 00:17:23.439
Please let me know if my text is not
sufficiently big.

00:17:23.439 --> 00:17:28.033
Here is why we have two arguments.

00:17:28.033 --> 00:17:30.720
That takes two arguments instead of one

00:17:30.720 --> 00:17:33.360
for its argument list.

00:17:33.360 --> 00:17:34.799
You have def block,

00:17:34.799 --> 00:17:36.000
then you have the name,

00:17:36.000 --> 00:17:40.467
then you have the first argument list

00:17:40.467 --> 00:17:42.880
and the second argument list.

00:17:42.880 --> 00:17:46.080
The first argument list

00:17:46.080 --> 00:17:49.280
takes the text right after the begin.

00:17:49.280 --> 00:17:53.000
The text right after the begin is the
main argument.

00:17:53.000 --> 00:17:59.200
And then the remaining key-value pairs
are in the second argument list.

00:18:00.320 --> 00:18:03.280
Now the reason we have two is because

00:18:03.280 --> 00:18:08.880
in order to streamline the interface to
account for both special blocks

00:18:08.880 --> 00:18:13.360
and Org link types, what we do is we say,

00:18:13.360 --> 00:18:18.000
in the first argument list, you can give
a name to the first argument,

00:18:18.000 --> 00:18:19.633
give it a default value,

00:18:19.633 --> 00:18:28.800
and anything else you provide will
become part of the link information.

00:18:28.800 --> 00:18:30.861
For example, this link,

00:18:30.861 --> 00:18:32.833
we decided to make its face
angry red.

00:18:32.833 --> 00:18:36.433
You might want to give other
features to links.

00:18:36.433 --> 00:18:39.100
So we're trying to streamline
the interface

00:18:39.100 --> 00:18:41.733
for both special blocks and
Org link types,

00:18:41.733 --> 00:18:46.240
and we thought this way was quite nice.

00:18:46.240 --> 00:18:47.500
That was the main reason.

00:18:47.500 --> 00:18:52.480
Someone asks--

00:18:52.480 --> 00:18:55.039
if you have follow-ups, please ask--

00:18:55.039 --> 00:18:57.600
Someone asks, "Do you intend to try to

00:18:57.600 --> 00:19:00.559
upstream this amazing work into Org?"

00:19:00.559 --> 00:19:02.300
Well, I'm glad you like it.

00:19:02.300 --> 00:19:04.559
I don't know how to upstream,

00:19:04.559 --> 00:19:06.400
but I will look into it,

00:19:06.400 --> 00:19:09.833
and any advice or guidance
would be much appreciated.

00:19:11.840 --> 00:19:15.267
Lisp is awesome. Just as
defun is a macro,

00:19:15.267 --> 00:19:17.120
defblock is a macro, and then

00:19:17.120 --> 00:19:20.240
source blocks are awesome.

00:19:20.240 --> 00:19:22.467
Now maybe we can have arguments in
special blocks,

00:19:22.467 --> 00:19:28.799
and motivate and encourage more
people to learn Lisp.

00:19:28.799 --> 00:19:32.559
So another person asks,

00:19:32.559 --> 00:19:35.280
"What is used to produce colorful

00:19:35.280 --> 00:19:38.559
boxes around the cursor?"

00:19:38.559 --> 00:19:40.400
I'm not quite sure if you're asking...

00:19:40.400 --> 00:19:42.559
Are you talking about my cursor
right here,

00:19:42.559 --> 00:19:48.400
or are you talking about in the slide?

00:19:48.400 --> 00:19:53.767
So this cursor is some application
called Streambrush,

00:19:53.767 --> 00:19:55.440
that I had to purchase.

00:19:55.440 --> 00:19:59.039
Unfortunately, I could not find a a
suitable free one.

00:19:59.039 --> 00:20:03.067
The blocks... I can demonstrate some
Emacs Lisp.

00:20:03.067 --> 00:20:04.467
I can open up my Emacs, if people like,

00:20:04.467 --> 00:20:06.320
and we can try some things out.

00:20:06.320 --> 00:20:09.440
Happy to do that.

00:20:09.440 --> 00:20:10.133
You're welcome.

00:20:10.133 --> 00:20:15.520
Someone asks a side question about
org-reveal: "How do you get

00:20:15.520 --> 00:20:17.440
bespoke or multiple-column layouts

00:20:17.440 --> 00:20:19.120
without using HTML?"

00:20:19.120 --> 00:20:22.559
Excellent question. That's what we do.

00:20:22.559 --> 00:20:25.533
That's what this project is about.

00:20:25.533 --> 00:20:27.000
So it's not org-reveal,

00:20:27.000 --> 00:20:30.267
it's our fancy parallel block.

00:20:30.267 --> 00:20:33.440
So we have this thing. You say,
#+begin_parallel.

00:20:33.440 --> 00:20:35.679
You say how many columns you would like.

00:20:35.679 --> 00:20:37.967
Do you want a bar or not?

00:20:37.967 --> 00:20:39.679
And then you write some text,

00:20:39.679 --> 00:20:44.400
and then you get some text, and
according with the bar or not.

00:20:44.400 --> 00:20:47.520
That's how we achieve that in our slides.

00:20:47.520 --> 00:20:52.880
I'm not quite sure where this was.

00:20:52.880 --> 00:20:59.520
Somewhere here, I think.

00:20:59.520 --> 00:21:06.240
Let me try to find this for you.

00:21:06.240 --> 00:21:10.433
I can't seem to find where the parallel
blocks were. Apologies.

00:21:10.433 --> 00:21:15.039
Let's move on to the next question,
I suppose.

00:21:15.039 --> 00:21:18.400
I'm pretty sure they're here. Ah, there
they are.

00:21:18.400 --> 00:21:22.640
So these were just instances of using

00:21:22.640 --> 00:21:26.480
the parallel block, and it makes things
parallel.

00:21:26.480 --> 00:21:27.633
So that's quite nice.

00:21:27.633 --> 00:21:33.360
Another person asks,

00:21:33.360 --> 00:21:37.840
"How does this relate to pandoc,

00:21:37.840 --> 00:21:40.960
which is used for converting between
markup formats?"

00:21:40.960 --> 00:21:43.919
So all we're doing is we're saying,

00:21:43.919 --> 00:21:47.679
hey, please write Org because Org is
just fantastic,

00:21:47.679 --> 00:21:49.267
and we love it, and it's the dream,

00:21:49.267 --> 00:21:51.760
and if you would like to view things

00:21:51.760 --> 00:21:55.900
in HTML, or in org-reveal, or in PDF,

00:21:55.900 --> 00:21:58.559
that's up to the user.

00:22:02.320 --> 00:22:06.080
Made it too small now.
So here is an example.

00:22:06.080 --> 00:22:10.240
Here's how parallel is implemented,

00:22:10.240 --> 00:22:14.320
just as a quick example, not too long.

00:22:14.320 --> 00:22:17.800
About half of the implementation is
documentation,

00:22:17.800 --> 00:22:22.720
so, hopefully, that speaks for for how
useful this feature is.

00:22:22.720 --> 00:22:25.280
We decide if there's a rule or not.

00:22:25.280 --> 00:22:28.080
We look for the column break.

00:22:28.080 --> 00:22:30.600
Here we're looking at the backend.

00:22:30.600 --> 00:22:31.840
If the backend is LaTeX,

00:22:31.840 --> 00:22:34.133
please use this incantation

00:22:34.133 --> 00:22:37.679
with multicolumns, minipages,
what have you.

00:22:37.679 --> 00:22:41.600
If the backend is something else, please
do this:

00:22:41.600 --> 00:22:48.080
div, style and other gibberish that we
don't really want to look at.

00:22:48.080 --> 00:22:51.760
Pandoc works from Org,

00:22:51.760 --> 00:22:53.633
so it might not work directly,

00:22:53.633 --> 00:22:59.679
since our interface... The way we set it
up is: when you try to export,

00:22:59.679 --> 00:23:03.039
we hook in and we do a bunch of
pre-processing,

00:23:03.039 --> 00:23:07.440
so this defblock is a
string-valued function.

00:23:07.440 --> 00:23:13.919
Whenever we see these #+begin_parallel
when you do an export,

00:23:13.919 --> 00:23:17.767
I tell Emacs, hold up, look for those
#+begin_parallels, please.

00:23:17.767 --> 00:23:20.320
Oh, you found them? Grab that text.

00:23:20.320 --> 00:23:21.533
You grabbed it. Great.

00:23:21.533 --> 00:23:24.080
Now please apply this person's function

00:23:24.080 --> 00:23:27.120
onto that text, and splice in the result.

00:23:27.120 --> 00:23:30.400
So when you export, we're performing

00:23:30.400 --> 00:23:35.120
arbitrary computations on your text.

00:23:35.120 --> 00:23:39.633
Some people might not find that
comforting,

00:23:39.633 --> 00:23:43.039
to have arbitrary computations happening.

00:23:43.039 --> 00:23:45.039
In this article, there's a few where

00:23:45.039 --> 00:23:47.167
we change your text upon export.

00:23:47.167 --> 00:23:51.760
We translate it, we do other things
to it.

00:23:51.760 --> 00:23:56.500
So someone says, "If you export to
LaTeX, to PDF,

00:23:56.500 --> 00:23:58.640
does that work well with Beamer as well

00:23:58.640 --> 00:24:00.320
to create slides with columns?"

00:24:05.200 --> 00:24:08.000
I made a bunch of these changes

00:24:08.000 --> 00:24:09.200
earlier this morning,

00:24:09.200 --> 00:24:12.320
and it just says LaTeX right here.

00:24:12.320 --> 00:24:14.400
So if you want to go to beamer,

00:24:14.400 --> 00:24:15.360
I think the back end for me,

00:24:15.360 --> 00:24:17.333
beamer is called, well, beamer,

00:24:17.333 --> 00:24:22.000
so instead of a pcase, what we would do
is, we would say,

00:24:22.000 --> 00:24:27.167
if it's a 'latex or it's a 'beamer, then
use this.

00:24:27.167 --> 00:24:30.267
Otherwise, it's not a LaTeX,

00:24:30.267 --> 00:24:31.867
it will simply default to this one,

00:24:31.867 --> 00:24:34.433
which could be dangerous
for your needs.

00:24:34.433 --> 00:24:39.167
I think it's a bad practice to put a
underscore,

00:24:39.167 --> 00:24:40.767
but I did it really quickly

00:24:40.767 --> 00:24:44.500
because I just wanted to show you that
it works fine in org-reveal

00:24:44.500 --> 00:24:47.440
Contributions are more than welcome.

00:24:47.440 --> 00:24:52.240
I happily would love any assistance.

00:24:52.240 --> 00:24:58.633
We have a Lisp reference
cheat sheet here

00:24:58.633 --> 00:25:01.000
to learn a little bit about Lisp, if
you're not comfortable,

00:25:01.000 --> 00:25:03.267
or to ask some questions.

00:25:03.267 --> 00:25:06.400
Lots of helpful people.

00:25:06.400 --> 00:25:09.440
So there's another question that says,

00:25:09.440 --> 00:25:13.120
"Does typing in a block mess up with
syntax highlighting?

00:25:13.120 --> 00:25:15.679
Usually, you use a single color inside an

00:25:15.679 --> 00:25:17.279
example block, for example.

00:25:17.279 --> 00:25:21.279
Ah, you found my crutch.

00:25:25.279 --> 00:25:27.333
Emacs is all encompassing,

00:25:27.333 --> 00:25:29.760
and I'm not quite sure how fonts work.

00:25:29.760 --> 00:25:32.559
I learned enough to get by.

00:25:37.440 --> 00:25:38.667
Here's how links work.

00:25:38.667 --> 00:25:40.799
They're a bit complicated.

00:25:40.799 --> 00:25:42.567
This is a bit scary.

00:25:42.567 --> 00:25:47.039
I don't recommend anyone read it.

00:25:47.039 --> 00:25:49.840
Actually, let me open up an email

00:25:50.559 --> 00:25:52.100
and you can see what I see.

00:25:52.100 --> 00:25:54.799
So here's an Emacs.

00:25:54.799 --> 00:25:56.799
Let's make that a bit bigger.

00:25:56.799 --> 00:25:59.133
Let's change this slightly.

00:25:59.133 --> 00:26:01.200
Nope, that's worse. There you go.

00:26:01.919 --> 00:26:09.360
Here's some words. Here's red hello.

00:26:09.360 --> 00:26:15.679
But you're worried about preserving
fontification.

00:26:15.679 --> 00:26:18.480
Let's make an emacs-lisp block.

00:26:18.880 --> 00:26:22.840
Let's say, (+ 1 2).

00:26:22.840 --> 00:26:31.133
Ah, where's the fun? Hello. Bye.

00:26:31.133 --> 00:26:32.080
Okay. Where's the coloring?

00:26:32.080 --> 00:26:36.000
If we zoom in on this #+begin_src block,

00:26:36.000 --> 00:26:39.200
you can see down here

00:26:39.200 --> 00:26:42.159
we have our our coloring

00:26:42.159 --> 00:26:43.279
when we zoom in.

00:26:43.279 --> 00:26:46.960
If we zoom out, no coloring.

00:26:46.960 --> 00:26:50.880
Zoom in, coloring.
Zoom out, aah, no coloring.

00:26:50.880 --> 00:26:55.679
Let's take off these bad boys,
and oh, look, my coloring's back.

00:26:55.679 --> 00:27:03.760
In a previous iteration of the system,
I was able to maintain coloring.

00:27:03.760 --> 00:27:06.400
In this new iteration, I am not.

00:27:06.400 --> 00:27:07.400
I don't know how to do it.

00:27:07.400 --> 00:27:10.333
I haven't had the time to implement it.

00:27:10.333 --> 00:27:17.279
I spent a lot of time writing this
48-page documentation

00:27:17.279 --> 00:27:21.133
with some fun examples to try to help
people learn.

00:27:21.133 --> 00:27:23.200
But I would appreciate any help or
guidance

00:27:23.200 --> 00:27:26.240
on how to maintain the fontification.

00:27:26.240 --> 00:27:29.200
I really would like to keep those
colors in.

00:27:29.200 --> 00:27:32.640
[Amin]: Musa, we have time for maybe one
more question,

00:27:32.640 --> 00:27:34.500
one or two more questions,

00:27:34.500 --> 00:27:37.039
and then we have to move on to the
next talk.

00:27:37.039 --> 00:27:39.120
You're more than welcome to

00:27:39.120 --> 00:27:42.559
continue taking the questions via
IRC or the pad.

00:27:42.559 --> 00:27:45.760
[Musa]: Okay. Thank you.

00:27:45.760 --> 00:27:48.880
The final question we'll take is,

00:27:48.880 --> 00:27:52.320
"Should packages implement

00:27:52.320 --> 00:27:53.967
interface to one specific format,

00:27:53.967 --> 00:27:55.600
or attempt to be inclusive

00:27:55.600 --> 00:27:57.279
to all the potential output targets?"

00:27:57.279 --> 00:27:59.300
I think you should just make them
as you go,

00:27:59.300 --> 00:28:01.500
and add them as you need them.

00:28:01.500 --> 00:28:05.600
We'll make Github requests for things.

00:28:05.600 --> 00:28:08.533
We can share recipes in this document,

00:28:08.533 --> 00:28:12.333
and then try to add other techniques,

00:28:12.333 --> 00:28:19.200
and then we can use these blocks as a
common interface

00:28:19.200 --> 00:28:22.240
for exporting to PDF and other things.

00:28:22.240 --> 00:28:26.000
Since someone asked,

00:28:26.000 --> 00:28:28.033
here what a PDF looks like.

00:28:28.033 --> 00:28:31.667
This is the same PDF rendered.

00:28:31.667 --> 00:28:34.960
I made no effort to make it look good,

00:28:34.960 --> 00:28:37.840
but it surprisingly does look good.

00:28:38.559 --> 00:28:40.067
That was nice.

00:28:40.067 --> 00:28:44.320
That was a terrible magenta,
but that is life.

00:28:44.320 --> 00:28:47.100
Anyhow, I hope you all enjoyed this talk.

00:28:47.100 --> 00:28:51.033
I hope you will find
defblock useful to you.

00:28:51.033 --> 00:28:52.799
It is available on MELPA.

00:28:52.799 --> 00:28:56.367
In a rush to make it available for
EmacsConf 2020,

00:28:56.367 --> 00:29:00.159
some MELPA guidelines may not have been
adhered to.

00:29:00.159 --> 00:29:01.600
Please do not hit me.

00:29:01.600 --> 00:29:08.559
I hope everyone enjoys the rest of the
EmacsConf 2020. Thank you!