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 emacs conf
0:16:04.360,0:16:07.360
goodbye