diff options
Diffstat (limited to '')
3 files changed, 1294 insertions, 1333 deletions
diff --git a/2020/info/05.md b/2020/info/05.md index 852caff3..30aaf561 100644 --- a/2020/info/05.md +++ b/2020/info/05.md @@ -112,390 +112,546 @@ screenshots from within Emacs as SVG (if compiled `--with-cairo`). <a name="transcript"></a> # Transcript -Hello, my name is Grant Shangreaux. This is my talk titled Bard -Bivou(m)acs: Publishing Music with Emacs. I'm a software developer -with Unabridged Software in Lincoln, Nebraska. Long time Emacs user, -relatively new Emacs hacker. Hopefully, I'll be able to show you my -workflow, with how I publish music with Emacs. All right. - -(<a href="#mainVideo" class="time-link">00:30</a>) -So as a musician, I would like to publish my music online. I could -publish with popular online music services, but I'm more of a -DIY-type, so I chose to go ahead and publish with Emacs. What's the -motivation behind this? A lot of it comes down to some fundamental -freedoms that Emacs and GNU software represent to me, as well as my -ideas on culture and my background. I don't believe that music is a -consumer good. It's a form of knowledge, like an algorithm. And it's -just such a part of culture, like in tribal cultures, music was seen -as a gift from the cosmos or the gods. It was a gift maybe through an -individual vessel, but was shared with the people and shared with -everyone, kept alive by the culture itself. So to me, music is -something that should be shared and should be freely enjoyed by -everyone. Of course, artists should be compensated as well, but that's -a whole different topic. - -(<a href="#mainVideo" class="time-link" data-timestamp="99">01:39</a>) -So when I want to share my music, I want to do it without -impacting anyone's freedom. Using GNU software like Emacs is a good -way that I can ensure that I won't be requiring people to sign away -their freedoms for anything. There's a lot more I could say about this -but I don't have time. Feel free to reach out to me by email or IRC. -Part of the motivation for me, personally, is that Emacs is super -magical. It's an all-in-one solution. Like I said, the GNU software -aligns with Creative Commons' ideas. I can do file management. I can -author HTML, all the web stuff I need even, literate-style. I can -handle media and metadata. I've got version control, remote server -access... All the tools I need are right under my fingertips with this -tool that I use every day for a long time. I don't need to look -elsewhere. - -(<a href="#mainVideo" class="time-link">02:31</a>) -It was a challenge. I wanted to see if I could do this all -within Emacs itself. So, how do you use Emacs to publish music? Well, -for me, I needed a couple of things. I needed to be able to audition -and label unlabeled audio tracks. I have a lot of files that I don't -know where they came from. I don't know what they are. I need to be -able to listen to them, and I need to be able to add metadata to -whatever audio format it is and rename the files based on that -metadata, potentially. And in the end, I wanted to take those files -and programmatically produce a web page for people to consume. - -(<a href="#mainVideo" class="time-link">03:08</a>) -I found out that Emacs scores a hundred percent on all of -these requirements that I had for this, and a lot of that came from -EMMS, the Emacs multimedia system. EMMS is great. If you haven't -checked it out, please do. It's a little bit unintuitive, but once you -get into it, you know it works. Basically, what EMMS gave me was the -ability to listen to the tracks, organize playlists. On top of that, -it gave me super-powered metadata authoring. - -(<a href="#mainVideo" class="time-link">03:42</a>) -I'm going to demonstrate that to you. So in order to do this, -you have to require markable playlists, so (require 'emms-mark). I'm -going to go through, and I'm going to open the red... I've got this. -These files here. So you can see these files are mp3s. They're -recorded on a digital recorder. If I had the choice, I would have a -recorder that used a different format, but so be it. I can mark all -these files and I can do EMMS add to .., and now they've been loaded -into a playlist. So you can see the playlist here. There's some -leftover files. - -(<a href="#mainVideo" class="time-link">04:30</a>) -So I've got these three files in my playlist, and as -you can see, it's just the file name, the path. I don't have any -metadata associated with them. In this playlist, I can hit E, and -it'll bring up a buffer showing the tag information that I have. I -could edit these here. I could edit them one at a time, but that's not -really great. I want superpower metadata authoring. So, by marking -them, I can then hit E, and I have all three of the tracks loaded up -in this tags buffer. On top of that, I can do EMMS tag editor, set -all, C-c C-r, and I want to set the artist. so these are some -recordings of my family. So, Shangreaux, set all three of them. I want -to set the album: Spring Walk with Lap Harp. I want to set the year. -And then I'm going to go ahead and put these in manually, but with the -power of Emacs keyboard macros and registers and so on. I could do -this programmatically as well, which would make it a lot easier if I -had much more than three files to do this with. Submit the changes -with C-c C-c, and now we've got the playlist. You can see the artist -and track number have been updated here. - -(<a href="#mainVideo" class="time-link">6:15</a>) -And then the final piece of this is that if you look at this, -you can see that the file name is still the same. So if I were looking -at the directory, I would still have this file name. When packaging -these up for a release, for people to download, it's nice to be able -to have that filename reflect the track number and the artist and so -on. So there's another command, EMMS rename tag editor, rename, so it -could be just capital R. I think I need to mark all of these, hit -capital R, and then it's going to ask me to confirm and say yes to all -of them. And now, if you look in the-- whoops I have to update -it--you'll see it's been updated with the artist, track number and -track name. This format is a format string, so it's customizable of -course. I just decided to go with the default. - -(<a href="#mainVideo" class="time-link">7:21</a>) -So that's pretty great, this workflow just with EMMS. I didn't -have to do anything. This is all there. It's all built in. It gave me -exactly what I was looking for in terms of being able to process a lot -of raw audio files add metadata to them and get them ready for -publishing. And this is for publishing for playback in any media -player. It'll be useful. Not just for the web page that I'm building. - -(<a href="#mainVideo" class="time-link">7:48</a>) -So the final part, of course, is to build the web page. Emacs -makes authoring HTML trivial. As I was going through this, I wanted to -challenge myself and just be, like, can I do this just all with Emacs? -Can I just make this? I don't need a... I don't need Ruby. I don't -need Rails. I don't need Node. I don't need any of this other stuff. I -have my tool right here. It's a fully... It's a whole operating -system, basically, plus programming languages. So the first thing I -started with was buffer scripting for manipulating text. That's kind -of the easiest way to do it. Basically, anything you can do in a -buffer, you can do programmatically with Elisp. So this might be a -good example for beginners. If you haven't done any Elisp yet, a -simple example is to create this this div output here. You can use -this with-temp-buffer, so basically creating an imaginary buffer. -insert is just like typing, so you put strings in, you put new lines -in, you can build some strings together. Here you can see I'm doing a -random number, so every time I execute this, my content change. I -can generate dynamic content in HTML blocks with Elisp. - -(<a href="#mainVideo" class="time-link">9:04</a>) -For my web page builder, It's a little more complex. I'm -pulling data out using EMMS data structures, so it's pulling that out -from the track data. And then I'm using some program to generate list -elements, so each track is going to have the title and track number, -and then a button for playing it, plus the source of the audio file, -which will get added here. Right now, this is hard coded for Opus, so -it won't work for my MP3s. I'm going to skip over snippets. Turns out -format strings were good enough for me. Snippets could be useful, but -format is super powerful, and I didn't really even need all that much -power, basically, just doing string interpolation. So if you haven't -seen format before, you basically put these control strings or control -characters inside of a string, and you can generate an output string -that you want. So in my generator code, basically, it's down here, I'm -calling format with this Bard Bivou(m)acs template, and that's -basically a big a big string of HTML. It's just my whole page of HTML -with those control characters in just four places. One of them -populates the track list. That's really the meat of the program. -Again, this is a combination of using buffer scripting, using HTML -mode, inserting text format strings, and then I can indent-region so -the HTML actually looks pretty when it comes out of it as well. I will -show that, just really quick actually. So you can see, this is the -HTML that got generated. I've got my template. I inserted the title -here, the style, the font was all inserted, and then this whole list -of of tracks here. It's kind of messy to look at, but this track list, -this whole div here, is all generated by my generator code, and it -works. It's great. Okay, moving on. - -(<a href="#mainVideo" class="time-link">11:27</a>) -So the other thing was that as I was developing this, I -decided to use Org Babel and some of his its features for -multi-language things because I needed to style it with CSS and and -put actions in Javascript, and also I used SVG for authoring stuff. It -was a little bit complicated. It probably would have been simpler had -I not used Org Babel, but it's also really fun. I think it's a cool, -cool idea to use literate programming. My idea was to create HTML -components. I could name it like this, put a format string inside it, -and build a function in Elisp to format it and spit out the HTML that -I want. By doing this, then, I can just change things in my Org file -which, not getting a whole lot of time to work on it, I can come back -to it and I have a lot of notes. I can kind of generate things as I'm -going and keep notes for myself, and keep the... I don't know. It's -cool. Literate programming is fun. So I don't need to go into that too -much, but you can see if I execute this here, I get the the div that I -want. It's a little bit funny. You'll see I have the string like this, -the way that noweb expands, I can't do this on a single line. It looks -funny when you do that, so that might be something to work out later. -CSS blocks can either be tangled out and referenced in the HTML source -or inlined. Here's an example I have of inlining it. So I've got my -little CSS block named style, Javascript named script, and then I've -got this HTML source block with noweb expansion. These double angle -brackets here are where I'm going to expand the block named style. I'm -actually calling a function, so I want the result of the function -here, and then the script will just get expanded here. So -org-babel-expand-src-block, you can see what it looks like. I've got -my style here. I've got my title. I've got that main content class I -showed before, and the script as well. So that's kind of cool. I could -just run org-babel-tangle and get my thing out and just edit one file -instead of multiple files. Not for everyone, but I thought it was kind -of fun. All right. - -(<a href="#mainVideo" class="time-link">13:45</a>) -Oh, and the final thing is that in Emacs, you can author and -view SVG. So this is just an Org. This SVG, I used to make the play -and pause buttons. I didn't know this, but if you edit an SVG file, -you can toggle back and forth between the code and the image. It's -pretty sweet. So I can iteratively work through this because of how -Emacs is. - -(<a href="#mainVideo" class="time-link">14:20</a>) -Final considerations here, like when doing this, I want it to -be all free, so I want to use fonts that use a free license. I found -GNU Unifont. It's kind of cool. The content license... I chose -Creative Commons Attribution ShareAlike, which is kind of like the -GPL. Ideally, I could serve it with Emacs. I'd like to remove -idiosyncrasy so other people can use it. It's pretty much just my tool -right now. Not requiring the web browser... I can ship playlists so -that you can just click or link to a playlist on your favorite player, -even EMMS if you want, and then packing up those albums in like a ZIP -or .tar file. - -(<a href="#mainVideo" class="time-link">15:04</a>) -So you can go to churls.world . It just has a link to this -album. I'll display it here in just a second. You can contact me. I'm -shoshin on #emacs in IRC and on sourcehut. You can email me -grant@churls.world, personal, or grant@unabridgedsoftware.com. All -right, now. Let's see about this... This is up online, so if you want -to listen to my college band's album from 20 years ago, here it is: -Casiopeia Basement Days. Whoops. I made this art in Krita. You can -press play. You can skip around. I do have the playlist up here too. -So yeah, thanks for listening. I hope you enjoyed it, and enjoy the -rest of EmacsConf. Goodbye! - -<!-- /transcript --> +[[!template text="Hello, my name is Grant Shangreaux." start="00:00:01.360" video="mainVideo" id=subtitle]] +[[!template text="This is my talk titled Bard Bivou(m)acs: Publishing Music with Emacs." start="00:00:04.480" video="mainVideo" id=subtitle]] +[[!template text="I'm a software developer with Unabridged Software in Lincoln, Nebraska." start="00:00:09.519" video="mainVideo" id=subtitle]] +[[!template text="Long time Emacs user, relatively new Emacs hacker." start="00:00:14.400" video="mainVideo" id=subtitle]] +[[!template text="Hopefully, I'll be able to show you my workflow," start="00:00:18.720" video="mainVideo" id=subtitle]] +[[!template text="with how I publish music with Emacs." start="00:00:22.487" video="mainVideo" id=subtitle]] +[[!template new="1" text="All right. So as a musician, I would like to publish my music online." start="00:00:30.480" video="mainVideo" id=subtitle]] +[[!template text="I could publish with popular online music services," start="00:00:35.520" video="mainVideo" id=subtitle]] +[[!template text="but I'm more of a DIY-type," start="00:00:39.040" video="mainVideo" id=subtitle]] +[[!template text="so I chose to go ahead and publish with Emacs." start="00:00:41.061" video="mainVideo" id=subtitle]] +[[!template text="What's the motivation behind this?" start="00:00:44.719" video="mainVideo" id=subtitle]] +[[!template text="A lot of it comes down to some fundamental freedoms" start="00:00:48.160" video="mainVideo" id=subtitle]] +[[!template text="that Emacs and GNU software represent to me," start="00:00:51.600" video="mainVideo" id=subtitle]] +[[!template text="as well as my ideas on culture and my background." start="00:00:57.178" video="mainVideo" id=subtitle]] +[[!template text="I don't believe that music is a consumer good." start="00:01:01.840" video="mainVideo" id=subtitle]] +[[!template text="It's a form of knowledge, like an algorithm." start="00:01:04.080" video="mainVideo" id=subtitle]] +[[!template text="And it's just such a part of culture," start="00:01:08.320" video="mainVideo" id=subtitle]] +[[!template text="like in tribal cultures," start="00:01:11.036" video="mainVideo" id=subtitle]] +[[!template text="music was seen as a gift from the cosmos or the gods." start="00:01:12.780" video="mainVideo" id=subtitle]] +[[!template text="It was a gift maybe through an individual vessel," start="00:01:17.405" video="mainVideo" id=subtitle]] +[[!template text="but was shared with the people" start="00:01:20.288" video="mainVideo" id=subtitle]] +[[!template text="and shared with everyone," start="00:01:21.920" video="mainVideo" id=subtitle]] +[[!template text="kept alive by the culture itself." start="00:01:23.520" video="mainVideo" id=subtitle]] +[[!template text="So to me, music is something that" start="00:01:26.799" video="mainVideo" id=subtitle]] +[[!template text="should be shared and should be" start="00:01:29.840" video="mainVideo" id=subtitle]] +[[!template text="freely enjoyed by everyone." start="00:01:31.520" video="mainVideo" id=subtitle]] +[[!template text="Of course, artists should be compensated as well," start="00:01:33.818" video="mainVideo" id=subtitle]] +[[!template text="but that's a whole different topic." start="00:01:36.560" video="mainVideo" id=subtitle]] +[[!template new="1" text="So when I want to share my music," start="00:01:39.040" video="mainVideo" id=subtitle]] +[[!template text="I want to do it without impacting anyone's freedom." start="00:01:41.040" video="mainVideo" id=subtitle]] +[[!template text="Using GNU software like Emacs" start="00:01:43.520" video="mainVideo" id=subtitle]] +[[!template text="is a good way that I can ensure that" start="00:01:45.425" video="mainVideo" id=subtitle]] +[[!template text="I won't be requiring people" start="00:01:49.200" video="mainVideo" id=subtitle]] +[[!template text="to sign away their freedoms for anything." start="00:01:52.597" video="mainVideo" id=subtitle]] +[[!template text="There's a lot more I could say about this" start="00:01:55.840" video="mainVideo" id=subtitle]] +[[!template text="but I don't have time." start="00:01:57.367" video="mainVideo" id=subtitle]] +[[!template text="Feel free to reach out to me by email or IRC." start="00:01:58.799" video="mainVideo" id=subtitle]] +[[!template text="Part of the motivation for me," start="00:02:03.439" video="mainVideo" id=subtitle]] +[[!template text="personally, is that Emacs is super magical." start="00:02:06.479" video="mainVideo" id=subtitle]] +[[!template text="It's an all-in-one solution." start="00:02:08.775" video="mainVideo" id=subtitle]] +[[!template text="Like I said, the GNU software aligns with" start="00:02:10.720" video="mainVideo" id=subtitle]] +[[!template text="Creative Commons' ideas." start="00:02:12.720" video="mainVideo" id=subtitle]] +[[!template text="I can do file management." start="00:02:14.480" video="mainVideo" id=subtitle]] +[[!template text="I can author HTML, all the web stuff I need even, literate-style." start="00:02:16.067" video="mainVideo" id=subtitle]] +[[!template text="I can handle media and metadata." start="00:02:20.239" video="mainVideo" id=subtitle]] +[[!template text="I've got version control, remote server access..." start="00:02:22.171" video="mainVideo" id=subtitle]] +[[!template text="All the tools I need are right under my fingertips with this tool" start="00:02:24.640" video="mainVideo" id=subtitle]] +[[!template text="that I use every day for a long time." start="00:02:28.080" video="mainVideo" id=subtitle]] +[[!template text="I don't need to look elsewhere." start="00:02:30.000" video="mainVideo" id=subtitle]] +[[!template new="1" text="It was a challenge." start="00:02:31.440" video="mainVideo" id=subtitle]] +[[!template text="I wanted to see if I could do this" start="00:02:34.319" video="mainVideo" id=subtitle]] +[[!template text="all within Emacs itself." start="00:02:36.319" video="mainVideo" id=subtitle]] +[[!template text="So, how do you use Emacs to publish music?" start="00:02:39.440" video="mainVideo" id=subtitle]] +[[!template text="Well, for me, I needed" start="00:02:41.680" video="mainVideo" id=subtitle]] +[[!template text="a couple of things." start="00:02:43.440" video="mainVideo" id=subtitle]] +[[!template text="I needed to be able to audition and label unlabeled audio tracks." start="00:02:44.258" video="mainVideo" id=subtitle]] +[[!template text="I have a lot of files that I don't know where they came from." start="00:02:47.564" video="mainVideo" id=subtitle]] +[[!template text="I don't know what they are." start="00:02:50.320" video="mainVideo" id=subtitle]] +[[!template text="I need to be able to listen to them," start="00:02:51.213" video="mainVideo" id=subtitle]] +[[!template text="and I need to be able to add metadata to" start="00:02:53.840" video="mainVideo" id=subtitle]] +[[!template text="whatever audio format it is" start="00:02:56.800" video="mainVideo" id=subtitle]] +[[!template text="and rename the files based on that" start="00:02:58.480" video="mainVideo" id=subtitle]] +[[!template text="metadata, potentially." start="00:03:00.800" video="mainVideo" id=subtitle]] +[[!template text="And in the end, I wanted to take those" start="00:03:03.200" video="mainVideo" id=subtitle]] +[[!template text="files and programmatically produce a web page" start="00:03:05.120" video="mainVideo" id=subtitle]] +[[!template text="for people to consume." start="00:03:08.319" video="mainVideo" id=subtitle]] +[[!template new="1" text="I found out that Emacs scores a hundred percent on all of" start="00:03:10.442" video="mainVideo" id=subtitle]] +[[!template text="these requirements that I had for this," start="00:03:14.879" video="mainVideo" id=subtitle]] +[[!template text="and a lot of that came from EMMS, the Emacs multimedia system." start="00:03:17.709" video="mainVideo" id=subtitle]] +[[!template text="EMMS is great." start="00:03:22.640" video="mainVideo" id=subtitle]] +[[!template text="If you haven't checked it out, please do." start="00:03:26.080" video="mainVideo" id=subtitle]] +[[!template text="It's a little bit unintuitive," start="00:03:27.760" video="mainVideo" id=subtitle]] +[[!template text="but once you get into it, you know it works." start="00:03:29.736" video="mainVideo" id=subtitle]] +[[!template text="Basically, what EMMS gave me was" start="00:03:34.000" video="mainVideo" id=subtitle]] +[[!template text="the ability to listen to the tracks," start="00:03:36.420" video="mainVideo" id=subtitle]] +[[!template text="organize playlists." start="00:03:38.720" video="mainVideo" id=subtitle]] +[[!template text="On top of that, it gave me" start="00:03:39.680" video="mainVideo" id=subtitle]] +[[!template text="super-powered metadata authoring." start="00:03:41.280" video="mainVideo" id=subtitle]] +[[!template new="1" text="I'm going to demonstrate that to you." start="00:03:42.959" video="mainVideo" id=subtitle]] +[[!template text="So in order to do this," start="00:03:45.040" video="mainVideo" id=subtitle]] +[[!template text="you have to require markable playlists," start="00:03:47.200" video="mainVideo" id=subtitle]] +[[!template text="so (require 'emms-mark). I'm going to" start="00:03:50.879" video="mainVideo" id=subtitle]] +[[!template text="go through, and I'm going to open the red..." start="00:03:54.879" video="mainVideo" id=subtitle]] +[[!template text="I've got this. These files here." start="00:03:59.680" video="mainVideo" id=subtitle]] +[[!template text="So you can see these files are mp3s." start="00:04:02.092" video="mainVideo" id=subtitle]] +[[!template text="They're recorded on a digital recorder." start="00:04:04.480" video="mainVideo" id=subtitle]] +[[!template text="If I had the choice, I would have a" start="00:04:07.599" video="mainVideo" id=subtitle]] +[[!template text="recorder that used a different format," start="00:04:09.920" video="mainVideo" id=subtitle]] +[[!template text="but so be it. I can mark all these files" start="00:04:12.319" video="mainVideo" id=subtitle]] +[[!template text="and I can do EMMS add to .., and now they've been loaded into a playlist." start="00:04:14.640" video="mainVideo" id=subtitle]] +[[!template text="So you can see the playlist here." start="00:04:27.040" video="mainVideo" id=subtitle]] +[[!template text="There's some leftover files." start="00:04:28.698" video="mainVideo" id=subtitle]] +[[!template new="1" text="So I've got these three files" start="00:04:30.400" video="mainVideo" id=subtitle]] +[[!template text="in my playlist, and as you can see," start="00:04:31.771" video="mainVideo" id=subtitle]] +[[!template text="it's just the file name, the path." start="00:04:33.361" video="mainVideo" id=subtitle]] +[[!template text="I don't have any metadata associated with them." start="00:04:35.194" video="mainVideo" id=subtitle]] +[[!template text="In this playlist, I can hit E," start="00:04:38.560" video="mainVideo" id=subtitle]] +[[!template text="and it'll bring up a buffer showing" start="00:04:41.360" video="mainVideo" id=subtitle]] +[[!template text="the tag information that I have." start="00:04:43.440" video="mainVideo" id=subtitle]] +[[!template text="I could edit these here." start="00:04:47.360" video="mainVideo" id=subtitle]] +[[!template text="I could edit them one at a time," start="00:04:49.840" video="mainVideo" id=subtitle]] +[[!template text="but that's not really great. I want superpower metadata authoring." start="00:04:51.129" video="mainVideo" id=subtitle]] +[[!template text="So, by marking them, I can then hit E," start="00:05:03.101" video="mainVideo" id=subtitle]] +[[!template text="and I have all three of the tracks loaded up in this tags buffer." start="00:05:07.159" video="mainVideo" id=subtitle]] +[[!template text="On top of that, I can do EMMS tag editor," start="00:05:12.639" video="mainVideo" id=subtitle]] +[[!template text="set all, C-c C-r, and I want to set the artist." start="00:05:16.912" video="mainVideo" id=subtitle]] +[[!template text="so these are some recordings of my family." start="00:05:22.840" video="mainVideo" id=subtitle]] +[[!template text="So, Shangreaux, set all three of them." start="00:05:26.320" video="mainVideo" id=subtitle]] +[[!template text="I want to set the album:" start="00:05:31.039" video="mainVideo" id=subtitle]] +[[!template text="Spring Walk with Lap Harp." start="00:05:35.600" video="mainVideo" id=subtitle]] +[[!template text="I want to set the year." start="00:05:40.160" video="mainVideo" id=subtitle]] +[[!template text="And then I'm going to go ahead and put these in manually," start="00:05:45.520" video="mainVideo" id=subtitle]] +[[!template text="but with the power of Emacs keyboard macros" start="00:05:53.759" video="mainVideo" id=subtitle]] +[[!template text="and registers and so on. I could do this" start="00:05:56.759" video="mainVideo" id=subtitle]] +[[!template text="programmatically as well," start="00:05:59.600" video="mainVideo" id=subtitle]] +[[!template text="which would make it a lot easier" start="00:06:02.319" video="mainVideo" id=subtitle]] +[[!template text="if I had much more than three files to do this with." start="00:06:03.818" video="mainVideo" id=subtitle]] +[[!template text="Submit the changes with C-c C-c," start="00:06:07.440" video="mainVideo" id=subtitle]] +[[!template text="and now we've got the playlist." start="00:06:09.919" video="mainVideo" id=subtitle]] +[[!template text="You can see the artist and track number have been updated here." start="00:06:11.232" video="mainVideo" id=subtitle]] +[[!template new="1" text="And then the final piece of this is that" start="00:06:15.039" video="mainVideo" id=subtitle]] +[[!template text="if you look at this, you can see that" start="00:06:17.360" video="mainVideo" id=subtitle]] +[[!template text="the file name is still the same." start="00:06:18.875" video="mainVideo" id=subtitle]] +[[!template text="So if I were looking at the directory," start="00:06:20.479" video="mainVideo" id=subtitle]] +[[!template text="I would still have this file name." start="00:06:22.639" video="mainVideo" id=subtitle]] +[[!template text="When packaging these up for a release," start="00:06:24.560" video="mainVideo" id=subtitle]] +[[!template text="for people to download," start="00:06:26.479" video="mainVideo" id=subtitle]] +[[!template text="it's nice to be able to have that" start="00:06:28.000" video="mainVideo" id=subtitle]] +[[!template text="filename reflect the track number" start="00:06:30.319" video="mainVideo" id=subtitle]] +[[!template text="and the artist and so on." start="00:06:32.044" video="mainVideo" id=subtitle]] +[[!template text="So there's another command," start="00:06:33.609" video="mainVideo" id=subtitle]] +[[!template text="EMMS rename tag editor, rename," start="00:06:40.250" video="mainVideo" id=subtitle]] +[[!template text="so it could be just capital R." start="00:06:42.970" video="mainVideo" id=subtitle]] +[[!template text="I think I need to mark all of these," start="00:06:45.120" video="mainVideo" id=subtitle]] +[[!template text="hit capital R, and then it's going to ask me to confirm" start="00:06:46.991" video="mainVideo" id=subtitle]] +[[!template text="and say yes to all of them." start="00:06:50.000" video="mainVideo" id=subtitle]] +[[!template text="And now, if you look in the--" start="00:06:54.400" video="mainVideo" id=subtitle]] +[[!template text="whoops I have to update it--you'll see" start="00:07:02.720" video="mainVideo" id=subtitle]] +[[!template text="it's been updated with the artist," start="00:07:04.319" video="mainVideo" id=subtitle]] +[[!template text="track number and track name." start="00:07:06.319" video="mainVideo" id=subtitle]] +[[!template text="This format is a format string," start="00:07:11.120" video="mainVideo" id=subtitle]] +[[!template text="so it's customizable of course." start="00:07:14.432" video="mainVideo" id=subtitle]] +[[!template text="I just decided to go with the default." start="00:07:17.360" video="mainVideo" id=subtitle]] +[[!template new="1" text="So that's pretty great, this workflow just with EMMS." start="00:07:21.039" video="mainVideo" id=subtitle]] +[[!template text="I didn't have to do anything. This is all there." start="00:07:24.948" video="mainVideo" id=subtitle]] +[[!template text="It's all built in. It gave me exactly what I was looking for" start="00:07:27.585" video="mainVideo" id=subtitle]] +[[!template text="in terms of being able to process a lot of raw audio files," start="00:07:31.673" video="mainVideo" id=subtitle]] +[[!template text="add metadata to them, and get them ready for publishing." start="00:07:35.599" video="mainVideo" id=subtitle]] +[[!template text="And this is for publishing for playback" start="00:07:39.280" video="mainVideo" id=subtitle]] +[[!template text="in any media player. It'll be useful." start="00:07:41.599" video="mainVideo" id=subtitle]] +[[!template text="Not just for the web page that I'm building." start="00:07:44.026" video="mainVideo" id=subtitle]] +[[!template new="1" text="So the final part, of course, is to build the web page." start="00:07:47.639" video="mainVideo" id=subtitle]] +[[!template text="Emacs makes authoring HTML trivial." start="00:07:51.440" video="mainVideo" id=subtitle]] +[[!template text="As I was going through this," start="00:07:54.960" video="mainVideo" id=subtitle]] +[[!template text="I wanted to challenge myself and just be, like," start="00:07:57.357" video="mainVideo" id=subtitle]] +[[!template text="can I do this just all with Emacs? Can I just make this?" start="00:07:59.701" video="mainVideo" id=subtitle]] +[[!template text="I don't need a... I don't need Ruby." start="00:08:03.520" video="mainVideo" id=subtitle]] +[[!template text="I don't need Rails. I don't need Node." start="00:08:05.134" video="mainVideo" id=subtitle]] +[[!template text="I don't need any of this other stuff." start="00:08:06.707" video="mainVideo" id=subtitle]] +[[!template text="I have my tool right here. It's a fully..." start="00:08:08.528" video="mainVideo" id=subtitle]] +[[!template text="It's a whole operating system, basically," start="00:08:10.560" video="mainVideo" id=subtitle]] +[[!template text="plus programming languages." start="00:08:12.560" video="mainVideo" id=subtitle]] +[[!template text="So the first thing I started with" start="00:08:15.039" video="mainVideo" id=subtitle]] +[[!template text="was buffer scripting for manipulating text." start="00:08:17.171" video="mainVideo" id=subtitle]] +[[!template text="That's kind of the easiest way to do it." start="00:08:19.919" video="mainVideo" id=subtitle]] +[[!template text="Basically, anything you can do in a buffer," start="00:08:22.560" video="mainVideo" id=subtitle]] +[[!template text="you can do programmatically with Elisp." start="00:08:24.692" video="mainVideo" id=subtitle]] +[[!template text="So this might be a good example for beginners." start="00:08:27.834" video="mainVideo" id=subtitle]] +[[!template text="If you haven't done any Elisp yet," start="00:08:30.217" video="mainVideo" id=subtitle]] +[[!template text="a simple example is to create this div output here." start="00:08:33.919" video="mainVideo" id=subtitle]] +[[!template text="You can use this with-temp-buffer," start="00:08:39.557" video="mainVideo" id=subtitle]] +[[!template text="so basically creating an imaginary buffer." start="00:08:41.581" video="mainVideo" id=subtitle]] +[[!template text="insert is just like typing," start="00:08:44.240" video="mainVideo" id=subtitle]] +[[!template text="so you put strings in, you put new lines in," start="00:08:45.945" video="mainVideo" id=subtitle]] +[[!template text="you can build some strings together." start="00:08:48.800" video="mainVideo" id=subtitle]] +[[!template text="Here you can see I'm doing a random number," start="00:08:50.959" video="mainVideo" id=subtitle]] +[[!template text="so every time I execute this," start="00:08:53.551" video="mainVideo" id=subtitle]] +[[!template text="my content changes." start="00:08:55.360" video="mainVideo" id=subtitle]] +[[!template text="I can generate dynamic content in HTML blocks with Elisp." start="00:08:56.790" video="mainVideo" id=subtitle]] +[[!template new="1" text="For my web page builder, it's a little more complex." start="00:09:03.685" video="mainVideo" id=subtitle]] +[[!template text="I'm pulling data out" start="00:09:06.493" video="mainVideo" id=subtitle]] +[[!template text="using EMMS data structures," start="00:09:08.000" video="mainVideo" id=subtitle]] +[[!template text="so it's pulling that out from the track data." start="00:09:12.080" video="mainVideo" id=subtitle]] +[[!template text="And then I'm using some program to" start="00:09:16.080" video="mainVideo" id=subtitle]] +[[!template text="generate list elements, so each track is" start="00:09:19.440" video="mainVideo" id=subtitle]] +[[!template text="going to have the title and track number," start="00:09:21.440" video="mainVideo" id=subtitle]] +[[!template text="and then a button for playing it," start="00:09:24.086" video="mainVideo" id=subtitle]] +[[!template text="plus the source of the audio file," start="00:09:25.869" video="mainVideo" id=subtitle]] +[[!template text="which will get added here." start="00:09:28.206" video="mainVideo" id=subtitle]] +[[!template text="Right now, this is hard coded for Opus," start="00:09:30.480" video="mainVideo" id=subtitle]] +[[!template text="so it won't work for my MP3s." start="00:09:32.485" video="mainVideo" id=subtitle]] +[[!template text="I'm going to skip over snippets." start="00:09:37.200" video="mainVideo" id=subtitle]] +[[!template text="Turns out format strings were good enough for me." start="00:09:38.867" video="mainVideo" id=subtitle]] +[[!template text="Snippets could be useful," start="00:09:42.017" video="mainVideo" id=subtitle]] +[[!template text="but format is super powerful," start="00:09:45.035" video="mainVideo" id=subtitle]] +[[!template text="and I didn't really even need all that much power," start="00:09:47.267" video="mainVideo" id=subtitle]] +[[!template text="basically, just doing string interpolation." start="00:09:49.839" video="mainVideo" id=subtitle]] +[[!template text="So if you haven't seen format before," start="00:09:52.187" video="mainVideo" id=subtitle]] +[[!template text="you basically put these control strings" start="00:09:54.560" video="mainVideo" id=subtitle]] +[[!template text="or control characters inside of a string," start="00:09:56.720" video="mainVideo" id=subtitle]] +[[!template text="and you can generate an output string that you want." start="00:09:59.120" video="mainVideo" id=subtitle]] +[[!template text="So in my generator code, basically," start="00:10:05.040" video="mainVideo" id=subtitle]] +[[!template text="it's down here," start="00:10:07.344" video="mainVideo" id=subtitle]] +[[!template text="I'm calling format with this Bard Bivou(m)acs template," start="00:10:08.720" video="mainVideo" id=subtitle]] +[[!template text="and that's basically a big string of HTML." start="00:10:12.800" video="mainVideo" id=subtitle]] +[[!template text="It's just my whole page of HTML" start="00:10:17.491" video="mainVideo" id=subtitle]] +[[!template text="with those control characters in just four places." start="00:10:21.200" video="mainVideo" id=subtitle]] +[[!template text="One of them populates the track list." start="00:10:24.399" video="mainVideo" id=subtitle]] +[[!template text="That's really the meat of the program." start="00:10:26.399" video="mainVideo" id=subtitle]] +[[!template text="Again, this is a combination of using buffer scripting, using HTML mode," start="00:10:29.760" video="mainVideo" id=subtitle]] +[[!template text="inserting text format strings," start="00:10:34.746" video="mainVideo" id=subtitle]] +[[!template text="and then I can indent-region" start="00:10:37.279" video="mainVideo" id=subtitle]] +[[!template text="so the HTML actually looks pretty" start="00:10:39.251" video="mainVideo" id=subtitle]] +[[!template text="when it comes out of it as well." start="00:10:41.920" video="mainVideo" id=subtitle]] +[[!template text="I will show that, just really quick actually." start="00:10:45.200" video="mainVideo" id=subtitle]] +[[!template text="So you can see, this is the HTML that got generated." start="00:10:54.000" video="mainVideo" id=subtitle]] +[[!template text="I've got my template." start="00:10:57.540" video="mainVideo" id=subtitle]] +[[!template text="I inserted the title here, the style," start="00:10:58.800" video="mainVideo" id=subtitle]] +[[!template text="the font was all inserted," start="00:11:02.193" video="mainVideo" id=subtitle]] +[[!template text="and then this whole list of of tracks here." start="00:11:05.760" video="mainVideo" id=subtitle]] +[[!template text="It's kind of messy to look at," start="00:11:07.920" video="mainVideo" id=subtitle]] +[[!template text="but this track list, this whole div here," start="00:11:11.200" video="mainVideo" id=subtitle]] +[[!template text="is all generated by my generator code, and it works. It's great." start="00:11:14.399" video="mainVideo" id=subtitle]] +[[!template text="Okay, moving on." start="00:11:22.480" video="mainVideo" id=subtitle]] +[[!template new="1" text="So the other thing was that as I was developing this," start="00:11:27.120" video="mainVideo" id=subtitle]] +[[!template text="I decided to use Org Babel" start="00:11:30.945" video="mainVideo" id=subtitle]] +[[!template text="and some of its features for multi-language things" start="00:11:32.547" video="mainVideo" id=subtitle]] +[[!template text="because I needed to style it with CSS" start="00:11:35.588" video="mainVideo" id=subtitle]] +[[!template text="and put actions in Javascript," start="00:11:37.839" video="mainVideo" id=subtitle]] +[[!template text="and also I used SVG for authoring stuff." start="00:11:39.835" video="mainVideo" id=subtitle]] +[[!template text="It was a little bit complicated." start="00:11:42.480" video="mainVideo" id=subtitle]] +[[!template text="It probably would have been simpler" start="00:11:46.079" video="mainVideo" id=subtitle]] +[[!template text="had I not used Org Babel," start="00:11:47.484" video="mainVideo" id=subtitle]] +[[!template text="but it's also really fun." start="00:11:48.680" video="mainVideo" id=subtitle]] +[[!template text="I think it's a cool, cool idea to use literate programming." start="00:11:49.894" video="mainVideo" id=subtitle]] +[[!template text="My idea was to create HTML components." start="00:11:53.663" video="mainVideo" id=subtitle]] +[[!template text="I could name it like this," start="00:11:57.001" video="mainVideo" id=subtitle]] +[[!template text="put a format string inside it," start="00:11:59.519" video="mainVideo" id=subtitle]] +[[!template text="and build a function" start="00:12:00.959" video="mainVideo" id=subtitle]] +[[!template text="in Elisp to format it" start="00:12:02.800" video="mainVideo" id=subtitle]] +[[!template text="and spit out the HTML that I want." start="00:12:04.302" video="mainVideo" id=subtitle]] +[[!template text="By doing this, then," start="00:12:07.120" video="mainVideo" id=subtitle]] +[[!template text="I can just change things in my Org file," start="00:12:09.581" video="mainVideo" id=subtitle]] +[[!template text="which, not getting a whole lot of time to work on it," start="00:12:12.388" video="mainVideo" id=subtitle]] +[[!template text="I can come back to it" start="00:12:14.814" video="mainVideo" id=subtitle]] +[[!template text="and I have a lot of notes." start="00:12:16.615" video="mainVideo" id=subtitle]] +[[!template text="I can kind of generate things as I'm going" start="00:12:19.335" video="mainVideo" id=subtitle]] +[[!template text="and keep notes for myself, and keep the..." start="00:12:21.695" video="mainVideo" id=subtitle]] +[[!template text="I don't know. It's cool." start="00:12:24.399" video="mainVideo" id=subtitle]] +[[!template text="Literate programming is fun." start="00:12:25.308" video="mainVideo" id=subtitle]] +[[!template text="So I don't need to" start="00:12:26.672" video="mainVideo" id=subtitle]] +[[!template text="go into that too much, but you can see if" start="00:12:27.519" video="mainVideo" id=subtitle]] +[[!template text="I execute this here," start="00:12:29.279" video="mainVideo" id=subtitle]] +[[!template text="I get the the div that I want." start="00:12:31.040" video="mainVideo" id=subtitle]] +[[!template text="It's a little bit funny." start="00:12:32.983" video="mainVideo" id=subtitle]] +[[!template text="You'll see I have the string like this," start="00:12:34.013" video="mainVideo" id=subtitle]] +[[!template text="the way that noweb expands, I can't do this on a single line." start="00:12:35.786" video="mainVideo" id=subtitle]] +[[!template text="It looks funny when you do that," start="00:12:40.000" video="mainVideo" id=subtitle]] +[[!template text="so that might be something to work out later." start="00:12:43.839" video="mainVideo" id=subtitle]] +[[!template text="CSS blocks can either be tangled out" start="00:12:45.931" video="mainVideo" id=subtitle]] +[[!template text="and referenced in the HTML source, or inlined." start="00:12:48.959" video="mainVideo" id=subtitle]] +[[!template text="Here's an example I have of inlining it." start="00:12:52.639" video="mainVideo" id=subtitle]] +[[!template text="So I've got my little CSS block named style," start="00:12:54.639" video="mainVideo" id=subtitle]] +[[!template text="Javascript named script," start="00:12:57.609" video="mainVideo" id=subtitle]] +[[!template text="and then I've got this HTML source block" start="00:13:00.320" video="mainVideo" id=subtitle]] +[[!template text="with noweb expansion." start="00:13:03.040" video="mainVideo" id=subtitle]] +[[!template text="These double angle brackets here" start="00:13:04.839" video="mainVideo" id=subtitle]] +[[!template text="are where I'm going to expand" start="00:13:07.920" video="mainVideo" id=subtitle]] +[[!template text="the block named style. I'm actually calling a function," start="00:13:09.396" video="mainVideo" id=subtitle]] +[[!template text="so I want the result of the function here," start="00:13:12.639" video="mainVideo" id=subtitle]] +[[!template text="and then the script will just get expanded here." start="00:13:14.737" video="mainVideo" id=subtitle]] +[[!template text="So org-babel-expand-src-block," start="00:13:18.881" video="mainVideo" id=subtitle]] +[[!template text="you can see what it looks like." start="00:13:22.959" video="mainVideo" id=subtitle]] +[[!template text="I've got my style here. I've got my title." start="00:13:25.360" video="mainVideo" id=subtitle]] +[[!template text="I've got that main content class I showed before," start="00:13:28.160" video="mainVideo" id=subtitle]] +[[!template text="and the script as well. So that's kind of cool." start="00:13:31.279" video="mainVideo" id=subtitle]] +[[!template text="I could just run org-babel-tangle and get my thing out" start="00:13:34.480" video="mainVideo" id=subtitle]] +[[!template text="and just edit one file instead of multiple files." start="00:13:37.527" video="mainVideo" id=subtitle]] +[[!template text="Not for everyone, but I thought it was kind of fun. All right." start="00:13:40.480" video="mainVideo" id=subtitle]] +[[!template new="1" text="Oh, and the final thing is that in Emacs," start="00:13:46.455" video="mainVideo" id=subtitle]] +[[!template text="you can author and view SVG." start="00:13:48.807" video="mainVideo" id=subtitle]] +[[!template text="So this is just an Org. This SVG, I used to make the play and pause buttons." start="00:13:51.320" video="mainVideo" id=subtitle]] +[[!template text="I didn't know this," start="00:13:58.297" video="mainVideo" id=subtitle]] +[[!template text="but if you edit an SVG file," start="00:13:59.519" video="mainVideo" id=subtitle]] +[[!template text="you can toggle back and forth" start="00:14:02.162" video="mainVideo" id=subtitle]] +[[!template text="between the code and the image." start="00:14:08.800" video="mainVideo" id=subtitle]] +[[!template text="It's pretty sweet. So I can iteratively" start="00:14:13.199" video="mainVideo" id=subtitle]] +[[!template text="work through this because of how Emacs is." start="00:14:17.360" video="mainVideo" id=subtitle]] +[[!template new="1" text="Final considerations here," start="00:14:20.560" video="mainVideo" id=subtitle]] +[[!template text="like when doing this," start="00:14:24.959" video="mainVideo" id=subtitle]] +[[!template text="I want it to be all free," start="00:14:26.247" video="mainVideo" id=subtitle]] +[[!template text="so I want to use fonts that use a free license." start="00:14:27.606" video="mainVideo" id=subtitle]] +[[!template text="I found GNU Unifont. It's kind of cool." start="00:14:30.079" video="mainVideo" id=subtitle]] +[[!template text="The content license..." start="00:14:32.800" video="mainVideo" id=subtitle]] +[[!template text="I chose Creative Commons Attribution ShareAlike," start="00:14:34.333" video="mainVideo" id=subtitle]] +[[!template text="which is kind of like the GPL." start="00:14:37.600" video="mainVideo" id=subtitle]] +[[!template text="Ideally, I could serve it with Emacs." start="00:14:39.920" video="mainVideo" id=subtitle]] +[[!template text="I'd like to remove idiosyncrasy so other people can use it." start="00:14:42.663" video="mainVideo" id=subtitle]] +[[!template text="It's pretty much just my tool right now." start="00:14:46.320" video="mainVideo" id=subtitle]] +[[!template text="Not requiring the web browser..." start="00:14:48.720" video="mainVideo" id=subtitle]] +[[!template text="I can ship playlists so that you can just click or link to a playlist" start="00:14:50.734" video="mainVideo" id=subtitle]] +[[!template text="on your favorite player, even EMMS if you want," start="00:14:56.648" video="mainVideo" id=subtitle]] +[[!template text="and then packing up those albums in like a ZIP or .tar file." start="00:15:00.068" video="mainVideo" id=subtitle]] +[[!template new="1" text="So you can go to churls.world ." start="00:15:04.320" video="mainVideo" id=subtitle]] +[[!template text="It just has a link to this album." start="00:15:08.639" video="mainVideo" id=subtitle]] +[[!template text="I'll display it here in just a second." start="00:15:10.644" video="mainVideo" id=subtitle]] +[[!template text="You can contact me. I'm shoshin on #emacs" start="00:15:14.000" video="mainVideo" id=subtitle]] +[[!template text="in IRC and on sourcehut. You can email me:" start="00:15:17.519" video="mainVideo" id=subtitle]] +[[!template text="grant@churls.world, personal, or" start="00:15:21.040" video="mainVideo" id=subtitle]] +[[!template text="grant@unabridgedsoftware.com. All right, now." start="00:15:23.680" video="mainVideo" id=subtitle]] +[[!template text="Let's see about this..." start="00:15:26.800" video="mainVideo" id=subtitle]] +[[!template text="This is up online, so if you want to listen" start="00:15:32.079" video="mainVideo" id=subtitle]] +[[!template text="to my college band's album from 20 years ago," start="00:15:34.316" video="mainVideo" id=subtitle]] +[[!template text="here it is: Cassiopeia Basement Days." start="00:15:39.199" video="mainVideo" id=subtitle]] +[[!template text="Whoops. I made this art in Krita." start="00:15:43.040" video="mainVideo" id=subtitle]] +[[!template text="You can press play. You can skip around." start="00:15:46.887" video="mainVideo" id=subtitle]] +[[!template text="I do have the playlist up here too." start="00:15:51.199" video="mainVideo" id=subtitle]] +[[!template text="So yeah, thanks for listening." start="00:15:55.040" video="mainVideo" id=subtitle]] +[[!template text="I hope you enjoyed it, and enjoy the rest of EmacsConf. Goodbye!" start="00:15:58.560" video="mainVideo" id=subtitle]] <!-- transcript: 2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--questions--grant-shangreaux.vtt --> <a name="transcript-questions"></a> -# Transcript: Q&A - -So first question, what does Bard Bivou(m)acs mean? Good question. In -one version of my talk, I spent too long explaining it, and decided to -cut it out. It's basically a bad pun on band camp. A bivouac--I don't -even know if I'm pronouncing that correctly--it's like a tent or a -camp that you put up hastily, and a bard is a musician, of course. -Yeah, I don't know. I like puns. I'm a dad. That's the best I could -come up with. I'll probably find a different name for it but I liked -that "bivoaucs," if you stick an m in there, it becomes Bivou(m)acs. -It's kind of like editor macros for generating some HTML. Yes, it is -confusing, chatting on IRC at the same time. Great question. (Amin: -Grant, so right now, you're sharing your screen. Are you planning on -showing something with it, or for example, should I maximize you?) I -don't know. I can turn it off for now. Okay. (Amin: You can turn on -the webcam.) Yeah, okay. (Amin: I'll maximize your webcam.) Okay, -thanks. I'll get to the answer for my color theme here in a bit in -IRC. - -(<a href="#qnaVideo" class="time-link">1:31</a>) -Next question on the Etherpad, does this metadata workflow also -support unsynchronized lyrics within ID3 tags, multi-line metadata? I -don't know, actually. It's funny because I was trying out different -things with metadata, and really the biggest thing was to figure out -how to do mass tag editing. And that was like... It wasn't very -intuitive, like I said, with EMMS. I think EMMS is really great, but -its interface is huge. like if you do M-x and type emms, you get I -don't know, 270-some candidates. There's a lot of functions going on. -I basically found the features that I needed to get this workflow -working. I would guess that you probably can do it, and if you don't, -if you can't do it out of the box, I think you could script EMMS to do -that. I'd like to know more, and I'm certainly going to be -investigating it. I will try and post my findings somewhere online. - -(<a href="#qnaVideo" class="time-link">2:39</a>) -Is it possible to import batch metadata? I'm not sure. I would -guess yes is the answer. EMMS can connect to metadata services. I -haven't done that because I was just using audio files that I created -myself. I know that on the back end, it calls out to shell programs -for tagging things. there's a lot of different options that can shell -out too. I was using the the vorbis tools to tag the particular files -I was working with. You can also use tiny tag, and there's some -other... That might be the python library. I can't remember. There's -two other libraries that I can shell out to for doing metadata. - -(<a href="#qnaVideo" class="time-link">3:24</a>) -My current workflow for tagging music is to first apply replay -gain in fubar 2000, fix egregious mistakes, use beats to apply -metadata from music brains, or discogs, go over remaining albums with -fubar 2000 again. Is there a chance textual tagging could allow doing -it all in one program? Have I experimented with mass tag update -queries? I have not. Again, I was just doing this workflow, taking raw -files with no tags and doing that. I believe because it calls out to -the programs in the back end, I'm sure you could work that out. I -think EMMS would benefit from having something like that because we -work with text, and being able to use Emacs as a front end for those -updates would be really fantastic. So really, it's just a matter of -writing the interface to the external tool. - -(<a href="#qnaVideo" class="time-link">4:22</a>) -Is there a link to some info expanding philosophy of how to -compensate musicians? No, I don't really have a lot of philosophy -around that. I guess the first thing I could say would be something -like a universal income. I feel like that would solve a lot of -problems, if musicians could just be musicians and not have to worry -about their pay. I will think about it more. This is one of my first -forays into getting public with some of these ideas, so I will try to -do more and let the community know. - -(<a href="#qnaVideo" class="time-link">4:54</a>) -What Emacs theme am I using? Can't remember. It's one of the -Kaolin themes. I think it was Aurora or or Bubble Gum, maybe, but the -Kaolin themes are nice. I recommend them. Not using Doom Emacs, Doom -mode line though. It's very pretty. - -(<a href="#qnaVideo" class="time-link">5:17</a>) -SVG support built into Emacs? I'm using Emacs 27.1, and yes, -SVG support is built in. I may have had to compile it with some Cairo -support. I don't remember for sure. But yes, you can even take -screenshots of your Emacs from within Emacs in SVG. It's pretty great. -I don't know how much more time we have left for questions. That's -most of the things on the etherpad. (Amin: I think we have like 10 -more minutes to catch up with the schedule. If there are more -questions, feel free to answer them.) I'll start looking through IRC. -(Amin: And keep an eye on the pad too.) Thank you all for listening -and for enjoying the talk. I'm glad it turned out well. Awesome. Yeah, -it's been fun so far. How did I manage? I can post a snippet of that, -or actually I can share my screen, can't I... Okay. I actually have it -up right here. - -(<a href="#qnaVideo" class="time-link">6:49</a>) -So I think I got this from alphapapa, to be honest. I define -screenshot-svg. It's an interactive command. Oh yeah, there's -alphae.papa Okay, there we go. I would like to change this so that I -can get it into the copy-paste buffer so I don't have to copy the file -in, but I haven't really hacked on it yet. - -(<a href="#qnaVideo" class="time-link">7:20</a>) -Okay, org heading colors. That might be a good question. I know, the -presentation... Sorry, it's hard to think and type at the same time. -Think and talk and type. - -(<a href="#qnaVideo" class="time-link">7:41</a>) -So the presentation is just a normal org file, right, so I have my -headers, and the author--you can even stick your email and other -headers in there. But there's a package called org-tree-slide. Whoops, -why is it not... I must have not required it. Good question. (Amin: -Grant, can you try sharing your screen maybe?) Oh, is it not shared? -I'm sorry. (Amin: Thank you.) There we go, should be coming up. (Amin: -It's coming up. Yep, we see it.) Awesome. All right. Okay. I don't -know why this isn't working. It was working. Okay, you want to see the -screenshot. Whoops. Okay, I just took a screenshot. So, org-tree-slide. -I don't know why it's not launching. I thought that I had required it, -but I must not have. Maybe I'll try. Okay. So there we go. So -org-tree-slide is a way that basically uses narrowing and some kind of -font tricks to... it changes your titles or your metadata into this -banner for the title here, and it automatically sets the faces for -you. You can customize that, of course. And then, as you go through -the Org file, you get these kind of nice animations and-- what's it -called--breadcrumbs up at the top. So org-tree-slide. I highly -recommend it. It's really nice because you can give your presentation -and practice it, and while you're practicing it, you can edit things -as well, because it's still just an Org document using narrowing, you -know. It doesn't actually change anything. Definitely recommend -org-tree-slide mode. Okay, let's see, what else... - -(<a href="#qnaVideo" class="time-link">10:29</a>) -Share my screen to demo. Oh, that's the SVG. Let's see. Okay, so I -don't know if you can see this now, but I'm actually viewing the SVG -screenshot that I took with Emacs. See here's the source of it. So -Emacs made that. And here's the image. It's cool because you can even -do it again and again, and open more screenshots of screenshots. Yeah, -definitely Emacsception. Fun stuff. Anything else in chat? Heading -colors? Oh, yeah. I talked about the themes. This is another Kaolin -theme. I think the one in the talk was maybe this one, Aurora. Oh, -here, there's something funny when you start org-tree-slide with a -different theme. This top header bar gets the faces from that previous -theme. I have not figured out how to fix that yet. Did I have to -compile to get the screenshot? I think maybe I did. Yes, if I'm -remembering correctly. I got Emacs 27. I'm not on a Mac. I saw -alphapapa's comment on reddit, and then I recompiled it with Cairo -support. Yes. - -(<a href="#qnaVideo" class="time-link">12:18</a>) -Okay, lots of good conversation on here. Yep, I have like one or two -more minutes. Okay I guess while I'm here, I might as well say thank -you to the organizers. I really appreciate everybody's work on this. -It's fun to be a part of this community. I'm enjoying the other talks -I've seen so far today, and I'm looking forward to to the rest. It's -really interesting, just from being on Emacs in IRC for a few months, -I've already connected with a lot of interesting people and have a lot -of cool connections already. (Amin: Thank you for being a part of the -community, Grant.) That's good to be here. I have another talk -tomorrow as well. Oh, thanks for everyone in the Etherpad for putting -more comments on these questions here and taking the notes. (Amin: I -think that's about all the time that we have for the Q&A. Okay. Thank -you again so much, Grant, for your awesome talk and for popping in for -questions.) Yeah, thanks again for hosting. See you later. Cheers! - -<!-- /transcript --> +# Transcript (questions) + +[[!template new="1" text="So first question, what does Bard Bivou(m)acs mean? Good question." start="00:00:03.360" video="qnaVideo" id=subtitle]] +[[!template text="In one version of my talk, I spent too long explaining it," start="00:00:07.440" video="qnaVideo" id=subtitle]] +[[!template text="and decided to cut it out." start="00:00:10.800" video="qnaVideo" id=subtitle]] +[[!template text="It's basically a bad pun on band camp." start="00:00:14.559" video="qnaVideo" id=subtitle]] +[[!template text="A bivouac--I don't even know if I'm" start="00:00:20.960" video="qnaVideo" id=subtitle]] +[[!template text="pronouncing that correctly--it's like" start="00:00:22.480" video="qnaVideo" id=subtitle]] +[[!template text="a tent or a camp that you put up hastily," start="00:00:25.199" video="qnaVideo" id=subtitle]] +[[!template text="and a bard is a musician, of course." start="00:00:29.199" video="qnaVideo" id=subtitle]] +[[!template text="Yeah, I don't know. I like puns. I'm a dad." start="00:00:32.239" video="qnaVideo" id=subtitle]] +[[!template text="That's the best I could come up with." start="00:00:36.480" video="qnaVideo" id=subtitle]] +[[!template text="I'll probably find a different name for" start="00:00:40.960" video="qnaVideo" id=subtitle]] +[[!template text="it but I liked that "bivoaucs,"" start="00:00:42.879" video="qnaVideo" id=subtitle]] +[[!template text="if you stick an m in there, it becomes Bivou(m)acs." start="00:00:45.039" video="qnaVideo" id=subtitle]] +[[!template text="It's kind of like editor macros for generating some HTML." start="00:00:48.719" video="qnaVideo" id=subtitle]] +[[!template text="Yes, it is confusing, chatting on IRC at the same time. Great question." start="00:01:00.160" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: Grant, so right now, you're sharing your screen." start="00:01:07.782" video="qnaVideo" id=subtitle]] +[[!template text="Are you planning on showing something with it, or for example," start="00:01:11.398" video="qnaVideo" id=subtitle]] +[[!template text="should I maximize you?)" start="00:01:14.479" video="qnaVideo" id=subtitle]] +[[!template text="I don't know. I can turn it off for now. Okay." start="00:01:16.036" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: You can turn on the webcam.)" start="00:01:20.400" video="qnaVideo" id=subtitle]] +[[!template text="Yeah, okay." start="00:01:22.299" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: I'll maximize your webcam.)" start="00:01:22.880" video="qnaVideo" id=subtitle]] +[[!template text="Okay, thanks." start="00:01:25.694" video="qnaVideo" id=subtitle]] +[[!template text="I'll get to the answer for my color" start="00:01:28.240" video="qnaVideo" id=subtitle]] +[[!template text="theme here in a bit in IRC." start="00:01:30.000" video="qnaVideo" id=subtitle]] +[[!template new="1" text="Next question on the Etherpad," start="00:01:31.360" video="qnaVideo" id=subtitle]] +[[!template text="does this metadata workflow also support" start="00:01:35.105" video="qnaVideo" id=subtitle]] +[[!template text="unsynchronized lyrics within ID3 tags," start="00:01:38.479" video="qnaVideo" id=subtitle]] +[[!template text="multi-line metadata?" start="00:01:41.360" video="qnaVideo" id=subtitle]] +[[!template text="I don't know, actually." start="00:01:42.720" video="qnaVideo" id=subtitle]] +[[!template text="It's funny because I was trying out" start="00:01:45.920" video="qnaVideo" id=subtitle]] +[[!template text="different things with metadata," start="00:01:47.920" video="qnaVideo" id=subtitle]] +[[!template text="and really the biggest thing was to" start="00:01:49.280" video="qnaVideo" id=subtitle]] +[[!template text="figure out how to do mass tag editing." start="00:01:52.640" video="qnaVideo" id=subtitle]] +[[!template text="And that was like..." start="00:01:55.360" video="qnaVideo" id=subtitle]] +[[!template text="It wasn't very intuitive, like I said, with EMMS." start="00:01:56.399" video="qnaVideo" id=subtitle]] +[[!template text="I think EMMS is really great, but its interface is huge." start="00:01:59.600" video="qnaVideo" id=subtitle]] +[[!template text="like if you do M-x and type emms, you get," start="00:02:03.040" video="qnaVideo" id=subtitle]] +[[!template text="I don't know, 270-some candidates." start="00:02:07.040" video="qnaVideo" id=subtitle]] +[[!template text="There's a lot of functions going on." start="00:02:10.160" video="qnaVideo" id=subtitle]] +[[!template text="I basically found the features that I needed to get this workflow working." start="00:02:13.200" video="qnaVideo" id=subtitle]] +[[!template text="I would guess that you probably can do it, and if you don't," start="00:02:18.879" video="qnaVideo" id=subtitle]] +[[!template text="if you can't do it out of the box," start="00:02:22.160" video="qnaVideo" id=subtitle]] +[[!template text="I think you could script EMMS to do that." start="00:02:24.026" video="qnaVideo" id=subtitle]] +[[!template text="I'd like to know more, and I'm certainly going to be investigating it." start="00:02:28.160" video="qnaVideo" id=subtitle]] +[[!template text="I will try and post my findings somewhere online." start="00:02:33.268" video="qnaVideo" id=subtitle]] +[[!template new="1" text="Is it possible to import batch metadata?" start="00:02:39.519" video="qnaVideo" id=subtitle]] +[[!template text="I'm not sure. I would guess yes is the answer." start="00:02:42.080" video="qnaVideo" id=subtitle]] +[[!template text="EMMS can connect to metadata services." start="00:02:46.496" video="qnaVideo" id=subtitle]] +[[!template text="I haven't done that because I was just" start="00:02:50.712" video="qnaVideo" id=subtitle]] +[[!template text="using audio files that I created myself." start="00:02:53.040" video="qnaVideo" id=subtitle]] +[[!template text="I know that on the back end, it calls out" start="00:02:56.959" video="qnaVideo" id=subtitle]] +[[!template text="to shell programs for tagging things." start="00:03:00.165" video="qnaVideo" id=subtitle]] +[[!template text="There's a lot of different options that can shell out too." start="00:03:02.319" video="qnaVideo" id=subtitle]] +[[!template text="I was using the vorbis tools to tag the particular files I was working with." start="00:03:06.165" video="qnaVideo" id=subtitle]] +[[!template text="You can also use tiny tag, and there's some other..." start="00:03:12.239" video="qnaVideo" id=subtitle]] +[[!template text="That might be the python library." start="00:03:15.840" video="qnaVideo" id=subtitle]] +[[!template text="I can't remember. There's two other libraries that I can shell out to" start="00:03:17.498" video="qnaVideo" id=subtitle]] +[[!template text="for doing metadata." start="00:03:20.971" video="qnaVideo" id=subtitle]] +[[!template new="1" text="My current workflow for tagging music is" start="00:03:24.400" video="qnaVideo" id=subtitle]] +[[!template text="to first apply replay gain in fubar 2000," start="00:03:26.400" video="qnaVideo" id=subtitle]] +[[!template text="fix egregious mistakes," start="00:03:29.040" video="qnaVideo" id=subtitle]] +[[!template text="use beats to apply metadata from music brains or discogs," start="00:03:31.119" video="qnaVideo" id=subtitle]] +[[!template text="go over remaining albums with fubar 2000 again." start="00:03:35.118" video="qnaVideo" id=subtitle]] +[[!template text="Is there a chance textual tagging could allow doing it all in one program?" start="00:03:38.400" video="qnaVideo" id=subtitle]] +[[!template text="Have I experimented with mass tag update queries?" start="00:03:43.280" video="qnaVideo" id=subtitle]] +[[!template text="I have not." start="00:03:46.400" video="qnaVideo" id=subtitle]] +[[!template text="Again, I was just doing this workflow," start="00:03:47.280" video="qnaVideo" id=subtitle]] +[[!template text="taking raw files with no tags and doing that." start="00:03:49.120" video="qnaVideo" id=subtitle]] +[[!template text="I believe because it calls out to" start="00:03:54.799" video="qnaVideo" id=subtitle]] +[[!template text="the programs in the back end," start="00:03:58.159" video="qnaVideo" id=subtitle]] +[[!template text="I'm sure you could work that out." start="00:04:00.811" video="qnaVideo" id=subtitle]] +[[!template text="I think EMMS would benefit from" start="00:04:03.040" video="qnaVideo" id=subtitle]] +[[!template text="having something like that because" start="00:04:06.159" video="qnaVideo" id=subtitle]] +[[!template text="we work with text, and being able" start="00:04:08.239" video="qnaVideo" id=subtitle]] +[[!template text="to use Emacs as a front end for those" start="00:04:11.280" video="qnaVideo" id=subtitle]] +[[!template text="updates would be really fantastic." start="00:04:14.000" video="qnaVideo" id=subtitle]] +[[!template text="So really, it's just a matter of" start="00:04:16.647" video="qnaVideo" id=subtitle]] +[[!template text="writing the interface to the external tool." start="00:04:18.560" video="qnaVideo" id=subtitle]] +[[!template new="1" text="Is there a link to some info expanding" start="00:04:22.720" video="qnaVideo" id=subtitle]] +[[!template text="philosophy of how to compensate musicians?" start="00:04:24.560" video="qnaVideo" id=subtitle]] +[[!template text="No, I don't really have a lot of" start="00:04:28.479" video="qnaVideo" id=subtitle]] +[[!template text="philosophy around that." start="00:04:31.199" video="qnaVideo" id=subtitle]] +[[!template text="I guess the first thing I could say would be" start="00:04:32.052" video="qnaVideo" id=subtitle]] +[[!template text="something like a universal income." start="00:04:33.919" video="qnaVideo" id=subtitle]] +[[!template text="I feel like that would solve a lot of problems," start="00:04:36.378" video="qnaVideo" id=subtitle]] +[[!template text="if musicians could just be musicians" start="00:04:38.960" video="qnaVideo" id=subtitle]] +[[!template text="and not have to worry about their pay." start="00:04:41.772" video="qnaVideo" id=subtitle]] +[[!template text="I will think about it more." start="00:04:44.742" video="qnaVideo" id=subtitle]] +[[!template text="This is one of my first forays into getting public with some of these ideas," start="00:04:46.240" video="qnaVideo" id=subtitle]] +[[!template text="so I will try to do more" start="00:04:52.015" video="qnaVideo" id=subtitle]] +[[!template text="and let the community know." start="00:04:53.360" video="qnaVideo" id=subtitle]] +[[!template new="1" text="What Emacs theme am I using?" start="00:04:55.187" video="qnaVideo" id=subtitle]] +[[!template text="Can't remember. It's one of the Kaolin themes." start="00:04:57.199" video="qnaVideo" id=subtitle]] +[[!template text="I think it was Aurora" start="00:05:02.240" video="qnaVideo" id=subtitle]] +[[!template text="or Bubble Gum, maybe, but the" start="00:05:05.680" video="qnaVideo" id=subtitle]] +[[!template text="Kaolin themes are nice. I recommend them." start="00:05:09.120" video="qnaVideo" id=subtitle]] +[[!template text="Not using Doom Emacs, Doom mode line though." start="00:05:12.880" video="qnaVideo" id=subtitle]] +[[!template text="It's very pretty." start="00:05:16.000" video="qnaVideo" id=subtitle]] +[[!template new="1" text="SVG support built into Emacs?" start="00:05:17.296" video="qnaVideo" id=subtitle]] +[[!template text="I'm using Emacs 27.1, and yes, SVG support is built in." start="00:05:20.080" video="qnaVideo" id=subtitle]] +[[!template text="I may have had to compile it with some Cairo support." start="00:05:25.520" video="qnaVideo" id=subtitle]] +[[!template text="I don't remember for sure." start="00:05:30.639" video="qnaVideo" id=subtitle]] +[[!template text="But yes, you can even take screenshots of your Emacs from within Emacs, in SVG." start="00:05:33.840" video="qnaVideo" id=subtitle]] +[[!template text="It's pretty great." start="00:05:41.199" video="qnaVideo" id=subtitle]] +[[!template text="I don't know how much more time we have" start="00:05:44.320" video="qnaVideo" id=subtitle]] +[[!template text="left for questions." start="00:05:46.160" video="qnaVideo" id=subtitle]] +[[!template text="That's most of the things on the etherpad." start="00:05:48.000" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: I think we have like 10 more minutes to" start="00:05:52.639" video="qnaVideo" id=subtitle]] +[[!template text="catch up with the schedule." start="00:05:54.320" video="qnaVideo" id=subtitle]] +[[!template text="If there are more questions," start="00:05:56.479" video="qnaVideo" id=subtitle]] +[[!template text="feel free to answer them.)" start="00:05:59.120" video="qnaVideo" id=subtitle]] +[[!template text="I'll start looking through IRC." start="00:06:01.919" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: And keep an eye on the pad too.)" start="00:06:05.440" video="qnaVideo" id=subtitle]] +[[!template text="Thank you all for listening" start="00:06:09.680" video="qnaVideo" id=subtitle]] +[[!template text="and for enjoying the talk. I'm glad it turned out well." start="00:06:12.688" video="qnaVideo" id=subtitle]] +[[!template text="Awesome. Yeah, it's been fun so far." start="00:06:19.440" video="qnaVideo" id=subtitle]] +[[!template text="How did I manage? I can post a snippet of that," start="00:06:36.000" video="qnaVideo" id=subtitle]] +[[!template text="or actually I can share my screen, can't I..." start="00:06:40.015" video="qnaVideo" id=subtitle]] +[[!template text="Okay. I actually have it up right here." start="00:06:46.319" video="qnaVideo" id=subtitle]] +[[!template new="1" text="So I think I got this from alphapapa, to be honest." start="00:06:49.599" video="qnaVideo" id=subtitle]] +[[!template text="I define screenshot-svg." start="00:06:53.440" video="qnaVideo" id=subtitle]] +[[!template text="It's an interactive command. Oh yeah, there's alphapapa." start="00:07:00.960" video="qnaVideo" id=subtitle]] +[[!template text="Okay, there we go." start="00:07:04.960" video="qnaVideo" id=subtitle]] +[[!template text="I would like to change this so that I can get it into the copy-paste buffer" start="00:07:08.560" video="qnaVideo" id=subtitle]] +[[!template text="so I don't have to copy the file in, but I haven't really hacked on it yet." start="00:07:13.249" video="qnaVideo" id=subtitle]] +[[!template new="1" text="Okay, org heading colors." start="00:07:20.560" video="qnaVideo" id=subtitle]] +[[!template text="That might be a good question." start="00:07:24.400" video="qnaVideo" id=subtitle]] +[[!template text="I know, the presentation..." start="00:07:26.319" video="qnaVideo" id=subtitle]] +[[!template text="Sorry, it's hard to think and type at" start="00:07:33.199" video="qnaVideo" id=subtitle]] +[[!template text="the same time." start="00:07:35.520" video="qnaVideo" id=subtitle]] +[[!template text="Think and talk and type." start="00:07:36.479" video="qnaVideo" id=subtitle]] +[[!template new="1" text="So the presentation is just a" start="00:07:41.680" video="qnaVideo" id=subtitle]] +[[!template text="normal org file, right, so I have my headers," start="00:07:45.120" video="qnaVideo" id=subtitle]] +[[!template text="and the author--you can even stick" start="00:07:48.960" video="qnaVideo" id=subtitle]] +[[!template text="your email and other headers in there." start="00:07:50.466" video="qnaVideo" id=subtitle]] +[[!template text="But there's a package called org-tree-slide." start="00:07:52.560" video="qnaVideo" id=subtitle]] +[[!template text="Whoops, why is it not..." start="00:07:57.599" video="qnaVideo" id=subtitle]] +[[!template text="I must have not required it." start="00:08:01.440" video="qnaVideo" id=subtitle]] +[[!template text="Good question." start="00:08:03.618" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: Grant, can you try sharing your screen maybe?)" start="00:08:04.594" video="qnaVideo" id=subtitle]] +[[!template text="Oh, is it not shared? I'm sorry." start="00:08:09.599" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: Thank you.)" start="00:08:13.199" video="qnaVideo" id=subtitle]] +[[!template text="There we go, should be coming up." start="00:08:17.039" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: It's coming up. Yep, we see it.)" start="00:08:22.000" video="qnaVideo" id=subtitle]] +[[!template text="Awesome. All right. Okay. I don't know why this isn't working." start="00:08:26.720" video="qnaVideo" id=subtitle]] +[[!template text="It was working." start="00:08:38.800" video="qnaVideo" id=subtitle]] +[[!template text="Okay, you want to see the screenshot." start="00:08:56.080" video="qnaVideo" id=subtitle]] +[[!template text="Whoops. Okay, I just took a screenshot." start="00:09:01.839" video="qnaVideo" id=subtitle]] +[[!template text="So, org-tree-slide." start="00:09:06.839" video="qnaVideo" id=subtitle]] +[[!template text="I don't know why it's not launching." start="00:09:09.760" video="qnaVideo" id=subtitle]] +[[!template text="I thought that I had required it, but I must not have." start="00:09:12.800" video="qnaVideo" id=subtitle]] +[[!template text="Maybe I'll try. Okay." start="00:09:16.000" video="qnaVideo" id=subtitle]] +[[!template text="So there we go. So org-tree-slide is a way that basically uses" start="00:09:30.959" video="qnaVideo" id=subtitle]] +[[!template text="narrowing and some kind of font tricks to..." start="00:09:34.560" video="qnaVideo" id=subtitle]] +[[!template text="it changes your titles or your metadata into" start="00:09:38.880" video="qnaVideo" id=subtitle]] +[[!template text="this banner for the title here," start="00:09:42.640" video="qnaVideo" id=subtitle]] +[[!template text="and it automatically sets the faces for you." start="00:09:44.560" video="qnaVideo" id=subtitle]] +[[!template text="You can customize that, of course. And then, as you go through the Org file," start="00:09:46.560" video="qnaVideo" id=subtitle]] +[[!template text="you get these kind of nice animations and--" start="00:09:53.938" video="qnaVideo" id=subtitle]] +[[!template text="what's it called--breadcrumbs up at the top." start="00:09:59.600" video="qnaVideo" id=subtitle]] +[[!template text="So org-tree-slide. I highly recommend it." start="00:10:04.160" video="qnaVideo" id=subtitle]] +[[!template text="It's really nice because you can give your presentation and practice it," start="00:10:06.399" video="qnaVideo" id=subtitle]] +[[!template text="and while you're practicing it, you can edit things as well," start="00:10:10.024" video="qnaVideo" id=subtitle]] +[[!template text="because it's still just an Org document using narrowing, you know." start="00:10:12.560" video="qnaVideo" id=subtitle]] +[[!template text="It doesn't actually change anything." start="00:10:16.160" video="qnaVideo" id=subtitle]] +[[!template text="Definitely recommend org-tree-slide mode." start="00:10:20.079" video="qnaVideo" id=subtitle]] +[[!template text="Okay, let's see, what else..." start="00:10:24.079" video="qnaVideo" id=subtitle]] +[[!template new="1" text="Share my screen to demo. Oh, that's the SVG." start="00:10:29.760" video="qnaVideo" id=subtitle]] +[[!template text="Let's see." start="00:10:32.880" video="qnaVideo" id=subtitle]] +[[!template text="Okay, so I don't know if you can see this now," start="00:10:39.519" video="qnaVideo" id=subtitle]] +[[!template text="but I'm actually viewing the SVG screenshot that I took with Emacs." start="00:10:41.279" video="qnaVideo" id=subtitle]] +[[!template text="See here's the source of it. So Emacs made that." start="00:10:49.360" video="qnaVideo" id=subtitle]] +[[!template text="And here's the image." start="00:10:52.720" video="qnaVideo" id=subtitle]] +[[!template text="It's cool because you can even do it again and again," start="00:10:58.160" video="qnaVideo" id=subtitle]] +[[!template text="and open more screenshots of screenshots." start="00:11:01.570" video="qnaVideo" id=subtitle]] +[[!template text="Yeah, definitely Emacsception. Fun stuff." start="00:11:05.360" video="qnaVideo" id=subtitle]] +[[!template text="Anything else in chat?" start="00:11:14.880" video="qnaVideo" id=subtitle]] +[[!template text="Heading colors? Oh, yeah. I talked about the" start="00:11:18.079" video="qnaVideo" id=subtitle]] +[[!template text="themes. This is another Kaolin theme." start="00:11:20.160" video="qnaVideo" id=subtitle]] +[[!template text="I think the one in the talk was maybe this one, Aurora." start="00:11:24.800" video="qnaVideo" id=subtitle]] +[[!template text="Oh, here, there's something funny when" start="00:11:34.959" video="qnaVideo" id=subtitle]] +[[!template text="you start org-tree-slide" start="00:11:36.560" video="qnaVideo" id=subtitle]] +[[!template text="with a different theme." start="00:11:37.785" video="qnaVideo" id=subtitle]] +[[!template text="This top header bar gets the faces" start="00:11:38.880" video="qnaVideo" id=subtitle]] +[[!template text="from that previous theme." start="00:11:41.823" video="qnaVideo" id=subtitle]] +[[!template text="I have not figured out how to fix that yet." start="00:11:43.395" video="qnaVideo" id=subtitle]] +[[!template text="Did I have to compile to get the" start="00:11:47.760" video="qnaVideo" id=subtitle]] +[[!template text="screenshot? I think maybe I did." start="00:11:49.200" video="qnaVideo" id=subtitle]] +[[!template text="Yes, if I'm remembering correctly." start="00:11:51.120" video="qnaVideo" id=subtitle]] +[[!template text="I got Emacs 27. I'm not on a Mac." start="00:11:54.480" video="qnaVideo" id=subtitle]] +[[!template text="I saw alphapapa's comment on reddit," start="00:11:58.399" video="qnaVideo" id=subtitle]] +[[!template text="and then I recompiled it with Cairo support." start="00:12:01.424" video="qnaVideo" id=subtitle]] +[[!template text="Yes." start="00:12:08.839" video="qnaVideo" id=subtitle]] +[[!template new="1" text="Okay, lots of good conversation on here." start="00:12:18.000" video="qnaVideo" id=subtitle]] +[[!template text="Yep, I have like one or two more minutes." start="00:12:21.920" video="qnaVideo" id=subtitle]] +[[!template text="Okay. I guess while I'm here, I might as" start="00:12:25.839" video="qnaVideo" id=subtitle]] +[[!template text="well say thank you to the organizers." start="00:12:34.240" video="qnaVideo" id=subtitle]] +[[!template text="I really appreciate everybody's work on this." start="00:12:36.993" video="qnaVideo" id=subtitle]] +[[!template text="It's fun to be a part of this community." start="00:12:40.320" video="qnaVideo" id=subtitle]] +[[!template text="I'm enjoying the other talks I've seen so far today," start="00:12:42.720" video="qnaVideo" id=subtitle]] +[[!template text="and I'm looking forward to to the rest." start="00:12:45.929" video="qnaVideo" id=subtitle]] +[[!template text="It's really interesting, just from being on Emacs in IRC for a few months," start="00:12:48.560" video="qnaVideo" id=subtitle]] +[[!template text="I've already connected" start="00:12:53.570" video="qnaVideo" id=subtitle]] +[[!template text="with a lot of interesting people" start="00:12:54.720" video="qnaVideo" id=subtitle]] +[[!template text="and have a lot of cool connections already." start="00:12:56.959" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: Thank you for being a part of the community, Grant.)" start="00:13:04.079" video="qnaVideo" id=subtitle]] +[[!template text="That's good to be here." start="00:13:07.519" video="qnaVideo" id=subtitle]] +[[!template text="I have another talk tomorrow as well." start="00:13:08.883" video="qnaVideo" id=subtitle]] +[[!template text="Oh, thanks for everyone in the Etherpad" start="00:13:16.560" video="qnaVideo" id=subtitle]] +[[!template text="for putting more comments on these questions here" start="00:13:18.399" video="qnaVideo" id=subtitle]] +[[!template text="and taking the notes." start="00:13:21.680" video="qnaVideo" id=subtitle]] +[[!template text="(Amin: I think that's about all the time" start="00:13:29.360" video="qnaVideo" id=subtitle]] +[[!template text="that we have for the Q&A." start="00:13:31.680" video="qnaVideo" id=subtitle]] +[[!template text="Okay. Thank you again so much, Grant," start="00:13:33.040" video="qnaVideo" id=subtitle]] +[[!template text="for your awesome talk and for popping in for questions.)" start="00:13:36.720" video="qnaVideo" id=subtitle]] +[[!template text="Yeah, thanks again for hosting. See you later. Cheers!" start="00:13:39.920" video="qnaVideo" id=subtitle]] 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! diff --git a/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--questions--grant-shangreaux.vtt b/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--questions--grant-shangreaux.vtt index e5dfd2f7..4d7bfede 100644 --- a/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--questions--grant-shangreaux.vtt +++ b/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--questions--grant-shangreaux.vtt @@ -1,25 +1,18 @@ WEBVTT -00:00:03.360 --> 00:00:05.359 +00:00:03.360 --> 00:00:07.440 So first question, what does - -00:00:05.359 --> 00:00:07.440 Bard Bivou(m)acs mean? Good question. -00:00:07.440 --> 00:00:09.679 +00:00:07.440 --> 00:00:10.800 In one version of my talk, I spent too - -00:00:09.679 --> 00:00:10.800 long explaining it, 00:00:10.800 --> 00:00:14.559 and decided to cut it out. -00:00:14.559 --> 00:00:17.920 -It's basically a bad pun on - -00:00:17.920 --> 00:00:20.960 -band camp. +00:00:14.559 --> 00:00:20.960 +It's basically a bad pun on band camp. 00:00:20.960 --> 00:00:22.480 A bivouac--I don't even know if I'm @@ -45,50 +38,44 @@ I'll probably find a different name for 00:00:42.879 --> 00:00:45.039 it but I liked that "bivoaucs," -00:00:45.039 --> 00:00:47.520 +00:00:45.039 --> 00:00:48.719 if you stick an m in there, it becomes - -00:00:47.520 --> 00:00:48.719 Bivou(m)acs. -00:00:48.719 --> 00:00:56.239 +00:00:48.719 --> 00:01:00.160 It's kind of like editor macros for - -00:00:56.239 --> 00:01:00.160 generating some HTML. -00:01:00.160 --> 00:01:04.000 -Yes, it is confusing, chatting on IRC - -00:01:04.000 --> 00:01:05.920 -at the same time. +00:01:00.160 --> 00:01:07.782 +Yes, it is confusing, chatting on IRC at +the same time. Great question. -00:01:05.920 --> 00:01:09.520 -Great question. (Amin: Grant, +00:01:07.782 --> 00:01:11.398 +(Amin: Grant, so right now, you're +sharing your screen. -00:01:09.520 --> 00:01:10.880 -so right now, you're sharing your +00:01:11.398 --> 00:01:14.479 +Are you planning on showing something +with it, or for example, -00:01:10.880 --> 00:01:12.880 -screen. Are you planning on +00:01:14.479 --> 00:01:16.036 +should I maximize you?) -00:01:12.880 --> 00:01:14.479 -showing something with it, or for example, - -00:01:14.479 --> 00:01:16.880 -should I maximize you?) I don't know. +00:01:16.036 --> 00:01:20.400 +I don't know. I can turn it off for now. +Okay. -00:01:16.880 --> 00:01:20.400 -I can turn it off for now. Okay. +00:01:20.400 --> 00:01:22.299 +(Amin: You can turn on the webcam.) -00:01:20.400 --> 00:01:22.880 -(Amin: You can turn on the webcam.) Yeah, okay. +00:01:22.299 --> 00:01:22.880 +Yeah, okay. -00:01:22.880 --> 00:01:24.240 -(Amin: I'll maximize your +00:01:22.880 --> 00:01:25.694 +(Amin: I'll maximize your webcam.) -00:01:24.240 --> 00:01:28.240 -webcam.) Okay, thanks. +00:01:25.694 --> 00:01:28.240 +Okay, thanks. 00:01:28.240 --> 00:01:30.000 I'll get to the answer for my color @@ -96,14 +83,11 @@ I'll get to the answer for my color 00:01:30.000 --> 00:01:31.360 theme here in a bit in IRC. -00:01:31.360 --> 00:01:34.640 -Next question on +00:01:31.360 --> 00:01:35.105 +Next question on the Etherpad, -00:01:34.640 --> 00:01:37.280 -the Etherpad, does this metadata - -00:01:37.280 --> 00:01:38.479 -workflow also support +00:01:35.105 --> 00:01:38.479 +does this metadata workflow also support 00:01:38.479 --> 00:01:41.360 unsynchronized lyrics within ID3 tags, @@ -129,20 +113,17 @@ figure out how to do mass tag editing. 00:01:55.360 --> 00:01:56.399 And that was like... -00:01:56.399 --> 00:01:58.479 +00:01:56.399 --> 00:01:59.600 It wasn't very intuitive, like I said, - -00:01:58.479 --> 00:01:59.600 with EMMS. -00:01:59.600 --> 00:02:01.840 +00:01:59.600 --> 00:02:03.040 I think EMMS is really great, but its - -00:02:01.840 --> 00:02:03.040 interface is huge. 00:02:03.040 --> 00:02:07.040 -like if you do M-x and type emms, you get +like if you do M-x and type emms, +you get, 00:02:07.040 --> 00:02:10.160 I don't know, 270-some candidates. @@ -150,92 +131,72 @@ I don't know, 270-some candidates. 00:02:10.160 --> 00:02:13.200 There's a lot of functions going on. -00:02:13.200 --> 00:02:14.319 -I basically found the - -00:02:14.319 --> 00:02:16.319 -features that I needed to get this +00:02:13.200 --> 00:02:18.879 +I basically found the features that I +needed to get this workflow working. -00:02:16.319 --> 00:02:18.879 -workflow working. - -00:02:18.879 --> 00:02:21.040 +00:02:18.879 --> 00:02:22.160 I would guess that you probably can do - -00:02:21.040 --> 00:02:22.160 it, and if you don't, -00:02:22.160 --> 00:02:24.080 -if you can't do it out of the box, I +00:02:22.160 --> 00:02:24.026 +if you can't do it out of the box, -00:02:24.080 --> 00:02:28.160 -think you could script EMMS to do that. +00:02:24.026 --> 00:02:28.160 +I think you could script EMMS +to do that. -00:02:28.160 --> 00:02:29.840 +00:02:28.160 --> 00:02:33.268 I'd like to know more, and I'm certainly +going to be investigating it. -00:02:29.840 --> 00:02:31.840 -going to be - -00:02:31.840 --> 00:02:35.200 -investigating it. I will try and post my - -00:02:35.200 --> 00:02:39.519 -findings somewhere online. +00:02:33.268 --> 00:02:39.519 +I will try and post my findings +somewhere online. 00:02:39.519 --> 00:02:42.080 Is it possible to import batch metadata? -00:02:42.080 --> 00:02:43.920 -I'm not sure. I would guess +00:02:42.080 --> 00:02:46.496 +I'm not sure. I would guess yes is the +answer. -00:02:43.920 --> 00:02:49.360 -yes is the answer. EMMS can connect to +00:02:46.496 --> 00:02:50.712 +EMMS can connect to metadata services. -00:02:49.360 --> 00:02:51.840 -metadata services. I haven't done - -00:02:51.840 --> 00:02:53.040 -that because I was just +00:02:50.712 --> 00:02:53.040 +I haven't done that because I was just 00:02:53.040 --> 00:02:56.959 using audio files that I created myself. -00:02:56.959 --> 00:03:00.400 -I know that on the back end, it calls out to - -00:03:00.400 --> 00:03:02.319 -shell programs for tagging things. +00:02:56.959 --> 00:03:00.165 +I know that on the back end, it calls out -00:03:02.319 --> 00:03:04.560 -there's a lot of different options that can +00:03:00.165 --> 00:03:02.319 +to shell programs for tagging things. -00:03:04.560 --> 00:03:08.000 -shell out too. I was using the +00:03:02.319 --> 00:03:06.165 +There's a lot of different options that can +shell out too. -00:03:08.000 --> 00:03:10.319 -the vorbis tools to tag the particular +00:03:06.165 --> 00:03:12.239 +I was using the vorbis tools to tag the +particular files I was working with. -00:03:10.319 --> 00:03:12.239 -files I was working with. - -00:03:12.239 --> 00:03:15.120 +00:03:12.239 --> 00:03:15.840 You can also use tiny tag, and there's - -00:03:15.120 --> 00:03:15.840 some other... -00:03:15.840 --> 00:03:17.840 -That might be the python library. I can't +00:03:15.840 --> 00:03:17.498 +That might be the python library. -00:03:17.840 --> 00:03:19.120 -remember. There's two other libraries +00:03:17.498 --> 00:03:20.971 +I can't remember. There's two other +libraries that I can shell out to -00:03:19.120 --> 00:03:21.120 -that I can shell out to for - -00:03:21.120 --> 00:03:24.400 -doing metadata. +00:03:20.971 --> 00:03:24.400 +for doing metadata. 00:03:24.400 --> 00:03:26.400 My current workflow for tagging music is @@ -243,29 +204,27 @@ My current workflow for tagging music is 00:03:26.400 --> 00:03:29.040 to first apply replay gain in fubar 2000, -00:03:29.040 --> 00:03:32.159 -fix egregious mistakes, use beats to - -00:03:32.159 --> 00:03:34.560 -apply metadata from music brains, +00:03:29.040 --> 00:03:31.119 +fix egregious mistakes, -00:03:34.560 --> 00:03:36.640 -or discogs, go over remaining albums with +00:03:31.119 --> 00:03:35.118 +use beats to apply metadata from music +brains or discogs, -00:03:36.640 --> 00:03:38.400 -fubar 2000 again. +00:03:35.118 --> 00:03:38.400 +go over remaining albums with fubar 2000 +again. -00:03:38.400 --> 00:03:40.080 -Is there a chance textual tagging could +00:03:38.400 --> 00:03:43.280 +Is there a chance textual tagging +could allow doing it all in one program? -00:03:40.080 --> 00:03:43.280 -allow doing it all in one program? - -00:03:43.280 --> 00:03:45.120 +00:03:43.280 --> 00:03:46.400 Have I experimented with mass tag +update queries? -00:03:45.120 --> 00:03:47.280 -update queries? I have not. +00:03:46.400 --> 00:03:47.280 +I have not. 00:03:47.280 --> 00:03:49.120 Again, I was just doing this workflow, @@ -276,11 +235,11 @@ taking raw files with no tags and doing that. 00:03:54.799 --> 00:03:58.159 I believe because it calls out to -00:03:58.159 --> 00:04:01.519 -the programs in the back end, I'm sure +00:03:58.159 --> 00:04:00.811 +the programs in the back end, -00:04:01.519 --> 00:04:03.040 -you could work that out. +00:04:00.811 --> 00:04:03.040 +I'm sure you could work that out. 00:04:03.040 --> 00:04:06.159 I think EMMS would benefit from @@ -294,11 +253,11 @@ we work with text, and being able 00:04:11.280 --> 00:04:14.000 to use Emacs as a front end for those -00:04:14.000 --> 00:04:16.799 -updates would be really fantastic. So +00:04:14.000 --> 00:04:16.647 +updates would be really fantastic. -00:04:16.799 --> 00:04:18.560 -really, it's just a matter of +00:04:16.647 --> 00:04:18.560 +So really, it's just a matter of 00:04:18.560 --> 00:04:22.720 writing the interface to the external tool. @@ -306,59 +265,54 @@ writing the interface to the external tool. 00:04:22.720 --> 00:04:24.560 Is there a link to some info expanding -00:04:24.560 --> 00:04:26.840 +00:04:24.560 --> 00:04:28.479 philosophy of how to compensate - -00:04:26.840 --> 00:04:28.479 musicians? 00:04:28.479 --> 00:04:31.199 No, I don't really have a lot of -00:04:31.199 --> 00:04:32.720 -philosophy around that. I guess the first +00:04:31.199 --> 00:04:32.052 +philosophy around that. -00:04:32.720 --> 00:04:33.919 -thing I could say would be +00:04:32.052 --> 00:04:33.919 +I guess the first thing +I could say would be -00:04:33.919 --> 00:04:36.800 -something like a universal income. I feel +00:04:33.919 --> 00:04:36.378 +something like a universal income. -00:04:36.800 --> 00:04:38.960 -like that would solve a lot of problems, +00:04:36.378 --> 00:04:38.960 +I feel like that would solve +a lot of problems, -00:04:38.960 --> 00:04:42.000 -if musicians could just be musicians and +00:04:38.960 --> 00:04:41.772 +if musicians could just be musicians -00:04:42.000 --> 00:04:45.199 -not have to worry about their pay. I will +00:04:41.772 --> 00:04:44.742 +and not have to worry about their pay. -00:04:45.199 --> 00:04:46.240 -think about it more. +00:04:44.742 --> 00:04:46.240 +I will think about it more. -00:04:46.240 --> 00:04:48.720 -This is one of my first +00:04:46.240 --> 00:04:52.015 +This is one of my first forays into +getting public with some of these ideas, -00:04:48.720 --> 00:04:50.160 -forays into getting +00:04:52.015 --> 00:04:53.360 +so I will try to do more -00:04:50.160 --> 00:04:52.240 -public with some of these ideas, so I +00:04:53.360 --> 00:04:55.187 +and let the community know. -00:04:52.240 --> 00:04:53.360 -will try to do more - -00:04:53.360 --> 00:04:55.840 -and let the community know. What Emacs - -00:04:55.840 --> 00:04:57.199 -theme am I using? +00:04:55.187 --> 00:04:57.199 +What Emacs theme am I using? 00:04:57.199 --> 00:05:02.240 Can't remember. It's one of the Kaolin themes. 00:05:02.240 --> 00:05:05.680 -I think it was Aurora or +I think it was Aurora 00:05:05.680 --> 00:05:09.120 or Bubble Gum, maybe, but the @@ -369,35 +323,26 @@ Kaolin themes are nice. I recommend them. 00:05:12.880 --> 00:05:16.000 Not using Doom Emacs, Doom mode line though. -00:05:16.000 --> 00:05:18.880 -It's very pretty. SVG support built into +00:05:16.000 --> 00:05:17.296 +It's very pretty. -00:05:18.880 --> 00:05:20.080 -Emacs? +00:05:17.296 --> 00:05:20.080 +SVG support built into Emacs? -00:05:20.080 --> 00:05:23.600 -I'm using Emacs 27.1, and yes, SVG support +00:05:20.080 --> 00:05:25.520 +I'm using Emacs 27.1, and yes, SVG +support is built in. -00:05:23.600 --> 00:05:25.520 -is built in. - -00:05:25.520 --> 00:05:28.800 +00:05:25.520 --> 00:05:30.639 I may have had to compile it with some - -00:05:28.800 --> 00:05:30.639 Cairo support. 00:05:30.639 --> 00:05:33.840 I don't remember for sure. -00:05:33.840 --> 00:05:36.720 -But yes, you can even take screenshots of - -00:05:36.720 --> 00:05:38.080 -your Emacs - -00:05:38.080 --> 00:05:41.199 -from within Emacs in SVG. +00:05:33.840 --> 00:05:41.199 +But yes, you can even take screenshots +of your Emacs from within Emacs, in SVG. 00:05:41.199 --> 00:05:44.320 It's pretty great. @@ -429,62 +374,48 @@ I'll start looking through IRC. 00:06:05.440 --> 00:06:09.680 (Amin: And keep an eye on the pad too.) -00:06:09.680 --> 00:06:13.440 -Thank you all for listening and for - -00:06:13.440 --> 00:06:19.440 -enjoying the talk. I'm glad it turned out well. - -00:06:19.440 --> 00:06:22.800 -Awesome. Yeah, it's been fun +00:06:09.680 --> 00:06:12.688 +Thank you all for listening -00:06:22.800 --> 00:06:36.000 -so far. +00:06:12.688 --> 00:06:19.440 +and for enjoying the talk. I'm glad it +turned out well. -00:06:36.000 --> 00:06:39.199 -How did I manage? I can post a +00:06:19.440 --> 00:06:36.000 +Awesome. Yeah, it's been fun so far. -00:06:39.199 --> 00:06:41.120 -snippet of that, or actually I can share +00:06:36.000 --> 00:06:40.015 +How did I manage? I can post +a snippet of that, -00:06:41.120 --> 00:06:46.319 -my screen, can't I... +00:06:40.015 --> 00:06:46.319 +or actually I can share my screen, +can't I... 00:06:46.319 --> 00:06:49.599 Okay. I actually have it up right here. -00:06:49.599 --> 00:06:51.840 +00:06:49.599 --> 00:06:53.440 So I think I got this from alphapapa, to - -00:06:51.840 --> 00:06:53.440 be honest. 00:06:53.440 --> 00:07:00.960 I define screenshot-svg. -00:07:00.960 --> 00:07:03.680 +00:07:00.960 --> 00:07:04.960 It's an interactive command. Oh yeah, - -00:07:03.680 --> 00:07:04.960 there's alphapapa. 00:07:04.960 --> 00:07:08.560 Okay, there we go. -00:07:08.560 --> 00:07:10.639 +00:07:08.560 --> 00:07:13.249 I would like to change this so that I +can get it into the copy-paste buffer -00:07:10.639 --> 00:07:11.599 -can get it into - -00:07:11.599 --> 00:07:14.000 -the copy-paste buffer so I don't - -00:07:14.000 --> 00:07:17.039 -have to copy the file in, but I haven't really - -00:07:17.039 --> 00:07:20.560 -hacked on it yet. +00:07:13.249 --> 00:07:20.560 +so I don't have to copy the file in, but +I haven't really hacked on it yet. 00:07:20.560 --> 00:07:24.400 Okay, org heading colors. @@ -510,11 +441,11 @@ So the presentation is just a 00:07:45.120 --> 00:07:48.960 normal org file, right, so I have my headers, -00:07:48.960 --> 00:07:50.639 -and the author--you can even stick your +00:07:48.960 --> 00:07:50.466 +and the author--you can even stick -00:07:50.639 --> 00:07:52.560 -email and other headers in there. +00:07:50.466 --> 00:07:52.560 +your email and other headers in there. 00:07:52.560 --> 00:07:57.599 But there's a package called org-tree-slide. @@ -522,14 +453,15 @@ But there's a package called org-tree-slide. 00:07:57.599 --> 00:08:01.440 Whoops, why is it not... -00:08:01.440 --> 00:08:03.919 -I must have not required it. Good +00:08:01.440 --> 00:08:03.618 +I must have not required it. -00:08:03.919 --> 00:08:05.440 -question. (Amin: Grant, +00:08:03.618 --> 00:08:04.594 +Good question. -00:08:05.440 --> 00:08:09.599 -can you try sharing your screen maybe?) +00:08:04.594 --> 00:08:09.599 +(Amin: Grant, can you try sharing your +screen maybe?) 00:08:09.599 --> 00:08:13.199 Oh, is it not shared? I'm sorry. @@ -543,14 +475,9 @@ There we go, should be coming up. 00:08:22.000 --> 00:08:26.720 (Amin: It's coming up. Yep, we see it.) -00:08:26.720 --> 00:08:33.919 -Awesome. - -00:08:33.919 --> 00:08:37.599 -All right. Okay. I don't know why this - -00:08:37.599 --> 00:08:38.800 -isn't working. +00:08:26.720 --> 00:08:38.800 +Awesome. All right. Okay. I don't know +why this isn't working. 00:08:38.800 --> 00:08:56.080 It was working. @@ -567,47 +494,38 @@ So, org-tree-slide. 00:09:09.760 --> 00:09:12.800 I don't know why it's not launching. -00:09:12.800 --> 00:09:14.480 +00:09:12.800 --> 00:09:16.000 I thought that I had required it, but I - -00:09:14.480 --> 00:09:16.000 must not have. -00:09:16.000 --> 00:09:26.959 -Maybe I'll try. +00:09:16.000 --> 00:09:30.959 +Maybe I'll try. Okay. -00:09:26.959 --> 00:09:30.959 -Okay. - -00:09:30.959 --> 00:09:33.040 +00:09:30.959 --> 00:09:34.560 So there we go. So org-tree-slide is a - -00:09:33.040 --> 00:09:34.560 way that basically uses 00:09:34.560 --> 00:09:38.880 narrowing and some kind of font tricks to... -00:09:38.880 --> 00:09:41.680 -it changes your titles or your - -00:09:41.680 --> 00:09:42.640 -metadata into +00:09:38.880 --> 00:09:42.640 +it changes your titles +or your metadata into 00:09:42.640 --> 00:09:44.560 this banner for the title here, 00:09:44.560 --> 00:09:46.560 -and it automatically sets the faces for you. +and it automatically sets the +faces for you. -00:09:46.560 --> 00:09:51.360 -You can customize that, of course. And then, as you +00:09:46.560 --> 00:09:53.938 +You can customize that, of course. And +then, as you go through the Org file, -00:09:51.360 --> 00:09:55.279 -go through the Org file, you get these - -00:09:55.279 --> 00:09:59.600 -kind of nice animations and-- +00:09:53.938 --> 00:09:59.600 +you get these kind of nice animations +and-- 00:09:59.600 --> 00:10:04.160 what's it called--breadcrumbs up at the top. @@ -615,29 +533,20 @@ what's it called--breadcrumbs up at the top. 00:10:04.160 --> 00:10:06.399 So org-tree-slide. I highly recommend it. -00:10:06.399 --> 00:10:07.920 +00:10:06.399 --> 00:10:10.024 It's really nice because you can give +your presentation and practice it, -00:10:07.920 --> 00:10:09.600 -your presentation - -00:10:09.600 --> 00:10:10.880 -and practice it, and while you're - -00:10:10.880 --> 00:10:12.560 -practicing it, you can edit things as well, - -00:10:12.560 --> 00:10:13.760 -because it's still just +00:10:10.024 --> 00:10:12.560 +and while you're practicing it, you can +edit things as well, -00:10:13.760 --> 00:10:16.160 -an Org document using narrowing, you know. +00:10:12.560 --> 00:10:16.160 +because it's still just an Org document +using narrowing, you know. -00:10:16.160 --> 00:10:16.880 -It doesn't - -00:10:16.880 --> 00:10:20.079 -actually change anything. +00:10:16.160 --> 00:10:20.079 +It doesn't actually change anything. 00:10:20.079 --> 00:10:24.079 Definitely recommend org-tree-slide mode. @@ -654,34 +563,27 @@ Let's see. 00:10:39.519 --> 00:10:41.279 Okay, so I don't know if you can see this now, -00:10:41.279 --> 00:10:43.839 +00:10:41.279 --> 00:10:49.360 but I'm actually viewing the SVG - -00:10:43.839 --> 00:10:49.360 screenshot that I took with Emacs. -00:10:49.360 --> 00:10:51.920 +00:10:49.360 --> 00:10:52.720 See here's the source of it. So Emacs - -00:10:51.920 --> 00:10:52.720 made that. 00:10:52.720 --> 00:10:58.160 And here's the image. -00:10:58.160 --> 00:10:59.600 +00:10:58.160 --> 00:11:01.570 It's cool because you can even do it +again and again, -00:10:59.600 --> 00:11:01.760 -again and again, and - -00:11:01.760 --> 00:11:05.360 -open more screenshots of screenshots. +00:11:01.570 --> 00:11:05.360 +and open more screenshots of +screenshots. -00:11:05.360 --> 00:11:11.200 +00:11:05.360 --> 00:11:14.880 Yeah, definitely Emacsception. - -00:11:11.200 --> 00:11:14.880 Fun stuff. 00:11:14.880 --> 00:11:18.079 @@ -693,29 +595,28 @@ Heading colors? Oh, yeah. I talked about the 00:11:20.160 --> 00:11:24.800 themes. This is another Kaolin theme. -00:11:24.800 --> 00:11:30.560 +00:11:24.800 --> 00:11:34.959 I think the one in the talk was - -00:11:30.560 --> 00:11:34.959 maybe this one, Aurora. 00:11:34.959 --> 00:11:36.560 Oh, here, there's something funny when -00:11:36.560 --> 00:11:38.079 -you start org-tree-slide with a +00:11:36.560 --> 00:11:37.785 +you start org-tree-slide -00:11:38.079 --> 00:11:38.880 -different theme. +00:11:37.785 --> 00:11:38.880 +with a different theme. -00:11:38.880 --> 00:11:42.160 -This top header bar gets the faces from +00:11:38.880 --> 00:11:41.823 +This top header bar gets the faces -00:11:42.160 --> 00:11:44.000 -that previous theme. I have not +00:11:41.823 --> 00:11:43.395 +from that previous theme. -00:11:44.000 --> 00:11:47.760 -figured out how to fix that yet. +00:11:43.395 --> 00:11:47.760 +I have not figured out how to +fix that yet. 00:11:47.760 --> 00:11:49.200 Did I have to compile to get the @@ -729,11 +630,12 @@ Yes, if I'm remembering correctly. 00:11:54.480 --> 00:11:58.399 I got Emacs 27. I'm not on a Mac. -00:11:58.399 --> 00:12:02.079 -I saw alphapapa's comment on reddit, and then +00:11:58.399 --> 00:12:01.424 +I saw alphapapa's comment on reddit, -00:12:02.079 --> 00:12:08.839 -I recompiled it with Cairo support. +00:12:01.424 --> 00:12:08.839 +and then I recompiled it with Cairo +support. 00:12:08.839 --> 00:12:18.000 Yes. @@ -744,70 +646,56 @@ Okay, lots of good conversation on here. 00:12:21.920 --> 00:12:25.839 Yep, I have like one or two more minutes. -00:12:25.839 --> 00:12:31.680 -Okay - -00:12:31.680 --> 00:12:34.240 -I guess while I'm here, I might as - -00:12:34.240 --> 00:12:35.519 -well say thank you to +00:12:25.839 --> 00:12:34.240 +Okay. I guess while I'm here, I might as -00:12:35.519 --> 00:12:38.959 -the organizers. I really appreciate +00:12:34.240 --> 00:12:36.993 +well say thank you to the organizers. -00:12:38.959 --> 00:12:40.320 -everybody's work on this. +00:12:36.993 --> 00:12:40.320 +I really appreciate everybody's +work on this. 00:12:40.320 --> 00:12:42.720 It's fun to be a part of this community. -00:12:42.720 --> 00:12:45.279 +00:12:42.720 --> 00:12:45.929 I'm enjoying the other talks I've seen +so far today, -00:12:45.279 --> 00:12:47.279 -so far today, and I'm looking forward to - -00:12:47.279 --> 00:12:48.560 +00:12:45.929 --> 00:12:48.560 +and I'm looking forward to to the rest. -00:12:48.560 --> 00:12:50.480 -It's really interesting, just from - -00:12:50.480 --> 00:12:52.720 -being on Emacs in IRC +00:12:48.560 --> 00:12:53.570 +It's really interesting, just from being +on Emacs in IRC for a few months, -00:12:52.720 --> 00:12:54.720 -for a few months, I've already connected +00:12:53.570 --> 00:12:54.720 +I've already connected 00:12:54.720 --> 00:12:56.959 with a lot of interesting people -00:12:56.959 --> 00:13:00.720 +00:12:56.959 --> 00:13:04.079 and have a lot of cool connections - -00:13:00.720 --> 00:13:04.079 already. -00:13:04.079 --> 00:13:05.519 +00:13:04.079 --> 00:13:07.519 (Amin: Thank you for being a part of the - -00:13:05.519 --> 00:13:07.519 community, Grant.) -00:13:07.519 --> 00:13:09.680 -That's good to be here. I have another +00:13:07.519 --> 00:13:08.883 +That's good to be here. -00:13:09.680 --> 00:13:16.560 -talk tomorrow as well. +00:13:08.883 --> 00:13:16.560 +I have another talk tomorrow as well. 00:13:16.560 --> 00:13:18.399 Oh, thanks for everyone in the Etherpad -00:13:18.399 --> 00:13:20.160 +00:13:18.399 --> 00:13:21.680 for putting more comments on these - -00:13:20.160 --> 00:13:21.680 questions here 00:13:21.680 --> 00:13:29.360 @@ -822,14 +710,10 @@ that we have for the Q&A. 00:13:33.040 --> 00:13:36.720 Okay. Thank you again so much, Grant, -00:13:36.720 --> 00:13:38.480 +00:13:36.720 --> 00:13:39.920 for your awesome talk and for popping in - -00:13:38.480 --> 00:13:39.920 for questions.) -00:13:39.920 --> 00:13:42.000 +00:13:39.920 --> 00:13:46.800 Yeah, thanks again for hosting. See you - -00:13:42.000 --> 00:13:46.800 later. Cheers! |