diff options
author | EmacsConf Organizers <orga@front0.emacsconf.org> | 2021-01-30 17:00:44 +0000 |
---|---|---|
committer | EmacsConf Organizers <orga@front0.emacsconf.org> | 2021-01-30 17:00:44 +0000 |
commit | 0b487f878d36f62b7a29df13e4172cf04243e45f (patch) | |
tree | 5202f7dde992fa00dabd0ed90fb620231bc6e57a /2020/info/05.md | |
parent | 677d96158e0eb1d975bb76c7a6e0c695b42aabd2 (diff) | |
parent | 42831835bf8daf375e9515f84f5f9ff2adac7f94 (diff) | |
download | emacsconf-wiki-0b487f878d36f62b7a29df13e4172cf04243e45f.tar.xz emacsconf-wiki-0b487f878d36f62b7a29df13e4172cf04243e45f.zip |
Merge branch 'master' of git://git.emacsconf.org/emacsconf-wiki
Diffstat (limited to '2020/info/05.md')
-rw-r--r-- | 2020/info/05.md | 920 |
1 files changed, 538 insertions, 382 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]] |