summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt
diff options
context:
space:
mode:
Diffstat (limited to '2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt')
-rw-r--r--2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt1101
1 files changed, 511 insertions, 590 deletions
diff --git a/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt b/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt
index debfa46c..24e598d5 100644
--- a/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt
+++ b/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt
@@ -3,98 +3,79 @@ WEBVTT
00:00:01.360 --> 00:00:04.480
Hello, my name is Grant Shangreaux.
-00:00:04.480 --> 00:00:07.279
+00:00:04.480 --> 00:00:09.519
This is my talk titled Bard Bivou(m)acs:
+Publishing Music with Emacs.
-00:00:07.279 --> 00:00:07.919
-Publishing Music
+00:00:09.519 --> 00:00:14.400
+I'm a software developer with Unabridged
+Software in Lincoln, Nebraska.
-00:00:07.919 --> 00:00:10.719
-with Emacs. I'm a software
-
-00:00:10.719 --> 00:00:12.799
-developer with Unabridged Software in
-
-00:00:12.799 --> 00:00:14.400
-Lincoln, Nebraska.
-
-00:00:14.400 --> 00:00:16.800
+00:00:14.400 --> 00:00:18.720
Long time Emacs user, relatively new
-
-00:00:16.800 --> 00:00:18.720
Emacs hacker.
-00:00:18.720 --> 00:00:20.480
-Hopefully, I'll be able to show
+00:00:18.720 --> 00:00:22.487
+Hopefully, I'll be able to show you
+my workflow,
-00:00:20.480 --> 00:00:22.960
-you my workflow, with
+00:00:22.487 --> 00:00:30.480
+with how I publish music with Emacs.
-00:00:22.960 --> 00:00:30.480
-how I publish music with Emacs.
+00:00:30.480 --> 00:00:35.520
+All right. So as a musician, I would
+like to publish my music online.
-00:00:30.480 --> 00:00:33.440
-All right. So as a musician, I would like
+00:00:35.520 --> 00:00:39.040
+I could publish with popular online
+music services,
-00:00:33.440 --> 00:00:35.520
-to publish my music online.
+00:00:39.040 --> 00:00:41.061
+but I'm more of a DIY-type,
-00:00:35.520 --> 00:00:37.200
-I could publish with popular
-
-00:00:37.200 --> 00:00:39.040
-online music services,
-
-00:00:39.040 --> 00:00:42.000
-but I'm more of a DIY-type, so I chose to
-
-00:00:42.000 --> 00:00:44.719
-go ahead and publish with Emacs.
+00:00:41.061 --> 00:00:44.719
+so I chose to go ahead and
+publish with Emacs.
00:00:44.719 --> 00:00:48.160
What's the motivation behind this?
-00:00:48.160 --> 00:00:49.760
+00:00:48.160 --> 00:00:51.600
A lot of it comes down to some
-
-00:00:49.760 --> 00:00:51.600
fundamental freedoms
-00:00:51.600 --> 00:00:54.960
+00:00:51.600 --> 00:00:57.178
that Emacs and GNU software
+represent to me,
-00:00:54.960 --> 00:00:59.120
-represent to me, as well as my
-
-00:00:59.120 --> 00:01:01.840
-ideas on culture and my background.
+00:00:57.178 --> 00:01:01.840
+as well as my ideas on culture and my
+background.
00:01:01.840 --> 00:01:04.080
-I don't believe that music is a consumer good.
-
-00:01:04.080 --> 00:01:06.080
-It's a form of knowledge,
+I don't believe that music is
+a consumer good.
-00:01:06.080 --> 00:01:08.320
-like an algorithm.
+00:01:04.080 --> 00:01:08.320
+It's a form of knowledge, like an
+algorithm.
-00:01:08.320 --> 00:01:10.479
-And it's just such a part of
+00:01:08.320 --> 00:01:11.036
+And it's just such a part of culture,
-00:01:10.479 --> 00:01:13.119
-culture, like in tribal cultures, music
+00:01:11.036 --> 00:01:12.780
+like in tribal cultures,
-00:01:13.119 --> 00:01:16.640
-was seen as a gift from the cosmos or
+00:01:12.780 --> 00:01:17.405
+music was seen as a gift from the cosmos
+or the gods.
-00:01:16.640 --> 00:01:18.000
-the gods. It was
+00:01:17.405 --> 00:01:20.288
+It was a gift maybe through an
+individual vessel,
-00:01:18.000 --> 00:01:19.920
-a gift maybe through an individual
-
-00:01:19.920 --> 00:01:21.920
-vessel, but was shared with the people
+00:01:20.288 --> 00:01:21.920
+but was shared with the people
00:01:21.920 --> 00:01:23.520
and shared with everyone,
@@ -108,11 +89,12 @@ So to me, music is something that
00:01:29.840 --> 00:01:31.520
should be shared and should be
-00:01:31.520 --> 00:01:34.640
-freely enjoyed by everyone. Of course,
+00:01:31.520 --> 00:01:33.818
+freely enjoyed by everyone.
-00:01:34.640 --> 00:01:36.560
-artists should be compensated as well,
+00:01:33.818 --> 00:01:36.560
+Of course, artists should be
+compensated as well,
00:01:36.560 --> 00:01:39.040
but that's a whole different topic.
@@ -120,41 +102,43 @@ but that's a whole different topic.
00:01:39.040 --> 00:01:41.040
So when I want to share my music,
-00:01:41.040 --> 00:01:42.720
+00:01:41.040 --> 00:01:43.520
I want to do it without impacting
-
-00:01:42.720 --> 00:01:43.520
anyone's freedom.
-00:01:43.520 --> 00:01:45.680
-Using GNU software like Emacs is a
+00:01:43.520 --> 00:01:45.425
+Using GNU software like Emacs
-00:01:45.680 --> 00:01:49.200
-good way that I can ensure that
+00:01:45.425 --> 00:01:49.200
+is a good way that I can ensure that
-00:01:49.200 --> 00:01:52.840
-I won't be requiring people to
+00:01:49.200 --> 00:01:52.597
+I won't be requiring people
-00:01:52.840 --> 00:01:55.840
-sign away their freedoms for anything.
+00:01:52.597 --> 00:01:55.840
+to sign away their freedoms for
+anything.
-00:01:55.840 --> 00:01:57.119
-There's a lot more I could say about
+00:01:55.840 --> 00:01:57.367
+There's a lot more I could say
+about this
-00:01:57.119 --> 00:01:58.799
-this but I don't have time.
+00:01:57.367 --> 00:01:58.799
+but I don't have time.
00:01:58.799 --> 00:02:03.439
-Feel free to reach out to me by email or IRC.
+Feel free to reach out to me by
+email or IRC.
00:02:03.439 --> 00:02:06.479
Part of the motivation for me,
-00:02:06.479 --> 00:02:08.239
+00:02:06.479 --> 00:02:08.775
personally, is that Emacs is super
+magical.
-00:02:08.239 --> 00:02:10.720
-magical. It's an all-in-one solution.
+00:02:08.775 --> 00:02:10.720
+It's an all-in-one solution.
00:02:10.720 --> 00:02:12.720
Like I said, the GNU software aligns with
@@ -162,25 +146,22 @@ Like I said, the GNU software aligns with
00:02:12.720 --> 00:02:14.480
Creative Commons' ideas.
-00:02:14.480 --> 00:02:16.800
-I can do file management. I can author
+00:02:14.480 --> 00:02:16.067
+I can do file management.
-00:02:16.800 --> 00:02:18.879
-HTML, all the web stuff I need even,
+00:02:16.067 --> 00:02:20.239
+I can author HTML, all the web stuff
+I need even, literate-style.
-00:02:18.879 --> 00:02:20.239
-literate-style.
+00:02:20.239 --> 00:02:22.171
+I can handle media and metadata.
-00:02:20.239 --> 00:02:22.640
-I can handle media and metadata. I've got
+00:02:22.171 --> 00:02:24.640
+I've got version control, remote server
+access...
-00:02:22.640 --> 00:02:24.640
-version control, remote server access...
-
-00:02:24.640 --> 00:02:26.800
+00:02:24.640 --> 00:02:28.080
All the tools I need are right under my
-
-00:02:26.800 --> 00:02:28.080
fingertips with this tool
00:02:28.080 --> 00:02:30.000
@@ -204,23 +185,22 @@ So, how do you use Emacs to publish music?
00:02:41.680 --> 00:02:43.440
Well, for me, I needed
-00:02:43.440 --> 00:02:45.120
-a couple of things. I needed to be able
+00:02:43.440 --> 00:02:44.258
+a couple of things.
-00:02:45.120 --> 00:02:46.480
-to audition and label
+00:02:44.258 --> 00:02:47.564
+I needed to be able to audition and
+label unlabeled audio tracks.
-00:02:46.480 --> 00:02:48.319
-unlabeled audio tracks. I have a lot of
+00:02:47.564 --> 00:02:50.320
+I have a lot of files that
+I don't know where they came from.
-00:02:48.319 --> 00:02:50.000
-files that I don't know where they
+00:02:50.320 --> 00:02:51.213
+I don't know what they are.
-00:02:50.000 --> 00:02:51.280
-came from. I don't know what they are. I
-
-00:02:51.280 --> 00:02:53.840
-need to be able to listen to them,
+00:02:51.213 --> 00:02:53.840
+I need to be able to listen to them,
00:02:53.840 --> 00:02:56.800
and I need to be able to add metadata to
@@ -240,20 +220,19 @@ And in the end, I wanted to take those
00:03:05.120 --> 00:03:08.319
files and programmatically produce a web page
-00:03:08.319 --> 00:03:11.920
-for people to consume. I found out that
-
-00:03:11.920 --> 00:03:14.879
-Emacs scores a hundred percent on all of
+00:03:08.319 --> 00:03:10.442
+for people to consume.
-00:03:14.879 --> 00:03:18.000
-these requirements that I had for this, and
+00:03:10.442 --> 00:03:14.879
+I found out that Emacs scores a hundred
+percent on all of
-00:03:18.000 --> 00:03:20.720
-a lot of that came from EMMS, the Emacs
+00:03:14.879 --> 00:03:17.709
+these requirements that I had for this,
-00:03:20.720 --> 00:03:22.640
-multimedia system.
+00:03:17.709 --> 00:03:22.640
+and a lot of that came from EMMS, the
+Emacs multimedia system.
00:03:22.640 --> 00:03:26.080
EMMS is great.
@@ -261,17 +240,18 @@ EMMS is great.
00:03:26.080 --> 00:03:27.760
If you haven't checked it out, please do.
-00:03:27.760 --> 00:03:30.000
-It's a little bit unintuitive, but
+00:03:27.760 --> 00:03:29.736
+It's a little bit unintuitive,
-00:03:30.000 --> 00:03:34.000
-once you get into it, you know it works.
+00:03:29.736 --> 00:03:34.000
+but once you get into it, you know it
+works.
-00:03:34.000 --> 00:03:36.640
-Basically, what EMMS gave me was the
+00:03:34.000 --> 00:03:36.420
+Basically, what EMMS gave me was
-00:03:36.640 --> 00:03:38.720
-ability to listen to the tracks,
+00:03:36.420 --> 00:03:38.720
+the ability to listen to the tracks,
00:03:38.720 --> 00:03:39.680
organize playlists.
@@ -297,17 +277,14 @@ so (require 'emms-mark). I'm going to
00:03:54.879 --> 00:03:59.680
go through, and I'm going to open the red...
-00:03:59.680 --> 00:04:02.319
-I've got this. These files here. So
+00:03:59.680 --> 00:04:02.092
+I've got this. These files here.
-00:04:02.319 --> 00:04:04.480
-you can see these files are mp3s.
+00:04:02.092 --> 00:04:04.480
+So you can see these files are mp3s.
-00:04:04.480 --> 00:04:06.080
-They're recorded on a
-
-00:04:06.080 --> 00:04:07.599
-digital recorder.
+00:04:04.480 --> 00:04:07.599
+They're recorded on a digital recorder.
00:04:07.599 --> 00:04:09.920
If I had the choice, I would have a
@@ -318,35 +295,28 @@ recorder that used a different format,
00:04:12.319 --> 00:04:14.640
but so be it. I can mark all these files
-00:04:14.640 --> 00:04:16.160
-and I can do EMMS
-
-00:04:16.160 --> 00:04:20.000
-add to .., and now they've been loaded
-
-00:04:20.000 --> 00:04:27.040
-into a playlist.
-
-00:04:27.040 --> 00:04:29.040
-So you can see the playlist here. There's
+00:04:14.640 --> 00:04:27.040
+and I can do EMMS add to .., and now
+they've been loaded into a playlist.
-00:04:29.040 --> 00:04:30.400
-some leftover files.
+00:04:27.040 --> 00:04:28.698
+So you can see the playlist here.
-00:04:30.400 --> 00:04:32.000
-So I've got these three files in my
+00:04:28.698 --> 00:04:30.400
+There's some leftover files.
-00:04:32.000 --> 00:04:33.759
-playlist, and as you can see, it's just
+00:04:30.400 --> 00:04:31.771
+So I've got these three files
-00:04:33.759 --> 00:04:34.639
-the file name,
+00:04:31.771 --> 00:04:33.361
+in my playlist, and as you can see,
-00:04:34.639 --> 00:04:36.800
-the path. I don't have any metadata
+00:04:33.361 --> 00:04:35.194
+it's just the file name, the path.
-00:04:36.800 --> 00:04:38.560
-associated with them.
+00:04:35.194 --> 00:04:38.560
+I don't have any metadata associated
+with them.
00:04:38.560 --> 00:04:41.360
In this playlist, I can hit E,
@@ -360,37 +330,30 @@ the tag information that I have.
00:04:47.360 --> 00:04:49.840
I could edit these here.
-00:04:49.840 --> 00:04:51.520
-I could edit them one at a time, but that's
+00:04:49.840 --> 00:04:51.129
+I could edit them one at a time,
-00:04:51.520 --> 00:04:53.919
-not really great. I want superpower
+00:04:51.129 --> 00:05:03.101
+but that's not really great. I want
+superpower metadata authoring.
-00:04:53.919 --> 00:05:04.479
-metadata authoring. So,
+00:05:03.101 --> 00:05:07.159
+So, by marking them, I can then hit E,
-00:05:04.479 --> 00:05:07.680
-by marking them, I can then hit E, and I
+00:05:07.159 --> 00:05:12.639
+and I have all three of the tracks
+loaded up in this tags buffer.
-00:05:07.680 --> 00:05:10.479
-have all three of the tracks loaded up in
+00:05:12.639 --> 00:05:16.912
+On top of that, I can do EMMS tag
+editor,
-00:05:10.479 --> 00:05:12.639
-this tags buffer.
+00:05:16.912 --> 00:05:22.840
+set all, C-c C-r, and I want to
+set the artist.
-00:05:12.639 --> 00:05:15.759
-On top of that, I can do EMMS
-
-00:05:15.759 --> 00:05:18.800
-tag editor, set all, C-c C-r,
-
-00:05:18.800 --> 00:05:22.840
-and I want to set the artist.
-
-00:05:22.840 --> 00:05:25.680
+00:05:22.840 --> 00:05:26.320
so these are some recordings of my
-
-00:05:25.680 --> 00:05:26.320
family.
00:05:26.320 --> 00:05:31.039
@@ -405,53 +368,45 @@ Spring Walk with Lap Harp.
00:05:40.160 --> 00:05:45.520
I want to set the year.
-00:05:45.520 --> 00:05:48.960
+00:05:45.520 --> 00:05:53.759
And then I'm going to go ahead and put
-
-00:05:48.960 --> 00:05:53.759
these in manually,
-00:05:53.759 --> 00:05:55.840
-but with the power of Emacs keyboard
-
-00:05:55.840 --> 00:05:57.039
-macros and
+00:05:53.759 --> 00:05:56.759
+but with the power of Emacs
+keyboard macros
-00:05:57.039 --> 00:05:59.600
-registers and so on. I could do this
+00:05:56.759 --> 00:05:59.600
+and registers and so on. I could do this
00:05:59.600 --> 00:06:02.319
programmatically as well,
-00:06:02.319 --> 00:06:04.000
-which would make it a lot easier if I
+00:06:02.319 --> 00:06:03.818
+which would make it a lot easier
-00:06:04.000 --> 00:06:06.000
-had much more than three files to
-
-00:06:06.000 --> 00:06:07.440
+00:06:03.818 --> 00:06:07.440
+if I had much more than three files to
do this with.
00:06:07.440 --> 00:06:09.919
Submit the changes with C-c C-c,
-00:06:09.919 --> 00:06:11.520
-and now we've got the playlist. You can
-
-00:06:11.520 --> 00:06:13.120
-see the artist and track number have
+00:06:09.919 --> 00:06:11.232
+and now we've got the playlist.
-00:06:13.120 --> 00:06:15.039
-been updated here.
+00:06:11.232 --> 00:06:15.039
+You can see the artist and track number
+have been updated here.
00:06:15.039 --> 00:06:17.360
And then the final piece of this is that
-00:06:17.360 --> 00:06:19.039
-if you look at this, you can see that the
+00:06:17.360 --> 00:06:18.875
+if you look at this, you can see that
-00:06:19.039 --> 00:06:20.479
-file name is still the same.
+00:06:18.875 --> 00:06:20.479
+the file name is still the same.
00:06:20.479 --> 00:06:22.639
So if I were looking at the directory,
@@ -468,29 +423,27 @@ for people to download,
00:06:28.000 --> 00:06:30.319
it's nice to be able to have that
-00:06:30.319 --> 00:06:32.400
-filename reflect the track number and the
+00:06:30.319 --> 00:06:32.044
+filename reflect the track number
-00:06:32.400 --> 00:06:34.800
-artist and so on. So there's another
+00:06:32.044 --> 00:06:33.609
+and the artist and so on.
-00:06:34.800 --> 00:06:41.199
-command, EMMS
+00:06:33.609 --> 00:06:40.250
+So there's another command,
-00:06:41.199 --> 00:06:44.160
-rename tag editor, rename, so it could be
+00:06:40.250 --> 00:06:42.970
+EMMS rename tag editor, rename,
-00:06:44.160 --> 00:06:45.120
-just capital R.
+00:06:42.970 --> 00:06:45.120
+so it could be just capital R.
-00:06:45.120 --> 00:06:47.199
-I think I need to mark all of these, hit
+00:06:45.120 --> 00:06:46.991
+I think I need to mark all of these,
-00:06:47.199 --> 00:06:48.880
-capital R, and then it's going to ask me
-
-00:06:48.880 --> 00:06:50.000
-to confirm
+00:06:46.991 --> 00:06:50.000
+hit capital R, and then it's going to
+ask me to confirm
00:06:50.000 --> 00:06:54.400
and say yes to all of them.
@@ -504,86 +457,78 @@ whoops I have to update it--you'll see
00:07:04.319 --> 00:07:06.319
it's been updated with the artist,
-00:07:06.319 --> 00:07:09.840
-track number and
-
-00:07:09.840 --> 00:07:11.120
-track name.
+00:07:06.319 --> 00:07:11.120
+track number and track name.
-00:07:11.120 --> 00:07:14.639
-This format is a format string, so
+00:07:11.120 --> 00:07:14.432
+This format is a format string,
-00:07:14.639 --> 00:07:17.360
-it's customizable of course.
+00:07:14.432 --> 00:07:17.360
+so it's customizable of course.
00:07:17.360 --> 00:07:21.039
I just decided to go with the default.
-00:07:21.039 --> 00:07:24.160
+00:07:21.039 --> 00:07:24.948
So that's pretty great, this workflow
+just with EMMS.
-00:07:24.160 --> 00:07:26.000
-just with EMMS. I didn't have to do
-
-00:07:26.000 --> 00:07:28.080
-anything. This is all there. It's all
-
-00:07:28.080 --> 00:07:30.960
-built in. It gave me exactly what
+00:07:24.948 --> 00:07:27.585
+I didn't have to do anything. This is
+all there.
-00:07:30.960 --> 00:07:32.639
-I was looking for in terms of being able
+00:07:27.585 --> 00:07:31.673
+It's all built in. It gave me exactly
+what I was looking for
-00:07:32.639 --> 00:07:35.599
-to process a lot of raw audio files
+00:07:31.673 --> 00:07:35.599
+in terms of being able to process a lot
+of raw audio files,
-00:07:35.599 --> 00:07:37.599
-add metadata to them and get them ready
-
-00:07:37.599 --> 00:07:39.280
+00:07:35.599 --> 00:07:39.280
+add metadata to them, and get them ready
for publishing.
00:07:39.280 --> 00:07:41.599
And this is for publishing for playback
-00:07:41.599 --> 00:07:43.520
-in any media player. It'll be
-
-00:07:43.520 --> 00:07:46.560
-useful. Not just for the web page that I'm
+00:07:41.599 --> 00:07:44.026
+in any media player. It'll be useful.
-00:07:46.560 --> 00:07:48.479
-building. So the
+00:07:44.026 --> 00:07:47.639
+Not just for the web page that I'm
+building.
-00:07:48.479 --> 00:07:50.560
-final part, of course, is to build the
+00:07:47.639 --> 00:07:51.440
+So the final part, of course, is to
+build the web page.
-00:07:50.560 --> 00:07:54.960
-web page. Emacs makes authoring HTML trivial.
+00:07:51.440 --> 00:07:54.960
+Emacs makes authoring HTML trivial.
-00:07:54.960 --> 00:07:57.440
-As I was going through this, I
+00:07:54.960 --> 00:07:57.357
+As I was going through this,
-00:07:57.440 --> 00:07:59.039
-wanted to challenge myself and just be,
+00:07:57.357 --> 00:07:59.701
+I wanted to challenge myself and just
+be, like,
-00:07:59.039 --> 00:08:00.400
-like, can I do this
+00:07:59.701 --> 00:08:03.520
+can I do this just all with Emacs?
+Can I just make this?
-00:08:00.400 --> 00:08:03.520
-just all with Emacs? Can I just make this?
+00:08:03.520 --> 00:08:05.134
+I don't need a... I don't need Ruby.
-00:08:03.520 --> 00:08:05.440
-I don't need a... I don't need Ruby. I don't
+00:08:05.134 --> 00:08:06.707
+I don't need Rails. I don't need Node.
-00:08:05.440 --> 00:08:07.039
-need Rails. I don't need Node. I don't
+00:08:06.707 --> 00:08:08.528
+I don't need any of this other stuff.
-00:08:07.039 --> 00:08:08.960
-need any of this other stuff. I have my
-
-00:08:08.960 --> 00:08:10.560
-tool right here. It's a fully...
+00:08:08.528 --> 00:08:10.560
+I have my tool right here. It's a
+fully...
00:08:10.560 --> 00:08:12.560
It's a whole operating system, basically,
@@ -591,83 +536,78 @@ It's a whole operating system, basically,
00:08:12.560 --> 00:08:15.039
plus programming languages.
-00:08:15.039 --> 00:08:17.360
-So the first thing I started with was
+00:08:15.039 --> 00:08:17.171
+So the first thing I started with
-00:08:17.360 --> 00:08:19.919
-buffer scripting for manipulating text.
+00:08:17.171 --> 00:08:19.919
+was buffer scripting for
+manipulating text.
00:08:19.919 --> 00:08:22.560
That's kind of the easiest way to do it.
-00:08:22.560 --> 00:08:24.319
-Basically, anything you can do in a
-
-00:08:24.319 --> 00:08:25.280
-buffer, you can do
+00:08:22.560 --> 00:08:24.692
+Basically, anything you can do in
+a buffer,
-00:08:25.280 --> 00:08:28.479
-programmatically with Elisp. So this
+00:08:24.692 --> 00:08:27.834
+you can do programmatically with Elisp.
-00:08:28.479 --> 00:08:30.319
-might be a good example for beginners. If
+00:08:27.834 --> 00:08:30.217
+So this might be a good example for
+beginners.
-00:08:30.319 --> 00:08:33.919
-you haven't done any Elisp yet,
+00:08:30.217 --> 00:08:33.919
+If you haven't done any Elisp yet,
-00:08:33.919 --> 00:08:36.000
-a simple example is to create this
+00:08:33.919 --> 00:08:39.557
+a simple example is to create this div
+output here.
-00:08:36.000 --> 00:08:36.959
-this div
+00:08:39.557 --> 00:08:41.581
+You can use this with-temp-buffer,
-00:08:36.959 --> 00:08:40.000
-output here. You
+00:08:41.581 --> 00:08:44.240
+so basically creating an imaginary
+buffer.
-00:08:40.000 --> 00:08:41.760
-can use this with-temp-buffer, so
+00:08:44.240 --> 00:08:45.945
+insert is just like typing,
-00:08:41.760 --> 00:08:44.240
-basically creating an imaginary buffer.
-
-00:08:44.240 --> 00:08:46.640
-insert is just like typing, so you put
-
-00:08:46.640 --> 00:08:48.800
-strings in, you put new lines in,
+00:08:45.945 --> 00:08:48.800
+so you put strings in,
+you put new lines in,
00:08:48.800 --> 00:08:50.959
you can build some strings together.
-00:08:50.959 --> 00:08:52.080
-Here you can see
-
-00:08:52.080 --> 00:08:54.000
-I'm doing a random number, so every time
-
-00:08:54.000 --> 00:08:55.360
-I execute this,
+00:08:50.959 --> 00:08:53.551
+Here you can see I'm doing a random
+number,
-00:08:55.360 --> 00:08:57.920
-my content changes. I can generate
+00:08:53.551 --> 00:08:55.360
+so every time I execute this,
-00:08:57.920 --> 00:09:01.040
-dynamic content in HTML blocks
+00:08:55.360 --> 00:08:56.790
+my content changes.
-00:09:01.040 --> 00:09:04.399
-with Elisp. For my
+00:08:56.790 --> 00:09:03.685
+I can generate dynamic content in HTML
+blocks with Elisp.
-00:09:04.399 --> 00:09:05.920
-web page builder, It's a little more
+00:09:03.685 --> 00:09:06.493
+For my web page builder, it's a little
+more complex.
-00:09:05.920 --> 00:09:08.000
-complex. I'm pulling data out
+00:09:06.493 --> 00:09:08.000
+I'm pulling data out
00:09:08.000 --> 00:09:12.080
using EMMS data structures,
00:09:12.080 --> 00:09:16.080
-so it's pulling that out from the track data.
+so it's pulling that out from
+the track data.
00:09:16.080 --> 00:09:19.440
And then I'm using some program to
@@ -675,50 +615,48 @@ And then I'm using some program to
00:09:19.440 --> 00:09:21.440
generate list elements, so each track is
-00:09:21.440 --> 00:09:23.200
-going to have the title
+00:09:21.440 --> 00:09:24.086
+going to have the title and
+track number,
-00:09:23.200 --> 00:09:25.120
-and track number, and then a button for
+00:09:24.086 --> 00:09:25.869
+and then a button for playing it,
-00:09:25.120 --> 00:09:26.959
-playing it, plus the source
+00:09:25.869 --> 00:09:28.206
+plus the source of the audio file,
-00:09:26.959 --> 00:09:29.519
-of the audio file, which will get added
+00:09:28.206 --> 00:09:30.480
+which will get added here.
-00:09:29.519 --> 00:09:30.480
-here.
+00:09:30.480 --> 00:09:32.485
+Right now, this is hard coded for Opus,
-00:09:30.480 --> 00:09:32.640
-Right now, this is hard coded for Opus, so
+00:09:32.485 --> 00:09:37.200
+so it won't work for my MP3s.
-00:09:32.640 --> 00:09:37.200
-it won't work for my MP3s.
+00:09:37.200 --> 00:09:38.867
+I'm going to skip over snippets.
-00:09:37.200 --> 00:09:39.120
-I'm going to skip over snippets. Turns
+00:09:38.867 --> 00:09:42.017
+Turns out format strings were good
+enough for me.
-00:09:39.120 --> 00:09:41.200
-out format strings were good enough
+00:09:42.017 --> 00:09:45.035
+Snippets could be useful,
-00:09:41.200 --> 00:09:45.519
-for me. Snippets could be useful, but
+00:09:45.035 --> 00:09:47.267
+but format is super powerful,
-00:09:45.519 --> 00:09:48.160
-format is super powerful, and I didn't
+00:09:47.267 --> 00:09:49.839
+and I didn't really even need
+all that much power,
-00:09:48.160 --> 00:09:49.839
-really even need all that much power,
-
-00:09:49.839 --> 00:09:51.279
+00:09:49.839 --> 00:09:52.187
basically, just doing string
+interpolation.
-00:09:51.279 --> 00:09:53.519
-interpolation. So if you haven't seen
-
-00:09:53.519 --> 00:09:54.560
-format before,
+00:09:52.187 --> 00:09:54.560
+So if you haven't seen format before,
00:09:54.560 --> 00:09:56.720
you basically put these control strings
@@ -726,37 +664,29 @@ you basically put these control strings
00:09:56.720 --> 00:09:59.120
or control characters inside of a string,
-00:09:59.120 --> 00:10:03.120
-and you can generate an
+00:09:59.120 --> 00:10:05.040
+and you can generate an output string
+that you want.
-00:10:03.120 --> 00:10:05.040
-output string that you want.
+00:10:05.040 --> 00:10:07.344
+So in my generator code, basically,
-00:10:05.040 --> 00:10:07.600
-So in my generator code, basically, it's
+00:10:07.344 --> 00:10:08.720
+it's down here,
-00:10:07.600 --> 00:10:08.720
-down here,
-
-00:10:08.720 --> 00:10:10.959
+00:10:08.720 --> 00:10:12.800
I'm calling format with this Bard
-
-00:10:10.959 --> 00:10:12.800
Bivou(m)acs template,
-00:10:12.800 --> 00:10:15.920
-and that's basically a big
+00:10:12.800 --> 00:10:17.491
+and that's basically a big string of
+HTML.
-00:10:15.920 --> 00:10:18.240
-a big string of HTML. It's just
+00:10:17.491 --> 00:10:21.200
+It's just my whole page of HTML
-00:10:18.240 --> 00:10:21.200
-my whole page of HTML
-
-00:10:21.200 --> 00:10:22.959
+00:10:21.200 --> 00:10:24.399
with those control characters in just
-
-00:10:22.959 --> 00:10:24.399
four places.
00:10:24.399 --> 00:10:26.399
@@ -765,41 +695,38 @@ One of them populates the track list.
00:10:26.399 --> 00:10:29.760
That's really the meat of the program.
-00:10:29.760 --> 00:10:32.079
+00:10:29.760 --> 00:10:34.746
Again, this is a combination of using
+buffer scripting, using HTML mode,
-00:10:32.079 --> 00:10:33.440
-buffer scripting,
+00:10:34.746 --> 00:10:37.279
+inserting text format strings,
-00:10:33.440 --> 00:10:37.279
-using HTML mode, inserting text format strings,
+00:10:37.279 --> 00:10:39.251
+and then I can indent-region
-00:10:37.279 --> 00:10:40.000
-and then I can indent-region so the HTML
-
-00:10:40.000 --> 00:10:41.920
-actually looks pretty
+00:10:39.251 --> 00:10:41.920
+so the HTML actually looks pretty
00:10:41.920 --> 00:10:45.200
when it comes out of it as well.
-00:10:45.200 --> 00:10:50.160
+00:10:45.200 --> 00:10:54.000
I will show that, just really quick
-
-00:10:50.160 --> 00:10:54.000
actually.
-00:10:54.000 --> 00:10:56.880
-So you can see, this is the HTML that got
+00:10:54.000 --> 00:10:57.540
+So you can see, this is the HTML that
+got generated.
-00:10:56.880 --> 00:10:58.800
-generated. I've got my template.
+00:10:57.540 --> 00:10:58.800
+I've got my template.
-00:10:58.800 --> 00:11:02.560
-I inserted the title here, the style, the
+00:10:58.800 --> 00:11:02.193
+I inserted the title here, the style,
-00:11:02.560 --> 00:11:05.760
-font was all inserted,
+00:11:02.193 --> 00:11:05.760
+the font was all inserted,
00:11:05.760 --> 00:11:07.920
and then this whole list of of tracks here.
@@ -810,98 +737,100 @@ It's kind of messy to look at,
00:11:11.200 --> 00:11:14.399
but this track list, this whole div here,
-00:11:14.399 --> 00:11:15.920
-is all generated by
-
-00:11:15.920 --> 00:11:22.480
-my generator code, and it works. It's great.
+00:11:14.399 --> 00:11:22.480
+is all generated by my generator code,
+and it works. It's great.
00:11:22.480 --> 00:11:27.120
Okay, moving on.
-00:11:27.120 --> 00:11:30.240
+00:11:27.120 --> 00:11:30.945
So the other thing was that as I was
+developing this,
-00:11:30.240 --> 00:11:32.079
-developing this, I decided to use
-
-00:11:32.079 --> 00:11:33.200
-Org Babel and some of his
+00:11:30.945 --> 00:11:32.547
+I decided to use Org Babel
-00:11:33.200 --> 00:11:35.360
-its features for multi-language
+00:11:32.547 --> 00:11:35.588
+and some of its features for
+multi-language things
-00:11:35.360 --> 00:11:36.880
-things because I needed to style it with
+00:11:35.588 --> 00:11:37.839
+because I needed to style it with CSS
-00:11:36.880 --> 00:11:37.839
-CSS and
+00:11:37.839 --> 00:11:39.835
+and put actions in Javascript,
-00:11:37.839 --> 00:11:40.480
-and put actions in Javascript, and also I
-
-00:11:40.480 --> 00:11:42.480
-used SVG for authoring stuff.
+00:11:39.835 --> 00:11:42.480
+and also I used SVG for authoring stuff.
00:11:42.480 --> 00:11:46.079
It was a little bit complicated.
-00:11:46.079 --> 00:11:47.680
-It probably would have been simpler had I
+00:11:46.079 --> 00:11:47.484
+It probably would have been simpler
+
+00:11:47.484 --> 00:11:48.680
+had I not used Org Babel,
-00:11:47.680 --> 00:11:49.600
-not used Org Babel, but it's also really
+00:11:48.680 --> 00:11:49.894
+but it's also really fun.
-00:11:49.600 --> 00:11:51.440
-fun. I think it's a cool,
+00:11:49.894 --> 00:11:53.663
+I think it's a cool, cool idea to use
+literate programming.
-00:11:51.440 --> 00:11:53.839
-cool idea to use literate programming. My
+00:11:53.663 --> 00:11:57.001
+My idea was to create HTML
+components.
-00:11:53.839 --> 00:11:55.839
-idea was to create HTML
+00:11:57.001 --> 00:11:59.519
+I could name it like this,
-00:11:55.839 --> 00:11:59.519
-components. I could name it like this,
+00:11:59.519 --> 00:12:00.959
+put a format string inside it,
-00:11:59.519 --> 00:12:01.440
-put a format string inside it, and build
+00:12:00.959 --> 00:12:02.800
+and build a function
-00:12:01.440 --> 00:12:02.800
-a function
+00:12:02.800 --> 00:12:04.302
+in Elisp to format it
-00:12:02.800 --> 00:12:05.519
-in Elisp to format it and spit out the
+00:12:04.302 --> 00:12:07.120
+and spit out the HTML that I want.
-00:12:05.519 --> 00:12:07.120
-HTML that I want.
+00:12:07.120 --> 00:12:09.581
+By doing this, then,
-00:12:07.120 --> 00:12:10.320
-By doing this, then, I can
+00:12:09.581 --> 00:12:12.388
+I can just change things in my Org file,
-00:12:10.320 --> 00:12:12.880
-just change things in my Org file which,
+00:12:12.388 --> 00:12:14.814
+which, not getting a whole lot of time
+to work on it,
-00:12:12.880 --> 00:12:14.320
-not getting a whole lot of time to work
+00:12:14.814 --> 00:12:16.615
+I can come back to it
-00:12:14.320 --> 00:12:16.959
-on it, I can come back to it and
+00:12:16.615 --> 00:12:19.335
+and I have a lot of notes.
-00:12:16.959 --> 00:12:19.839
-I have a lot of notes. I can
+00:12:19.335 --> 00:12:21.695
+I can kind of generate things as I'm
+going
-00:12:19.839 --> 00:12:21.920
-kind of generate things as I'm going and
+00:12:21.695 --> 00:12:24.399
+and keep notes for myself,
+and keep the...
-00:12:21.920 --> 00:12:24.399
-keep notes for myself, and keep the...
+00:12:24.399 --> 00:12:25.308
+I don't know. It's cool.
-00:12:24.399 --> 00:12:25.600
-I don't know. It's cool. Literate
+00:12:25.308 --> 00:12:26.672
+Literate programming is fun.
-00:12:25.600 --> 00:12:27.519
-programming is fun. So I don't need to
+00:12:26.672 --> 00:12:27.519
+So I don't need to
00:12:27.519 --> 00:12:29.279
go into that too much, but you can see if
@@ -909,41 +838,42 @@ go into that too much, but you can see if
00:12:29.279 --> 00:12:31.040
I execute this here,
-00:12:31.040 --> 00:12:33.360
-I get the the div that I want. It's a
+00:12:31.040 --> 00:12:32.983
+I get the the div that I want.
-00:12:33.360 --> 00:12:34.880
-little bit funny. You'll see I have the
+00:12:32.983 --> 00:12:34.013
+It's a little bit funny.
-00:12:34.880 --> 00:12:36.480
-string like this, the way that
+00:12:34.013 --> 00:12:35.786
+You'll see I have the string like this,
-00:12:36.480 --> 00:12:39.200
-noweb expands, I can't do this on a
-
-00:12:39.200 --> 00:12:40.000
-single line.
+00:12:35.786 --> 00:12:40.000
+the way that noweb expands, I can't do
+this on a single line.
00:12:40.000 --> 00:12:43.839
It looks funny when you do that,
-00:12:43.839 --> 00:12:45.440
-so that might be something to work out
+00:12:43.839 --> 00:12:45.931
+so that might be something
+to work out later.
-00:12:45.440 --> 00:12:48.959
-later. CSS blocks can either be tangled out
+00:12:45.931 --> 00:12:48.959
+CSS blocks can either be tangled out
00:12:48.959 --> 00:12:52.639
-and referenced in the HTML source or inlined.
+and referenced in the HTML source,
+or inlined.
00:12:52.639 --> 00:12:54.639
Here's an example I have of inlining it.
-00:12:54.639 --> 00:12:56.959
-So I've got my little CSS block named
+00:12:54.639 --> 00:12:57.609
+So I've got my little CSS block
+named style,
-00:12:56.959 --> 00:13:00.320
-style, Javascript named script,
+00:12:57.609 --> 00:13:00.320
+Javascript named script,
00:13:00.320 --> 00:13:03.040
and then I've got this HTML source block
@@ -954,20 +884,23 @@ with noweb expansion.
00:13:04.839 --> 00:13:07.920
These double angle brackets here
-00:13:07.920 --> 00:13:09.839
-are where I'm going to expand the block
+00:13:07.920 --> 00:13:09.396
+are where I'm going to expand
-00:13:09.839 --> 00:13:12.639
-named style. I'm actually calling a function,
+00:13:09.396 --> 00:13:12.639
+the block named style. I'm actually
+calling a function,
-00:13:12.639 --> 00:13:14.399
-so I want the result of the function
+00:13:12.639 --> 00:13:14.737
+so I want the result of the
+function here,
-00:13:14.399 --> 00:13:17.040
-here, and then the script will just get
+00:13:14.737 --> 00:13:18.881
+and then the script will just get
+expanded here.
-00:13:17.040 --> 00:13:22.959
-expanded here. So org-babel-expand-src-block,
+00:13:18.881 --> 00:13:22.959
+So org-babel-expand-src-block,
00:13:22.959 --> 00:13:25.360
you can see what it looks like.
@@ -975,50 +908,45 @@ you can see what it looks like.
00:13:25.360 --> 00:13:28.160
I've got my style here. I've got my title.
-00:13:28.160 --> 00:13:29.920
-I've got that main content class
-
-00:13:29.920 --> 00:13:31.279
-I showed before,
+00:13:28.160 --> 00:13:31.279
+I've got that main content class I
+showed before,
00:13:31.279 --> 00:13:34.480
-and the script as well. So that's kind of cool.
+and the script as well.
+So that's kind of cool.
-00:13:34.480 --> 00:13:36.320
+00:13:34.480 --> 00:13:37.527
I could just run org-babel-tangle and
+get my thing out
-00:13:36.320 --> 00:13:38.160
-get my thing out and just
-
-00:13:38.160 --> 00:13:40.480
-edit one file instead of multiple files.
-
-00:13:40.480 --> 00:13:41.600
-Not for everyone,
+00:13:37.527 --> 00:13:40.480
+and just edit one file instead of
+multiple files.
-00:13:41.600 --> 00:13:45.839
-but I thought it was kind of fun.
+00:13:40.480 --> 00:13:46.455
+Not for everyone, but I thought it was
+kind of fun. All right.
-00:13:45.839 --> 00:13:47.760
-All right. Oh, and the final thing is that
+00:13:46.455 --> 00:13:48.807
+Oh, and the final thing is
+that in Emacs,
-00:13:47.760 --> 00:13:49.199
-in Emacs, you can
+00:13:48.807 --> 00:13:51.320
+you can author and view SVG.
-00:13:49.199 --> 00:13:52.880
-author and view SVG. So this is just an
+00:13:51.320 --> 00:13:58.297
+So this is just an Org. This SVG, I used
+to make the play and pause buttons.
-00:13:52.880 --> 00:13:57.199
-Org. This SVG, I used to make the play
+00:13:58.297 --> 00:13:59.519
+I didn't know this,
-00:13:57.199 --> 00:13:59.519
-and pause buttons. I didn't know this,
+00:13:59.519 --> 00:14:02.162
+but if you edit an SVG file,
-00:13:59.519 --> 00:14:02.800
-but if you edit an SVG file, you can
-
-00:14:02.800 --> 00:14:08.800
-toggle back and forth
+00:14:02.162 --> 00:14:08.800
+you can toggle back and forth
00:14:08.800 --> 00:14:13.199
between the code and the image.
@@ -1026,107 +954,102 @@ between the code and the image.
00:14:13.199 --> 00:14:17.360
It's pretty sweet. So I can iteratively
-00:14:17.360 --> 00:14:19.680
-work through this because of how
-
-00:14:19.680 --> 00:14:20.560
-Emacs is.
+00:14:17.360 --> 00:14:20.560
+work through this
+because of how Emacs is.
00:14:20.560 --> 00:14:24.959
Final considerations here,
-00:14:24.959 --> 00:14:27.360
-like when doing this, I want it to be all
+00:14:24.959 --> 00:14:26.247
+like when doing this,
-00:14:27.360 --> 00:14:29.279
-free, so I want to use fonts that use a
+00:14:26.247 --> 00:14:27.606
+I want it to be all free,
-00:14:29.279 --> 00:14:30.079
-free license.
+00:14:27.606 --> 00:14:30.079
+so I want to use fonts that use a free
+license.
00:14:30.079 --> 00:14:32.800
I found GNU Unifont. It's kind of cool.
-00:14:32.800 --> 00:14:34.800
-The content license... I chose
+00:14:32.800 --> 00:14:34.333
+The content license...
-00:14:34.800 --> 00:14:37.600
-Creative Commons Attribution ShareAlike,
+00:14:34.333 --> 00:14:37.600
+I chose Creative Commons Attribution
+ShareAlike,
00:14:37.600 --> 00:14:39.920
which is kind of like the GPL.
-00:14:39.920 --> 00:14:42.880
-Ideally, I could serve it with Emacs. I'd
+00:14:39.920 --> 00:14:42.663
+Ideally, I could serve it with Emacs.
-00:14:42.880 --> 00:14:44.800
-like to remove idiosyncrasy so other
-
-00:14:44.800 --> 00:14:46.320
+00:14:42.663 --> 00:14:46.320
+I'd like to remove idiosyncrasy so other
people can use it.
00:14:46.320 --> 00:14:48.720
It's pretty much just my tool right now.
-00:14:48.720 --> 00:14:51.040
-Not requiring the web browser... I can
-
-00:14:51.040 --> 00:14:54.079
-ship playlists so that you can just
+00:14:48.720 --> 00:14:50.734
+Not requiring the web browser...
-00:14:54.079 --> 00:14:58.000
-click or link to a playlist on your favorite
+00:14:50.734 --> 00:14:56.648
+I can ship playlists so that you can
+just click or link to a playlist
-00:14:58.000 --> 00:15:00.639
-player, even EMMS if you want, and then
+00:14:56.648 --> 00:15:00.068
+on your favorite player, even EMMS if
+you want,
-00:15:00.639 --> 00:15:02.639
-packing up those albums in like a ZIP or
-
-00:15:02.639 --> 00:15:04.320
-.tar file.
+00:15:00.068 --> 00:15:04.320
+and then packing up those albums in like
+a ZIP or .tar file.
00:15:04.320 --> 00:15:08.639
So you can go to churls.world .
-00:15:08.639 --> 00:15:10.880
-It just has a link to this album. I'll
+00:15:08.639 --> 00:15:10.644
+It just has a link to this album.
-00:15:10.880 --> 00:15:14.000
-display it here in just a second.
+00:15:10.644 --> 00:15:14.000
+I'll display it here in just a second.
00:15:14.000 --> 00:15:17.519
You can contact me. I'm shoshin on #emacs
00:15:17.519 --> 00:15:21.040
-in IRC and on sourcehut. You can email me
+in IRC and on sourcehut. You can email me:
00:15:21.040 --> 00:15:23.680
grant@churls.world, personal, or
00:15:23.680 --> 00:15:26.800
-grant@unabridgedsoftware.com. All right, now.
+grant@unabridgedsoftware.com.
+All right, now.
00:15:26.800 --> 00:15:32.079
Let's see about this...
-00:15:32.079 --> 00:15:33.680
-This is up online, so if you want to
-
-00:15:33.680 --> 00:15:35.120
-listen to my
+00:15:32.079 --> 00:15:34.316
+This is up online, so if you
+want to listen
-00:15:35.120 --> 00:15:39.199
-college band's album from 20 years ago,
+00:15:34.316 --> 00:15:39.199
+to my college band's album from
+20 years ago,
00:15:39.199 --> 00:15:43.040
here it is: Cassiopeia Basement Days.
-00:15:43.040 --> 00:15:47.680
-Whoops. I made this art in Krita. You can
+00:15:43.040 --> 00:15:46.887
+Whoops. I made this art in Krita.
-00:15:47.680 --> 00:15:51.199
-press play. You can skip around.
+00:15:46.887 --> 00:15:51.199
+You can press play. You can skip around.
00:15:51.199 --> 00:15:55.040
I do have the playlist up here too.
@@ -1134,8 +1057,6 @@ I do have the playlist up here too.
00:15:55.040 --> 00:15:58.560
So yeah, thanks for listening.
-00:15:58.560 --> 00:16:00.880
-I hope you enjoyed it, and enjoy the rest
-
-00:16:00.880 --> 00:16:07.360
-of EmacsConf. Goodbye!
+00:15:58.560 --> 00:16:07.360
+I hope you enjoyed it, and enjoy the
+rest of EmacsConf. Goodbye!