summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux-autogen.sbv
blob: e151d292ab2ec20740c03a2b220b2627ac3fef09 (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
0:00:01.360,0:00:07.279
hello my name is grant shangri

0:00:04.480,0:00:07.919
this is my talk titled bard beavermax

0:00:07.279,0:00:10.719
publishing

0:00:07.919,0:00:12.799
music with Emacs I'm a software

0:00:10.719,0:00:14.400
developer with unabridged software in

0:00:12.799,0:00:16.800
lincoln nebraska

0:00:14.400,0:00:18.720
long time Emacs user relatively new

0:00:16.800,0:00:20.480
Emacs hacker

0:00:18.720,0:00:22.960
and uh hopefully I'll be able to show

0:00:20.480,0:00:30.480
you my workflow with

0:00:22.960,0:00:33.440
how I publish music with Emacs

0:00:30.480,0:00:35.520
all right so as a musician I would like

0:00:33.440,0:00:37.200
to publish my music online

0:00:35.520,0:00:39.040
you know I could publish with popular

0:00:37.200,0:00:42.000
online music services

0:00:39.040,0:00:44.719
but I'm more of a diy type so I chose to

0:00:42.000,0:00:48.160
go ahead and publish with Emacs

0:00:44.719,0:00:49.760
so what's the motivation behind this

0:00:48.160,0:00:51.600
a lot of it comes down to some

0:00:49.760,0:00:54.960
fundamental freedoms

0:00:51.600,0:00:57.920
that you know Emacs gnu software

0:00:54.960,0:00:59.120
kind of represent to me as well as kind

0:00:57.920,0:01:01.840
of my

0:00:59.120,0:01:03.680
ideas on culture and my background I

0:01:01.840,0:01:04.080
don't believe that music is a consumer

0:01:03.680,0:01:06.080
good

0:01:04.080,0:01:08.320
um it's a form of knowledge like an

0:01:06.080,0:01:10.479
algorithm

0:01:08.320,0:01:13.119
and it's just like such a part of

0:01:10.479,0:01:16.640
culture like in tribal cultures music

0:01:13.119,0:01:18.000
was seen as a gift from the cosmos or

0:01:16.640,0:01:19.920
the gods and it was

0:01:18.000,0:01:21.920
a gift maybe through an individual

0:01:19.920,0:01:23.520
vessel but was shared with the people

0:01:21.920,0:01:26.799
and shared with everyone

0:01:23.520,0:01:29.840
kept alive by the culture itself

0:01:26.799,0:01:31.520
and so to me music is something that

0:01:29.840,0:01:34.640
should be shared and should be

0:01:31.520,0:01:36.560
freely enjoyed by everyone of course

0:01:34.640,0:01:39.040
artists should be compensated as well

0:01:36.560,0:01:41.040
but that's a whole different topic

0:01:39.040,0:01:42.720
and so when I want to share my music I

0:01:41.040,0:01:43.520
want to do it without impacting anyone's

0:01:42.720,0:01:45.680
freedom

0:01:43.520,0:01:48.960
using gnu software like Emacs is a good

0:01:45.680,0:01:48.960
way that I can ensure that

0:01:49.200,0:01:55.840
I won't be requiring people to

0:01:52.840,0:01:57.119
uh sign away their freedoms for anything

0:01:55.840,0:01:58.799
there's a lot more I could say about

0:01:57.119,0:02:00.960
this but I don't have time

0:01:58.799,0:02:03.439
feel free to reach out to me by email or

0:02:00.960,0:02:06.479
irc

0:02:03.439,0:02:08.239
um and part of the motivation for me

0:02:06.479,0:02:10.720
personally is that Emacs is super

0:02:08.239,0:02:12.720
magical it's an all-in-one solution

0:02:10.720,0:02:14.480
like I said the gnu software aligns with

0:02:12.720,0:02:16.800
creative commons ideas

0:02:14.480,0:02:18.879
I can do file management I can author

0:02:16.800,0:02:20.239
html all the web stuff I need even

0:02:18.879,0:02:22.640
illiterate style

0:02:20.239,0:02:24.640
I can handle media and metadata I've got

0:02:22.640,0:02:26.800
version control remote server access

0:02:24.640,0:02:28.080
all the tools I need are right under my

0:02:26.800,0:02:30.000
fingertips with this

0:02:28.080,0:02:31.440
tool that I use every day for a long

0:02:30.000,0:02:34.319
time I don't need to look

0:02:31.440,0:02:36.319
elsewhere and it was a challenge I

0:02:34.319,0:02:39.440
wanted to see if I could do this

0:02:36.319,0:02:41.680
all within Emacs itself so

0:02:39.440,0:02:43.440
how do you use Emacs to publish music

0:02:41.680,0:02:45.120
well for me I needed

0:02:43.440,0:02:46.480
a couple of things I needed to be able

0:02:45.120,0:02:48.319
to audition unlabel

0:02:46.480,0:02:50.000
unlabeled audio tracks I have a lot of

0:02:48.319,0:02:51.280
files that I don't know where they

0:02:50.000,0:02:53.840
came from I don't know what they are I

0:02:51.280,0:02:56.800
need to be able to listen to them

0:02:53.840,0:02:58.480
and I need to be able to add metadata to

0:02:56.800,0:03:00.800
whatever audio format it is

0:02:58.480,0:03:03.200
and rename the files based on that

0:03:00.800,0:03:05.120
metadata potentially

0:03:03.200,0:03:07.040
and in the end I wanted to take those

0:03:05.120,0:03:08.319
files and programmatically produce a web

0:03:07.040,0:03:11.920
page

0:03:08.319,0:03:14.159
for people to consume I found out that

0:03:11.920,0:03:14.879
Emacs scores a hundred percent on all of

0:03:14.159,0:03:18.000
these

0:03:14.879,0:03:20.720
requirements that I had for this and

0:03:18.000,0:03:22.640
a lot of that came from emms the Emacs

0:03:20.720,0:03:26.080
multimedia system

0:03:22.640,0:03:27.760
um emms is is great um

0:03:26.080,0:03:30.000
if you haven't checked it out please do

0:03:27.760,0:03:32.959
it's a little bit unintuitive but

0:03:30.000,0:03:34.000
once you get into it you know it works

0:03:32.959,0:03:36.640
um

0:03:34.000,0:03:38.720
and basically what emms gave me was the

0:03:36.640,0:03:39.680
ability to listen to the tracks organize

0:03:38.720,0:03:41.280
playlists

0:03:39.680,0:03:42.959
and on top of that it gave me super

0:03:41.280,0:03:45.040
powered metadata authoring

0:03:42.959,0:03:47.200
and I'm going to demonstrate that to you

0:03:45.040,0:03:50.879
so in order to do this

0:03:47.200,0:03:54.879
you have to require markable playlists

0:03:50.879,0:03:58.720
so require ems mark and so I'm going to

0:03:54.879,0:03:58.720
go through and I'm going to open the red

0:03:59.680,0:04:04.480
I've got this this these files here so

0:04:02.319,0:04:06.080
you can see these files are mp3s

0:04:04.480,0:04:07.599
um they're recorded on a digital

0:04:06.080,0:04:09.920
recorder

0:04:07.599,0:04:11.760
um if I had the choice I would have a

0:04:09.920,0:04:12.319
recorder that used a different format

0:04:11.760,0:04:14.640
but

0:04:12.319,0:04:16.160
so be it so I can mark all these files

0:04:14.640,0:04:20.000
and I can do ems

0:04:16.160,0:04:22.880
add to red and now they've been loaded

0:04:20.000,0:04:22.880
into a playlist

0:04:27.040,0:04:30.400
so you can see the playlist here there's

0:04:29.040,0:04:32.000
some leftover files

0:04:30.400,0:04:33.759
so I've got these three files in my

0:04:32.000,0:04:34.639
playlist and as you can see it's just

0:04:33.759,0:04:36.800
the file name

0:04:34.639,0:04:38.560
the path I don't have any metadata

0:04:36.800,0:04:41.360
associated with them

0:04:38.560,0:04:43.440
in this playlist I can hit e capital e

0:04:41.360,0:04:47.360
and it'll bring up a buffer showing

0:04:43.440,0:04:49.840
um the tag information that I have

0:04:47.360,0:04:51.520
and so I could edit these here and I

0:04:49.840,0:04:53.919
could edit them one at a time but that's

0:04:51.520,0:04:57.440
not really great I want superpower

0:04:53.919,0:05:00.320
metadata authoring so

0:04:57.440,0:05:00.320
by marking them

0:05:04.479,0:05:08.479
by marking them I can then hit e and I

0:05:07.680,0:05:10.479
have

0:05:08.479,0:05:12.639
all three of the tracks loaded up in

0:05:10.479,0:05:15.759
this tags buffer

0:05:12.639,0:05:18.800
on top of that I can do emms

0:05:15.759,0:05:22.840
tag editor set all ctrl c control

0:05:18.800,0:05:25.680
r and I want to set the artist

0:05:22.840,0:05:26.320
so these are some recordings of my

0:05:25.680,0:05:31.039
family

0:05:26.320,0:05:35.600
so shangri-lux set all three of them

0:05:31.039,0:05:40.160
I want to set the album um

0:05:35.600,0:05:43.600
spring walk with lap harp

0:05:40.160,0:05:43.600
and I want to set the year

0:05:45.520,0:05:50.840
and then I'm going to go ahead and put

0:05:48.960,0:05:53.759
these in

0:05:50.840,0:05:55.840
manually

0:05:53.759,0:05:57.039
but with the power of Emacs keyboard

0:05:55.840,0:05:59.600
macros and

0:05:57.039,0:06:02.319
registers and so on I could do this

0:05:59.600,0:06:04.000
programmatically as well

0:06:02.319,0:06:06.000
which would make it a lot easier if I

0:06:04.000,0:06:07.440
hadn't met much more than three files to

0:06:06.000,0:06:09.919
do this with

0:06:07.440,0:06:11.520
submit the changes with ctrl c ctrl c

0:06:09.919,0:06:13.120
and now we've got the playlist you can

0:06:11.520,0:06:15.039
see the artist and track number have

0:06:13.120,0:06:17.360
been updated here

0:06:15.039,0:06:19.039
and then the final piece of this is that

0:06:17.360,0:06:20.479
if you look at this you can see that the

0:06:19.039,0:06:22.639
file name is still the same

0:06:20.479,0:06:24.560
so if I were looking to the directory I

0:06:22.639,0:06:26.479
would still have this file name

0:06:24.560,0:06:28.000
when packaging these up for a release

0:06:26.479,0:06:30.319
for people to download

0:06:28.000,0:06:32.400
it's nice to be able to have that file

0:06:30.319,0:06:34.800
name reflect the track number and the

0:06:32.400,0:06:35.680
artist and so on so there's another

0:06:34.800,0:06:38.240
command

0:06:35.680,0:06:38.240
mms

0:06:41.199,0:06:45.120
rename tag editor rename so it could be

0:06:44.160,0:06:47.199
just capital r

0:06:45.120,0:06:48.880
I think I need to mark all of these hit

0:06:47.199,0:06:50.000
capital r and then it's going to ask me

0:06:48.880,0:06:53.599
to confirm

0:06:50.000,0:06:53.599
and say yes to all of them

0:06:54.400,0:07:04.319
and now if you look in the dread

0:07:02.720,0:07:06.319
whoops I have to update it you'll see

0:07:04.319,0:07:09.840
it's been updated with the artist

0:07:06.319,0:07:11.120
the name track and track number and

0:07:09.840,0:07:14.639
track name

0:07:11.120,0:07:17.360
um so this format is a format string so

0:07:14.639,0:07:20.479
it's customizable of course

0:07:17.360,0:07:21.039
I just decided to go with the default so

0:07:20.479,0:07:24.160
that's

0:07:21.039,0:07:26.000
pretty great this workflow

0:07:24.160,0:07:28.080
just with emms I didn't have to do

0:07:26.000,0:07:30.960
anything this is all there it's all

0:07:28.080,0:07:32.639
all built in um it gave me exactly what

0:07:30.960,0:07:35.599
I was looking for in terms of being able

0:07:32.639,0:07:37.599
to process a lot of raw audio files

0:07:35.599,0:07:39.280
add metadata to them and get them ready

0:07:37.599,0:07:41.599
for publishing

0:07:39.280,0:07:43.520
and this is for publishing for playback

0:07:41.599,0:07:44.879
in any media player it'll it'll be

0:07:43.520,0:07:46.560
useful

0:07:44.879,0:07:48.479
not just for the web page that I'm

0:07:46.560,0:07:50.560
building so the

0:07:48.479,0:07:53.440
final part of course is um to build the

0:07:50.560,0:07:54.960
web page and Emacs makes authoring html

0:07:53.440,0:07:57.440
trivial

0:07:54.960,0:07:59.039
like as I was going through this I

0:07:57.440,0:08:00.400
wanted to challenge myself and just be

0:07:59.039,0:08:03.120
like can I do this with all

0:08:00.400,0:08:03.520
just all with Emacs like can I just make

0:08:03.120,0:08:05.440
this

0:08:03.520,0:08:07.039
I don't need a I don't need ruby I don't

0:08:05.440,0:08:08.960
need rails I don't need node I don't

0:08:07.039,0:08:10.560
need any of this other stuff I have my

0:08:08.960,0:08:12.560
tool right here it's a fully

0:08:10.560,0:08:15.039
it's a whole operating system basically

0:08:12.560,0:08:17.360
plus programming languages

0:08:15.039,0:08:19.919
so the first thing I started with was

0:08:17.360,0:08:22.560
buffer scripting for manipulating text

0:08:19.919,0:08:24.319
that's kind of the easiest way to do it

0:08:22.560,0:08:25.280
and basically anything you can do in a

0:08:24.319,0:08:28.479
buffer you can do

0:08:25.280,0:08:30.319
programmatically with e-lisp so this

0:08:28.479,0:08:33.919
might be a good example for beginners if

0:08:30.319,0:08:36.000
you haven't done any e-lisp yet

0:08:33.919,0:08:36.959
like a simple example is to create this

0:08:36.000,0:08:40.000
this div

0:08:36.959,0:08:41.760
output here I can you

0:08:40.000,0:08:44.240
can use this with temp buffer so

0:08:41.760,0:08:46.640
basically creating an imaginary buffer

0:08:44.240,0:08:48.800
insert is just like typing so you put

0:08:46.640,0:08:50.959
strings in you put new lines in

0:08:48.800,0:08:52.080
can cap build some strings together and

0:08:50.959,0:08:54.000
here you can see I'm

0:08:52.080,0:08:55.360
I'm doing a random number so every time

0:08:54.000,0:08:57.920
I execute this

0:08:55.360,0:09:01.040
my content changes so I can generate

0:08:57.920,0:09:04.399
dynamic content in html blocks

0:09:01.040,0:09:05.920
with e-lisp for my

0:09:04.399,0:09:08.000
web page builder it's a little more

0:09:05.920,0:09:12.080
complex I'm pulling data out

0:09:08.000,0:09:15.440
using emms data structures

0:09:12.080,0:09:16.080
so it's pulling that out from the track

0:09:15.440,0:09:18.720
data

0:09:16.080,0:09:19.440
and then I'm I'm using some program

0:09:18.720,0:09:21.440
program to

0:09:19.440,0:09:23.200
generate list elements so each track is

0:09:21.440,0:09:25.120
going to have the title

0:09:23.200,0:09:26.959
and track number and then a button for

0:09:25.120,0:09:29.519
playing it plus the source

0:09:26.959,0:09:30.480
of the audio file which will get added

0:09:29.519,0:09:32.640
here

0:09:30.480,0:09:34.839
right now this is hard coded for opus so

0:09:32.640,0:09:37.200
it won't work for my

0:09:34.839,0:09:39.120
mp3s um

0:09:37.200,0:09:41.200
I'm going to skip over snippets turns

0:09:39.120,0:09:45.519
out format strings were good enough

0:09:41.200,0:09:48.160
for me um snippets could be useful but

0:09:45.519,0:09:49.839
format is super powerful and I didn't

0:09:48.160,0:09:51.279
really even need all that much power

0:09:49.839,0:09:53.519
basically just doing string

0:09:51.279,0:09:54.560
interpolation so if you haven't seen

0:09:53.519,0:09:56.720
format before

0:09:54.560,0:09:59.120
you basically put these control strings

0:09:56.720,0:10:03.120
or control characters inside of a string

0:09:59.120,0:10:05.040
and you can generate you can generate an

0:10:03.120,0:10:07.600
output string that you want

0:10:05.040,0:10:08.720
so in my generator code basically it's

0:10:07.600,0:10:10.959
down here

0:10:08.720,0:10:12.800
um I'm calling format with this sparred

0:10:10.959,0:10:15.920
vivomax template

0:10:12.800,0:10:18.240
and that's basically a big

0:10:15.920,0:10:20.399
a big string of html it's just each you

0:10:18.240,0:10:21.200
know my whole page of html with a couple

0:10:20.399,0:10:22.959
places

0:10:21.200,0:10:24.399
with those control characters in just

0:10:22.959,0:10:26.399
four places

0:10:24.399,0:10:29.760
and one of them populates the track list

0:10:26.399,0:10:32.079
that's really the meat of the program

0:10:29.760,0:10:33.440
and again this is a combination of using

0:10:32.079,0:10:36.640
buffer scripting

0:10:33.440,0:10:37.279
using html mode inserting text format

0:10:36.640,0:10:40.000
strings

0:10:37.279,0:10:41.920
and then I can indent region so the html

0:10:40.000,0:10:45.200
actually looks pretty

0:10:41.920,0:10:50.160
when it comes out of it as well

0:10:45.200,0:10:52.560
um I will show that just really quick

0:10:50.160,0:10:52.560
actually

0:10:54.000,0:10:58.800
so you can see this is the html that got

0:10:56.880,0:11:02.560
generated I've got my template

0:10:58.800,0:11:05.760
I inserted the title here the style the

0:11:02.560,0:11:07.920
font was all inserted

0:11:05.760,0:11:11.200
and then this whole list of of tracks

0:11:07.920,0:11:14.399
here it's kind of messy to look at

0:11:11.200,0:11:15.920
but this track list this whole div here

0:11:14.399,0:11:18.560
is all generated by

0:11:15.920,0:11:20.800
my generator code and it works it's

0:11:18.560,0:11:20.800
great

0:11:22.480,0:11:26.160
okay moving on

0:11:27.120,0:11:32.079
um so the other thing was that as I was

0:11:30.240,0:11:33.200
developing this I decided to use ort

0:11:32.079,0:11:35.360
babel and some of his

0:11:33.200,0:11:36.880
its features um for multi-language

0:11:35.360,0:11:37.839
things because I needed to style it with

0:11:36.880,0:11:40.480
css and

0:11:37.839,0:11:42.480
and put actions in javascript and also I

0:11:40.480,0:11:45.519
used svg for authoring stuff

0:11:42.480,0:11:46.079
um and it was a little bit complicated I

0:11:45.519,0:11:47.680
probably

0:11:46.079,0:11:49.600
probably would have been simpler had I

0:11:47.680,0:11:51.440
not used org babble but it's also really

0:11:49.600,0:11:53.839
fun and it's I think it's a cool

0:11:51.440,0:11:55.839
cool idea to use literate programming my

0:11:53.839,0:11:57.600
idea was to create kind of like html

0:11:55.839,0:11:59.519
components like I could name it like

0:11:57.600,0:12:01.440
this

0:11:59.519,0:12:02.800
put a format string inside it and build

0:12:01.440,0:12:05.519
a function

0:12:02.800,0:12:07.120
in e-lisp to format it and spit out the

0:12:05.519,0:12:10.320
html that I want

0:12:07.120,0:12:12.880
and by doing this then I can like uh

0:12:10.320,0:12:14.320
just change things in my org file which

0:12:12.880,0:12:16.959
not getting a whole lot of time to work

0:12:14.320,0:12:19.839
on it I can come back to it and

0:12:16.959,0:12:21.920
I have a lot of notes and I can I can

0:12:19.839,0:12:24.399
kind of generate things as I'm going and

0:12:21.920,0:12:25.600
keep notes for myself and keep the

0:12:24.399,0:12:27.519
I don't know it's cool literate

0:12:25.600,0:12:29.279
programming is fun um so I don't need to

0:12:27.519,0:12:31.040
go into that too much but you can see if

0:12:29.279,0:12:33.360
I execute this here

0:12:31.040,0:12:34.880
I get the the div that I want um it's a

0:12:33.360,0:12:36.480
little bit funny you'll see I have the

0:12:34.880,0:12:39.200
string like this the way that

0:12:36.480,0:12:40.000
no web expands I can't do this on a

0:12:39.200,0:12:43.839
single line

0:12:40.000,0:12:45.440
it it it looks funny when you do that

0:12:43.839,0:12:48.560
so that might be something to work out

0:12:45.440,0:12:48.959
later css blocks can either be tangled

0:12:48.560,0:12:51.680
out

0:12:48.959,0:12:52.639
and referenced in the html source or

0:12:51.680,0:12:54.639
inlined

0:12:52.639,0:12:56.959
here's an example I have of inlining it

0:12:54.639,0:13:00.320
so I've got my little css block name

0:12:56.959,0:13:03.040
style javascript name script

0:13:00.320,0:13:04.839
and then I've got this html source block

0:13:03.040,0:13:07.519
with no web

0:13:04.839,0:13:07.920
expansion um these double angle brackets

0:13:07.519,0:13:09.839
here

0:13:07.920,0:13:11.680
are where I'm going to expand the block

0:13:09.839,0:13:12.639
name style I'm actually calling a

0:13:11.680,0:13:14.399
function

0:13:12.639,0:13:17.040
so I want the result of the function

0:13:14.399,0:13:20.560
here and then the script will just get

0:13:17.040,0:13:22.959
expanded here so or babel expand source

0:13:20.560,0:13:25.360
block

0:13:22.959,0:13:28.160
you can see what it looks like you know

0:13:25.360,0:13:29.920
I've got my style here I've got my title

0:13:28.160,0:13:31.279
I've got that main content class I

0:13:29.920,0:13:33.040
showed before

0:13:31.279,0:13:34.480
and the script as well so that's kind of

0:13:33.040,0:13:36.320
cool like

0:13:34.480,0:13:38.160
I could just run org babel tangle and

0:13:36.320,0:13:40.480
get my thing out and just

0:13:38.160,0:13:41.600
edit one file instead of multiple files

0:13:40.480,0:13:45.120
not for everyone

0:13:41.600,0:13:45.120
but I I thought it was kind of fun

0:13:45.839,0:13:49.199
all right oh and the final thing is that

0:13:47.760,0:13:52.880
in Emacs you can

0:13:49.199,0:13:57.199
author and view svg so this is just an

0:13:52.880,0:13:59.519
org um this svg I used to make the play

0:13:57.199,0:14:02.800
and pause buttons but I didn't know this

0:13:59.519,0:14:04.959
but if you edit an svg file you can

0:14:02.800,0:14:07.360
toggle back and forth

0:14:04.959,0:14:07.360
between

0:14:08.800,0:14:13.120
between the code and the and the image

0:14:13.199,0:14:17.360
it's pretty sweet so I can kind of

0:14:16.160,0:14:19.680
iteratively work

0:14:17.360,0:14:20.560
work through this because of of how

0:14:19.680,0:14:24.480
Emacs is

0:14:20.560,0:14:24.959
like that so um final considerations

0:14:24.480,0:14:27.360
here

0:14:24.959,0:14:29.279
like when doing this I want it to be all

0:14:27.360,0:14:30.079
free so I want to use fonts that use a

0:14:29.279,0:14:32.800
free license

0:14:30.079,0:14:34.800
I found gnu unifont it's kind of cool

0:14:32.800,0:14:37.600
the content license I chose

0:14:34.800,0:14:39.920
creative commons attribution share like

0:14:37.600,0:14:42.880
which is kind of like the gpl

0:14:39.920,0:14:44.800
ideally I could serve it with Emacs I'd

0:14:42.880,0:14:46.320
like to remove idiosyncrasy so other

0:14:44.800,0:14:48.720
people can use it

0:14:46.320,0:14:51.040
it's pretty much just my tool right now

0:14:48.720,0:14:51.440
um not requiring the web browser I can

0:14:51.040,0:14:54.079
ship

0:14:51.440,0:14:54.480
playlists so that you can just you know

0:14:54.079,0:14:58.000
click

0:14:54.480,0:15:00.639
or link to a playlist on your favorite

0:14:58.000,0:15:02.639
player even emms if you want and then

0:15:00.639,0:15:04.320
packing up those albums in like a zip or

0:15:02.639,0:15:08.639
tar file

0:15:04.320,0:15:10.880
so um you can go to churls.world

0:15:08.639,0:15:14.000
it just has a link to this album I'll

0:15:10.880,0:15:17.519
display it here in just a second

0:15:14.000,0:15:21.040
you can contact me I'm shosheen on Emacs

0:15:17.519,0:15:23.680
in irc and on sourcehut you can email me

0:15:21.040,0:15:26.800
grant at charles world personal or grant

0:15:23.680,0:15:28.320
on a bridge software all right now let's

0:15:26.800,0:15:32.000
see

0:15:28.320,0:15:32.000
about this

0:15:32.079,0:15:35.120
this is up online so if you want to

0:15:33.680,0:15:39.199
listen to my

0:15:35.120,0:15:43.040
college band's album from 20 years ago

0:15:39.199,0:15:47.680
here it is cassiopeia basement days

0:15:43.040,0:15:48.000
whoops I made this art in krita you can

0:15:47.680,0:15:51.199
press

0:15:48.000,0:15:55.040
play you can skip around

0:15:51.199,0:15:58.560
I did I do have the playlist up here too

0:15:55.040,0:16:00.880
so yeah thanks for listening

0:15:58.560,0:16:04.000
I hope you enjoyed it and enjoy the rest

0:16:00.880,0:16:04.000
of EmacsConf

0:16:04.360,0:16:07.360
goodbye