summaryrefslogtreecommitdiffstats
path: root/2020/info
diff options
context:
space:
mode:
authorEmacsConf Organizers <orga@front0.emacsconf.org>2021-01-30 17:00:44 +0000
committerEmacsConf Organizers <orga@front0.emacsconf.org>2021-01-30 17:00:44 +0000
commit0b487f878d36f62b7a29df13e4172cf04243e45f (patch)
tree5202f7dde992fa00dabd0ed90fb620231bc6e57a /2020/info
parent677d96158e0eb1d975bb76c7a6e0c695b42aabd2 (diff)
parent42831835bf8daf375e9515f84f5f9ff2adac7f94 (diff)
downloademacsconf-wiki-0b487f878d36f62b7a29df13e4172cf04243e45f.tar.xz
emacsconf-wiki-0b487f878d36f62b7a29df13e4172cf04243e45f.zip
Merge branch 'master' of git://git.emacsconf.org/emacsconf-wiki
Diffstat (limited to '')
-rw-r--r--2020/info/01.md2
-rw-r--r--2020/info/02.md870
-rw-r--r--2020/info/03.md153
-rw-r--r--2020/info/04.md280
-rw-r--r--2020/info/05.md920
-rw-r--r--2020/info/06.md413
-rw-r--r--2020/info/07.md325
-rw-r--r--2020/info/15.md109
-rw-r--r--2020/info/20.md488
-rw-r--r--2020/info/35.md234
-rw-r--r--2020/info/39.md204
11 files changed, 2809 insertions, 1189 deletions
diff --git a/2020/info/01.md b/2020/info/01.md
index 65b37947..1d575b35 100644
--- a/2020/info/01.md
+++ b/2020/info/01.md
@@ -3,6 +3,7 @@ Sacha Chua
[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--01-emacs-news-highlights--sacha-chua.webm" subtitles="/2020/subtitles/emacsconf-2020--01-emacs-news-highlights--sacha-chua.vtt" duration="3:58" download="Download with subtitles" size="11MB"]]
[Download compressed .webm video (10M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--01-emacs-news-highlights--sacha-chua--vp9-q56-video-original-audio.webm)
+[View transcript](https://github.com/sachac/emacsconf-2020-emacs-news-highlights)
Quick highlights from Emacs News since the last EmacsConf
@@ -10,7 +11,6 @@ Quick highlights from Emacs News since the last EmacsConf
- <https://github.com/sachac/emacsconf-2020-emacs-news-highlights>
-
# Following up
Got any cool Emacs links you'd like me to share? You can post
diff --git a/2020/info/02.md b/2020/info/02.md
index c6cac107..fab7aa9d 100644
--- a/2020/info/02.md
+++ b/2020/info/02.md
@@ -1,7 +1,7 @@
# An Emacs Developer Story: From User to Package Maintainer
Leo Vivier
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.webm" size="296MB" subtitles="/2020/subtitles/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.vtt" duration="24:15"]]
+[[!template vidid="mainVideo" id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.webm" size="296MB" subtitles="/2020/subtitles/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.vtt" duration="24:15"]]
In light of the new development philosophy for Org-mode, I would like
to present my developer story from discovering Org-mode in 2014 to
@@ -81,343 +81,535 @@ development via emacs
resources for learning; the people were SO generous with their time,
to share comments and ideas to improve code.
-<!-- transcript: 2020/subtitles/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.vtt -->
+<a name="transcript"></a>
# Transcript
-(Amin: Alrighty, Leo Vivier, take it away.) Leo Vivier: Okay, well, thank you. I'm
-in. So you've just had a little roundup of the news, and we're going
-to get started now with some presentations. We're starting with user
-developer stories. I was extremely interested in this section because
-I wanted to get a chance, basically, to tell you a little more about
-who I am and how I got from basically being a user of Emacs to being
-nowadays a package maintainer, and maybe more in the future. I don't
-know.
-
-So, just for the organizers, I'm planning to speak for 15 minutes, and
-I'll have five more minutes of questions at the end. As I told you
-before, if you want to have questions, you know you can use the pad,
-and I'll be reading the questions from there. Okay.
-
-So hi there, as Amin introduced me before, my name is Leo Vivier. I'm
-a freelance software engineer in France, and I have been using Emacs
-now for i believe close to eight years. I can't believe it's been so
-long. But yes, it's been a journey because, in a way, nothing made me
-go for Emacs. You know I'm an-- sorry, I was about to say Emacs major,
-but no, I'm an English major. I went to university to study English
-literature and linguistics, and I just got started in Emacs because I
-was looking for ways to take better notes. I was looking for ways to
-[Applause] structure the way I was learning, structure the way I was
-taking notes. I stumbled one day upon this weird piece of software
-which was called Emacs, and I've been trapped forever since,
-basically, because eight years ago, when I discovered Emacs I just
-couldn't let go. There was just something very interesting about the
-way you configured your setup, and I just wanted to dive deeper and
-deeper.
-
-So the title is of this talk exactly is how I went from user to
-package maintainer, and the package now that I'm maintaining is called
-org-roam. I'm not the only one doing this. I'm helped with many lovely
-people working on org-roam. I got started as a maintainer only this
-year, so that means that for the eight years I've been an Emacs user,
-seven of those years were spent merely being a user trying to be a
-sponge for knowledge, trying to learn as much as I could. I believe it
-would be interesting for me to share my story because I believe that
-I'm far from being the only user who can make the jump to being a
-maintainer.
-
-A lot of you have a lot of knowledge when it comes to Emacs. Some of
-you are at different steps in your journey. Some of you, for instance,
-are just starting to copy stuff out of StackExchange into your Emacs
-configuration. let's say you want to do something very particular and
-you haven't found a way to do so. You go on StackExchange. You find
-something that's interesting. You add it to your Emacs configuration.
-You barely understand anything that's going on. You know that it's
-supposed to be Emacs Lisp. "I hardly know Emacs and I know even less
-what is Lisp supposed to be." But you paste it in and it does what you
-want it to do, and you say "Great, I'll move on to my work now." So
-that's how I got started. I had a very spartan setup for Emacs, which
-a lot of you must know... The first time you launch Emacs, you have
-this feeling that you're jumping 20 years back in time, as far as the
-user interface is concerned. But as you get to spend more time with
-Emacs... Some would call it Stockholm syndrome insofar as you can't
-see how spartan the entire thing is, but it actually is a lovely
-prison so to speak.
-
-That's how I got started eight years ago. I just wanted to find a way
-to do my research properly. I wanted to have a tool that I could use
-to write my notes in plain text, because I was already fairly averse
-to Microsoft solutions when it came to taking notes. So yeah, I got
-started in Emacs. I read a little bit about what plain text was about.
-Just to be clear, at the time, yes, I was very good with computers,
-but I was not a computer science student. I had barely any experience
-with programming and coding, and I was even less of a hacker back
-then. It just goes to show you that at the beginning, I had close to
-no knowledge, whether it be about the free software world, whether it
-be about...
-
-Sacha, do you want to say something? (Sacha: just confirming, you're
-not sharing anything on the screen at the moment, right?) No, I'm not
-sharing anything, I'm just presenting.
-
-So when I started, I had no experience whatsoever. I was just a
-literature major trying to get better at taking notes. I stumbled upon
-LaTeX. As many people who stumble upon LaTeX know, you don't just
-stumble upon LaTeX, you embroil yourself in the turmoil of suffering,
-of late nights tweaking, so that your document is exactly in the
-perfect shape you want it to be.
-
-Soon after, when I got started with Emacs and LaTeX, I discovered
-something that truly changed my life, and it was Org Mode. As you'll
-get a lot of presentations this afternoon about Org Mode, I won't be
-spending too much time on it. But Org Mode, for me, was a revelation.
-It's... There was something that, upon reading articles on how to use
-Org Mode, especially one of the key article that I'd read which really
-made a huge impact on me was the "Organize Your Life in Plain Text"
-one which i'm sure many of you must have stumbled upon in your Emacs
-journey... For me, when I stumbled upon this document, I was starting
-to get interested in Getting Things Done and all the nitty-gritty
-stuff about organization and self-organization. It just felt like
-everything was under my fingertips to make the perfect workflow. There
-was something incredibly satisfying about having a system that gave
-you so many options to configure your experience exactly how you
-wanted. You had this feeling that the people behind Org Mode had
-thought of everything, whichever small adjustment that you needed in
-workflow whether it be more states for your TODOs, whether it be, oh,
-I want my weeks to start on Monday and not on Saturday, oh, it's half
-past one and I need to... in the morning, I mean, and I need to make
-sure that the item that i'm marking as done is done for the day before
-and not for the current day. You see what I'm talking about. So many
-details that were already present in Org Mode. At first you're really
-impressed, because you think, wow, they thought of everything, but
-then you realize that it's just a matter of experience, just a matter
-of people contributing code, because the development of Org Mode,
-Emacs, and everything is just open to the public.
-
-You know, it's like everything is being done with the garage
-door opened. You can just go on Org Mode on Savannah and see
-everything that is being developed. For me, the shift that occurred in
-my mind was when I was reading all the options, I was looking at all
-the variables that i could modify for Org Mode, and there came a time,
-maybe two to three years ago, where I thought, oh wow, maybe for the
-first time in a while, there is no option for me to do what I want to
-be doing with Org Mode. I believe at the time the the key issue that
-triggered this reflex for me was I wanted to do something with the
-agenda. I wanted to have a super category so, you know, in the... for
-those of you who know, in your agenda, you have the ability to have
-many files, and you have the ability to have categories. I wanted
-somehow to group my TODOs in smaller groups, or bigger groups, I
-should say, so that, for instance, I could have one group for my
-professional life, I could have a group for one work, the second
-work... I could have something for university and all this. I thought,
-yeah, I think I'd like this. After having spent so long working with
-Emacs and working with Org Mode, I had some ideas about what was
-within the realm of possibility and what wasn't. Here I thought to
-myself, this is definitely something that I can do. And so thus
-started my journey into the Org Mode libraries.
-
-I won't go too much into details right now, because right now, the
-main objective that I have is just to show you how simple it is to
-become a maintainer, how to become more involved with the development.
-The libraries in Org Mode, they're written in Elisp, which is a
-very... It might seem like an obscure language, and it certainly is,
-but as soon as you get the logic of the language--and what i'm telling
-you is coming from someone who's never studied programming-- it made
-sense. Everything is so verbose when you get into the code. When you
-learn the rudiments of Elisp, you start getting to the code, and you
-start thinking, wow, okay that makes sense, and you start developing a
-logic for all this. So, equipped as I was with this new knowledge, I
-went on my project, i went into the Org agenda code, and I thought,
-okay, is there anything that I can use to do my bidding? Fast forward
-maybe two to three weeks of intense turmoil and many nights which were
-spent single-mindedly working on this project, two weeks after, I had
-something that was working, and I was pretty happy about it. That was
-a key landmark for me, because when that happened, it just felt like,
-okay, I can contribute something to Org Mode, and I can do something
-that would benefit as many people as possible. And to me, that was the
-click. That's when it occurred. That's when I went on my first project
-and I did something that felt useful to the community.
-
-And nowadays, as I told you, I maintain packages, but really, nothing
-has changed. The only thing, maybe, that has changed that I've turned
-my mind onto other problems. Maybe I've got three more minutes and I'd
-like to finish by maybe something a little different.
-
-I've told you my Emacs story and I hope I've stressed how little
-effort it took me to move from steps to steps on the ladder. The
-ladder implies a sense of hierarchy, but it really isn't. Whatever
-your step on the journey of Emacs is... Some of you might be at the
-step where you're really worried about learning Elisp because it feels
-like such a monumental task to be undertaking and you have no
-experience whatsoever, but the thing is, maybe you could try climbing
-this first step on the ladder. Maybe you could try, if you have any
-project, if you've been using Org Mode, maybe one day you thought,
-"oh, yes, I wish I could do this but I can't," or maybe do try to do
-this, maybe do try to change something in a major mode that you're
-using and which you feel might be better. I think Emacs, Org Mode, and
-all free software in general has this tendency to give you this idea
-that I can be a hacker in the sense of the term that you're modifying
-things to do your bidding. For me, I believe this to be a very healthy
-attitude towards software. As Amin said in the very beginning, we are
-doing this entire presentation-- sorry, this entire conference with
-free software. Just see all the things we've been able to do in free
-software. For me, Emacs was my gateway, so to speak, into how to
-contribute to free software, about the philosophy that surrounds it.
-
-What I would like to do... I'll finish on this note and then I'll be
-taking your questions. Just try. You've read on Reddit that you need
-to go through the Elisp manual in Emacs. You might be scared, but just
-do it. Just give it a shot. Just give it maybe one afternoon. Try to
-read it. Try to see if this appeals to your mind. If you've been
-interested enough in my presentation right now, and if you're
-interested enough in any of the talks you're going to have during the
-entire conference, do give it a shot. I'm pretty sure you will like
-the journey on which you will be embarking upon. So
-
-I believe I'm finishing one minute early, but I see quite a bit of
-questions already. I'm not sure. Sacha, should I just be reading the
-questions, or do you want to be feeding me the questions? (Amin: It's
-really up to you. it's completely up to you. If you've got the
-questions open and can take them or read them, by all means please.)
-Okay, well, I'm going to read them because I've got them on the side.
-I'm going to start with the one at the bottom.
-
-"Do you feel that being a white male contributed to your experience?"
-Yeah. I mean, I do believe... There's an idea of privilege. I mean,
-I'm French. I live in... I'm lucky enough to be here at university,
-okay, and I'm fairly aware of the discrepancies that happen, even in
-France, according to this... So, yes, I believe my journey was heavily
-influenced by this. If you would like to specify the question, please
-do, but I don't have really all that much to ask on this.
-
-"What is your advice to start learning Elisp language? Any
-particularly good resource or any other tips?" I finished um my
-presentation by telling you about the Elisp introduction which is
-built into Emacs. What I might do... I'm going to share my screen just
-to show you how this works. I will be sharing this window. I believe
-it's frozen on my end, so I can't see anything. i'm not sure if you
-can see me or if my camera is moving. Okay, so my Firefox is frozen.
-So i'll answer the question, but I won't be able to show you what I
-wanted to show you. There's a built-in guide inside Emacs to learn
-Elisp. Maybe the best chance that you have is just to go open these
-info pages. I'm sure someone will be kind enough to mention this to
-you in the #emacsconf channel on IRC but it's probably the best way to
-get started with Elisp. You know, we tend to get obsessed, with
-software and with programming, about what's the best way to get
-started. You see so many people who are heavily interested in getting
-started with programming but they never managed to get started because
-there's so much choice. My advice would be to just get started. Don't
-get so worried about the first step. Well, if I may still recommend
-the first step, even after saying this, do try to start with the
-built-in guides. I believe they're pretty pretty good.
-
-There was another question. It's the last question that I can read and
-after that, you will have to read the questions for me because
-everything is frozen on my end. I hope I'm not frozen in a very bad
-position so please excuse me if my mouth is open or anything. (Amin:
-no, we just completely lost the video feed, so no worries.) Oh,
-splendid, so I won't have to make a fool out of myself.
-
-So the last question I wanted to answer was "Have you read Dirk
-Gently's Holistic Detective Agency?" No, I haven't. I hope it's not a
-jab at the way i'm dressing for the conference, but yeah, I haven't
-read it. Was there any other question?
-
-(Amin: I see one other question. "Any recommendation for good
-packaging guides or places to start? i get a bit overwhelmed by some
-things. For example, the choice of different test frameworks.") Right.
-Okay. So that's a very good question. I believe alphapapa is in the
-chat right now. As myself a new lisp developer for org-roam, i'd
-really recommend you to look into his package developers' guide
-because you have a list of all the softwares that are extremely useful
-to be using when you're getting started. If you're looking into a
-first step for how to develop elast package, i'd really advise you to
-look into edebug. It's one word, edebug, and you have a section in the
-manual for this, because for me, it was the key step to getting to
-develop good packages. It was understanding basically what the code
-did and having us something like a REPL (read-evaluate-print-loop)
-that allows you to step through the code and see exactly which states
-the variables are at which at this point in the program. That's really
-my biggest advice to you. Any other question? Thanks. Yeah, I
-see one or two more. So there's one.
-
-They ask, "How did the freedom of Emacs help you on your way?" So the
-freedom of Emacs... I mentioned that Emacs, for me, was my gateway
-into free software and the freedom of Emacs was that you could
-maybe... First and foremost, compared to other software, was that you
-had behind Emacs, Elisp, which allows you to read the code, read
-whatever is going on in the background. Surely, if you go deep enough,
-you'll end up on C functions that you might not be able to read if you
-do not have the experience. But for Org Mode, which was my gateway
-into Emacs, most of it is written in Elisp, and all the commands have
-a very verbose name, like something simple as org go to next subtree
-or org go to a parent subtree. You know, things like this. It's so
-elegant. It's verbose. That's a sense of freedom insofar as you can go
-into the code and see, oh, okay, that's how it's implemented. I
-believe in a way that's the freedom and the liberty that is given to
-you to look into the code is something that invites you to do the same
-with your life. As someone who does a little bit of philosophy on the
-side, I believe it's a very healthy message to be gathering from a
-piece of software.
-
-(Amin: Awesome, thank you. Let's see... So we have... I think I saw
-another question pop up.) I'm not sure how we're doing as far as time
-is concerned... I believe we have like one or two minutes more. (Amin:
-Yeah, actually, we're quite a bit ahead of the schedule, so if we take
-a little bit longer, we're fine. If you do have more questions, please
-do.) I'm just sorry that my video is not working anymore. (Amin: No
-problem. Someone was actually saying... What's the most recent...
-Actually, yeah well before that.
-
-"Please show off your three-piece suit before you end your talk, which
-requires fixing your frozen camera. if this is not possible, please
-post suit selfies in an easily accessible location." Okay, I'll make
-sure to do this. But yes, I wanted to hype things up for the
-conference, so yes, I did get the three-piece suit out. I'm very glad
-you like it. By the way when you get a chance to see me live again, do
-appreciate that my tie has both the colors of Emacs purple and also
-Org Mode green. It took me a while to find this one, so I hope you
-will appreciate this.
-
-(Amin: Awesome. Let's see. We have one other question. "What's the
-most recent Emacs package or tool that you've discovered that you've
-added to your repertoire?") Very interesting question. The thing is,
-when you've spent as long as I have on Emacs--and I know that I've
-only spent eight years and some of you might have spent maybe 10, 20,
-maybe even more years on Emacs-- but for me, I believe the the coolest
-neat trick that I found in Emacs was a mode which is called
-beacon-mode. It's something that allows you to show when you're
-jumping between buffers or when you're dropping between windows, it
-shows exactly where your point is in that buffer by making a slight
-ray of light which looks like a beacon, hence the name. It really
-helps you navigate buffers because it always shows in a very visual
-way where your point is. I'll get a chance to show this to you later
-today when i'll be presenting my other talks.
-
-(Amin: AWesome. We have one question from Jonas, the maintainer from
-Magit. He asks, "When you touched your webcam, that blew a fuse at my
-place. How did you do that?") Well, I'm very sorry, Jonas, that it
-happened to you, but i'll make sure not to touch my webcam again.
-(Amin: Do we have any other questions?) I have to trust you on this
-one. I'm really sorry. Everything is frozen on my end. (Amin: No
-problem.)
-
-Yeah I'm more talking to the audience, I guess. I hope my lack of
-slides didn't bother you. I really wanted to have this verbose time
-with people, to be able to... it's a message that i've been trying to
-share with as many people as possible. In france we do have an Emacs
-workshop that we have on a monthly basis. I've been learning a lot
-with those people and I felt like doing the same with Emacs conference
-would be good. That's why i'm really happy, and I'm really lucky to
-have had the chance to do this today. I hope some of you I've
-convinced you of climbing up a step on a ladder or making a step in a
-journey. (Amin: Absolutely. Thank you so much, Leo. I happen to
-completely agree with your not necessarily using a slide when it's not
-really needed and to help give some face-to-face time with the
-audience. Unfortunately your webcam cut out, but I mean before that.)
-Yes, I'll make sure to fix the problems later on, so don't worry about
-it. (Amin: Awesome. Alrighty. I guess we're wrapping up for your talk
-and getting ready for the next talk.) Sure. Well, thank you so much.
-I'll see you all later, I suppose! (Amin: Sounds good. Thank you
-again, Leo. Bye-bye)
-
-<!-- /transcript -->
+[[!template text="(Amin: Alrighty, Leo Vivier, take it away.)" start="00:00:00.000" video="mainVideo" id=subtitle]]
+[[!template text="Okay, well, thank you. I'm in." start="00:00:03.760" video="mainVideo" id=subtitle]]
+[[!template text="So you've just had a little roundup of the news," start="00:00:05.319" video="mainVideo" id=subtitle]]
+[[!template text="and we're going to get started now with some presentations." start="00:00:08.393" video="mainVideo" id=subtitle]]
+[[!template text="We're starting with user developer stories." start="00:00:11.120" video="mainVideo" id=subtitle]]
+[[!template text="I was extremely interested in this section" start="00:00:15.920" video="mainVideo" id=subtitle]]
+[[!template text="because I wanted to get a chance, basically," start="00:00:18.568" video="mainVideo" id=subtitle]]
+[[!template text="to tell you a little more about who I am and" start="00:00:21.133" video="mainVideo" id=subtitle]]
+[[!template text="how I got from basically being a user of Emacs" start="00:00:24.160" video="mainVideo" id=subtitle]]
+[[!template text="to being nowadays a package maintainer," start="00:00:28.160" video="mainVideo" id=subtitle]]
+[[!template text="and maybe more in the future. I don't know." start="00:00:31.279" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So, just for the organizers, I'm planning to speak for 15 minutes," start="00:00:34.156" video="mainVideo" id=subtitle]]
+[[!template text="and I'll have five more minutes of questions at the end." start="00:00:36.954" video="mainVideo" id=subtitle]]
+[[!template text="As I told you before, if you want to have questions," start="00:00:39.680" video="mainVideo" id=subtitle]]
+[[!template text="you know you can use the pad," start="00:00:41.880" video="mainVideo" id=subtitle]]
+[[!template text="and I'll be reading the questions from there." start="00:00:43.440" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Okay. So hi there, as Amin introduced me before," start="00:00:45.871" video="mainVideo" id=subtitle]]
+[[!template text="my name is Leo Vivier." start="00:00:49.600" video="mainVideo" id=subtitle]]
+[[!template text="I'm a freelance software engineer in France," start="00:00:51.280" video="mainVideo" id=subtitle]]
+[[!template text="and I have been using Emacs now for" start="00:00:55.662" video="mainVideo" id=subtitle]]
+[[!template text="I believe close to eight years." start="00:00:59.359" video="mainVideo" id=subtitle]]
+[[!template text="I can't believe it's been so long." start="00:01:00.885" video="mainVideo" id=subtitle]]
+[[!template text="But yes, it's been a journey because, in a way," start="00:01:03.039" video="mainVideo" id=subtitle]]
+[[!template text="nothing made me go for Emacs." start="00:01:09.967" video="mainVideo" id=subtitle]]
+[[!template text="You know I'm an-- sorry, I was about to say Emacs major," start="00:01:13.255" video="mainVideo" id=subtitle]]
+[[!template text="but no, I'm an English major." start="00:01:17.011" video="mainVideo" id=subtitle]]
+[[!template text="I went to university to study English literature and linguistics," start="00:01:18.638" video="mainVideo" id=subtitle]]
+[[!template text="and I just got started in Emacs" start="00:01:23.990" video="mainVideo" id=subtitle]]
+[[!template text="because I was looking for ways to take" start="00:01:26.159" video="mainVideo" id=subtitle]]
+[[!template text="better notes. I was looking for ways to" start="00:01:28.240" video="mainVideo" id=subtitle]]
+[[!template text="structure the way I was learning," start="00:01:32.640" video="mainVideo" id=subtitle]]
+[[!template text="structure the way I was taking notes." start="00:01:34.640" video="mainVideo" id=subtitle]]
+[[!template text="I stumbled one day" start="00:01:38.084" video="mainVideo" id=subtitle]]
+[[!template text="upon this weird piece of software" start="00:01:40.079" video="mainVideo" id=subtitle]]
+[[!template text="which was called Emacs," start="00:01:42.032" video="mainVideo" id=subtitle]]
+[[!template text="and I've been trapped forever since," start="00:01:43.759" video="mainVideo" id=subtitle]]
+[[!template text="basically, because eight years ago," start="00:01:46.479" video="mainVideo" id=subtitle]]
+[[!template text="when I discovered Emacs," start="00:01:48.328" video="mainVideo" id=subtitle]]
+[[!template text="I just couldn't let go." start="00:01:49.515" video="mainVideo" id=subtitle]]
+[[!template text="There was just something very" start="00:01:50.632" video="mainVideo" id=subtitle]]
+[[!template text="interesting about the way" start="00:01:52.720" video="mainVideo" id=subtitle]]
+[[!template text="you configured your setup," start="00:01:54.487" video="mainVideo" id=subtitle]]
+[[!template text="and I just wanted to dive deeper and deeper." start="00:01:56.320" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So the title is of this talk exactly is" start="00:01:59.759" video="mainVideo" id=subtitle]]
+[[!template text="how I went from user to package maintainer," start="00:02:04.320" video="mainVideo" id=subtitle]]
+[[!template text="and the package now that I'm maintaining" start="00:02:07.637" video="mainVideo" id=subtitle]]
+[[!template text="is called org-roam. I'm not the only one doing this." start="00:02:09.686" video="mainVideo" id=subtitle]]
+[[!template text="I'm helped with many lovely people working on org-roam." start="00:02:12.080" video="mainVideo" id=subtitle]]
+[[!template text="I got started as a maintainer only this year," start="00:02:18.720" video="mainVideo" id=subtitle]]
+[[!template text="so that means that for" start="00:02:22.149" video="mainVideo" id=subtitle]]
+[[!template text="the eight years I've been" start="00:02:23.360" video="mainVideo" id=subtitle]]
+[[!template text="an Emacs user, seven of those years were" start="00:02:24.720" video="mainVideo" id=subtitle]]
+[[!template text="spent merely being a user" start="00:02:27.360" video="mainVideo" id=subtitle]]
+[[!template text="trying to be a sponge for knowledge," start="00:02:29.200" video="mainVideo" id=subtitle]]
+[[!template text="trying to learn as much as I could." start="00:02:31.040" video="mainVideo" id=subtitle]]
+[[!template text="I believe it would be" start="00:02:33.920" video="mainVideo" id=subtitle]]
+[[!template text="interesting for me to share my story" start="00:02:36.800" video="mainVideo" id=subtitle]]
+[[!template text="because I believe that I'm far from" start="00:02:39.040" video="mainVideo" id=subtitle]]
+[[!template text="being the only user" start="00:02:40.959" video="mainVideo" id=subtitle]]
+[[!template text="who can make the jump to being a maintainer." start="00:02:42.160" video="mainVideo" id=subtitle]]
+[[!template new="1" text="A lot of you have a lot of knowledge when it comes to Emacs." start="00:02:44.327" video="mainVideo" id=subtitle]]
+[[!template text="Some of you are at different steps in your journey." start="00:02:47.572" video="mainVideo" id=subtitle]]
+[[!template text="Some of you, for instance, are just" start="00:02:51.040" video="mainVideo" id=subtitle]]
+[[!template text="starting to copy stuff out of" start="00:02:52.720" video="mainVideo" id=subtitle]]
+[[!template text="StackExchange into your Emacs configuration." start="00:02:55.680" video="mainVideo" id=subtitle]]
+[[!template text="Let's say you want to do something very particular" start="00:02:59.058" video="mainVideo" id=subtitle]]
+[[!template text="and you haven't found a way to do so." start="00:03:01.599" video="mainVideo" id=subtitle]]
+[[!template text="You go on StackExchange." start="00:03:04.480" video="mainVideo" id=subtitle]]
+[[!template text="You find something that's interesting." start="00:03:05.527" video="mainVideo" id=subtitle]]
+[[!template text="You add it to your Emacs configuration." start="00:03:07.930" video="mainVideo" id=subtitle]]
+[[!template text="You barely understand anything that's going on." start="00:03:10.077" video="mainVideo" id=subtitle]]
+[[!template text="You know that it's supposed to be Emacs Lisp." start="00:03:11.680" video="mainVideo" id=subtitle]]
+[[!template text="&quot;I hardly know Emacs and" start="00:03:14.800" video="mainVideo" id=subtitle]]
+[[!template text="I know even less what is Lisp supposed to be.&quot;" start="00:03:17.200" video="mainVideo" id=subtitle]]
+[[!template text="But you paste it in, and it does what you want it to do," start="00:03:19.440" video="mainVideo" id=subtitle]]
+[[!template text="and you say &quot;Great, I'll move on to my work now.&quot;" start="00:03:22.172" video="mainVideo" id=subtitle]]
+[[!template text="So that's how I got started." start="00:03:26.682" video="mainVideo" id=subtitle]]
+[[!template text="I had a very spartan setup for Emacs, which a lot of you must know..." start="00:03:28.821" video="mainVideo" id=subtitle]]
+[[!template text="The first time you launch Emacs," start="00:03:33.888" video="mainVideo" id=subtitle]]
+[[!template text="you have this feeling" start="00:03:36.000" video="mainVideo" id=subtitle]]
+[[!template text="that you're jumping 20 years back in time," start="00:03:36.920" video="mainVideo" id=subtitle]]
+[[!template text="as far as the user interface is concerned." start="00:03:38.852" video="mainVideo" id=subtitle]]
+[[!template text="But as you get to spend more time with Emacs..." start="00:03:43.260" video="mainVideo" id=subtitle]]
+[[!template text="Some would call it Stockholm syndrome" start="00:03:46.959" video="mainVideo" id=subtitle]]
+[[!template text="insofar as you can't see" start="00:03:49.120" video="mainVideo" id=subtitle]]
+[[!template text="how spartan the entire thing is," start="00:03:50.959" video="mainVideo" id=subtitle]]
+[[!template text="but it actually is a lovely prison, so to speak." start="00:03:52.929" video="mainVideo" id=subtitle]]
+[[!template new="1" text="That's how I got started eight years ago." start="00:03:58.400" video="mainVideo" id=subtitle]]
+[[!template text="I just wanted to find a way to do my research properly." start="00:04:00.400" video="mainVideo" id=subtitle]]
+[[!template text="I wanted to have a tool" start="00:04:04.319" video="mainVideo" id=subtitle]]
+[[!template text="that I could use to write my notes" start="00:04:05.699" video="mainVideo" id=subtitle]]
+[[!template text="in plain text, because I was already" start="00:04:07.280" video="mainVideo" id=subtitle]]
+[[!template text="fairly averse to Microsoft solutions when it came to taking notes." start="00:04:08.959" video="mainVideo" id=subtitle]]
+[[!template text="So yeah, I got started in Emacs." start="00:04:16.320" video="mainVideo" id=subtitle]]
+[[!template text="I read a little bit about what plain text was about." start="00:04:19.180" video="mainVideo" id=subtitle]]
+[[!template text="Just to be clear, at the time, yes," start="00:04:21.651" video="mainVideo" id=subtitle]]
+[[!template text="I was very good with computers," start="00:04:24.364" video="mainVideo" id=subtitle]]
+[[!template text="but I was not a computer science student." start="00:04:27.120" video="mainVideo" id=subtitle]]
+[[!template text="I had barely any experience with programming and coding," start="00:04:30.160" video="mainVideo" id=subtitle]]
+[[!template text="and I was even less of a hacker back then." start="00:04:34.302" video="mainVideo" id=subtitle]]
+[[!template text="It just goes to show you that at the beginning," start="00:04:39.919" video="mainVideo" id=subtitle]]
+[[!template text="I had close to no knowledge," start="00:04:43.052" video="mainVideo" id=subtitle]]
+[[!template text="whether it be about" start="00:04:44.479" video="mainVideo" id=subtitle]]
+[[!template text="the free software world," start="00:04:45.840" video="mainVideo" id=subtitle]]
+[[!template text="whether it be about..." start="00:04:47.457" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Sacha, do you want to say something?" start="00:04:48.880" video="mainVideo" id=subtitle]]
+[[!template text="(Sacha: just confirming, you're not sharing anything" start="00:04:50.290" video="mainVideo" id=subtitle]]
+[[!template text="on the screen at the moment, right?)" start="00:04:52.479" video="mainVideo" id=subtitle]]
+[[!template text="No, I'm not sharing anything," start="00:04:54.080" video="mainVideo" id=subtitle]]
+[[!template text="I'm just presenting." start="00:04:55.204" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So when I started," start="00:04:59.040" video="mainVideo" id=subtitle]]
+[[!template text="I had no experience whatsoever." start="00:05:01.173" video="mainVideo" id=subtitle]]
+[[!template text="I was just a literature major" start="00:05:03.680" video="mainVideo" id=subtitle]]
+[[!template text="trying to get better at taking notes." start="00:05:07.199" video="mainVideo" id=subtitle]]
+[[!template text="I stumbled upon LaTeX." start="00:05:11.039" video="mainVideo" id=subtitle]]
+[[!template text="As many people who stumble upon LaTeX know," start="00:05:12.466" video="mainVideo" id=subtitle]]
+[[!template text="you don't just stumble upon LaTeX," start="00:05:15.280" video="mainVideo" id=subtitle]]
+[[!template text="you embroil yourself in the turmoil of suffering," start="00:05:17.519" video="mainVideo" id=subtitle]]
+[[!template text="of late nights tweaking," start="00:05:21.950" video="mainVideo" id=subtitle]]
+[[!template text="so that your document is exactly" start="00:05:24.560" video="mainVideo" id=subtitle]]
+[[!template text="in the perfect shape you want it to be." start="00:05:26.923" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Soon after, when I got started with Emacs and LaTeX," start="00:05:33.440" video="mainVideo" id=subtitle]]
+[[!template text="I discovered something that truly changed my life," start="00:05:36.639" video="mainVideo" id=subtitle]]
+[[!template text="and it was Org Mode." start="00:05:39.334" video="mainVideo" id=subtitle]]
+[[!template text="As you'll get a lot of presentations" start="00:05:40.560" video="mainVideo" id=subtitle]]
+[[!template text="this afternoon about Org Mode," start="00:05:44.479" video="mainVideo" id=subtitle]]
+[[!template text="I won't be spending too much time on it." start="00:05:46.960" video="mainVideo" id=subtitle]]
+[[!template text="But Org Mode, for me, was a revelation. It's..." start="00:05:49.360" video="mainVideo" id=subtitle]]
+[[!template text="There was something that," start="00:05:53.680" video="mainVideo" id=subtitle]]
+[[!template text="upon reading articles on how to use Org Mode," start="00:05:55.869" video="mainVideo" id=subtitle]]
+[[!template text="especially one of the key articles" start="00:05:59.039" video="mainVideo" id=subtitle]]
+[[!template text="that I'd read which really made" start="00:06:02.453" video="mainVideo" id=subtitle]]
+[[!template text="a huge impact on me" start="00:06:04.160" video="mainVideo" id=subtitle]]
+[[!template text="was the &quot;Organize Your Life in Plain Text&quot; one," start="00:06:06.000" video="mainVideo" id=subtitle]]
+[[!template text="which I'm sure many of you must have stumbled upon" start="00:06:09.199" video="mainVideo" id=subtitle]]
+[[!template text="in your Emacs journey..." start="00:06:12.240" video="mainVideo" id=subtitle]]
+[[!template text="For me, when I stumbled upon this document," start="00:06:15.919" video="mainVideo" id=subtitle]]
+[[!template text="I was starting to get interested" start="00:06:20.307" video="mainVideo" id=subtitle]]
+[[!template text="in Getting Things Done and" start="00:06:22.488" video="mainVideo" id=subtitle]]
+[[!template text="all the nitty-gritty stuff about" start="00:06:24.240" video="mainVideo" id=subtitle]]
+[[!template text="organization and self-organization." start="00:06:26.560" video="mainVideo" id=subtitle]]
+[[!template text="It just felt like everything was under my fingertips" start="00:06:29.199" video="mainVideo" id=subtitle]]
+[[!template text="to make the perfect workflow." start="00:06:32.960" video="mainVideo" id=subtitle]]
+[[!template text="There was something incredibly satisfying about" start="00:06:36.960" video="mainVideo" id=subtitle]]
+[[!template text="having a system that gave you" start="00:06:44.080" video="mainVideo" id=subtitle]]
+[[!template text="so many options to configure your experience" start="00:06:45.834" video="mainVideo" id=subtitle]]
+[[!template text="exactly how you wanted." start="00:06:48.319" video="mainVideo" id=subtitle]]
+[[!template text="You had this feeling that" start="00:06:50.160" video="mainVideo" id=subtitle]]
+[[!template text="the people behind Org Mode had thought of everything," start="00:06:54.479" video="mainVideo" id=subtitle]]
+[[!template text="whichever small adjustment" start="00:06:57.599" video="mainVideo" id=subtitle]]
+[[!template text="that you needed in workflow" start="00:07:00.479" video="mainVideo" id=subtitle]]
+[[!template text="whether it be more states for your TODOs," start="00:07:02.000" video="mainVideo" id=subtitle]]
+[[!template text="whether it be, oh, I want my weeks to" start="00:07:05.440" video="mainVideo" id=subtitle]]
+[[!template text="start on Monday and not on Saturday," start="00:07:07.520" video="mainVideo" id=subtitle]]
+[[!template text="oh, it's half past one and I need to..." start="00:07:09.360" video="mainVideo" id=subtitle]]
+[[!template text="in the morning, I mean, and I need to make" start="00:07:13.520" video="mainVideo" id=subtitle]]
+[[!template text="sure that the item that I'm marking as done" start="00:07:15.280" video="mainVideo" id=subtitle]]
+[[!template text="is done for the day before" start="00:07:17.680" video="mainVideo" id=subtitle]]
+[[!template text="and not for the current day." start="00:07:18.759" video="mainVideo" id=subtitle]]
+[[!template text="You see what I'm talking about." start="00:07:20.233" video="mainVideo" id=subtitle]]
+[[!template text="So many details that were already" start="00:07:21.919" video="mainVideo" id=subtitle]]
+[[!template text="present in Org Mode." start="00:07:25.280" video="mainVideo" id=subtitle]]
+[[!template text="At first you're really impressed, because you think, wow," start="00:07:27.235" video="mainVideo" id=subtitle]]
+[[!template text="they thought of everything," start="00:07:31.335" video="mainVideo" id=subtitle]]
+[[!template text="but then you realize that it's just a matter of experience," start="00:07:33.470" video="mainVideo" id=subtitle]]
+[[!template text="just a matter of people contributing code," start="00:07:36.378" video="mainVideo" id=subtitle]]
+[[!template text="because the development of Org Mode, Emacs," start="00:07:39.712" video="mainVideo" id=subtitle]]
+[[!template text="and everything is just open to the public." start="00:07:42.171" video="mainVideo" id=subtitle]]
+[[!template new="1" text="You know, it's like" start="00:07:44.455" video="mainVideo" id=subtitle]]
+[[!template text="everything is being done with the garage door opened." start="00:07:45.440" video="mainVideo" id=subtitle]]
+[[!template text="You can just go on Org Mode on Savannah" start="00:07:47.685" video="mainVideo" id=subtitle]]
+[[!template text="and see everything that is being developed." start="00:07:50.402" video="mainVideo" id=subtitle]]
+[[!template text="For me, the shift that occurred in my mind was" start="00:07:54.800" video="mainVideo" id=subtitle]]
+[[!template text="when I was reading all the options," start="00:08:01.586" video="mainVideo" id=subtitle]]
+[[!template text="I was looking at all the variables" start="00:08:04.139" video="mainVideo" id=subtitle]]
+[[!template text="that I could modify for Org Mode," start="00:08:05.881" video="mainVideo" id=subtitle]]
+[[!template text="and there came a time, maybe two to three years ago," start="00:08:08.160" video="mainVideo" id=subtitle]]
+[[!template text="where I thought, oh wow," start="00:08:12.560" video="mainVideo" id=subtitle]]
+[[!template text="maybe for the first time in a while," start="00:08:15.599" video="mainVideo" id=subtitle]]
+[[!template text="there is no option for me to do" start="00:08:17.759" video="mainVideo" id=subtitle]]
+[[!template text="what I want to be doing with Org Mode." start="00:08:19.260" video="mainVideo" id=subtitle]]
+[[!template text="I believe at the time," start="00:08:21.440" video="mainVideo" id=subtitle]]
+[[!template text="the key issue that triggered this reflex for me was" start="00:08:23.668" video="mainVideo" id=subtitle]]
+[[!template text="I wanted to do something with the agenda." start="00:08:29.199" video="mainVideo" id=subtitle]]
+[[!template text="I wanted to have a super category so, you know, in the..." start="00:08:31.039" video="mainVideo" id=subtitle]]
+[[!template text="for those of you who know, in your agenda," start="00:08:34.159" video="mainVideo" id=subtitle]]
+[[!template text="you have the ability to have many files," start="00:08:36.606" video="mainVideo" id=subtitle]]
+[[!template text="and you have the ability to have categories." start="00:08:38.376" video="mainVideo" id=subtitle]]
+[[!template text="I wanted somehow to group my" start="00:08:41.200" video="mainVideo" id=subtitle]]
+[[!template text="TODOs in smaller groups, or bigger" start="00:08:47.920" video="mainVideo" id=subtitle]]
+[[!template text="groups, I should say," start="00:08:51.680" video="mainVideo" id=subtitle]]
+[[!template text="so that, for instance, I could have" start="00:08:52.560" video="mainVideo" id=subtitle]]
+[[!template text="one group for my professional life," start="00:08:53.780" video="mainVideo" id=subtitle]]
+[[!template text="I could have a group for one work," start="00:08:55.131" video="mainVideo" id=subtitle]]
+[[!template text="the second work..." start="00:08:57.462" video="mainVideo" id=subtitle]]
+[[!template text="I could have something for university and all this." start="00:08:59.600" video="mainVideo" id=subtitle]]
+[[!template text="I thought, yeah, I think I'd like this." start="00:09:02.800" video="mainVideo" id=subtitle]]
+[[!template text="After having spent so long working" start="00:09:09.600" video="mainVideo" id=subtitle]]
+[[!template text="with Emacs and working with Org Mode," start="00:09:12.959" video="mainVideo" id=subtitle]]
+[[!template text="I had some ideas about" start="00:09:15.519" video="mainVideo" id=subtitle]]
+[[!template text="what was within the realm of possibility and what wasn't." start="00:09:16.766" video="mainVideo" id=subtitle]]
+[[!template text="Here I thought to myself," start="00:09:19.292" video="mainVideo" id=subtitle]]
+[[!template text="this is definitely something that I can do." start="00:09:21.120" video="mainVideo" id=subtitle]]
+[[!template text="And so thus started my journey" start="00:09:24.320" video="mainVideo" id=subtitle]]
+[[!template text="into the Org Mode libraries." start="00:09:27.839" video="mainVideo" id=subtitle]]
+[[!template new="1" text="I won't go too much into details right now," start="00:09:31.360" video="mainVideo" id=subtitle]]
+[[!template text="because right now, the main objective" start="00:09:33.222" video="mainVideo" id=subtitle]]
+[[!template text="that I have is just to show you" start="00:09:34.959" video="mainVideo" id=subtitle]]
+[[!template text="how simple it is to become a maintainer," start="00:09:37.040" video="mainVideo" id=subtitle]]
+[[!template text="how to become more involved with the development." start="00:09:40.240" video="mainVideo" id=subtitle]]
+[[!template text="The libraries in Org Mode," start="00:09:42.800" video="mainVideo" id=subtitle]]
+[[!template text="they're written in Elisp, which is a very..." start="00:09:46.320" video="mainVideo" id=subtitle]]
+[[!template text="It might seem like an obscure language," start="00:09:50.320" video="mainVideo" id=subtitle]]
+[[!template text="and it certainly is," start="00:09:52.080" video="mainVideo" id=subtitle]]
+[[!template text="but as soon as you get the logic of the language--and" start="00:09:54.080" video="mainVideo" id=subtitle]]
+[[!template text="what I'm telling you is coming from someone" start="00:09:57.279" video="mainVideo" id=subtitle]]
+[[!template text="who's never studied programming--" start="00:10:00.136" video="mainVideo" id=subtitle]]
+[[!template text="it made sense." start="00:10:01.760" video="mainVideo" id=subtitle]]
+[[!template text="Everything is so verbose" start="00:10:04.399" video="mainVideo" id=subtitle]]
+[[!template text="when you get into the code." start="00:10:05.534" video="mainVideo" id=subtitle]]
+[[!template text="When you learn the rudiments of Elisp," start="00:10:07.279" video="mainVideo" id=subtitle]]
+[[!template text="you start getting to the code," start="00:10:11.065" video="mainVideo" id=subtitle]]
+[[!template text="and you start thinking, wow," start="00:10:13.360" video="mainVideo" id=subtitle]]
+[[!template text="okay that makes sense," start="00:10:15.229" video="mainVideo" id=subtitle]]
+[[!template text="and you start developing a logic for all this." start="00:10:17.120" video="mainVideo" id=subtitle]]
+[[!template text="So, equipped as I was with this" start="00:10:21.360" video="mainVideo" id=subtitle]]
+[[!template text="new knowledge, I went on my project," start="00:10:24.720" video="mainVideo" id=subtitle]]
+[[!template text="I went into the Org agenda code," start="00:10:27.760" video="mainVideo" id=subtitle]]
+[[!template text="and I thought, okay," start="00:10:30.000" video="mainVideo" id=subtitle]]
+[[!template text="is there anything that I can use to do my bidding?" start="00:10:30.880" video="mainVideo" id=subtitle]]
+[[!template text="Fast forward maybe two to three weeks of intense turmoil" start="00:10:34.640" video="mainVideo" id=subtitle]]
+[[!template text="and many nights which were spent single-mindedly working on this project," start="00:10:39.733" video="mainVideo" id=subtitle]]
+[[!template text="two weeks after, I had something that was working," start="00:10:46.079" video="mainVideo" id=subtitle]]
+[[!template text="and I was pretty happy about it." start="00:10:48.781" video="mainVideo" id=subtitle]]
+[[!template text="That was a key landmark for me," start="00:10:51.680" video="mainVideo" id=subtitle]]
+[[!template text="because when that happened," start="00:10:54.849" video="mainVideo" id=subtitle]]
+[[!template text="it just felt like, okay," start="00:10:56.800" video="mainVideo" id=subtitle]]
+[[!template text="I can contribute something to Org Mode," start="00:10:58.860" video="mainVideo" id=subtitle]]
+[[!template text="and I can do something that would benefit as many people as possible." start="00:11:01.335" video="mainVideo" id=subtitle]]
+[[!template text="And to me, that was the click." start="00:11:07.600" video="mainVideo" id=subtitle]]
+[[!template text="That's when it occurred." start="00:11:08.970" video="mainVideo" id=subtitle]]
+[[!template text="That's when I went on my first project and I did something" start="00:11:10.530" video="mainVideo" id=subtitle]]
+[[!template text="that felt useful to the community." start="00:11:14.640" video="mainVideo" id=subtitle]]
+[[!template new="1" text="And nowadays, as I told you," start="00:11:18.079" video="mainVideo" id=subtitle]]
+[[!template text="I maintain packages, but really, nothing has changed." start="00:11:19.945" video="mainVideo" id=subtitle]]
+[[!template text="The only thing, maybe, that has changed" start="00:11:22.640" video="mainVideo" id=subtitle]]
+[[!template text="is that I've turned my mind onto other problems." start="00:11:24.399" video="mainVideo" id=subtitle]]
+[[!template text="Maybe I've got three more minutes," start="00:11:28.320" video="mainVideo" id=subtitle]]
+[[!template text="and I'd like to finish by" start="00:11:32.000" video="mainVideo" id=subtitle]]
+[[!template text="maybe something a little different." start="00:11:35.279" video="mainVideo" id=subtitle]]
+[[!template new="1" text="I've told you my Emacs story" start="00:11:38.399" video="mainVideo" id=subtitle]]
+[[!template text="and I hope I've stressed how little effort it took me" start="00:11:39.449" video="mainVideo" id=subtitle]]
+[[!template text="to move from steps to steps on the ladder." start="00:11:42.924" video="mainVideo" id=subtitle]]
+[[!template text="The ladder implies a sense of hierarchy, but it really isn't." start="00:11:46.560" video="mainVideo" id=subtitle]]
+[[!template text="Whatever your step on the journey of Emacs is..." start="00:11:48.959" video="mainVideo" id=subtitle]]
+[[!template text="Some of you might be at the step" start="00:11:53.920" video="mainVideo" id=subtitle]]
+[[!template text="where you're really worried" start="00:11:55.830" video="mainVideo" id=subtitle]]
+[[!template text="about learning Elisp because it feels" start="00:11:57.440" video="mainVideo" id=subtitle]]
+[[!template text="like such a monumental task to be undertaking" start="00:11:59.360" video="mainVideo" id=subtitle]]
+[[!template text="and you have no experience whatsoever," start="00:12:02.399" video="mainVideo" id=subtitle]]
+[[!template text="but the thing is," start="00:12:04.720" video="mainVideo" id=subtitle]]
+[[!template text="maybe you could try climbing this first" start="00:12:06.079" video="mainVideo" id=subtitle]]
+[[!template text="step on the ladder. Maybe you could try," start="00:12:07.839" video="mainVideo" id=subtitle]]
+[[!template text="if you have any project," start="00:12:09.600" video="mainVideo" id=subtitle]]
+[[!template text="if you've been using Org Mode," start="00:12:11.200" video="mainVideo" id=subtitle]]
+[[!template text="maybe one day you thought, &quot;oh, yes," start="00:12:13.120" video="mainVideo" id=subtitle]]
+[[!template text="I wish I could do this but I can't,&quot;" start="00:12:15.600" video="mainVideo" id=subtitle]]
+[[!template text="or maybe do try to do this," start="00:12:18.160" video="mainVideo" id=subtitle]]
+[[!template text="maybe do try to change something" start="00:12:19.920" video="mainVideo" id=subtitle]]
+[[!template text="in a major mode that you're using" start="00:12:21.442" video="mainVideo" id=subtitle]]
+[[!template text="and which you feel might be better." start="00:12:23.279" video="mainVideo" id=subtitle]]
+[[!template text="I think Emacs, Org Mode," start="00:12:26.560" video="mainVideo" id=subtitle]]
+[[!template text="and all free software in general" start="00:12:28.722" video="mainVideo" id=subtitle]]
+[[!template text="has this tendency to give you this idea" start="00:12:31.040" video="mainVideo" id=subtitle]]
+[[!template text="that I can be a hacker" start="00:12:34.720" video="mainVideo" id=subtitle]]
+[[!template text="in the sense of the term" start="00:12:38.720" video="mainVideo" id=subtitle]]
+[[!template text="that you're modifying things" start="00:12:41.360" video="mainVideo" id=subtitle]]
+[[!template text="to do your bidding." start="00:12:43.200" video="mainVideo" id=subtitle]]
+[[!template text="For me, I believe this to be" start="00:12:46.320" video="mainVideo" id=subtitle]]
+[[!template text="a very healthy attitude towards software." start="00:12:48.042" video="mainVideo" id=subtitle]]
+[[!template text="As Amin said in the very beginning," start="00:12:50.320" video="mainVideo" id=subtitle]]
+[[!template text="we are doing this entire presentation--" start="00:12:54.079" video="mainVideo" id=subtitle]]
+[[!template text="sorry, this entire conference with free software." start="00:12:57.279" video="mainVideo" id=subtitle]]
+[[!template text="Just see all the things" start="00:13:00.800" video="mainVideo" id=subtitle]]
+[[!template text="we've been able to do in free software." start="00:13:01.686" video="mainVideo" id=subtitle]]
+[[!template text="For me, Emacs was my gateway, so to speak," start="00:13:03.920" video="mainVideo" id=subtitle]]
+[[!template text="into how to contribute to free software," start="00:13:10.399" video="mainVideo" id=subtitle]]
+[[!template text="about the philosophy that surrounds it." start="00:13:14.399" video="mainVideo" id=subtitle]]
+[[!template new="1" text="What I would like to do..." start="00:13:18.639" video="mainVideo" id=subtitle]]
+[[!template text="I'll finish on this note and then" start="00:13:20.003" video="mainVideo" id=subtitle]]
+[[!template text="I'll be taking your questions." start="00:13:21.375" video="mainVideo" id=subtitle]]
+[[!template text="Just try." start="00:13:23.360" video="mainVideo" id=subtitle]]
+[[!template text="You've read on Reddit" start="00:13:26.480" video="mainVideo" id=subtitle]]
+[[!template text="that you need to go through the Elisp manual in Emacs." start="00:13:28.592" video="mainVideo" id=subtitle]]
+[[!template text="You might be scared, but just do it. Just give it a shot." start="00:13:31.807" video="mainVideo" id=subtitle]]
+[[!template text="Just give it maybe one afternoon." start="00:13:35.920" video="mainVideo" id=subtitle]]
+[[!template text="Try to read it." start="00:13:38.560" video="mainVideo" id=subtitle]]
+[[!template text="Try to see if this appeals to your mind." start="00:13:39.199" video="mainVideo" id=subtitle]]
+[[!template text="If you've been interested enough" start="00:13:43.120" video="mainVideo" id=subtitle]]
+[[!template text="in my presentation right now," start="00:13:44.230" video="mainVideo" id=subtitle]]
+[[!template text="and if you're interested enough in any of the talks" start="00:13:45.241" video="mainVideo" id=subtitle]]
+[[!template text="you're going to have during the entire conference," start="00:13:47.199" video="mainVideo" id=subtitle]]
+[[!template text="do give it a shot." start="00:13:49.519" video="mainVideo" id=subtitle]]
+[[!template text="I'm pretty sure you will like the journey" start="00:13:50.747" video="mainVideo" id=subtitle]]
+[[!template text="on which you will be embarking upon." start="00:13:52.959" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So I believe I'm finishing one minute early," start="00:13:55.418" video="mainVideo" id=subtitle]]
+[[!template text="but I see quite a bit of questions already." start="00:13:57.120" video="mainVideo" id=subtitle]]
+[[!template text="I'm not sure. Sacha, should I" start="00:14:01.040" video="mainVideo" id=subtitle]]
+[[!template text="just be reading the questions," start="00:14:04.320" video="mainVideo" id=subtitle]]
+[[!template text="or do you want to be feeding me the questions?" start="00:14:05.847" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: It's really up to you." start="00:14:08.639" video="mainVideo" id=subtitle]]
+[[!template text="It's completely up to you." start="00:14:10.755" video="mainVideo" id=subtitle]]
+[[!template text="If you've got the questions" start="00:14:12.320" video="mainVideo" id=subtitle]]
+[[!template text="open and can take them or read them," start="00:14:13.600" video="mainVideo" id=subtitle]]
+[[!template text="by all means, please.)" start="00:14:15.839" video="mainVideo" id=subtitle]]
+[[!template text="Okay, well, I'm going to read them" start="00:14:18.320" video="mainVideo" id=subtitle]]
+[[!template text="because I've got them on the side." start="00:14:19.420" video="mainVideo" id=subtitle]]
+[[!template text="I'm going to start with the one at the bottom." start="00:14:20.581" video="mainVideo" id=subtitle]]
+[[!template new="1" text="&quot;Do you feel that being a white male" start="00:14:22.800" video="mainVideo" id=subtitle]]
+[[!template text="contributed to your experience?&quot;" start="00:14:24.959" video="mainVideo" id=subtitle]]
+[[!template text="Yeah. I mean, I do believe..." start="00:14:26.959" video="mainVideo" id=subtitle]]
+[[!template text="There's an idea of privilege." start="00:14:29.165" video="mainVideo" id=subtitle]]
+[[!template text="I mean, I'm French. I live in..." start="00:14:30.771" video="mainVideo" id=subtitle]]
+[[!template text="I'm lucky enough to be here at university, okay," start="00:14:33.250" video="mainVideo" id=subtitle]]
+[[!template text="and I'm fairly aware of the discrepancies that happen," start="00:14:36.959" video="mainVideo" id=subtitle]]
+[[!template text="even in France," start="00:14:40.714" video="mainVideo" id=subtitle]]
+[[!template text="according to this..." start="00:14:41.600" video="mainVideo" id=subtitle]]
+[[!template text="So, yes, I believe my journey" start="00:14:42.880" video="mainVideo" id=subtitle]]
+[[!template text="was heavily influenced by this." start="00:14:46.320" video="mainVideo" id=subtitle]]
+[[!template text="If you would like to specify the question, please do," start="00:14:51.199" video="mainVideo" id=subtitle]]
+[[!template text="but I don't have really all that much to ask on this." start="00:14:53.547" video="mainVideo" id=subtitle]]
+[[!template new="1" text="&quot;What is your advice to start learning" start="00:14:56.560" video="mainVideo" id=subtitle]]
+[[!template text="Elisp language? Any particularly good" start="00:14:59.839" video="mainVideo" id=subtitle]]
+[[!template text="resource or any other tips?&quot;" start="00:15:01.279" video="mainVideo" id=subtitle]]
+[[!template text="I finished my presentation by telling you about" start="00:15:03.421" video="mainVideo" id=subtitle]]
+[[!template text="the Elisp introduction which is built into Emacs." start="00:15:07.760" video="mainVideo" id=subtitle]]
+[[!template text="What I might do... I'm going to share my screen" start="00:15:10.937" video="mainVideo" id=subtitle]]
+[[!template text="just to show you how this works." start="00:15:13.936" video="mainVideo" id=subtitle]]
+[[!template text="I will be sharing this window." start="00:15:17.819" video="mainVideo" id=subtitle]]
+[[!template text="I believe it's frozen on my end," start="00:15:22.880" video="mainVideo" id=subtitle]]
+[[!template text="so I can't see anything." start="00:15:24.234" video="mainVideo" id=subtitle]]
+[[!template text="I'm not sure if you can see me" start="00:15:27.199" video="mainVideo" id=subtitle]]
+[[!template text="or if my camera is moving." start="00:15:28.597" video="mainVideo" id=subtitle]]
+[[!template text="Okay, so my Firefox is frozen." start="00:15:32.560" video="mainVideo" id=subtitle]]
+[[!template text="So I'll answer the question," start="00:15:34.387" video="mainVideo" id=subtitle]]
+[[!template text="but I won't be able to show you what I wanted to show you." start="00:15:35.361" video="mainVideo" id=subtitle]]
+[[!template text="There's a built-in guide inside Emacs to learn Elisp." start="00:15:40.000" video="mainVideo" id=subtitle]]
+[[!template text="Maybe the best chance that you have" start="00:15:44.320" video="mainVideo" id=subtitle]]
+[[!template text="is just to go open these info pages." start="00:15:46.880" video="mainVideo" id=subtitle]]
+[[!template text="I'm sure someone will be kind enough to" start="00:15:49.040" video="mainVideo" id=subtitle]]
+[[!template text="mention this to you in the #emacsconf channel on IRC" start="00:15:50.959" video="mainVideo" id=subtitle]]
+[[!template text="but it's probably the best way" start="00:15:54.880" video="mainVideo" id=subtitle]]
+[[!template text="to get started with Elisp." start="00:15:56.880" video="mainVideo" id=subtitle]]
+[[!template text="You know, we tend to get obsessed," start="00:15:59.040" video="mainVideo" id=subtitle]]
+[[!template text="with software and with programming," start="00:16:00.991" video="mainVideo" id=subtitle]]
+[[!template text="about what's the best way to get started." start="00:16:03.013" video="mainVideo" id=subtitle]]
+[[!template text="You see so many people who are heavily interested" start="00:16:04.880" video="mainVideo" id=subtitle]]
+[[!template text="in getting started with programming" start="00:16:08.399" video="mainVideo" id=subtitle]]
+[[!template text="but they never managed to get started" start="00:16:10.409" video="mainVideo" id=subtitle]]
+[[!template text="because there's so much choice." start="00:16:12.320" video="mainVideo" id=subtitle]]
+[[!template text="My advice would be to just get started." start="00:16:14.320" video="mainVideo" id=subtitle]]
+[[!template text="Don't get so worried about the first step." start="00:16:16.320" video="mainVideo" id=subtitle]]
+[[!template text="Well, if I may still recommend the first step," start="00:16:18.800" video="mainVideo" id=subtitle]]
+[[!template text="even after saying this," start="00:16:22.493" video="mainVideo" id=subtitle]]
+[[!template text="do try to start with the built-in guides." start="00:16:23.920" video="mainVideo" id=subtitle]]
+[[!template text="I believe they're pretty, pretty good." start="00:16:27.073" video="mainVideo" id=subtitle]]
+[[!template new="1" text="There was another question." start="00:16:29.600" video="mainVideo" id=subtitle]]
+[[!template text="It's the last question that I can read" start="00:16:31.691" video="mainVideo" id=subtitle]]
+[[!template text="and after that, you will have to" start="00:16:33.055" video="mainVideo" id=subtitle]]
+[[!template text="read the questions for me because everything is frozen on my end." start="00:16:34.564" video="mainVideo" id=subtitle]]
+[[!template text="I hope I'm not frozen in a very bad position," start="00:16:37.920" video="mainVideo" id=subtitle]]
+[[!template text="so please excuse me if my mouth is open or anything." start="00:16:43.935" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: no, we just completely lost the video feed, so no worries.)" start="00:16:47.406" video="mainVideo" id=subtitle]]
+[[!template text="Oh, splendid, so I won't have to make a fool out of myself." start="00:16:51.120" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So the last question I wanted to answer was" start="00:16:54.800" video="mainVideo" id=subtitle]]
+[[!template text="&quot;Have you read Dirk Gently's Holistic Detective Agency?&quot;" start="00:16:56.800" video="mainVideo" id=subtitle]]
+[[!template text="No, I haven't. I hope it's not a jab at the way I'm dressing for the conference," start="00:16:59.199" video="mainVideo" id=subtitle]]
+[[!template text="but yeah, I haven't read it. Was there any other question?" start="00:17:05.741" video="mainVideo" id=subtitle]]
+[[!template new="1" text="(Amin: I see one other question." start="00:17:10.559" video="mainVideo" id=subtitle]]
+[[!template text="&quot;Any recommendation for good packaging guides or places to start?" start="00:17:15.919" video="mainVideo" id=subtitle]]
+[[!template text="I get a bit overwhelmed by some things." start="00:17:19.679" video="mainVideo" id=subtitle]]
+[[!template text="For example, the choice of different test frameworks.&quot;)" start="00:17:23.199" video="mainVideo" id=subtitle]]
+[[!template text="Right. Okay. So that's a very good question." start="00:17:26.799" video="mainVideo" id=subtitle]]
+[[!template text="I believe alphapapa is in the chat right now." start="00:17:29.263" video="mainVideo" id=subtitle]]
+[[!template text="As myself a new Lisp developer for org-roam," start="00:17:33.840" video="mainVideo" id=subtitle]]
+[[!template text="I'd really recommend you to look into" start="00:17:36.314" video="mainVideo" id=subtitle]]
+[[!template text="his package developers' guide," start="00:17:38.320" video="mainVideo" id=subtitle]]
+[[!template text="because you have a list of all the softwares" start="00:17:40.032" video="mainVideo" id=subtitle]]
+[[!template text="that are extremely useful to be using when" start="00:17:42.507" video="mainVideo" id=subtitle]]
+[[!template text="you're getting started." start="00:17:44.559" video="mainVideo" id=subtitle]]
+[[!template text="If you're looking into a first step" start="00:17:45.760" video="mainVideo" id=subtitle]]
+[[!template text="for how to develop elisp packages," start="00:17:48.347" video="mainVideo" id=subtitle]]
+[[!template text="I'd really advise you to" start="00:17:50.947" video="mainVideo" id=subtitle]]
+[[!template text="look into edebug." start="00:17:52.640" video="mainVideo" id=subtitle]]
+[[!template text="It's one word, edebug," start="00:17:53.520" video="mainVideo" id=subtitle]]
+[[!template text="and you have a section in the manual for this," start="00:17:56.559" video="mainVideo" id=subtitle]]
+[[!template text="because for me, it was the key step to" start="00:17:58.400" video="mainVideo" id=subtitle]]
+[[!template text="getting to develop good packages." start="00:18:00.799" video="mainVideo" id=subtitle]]
+[[!template text="It was understanding basically what the code did" start="00:18:03.791" video="mainVideo" id=subtitle]]
+[[!template text="and having us something like" start="00:18:06.160" video="mainVideo" id=subtitle]]
+[[!template text="a REPL (read-evaluate-print-loop)" start="00:18:08.866" video="mainVideo" id=subtitle]]
+[[!template text="that allows you to step through the code" start="00:18:09.919" video="mainVideo" id=subtitle]]
+[[!template text="and see exactly which states" start="00:18:11.760" video="mainVideo" id=subtitle]]
+[[!template text="the variables are at which at this point" start="00:18:13.210" video="mainVideo" id=subtitle]]
+[[!template text="in the program. That's really my biggest advice to you." start="00:18:15.643" video="mainVideo" id=subtitle]]
+[[!template text="Any other question? Thanks. Yeah, I see one or two more." start="00:18:21.200" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So there's one. They ask, &quot;How did the freedom of Emacs help you on your way?&quot;" start="00:18:26.160" video="mainVideo" id=subtitle]]
+[[!template text="So the freedom of Emacs..." start="00:18:33.120" video="mainVideo" id=subtitle]]
+[[!template text="I mentioned that Emacs, for me, was my gateway" start="00:18:35.507" video="mainVideo" id=subtitle]]
+[[!template text="into free software" start="00:18:38.080" video="mainVideo" id=subtitle]]
+[[!template text="and the freedom of Emacs" start="00:18:39.216" video="mainVideo" id=subtitle]]
+[[!template text="was that you could maybe..." start="00:18:40.652" video="mainVideo" id=subtitle]]
+[[!template text="First and foremost," start="00:18:42.551" video="mainVideo" id=subtitle]]
+[[!template text="compared to other software," start="00:18:43.840" video="mainVideo" id=subtitle]]
+[[!template text="was that you had behind Emacs, Elisp," start="00:18:46.385" video="mainVideo" id=subtitle]]
+[[!template text="which allows you to read the code," start="00:18:49.003" video="mainVideo" id=subtitle]]
+[[!template text="read whatever is going on in the background." start="00:18:51.039" video="mainVideo" id=subtitle]]
+[[!template text="Surely, if you go deep enough," start="00:18:53.039" video="mainVideo" id=subtitle]]
+[[!template text="you'll end up in C functions that you might not be able to read" start="00:18:54.380" video="mainVideo" id=subtitle]]
+[[!template text="if you do not have the experience." start="00:18:58.172" video="mainVideo" id=subtitle]]
+[[!template text="But for Org Mode, which was my gateway into Emacs," start="00:18:59.679" video="mainVideo" id=subtitle]]
+[[!template text="most of it is written in Elisp," start="00:19:03.520" video="mainVideo" id=subtitle]]
+[[!template text="and all the commands have a very verbose name," start="00:19:05.883" video="mainVideo" id=subtitle]]
+[[!template text="like something simple as" start="00:19:08.546" video="mainVideo" id=subtitle]]
+[[!template text="org go to next subtree or" start="00:19:10.080" video="mainVideo" id=subtitle]]
+[[!template text="org go to a parent subtree. You know, things like this." start="00:19:13.440" video="mainVideo" id=subtitle]]
+[[!template text="It's so elegant. It's verbose." start="00:19:16.880" video="mainVideo" id=subtitle]]
+[[!template text="That's a sense of freedom" start="00:19:20.240" video="mainVideo" id=subtitle]]
+[[!template text="insofar as you can go into the code and see," start="00:19:22.799" video="mainVideo" id=subtitle]]
+[[!template text="oh, okay, that's how it's implemented." start="00:19:24.491" video="mainVideo" id=subtitle]]
+[[!template text="I believe in a way that's the freedom" start="00:19:26.160" video="mainVideo" id=subtitle]]
+[[!template text="and the liberty that is given to you" start="00:19:28.640" video="mainVideo" id=subtitle]]
+[[!template text="to look into the code" start="00:19:30.264" video="mainVideo" id=subtitle]]
+[[!template text="is something that invites you" start="00:19:31.600" video="mainVideo" id=subtitle]]
+[[!template text="to do the same with your life." start="00:19:32.670" video="mainVideo" id=subtitle]]
+[[!template text="As someone who does a little bit of philosophy on the side," start="00:19:34.460" video="mainVideo" id=subtitle]]
+[[!template text="I believe it's a very healthy message" start="00:19:36.776" video="mainVideo" id=subtitle]]
+[[!template text="to be gathering from a piece of software." start="00:19:38.799" video="mainVideo" id=subtitle]]
+[[!template new="1" text="(Amin: Awesome, thank you." start="00:19:42.320" video="mainVideo" id=subtitle]]
+[[!template text="Let's see... So we have..." start="00:19:45.440" video="mainVideo" id=subtitle]]
+[[!template text="I think I saw another question pop up.)" start="00:19:50.960" video="mainVideo" id=subtitle]]
+[[!template text="I'm not sure how we're doing as far" start="00:19:57.200" video="mainVideo" id=subtitle]]
+[[!template text="as time is concerned... I believe we" start="00:19:58.559" video="mainVideo" id=subtitle]]
+[[!template text="have like one or two minutes more." start="00:19:59.760" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: Yeah, actually, we're quite a bit" start="00:20:02.080" video="mainVideo" id=subtitle]]
+[[!template text="ahead of the schedule, so if we take a" start="00:20:04.240" video="mainVideo" id=subtitle]]
+[[!template text="little bit longer, we're fine." start="00:20:05.679" video="mainVideo" id=subtitle]]
+[[!template text="If you do have more questions, please do.)" start="00:20:07.840" video="mainVideo" id=subtitle]]
+[[!template text="I'm just sorry that my video is not working anymore." start="00:20:10.225" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: No problem. Someone was actually saying..." start="00:20:12.880" video="mainVideo" id=subtitle]]
+[[!template text="What's the most recent... Actually, yeah well before that." start="00:20:17.120" video="mainVideo" id=subtitle]]
+[[!template new="1" text="&quot;Please show off your three-piece suit before you end your talk," start="00:20:24.159" video="mainVideo" id=subtitle]]
+[[!template text="which requires fixing your frozen camera." start="00:20:27.440" video="mainVideo" id=subtitle]]
+[[!template text="If this is not possible," start="00:20:30.080" video="mainVideo" id=subtitle]]
+[[!template text="please post suit selfies in an easily accessible location.&quot;" start="00:20:31.306" video="mainVideo" id=subtitle]]
+[[!template text="Okay, I'll make sure to do this." start="00:20:36.240" video="mainVideo" id=subtitle]]
+[[!template text="But yes, I wanted to hype things up for the conference," start="00:20:38.143" video="mainVideo" id=subtitle]]
+[[!template text="so yes, I did get the three-piece suit out." start="00:20:41.200" video="mainVideo" id=subtitle]]
+[[!template text="I'm very glad you like it." start="00:20:43.039" video="mainVideo" id=subtitle]]
+[[!template text="By the way, when you get" start="00:20:44.563" video="mainVideo" id=subtitle]]
+[[!template text="a chance to see me live again," start="00:20:45.919" video="mainVideo" id=subtitle]]
+[[!template text="do appreciate that my tie has both the" start="00:20:47.760" video="mainVideo" id=subtitle]]
+[[!template text="colors of Emacs purple" start="00:20:50.080" video="mainVideo" id=subtitle]]
+[[!template text="and also Org Mode green." start="00:20:51.280" video="mainVideo" id=subtitle]]
+[[!template text="It took me a while to find this one," start="00:20:53.679" video="mainVideo" id=subtitle]]
+[[!template text="so I hope you will appreciate this." start="00:20:55.556" video="mainVideo" id=subtitle]]
+[[!template new="1" text="(Amin: Awesome. Let's see." start="00:21:00.840" video="mainVideo" id=subtitle]]
+[[!template text="We have one other question. &quot;What's the" start="00:21:03.094" video="mainVideo" id=subtitle]]
+[[!template text="most recent Emacs package or tool that" start="00:21:06.880" video="mainVideo" id=subtitle]]
+[[!template text="you've discovered that you've added to your repertoire?&quot;)" start="00:21:08.960" video="mainVideo" id=subtitle]]
+[[!template text="Very interesting question." start="00:21:14.480" video="mainVideo" id=subtitle]]
+[[!template text="The thing is, when you've spent as long as I have on Emacs--" start="00:21:17.600" video="mainVideo" id=subtitle]]
+[[!template text="and I know that I've only spent" start="00:21:22.614" video="mainVideo" id=subtitle]]
+[[!template text="eight years and some of you" start="00:21:23.919" video="mainVideo" id=subtitle]]
+[[!template text="might have spent maybe 10, 20," start="00:21:25.120" video="mainVideo" id=subtitle]]
+[[!template text="maybe even more years on Emacs--" start="00:21:27.901" video="mainVideo" id=subtitle]]
+[[!template text="but for me, I believe the coolest neat trick that I found in Emacs" start="00:21:30.000" video="mainVideo" id=subtitle]]
+[[!template text="was a mode which is called beacon-mode." start="00:21:34.926" video="mainVideo" id=subtitle]]
+[[!template text="It's something that allows you to show" start="00:21:40.080" video="mainVideo" id=subtitle]]
+[[!template text="when you're jumping between buffers" start="00:21:43.679" video="mainVideo" id=subtitle]]
+[[!template text="or when you're dropping between windows," start="00:21:45.006" video="mainVideo" id=subtitle]]
+[[!template text="it shows exactly where your point is in that buffer" start="00:21:46.960" video="mainVideo" id=subtitle]]
+[[!template text="by making a slight ray of light which looks like a beacon, hence the name." start="00:21:50.681" video="mainVideo" id=subtitle]]
+[[!template text="It really helps you navigate buffers" start="00:21:55.440" video="mainVideo" id=subtitle]]
+[[!template text="because it always shows" start="00:21:57.760" video="mainVideo" id=subtitle]]
+[[!template text="in a very visual way where your point is." start="00:21:58.986" video="mainVideo" id=subtitle]]
+[[!template text="I'll get a chance to show this to you later today" start="00:22:01.760" video="mainVideo" id=subtitle]]
+[[!template text="when I'll be presenting my other talks." start="00:22:04.640" video="mainVideo" id=subtitle]]
+[[!template new="1" text="(Amin: Awesome. We have one question from Jonas, the maintainer of Magit." start="00:22:10.159" video="mainVideo" id=subtitle]]
+[[!template text="He asks, &quot;When you touched your webcam," start="00:22:20.880" video="mainVideo" id=subtitle]]
+[[!template text="that blew a fuse at my place." start="00:22:25.128" video="mainVideo" id=subtitle]]
+[[!template text="How did you do that?&quot;)" start="00:22:26.880" video="mainVideo" id=subtitle]]
+[[!template text="Well, I'm very sorry, Jonas," start="00:22:29.760" video="mainVideo" id=subtitle]]
+[[!template text="that it happened to you, but I'll make sure not to touch my webcam again." start="00:22:31.242" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: Do we have any other questions?)" start="00:22:36.960" video="mainVideo" id=subtitle]]
+[[!template text="I have to trust you on this one." start="00:22:41.600" video="mainVideo" id=subtitle]]
+[[!template text="I'm really sorry. Everything is frozen on my end." start="00:22:43.919" video="mainVideo" id=subtitle]]
+[[!template new="1" text="(Amin: No problem.) Yeah I'm more talking to the audience, I guess." start="00:22:46.960" video="mainVideo" id=subtitle]]
+[[!template text="I hope my lack of slides didn't bother you." start="00:22:51.520" video="mainVideo" id=subtitle]]
+[[!template text="I really wanted to have this verbose time with people," start="00:22:56.018" video="mainVideo" id=subtitle]]
+[[!template text="to be able to..." start="00:23:00.481" video="mainVideo" id=subtitle]]
+[[!template text="It's a message that I've been trying" start="00:23:01.600" video="mainVideo" id=subtitle]]
+[[!template text="to share with as many people as possible." start="00:23:04.880" video="mainVideo" id=subtitle]]
+[[!template text="In France, we do have an Emacs workshop" start="00:23:08.640" video="mainVideo" id=subtitle]]
+[[!template text="that we have on a monthly basis." start="00:23:11.760" video="mainVideo" id=subtitle]]
+[[!template text="I've been learning a lot" start="00:23:14.159" video="mainVideo" id=subtitle]]
+[[!template text="with those people and I felt like" start="00:23:16.000" video="mainVideo" id=subtitle]]
+[[!template text="doing the same with Emacs conference" start="00:23:18.960" video="mainVideo" id=subtitle]]
+[[!template text="would be good. That's why I'm really happy," start="00:23:20.400" video="mainVideo" id=subtitle]]
+[[!template text="and I'm really lucky to have had" start="00:23:22.713" video="mainVideo" id=subtitle]]
+[[!template text="the chance to do this today." start="00:23:24.000" video="mainVideo" id=subtitle]]
+[[!template text="I hope some of you, I've convinced you" start="00:23:26.418" video="mainVideo" id=subtitle]]
+[[!template text="of climbing up a step on a ladder" start="00:23:29.200" video="mainVideo" id=subtitle]]
+[[!template text="or making a step in a journey." start="00:23:31.472" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: Absolutely. Thank you so much, Leo." start="00:23:34.480" video="mainVideo" id=subtitle]]
+[[!template text="I happen to completely agree" start="00:23:38.080" video="mainVideo" id=subtitle]]
+[[!template text="with your not necessarily using a slide" start="00:23:41.279" video="mainVideo" id=subtitle]]
+[[!template text="when it's not really needed" start="00:23:43.600" video="mainVideo" id=subtitle]]
+[[!template text="and to help give some face-to-face time" start="00:23:45.600" video="mainVideo" id=subtitle]]
+[[!template text="with the audience." start="00:23:49.200" video="mainVideo" id=subtitle]]
+[[!template text="Unfortunately, your webcam cut out," start="00:23:50.685" video="mainVideo" id=subtitle]]
+[[!template text="but I mean before that.)" start="00:23:52.923" video="mainVideo" id=subtitle]]
+[[!template text="Yes, I'll make sure to fix the problems later on," start="00:23:55.200" video="mainVideo" id=subtitle]]
+[[!template text="so don't worry about it." start="00:23:57.914" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: Awesome. Alrighty. I guess we're" start="00:23:59.679" video="mainVideo" id=subtitle]]
+[[!template text="wrapping up for your talk and getting ready for the next talk.)" start="00:24:02.240" video="mainVideo" id=subtitle]]
+[[!template text="Sure. Well, thank you so much." start="00:24:08.000" video="mainVideo" id=subtitle]]
+[[!template text="I'll see you all later, I suppose!" start="00:24:09.538" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: Sounds good. Thank you again, Leo. Bye-bye)" start="00:24:11.760" video="mainVideo" id=subtitle]]
diff --git a/2020/info/03.md b/2020/info/03.md
index 07ae6b4f..2eaa404e 100644
--- a/2020/info/03.md
+++ b/2020/info/03.md
@@ -4,8 +4,9 @@ Bala Ramadurai
[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--bala-ramadurai.webm" subtitles="/2020/subtitles/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--bala-ramadurai.vtt"]]
[Download compressed .webm video (8.1M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--bala-ramadurai--vp9-q56-video-original-audio.webm)
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--questions--bala-ramadurai.webm" download="Download Q&A .webm video, 720p"]]
-[Download compressed Q&A .webm video (10.3M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--questions--bala-ramadurai--vp9-q56-video-original-audio.webm)
+[[!template id=vid vidid="qnaVideo" src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--questions--bala-ramadurai.webm" download="Download Q&A .webm video, 720p" subtitles="/2020/subtitles/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--questions--bala-ramadurai.vtt"]]
+[Download compressed Q&A .webm video (10.3M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--questions--bala-ramadurai--vp9-q56-video-original-audio.webm)
+[View transcript](#transcript-questions)
You want to write a novel, but you don't know how to create an
outline. You have a seed idea for a novel, and you intend to expand
@@ -99,3 +100,151 @@ We will use:
- Uses pandoc to export from org
- Author of Karmic Design Thinking (<https://dt.balaramadurai.net/>)
- Uses Spacemacs
+
+<a name="transcript-questions"></a>
+# Transcript (questions)
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:00:00.000" text="I have the pad open. So, I can start."]]
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:00:05.333" text="Do you have occasions to use Emacs for multilingual text composition?"]]
+[[!template id=subtitle video="qnaVideo" start="00:00:11.333" text="How do you deal with spell-checking?"]]
+[[!template id=subtitle video="qnaVideo" start="00:00:15.333" text="I have written only in English. For English, Emacs works great."]]
+[[!template id=subtitle video="qnaVideo" start="00:00:15.333" text="Spell-check works great."]]
+[[!template id=subtitle video="qnaVideo" start="00:00:23.767" text="I have not used it for any other languages."]]
+[[!template id=subtitle video="qnaVideo" start="00:00:29.300" text="I have indeed tried local South Indian language, but only the script"]]
+[[!template id=subtitle video="qnaVideo" start="00:00:40.333" text="I could get, but not the spell-checker, really. I've not really figured it out."]]
+[[!template id=subtitle video="qnaVideo" start="00:00:47.567" text="So that was my trial to answer the first question."]]
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:00:51.067" text="The second question is: &quot;is it possible to align the subcolumns"]]
+[[!template id=subtitle video="qnaVideo" start="00:00:57.031" text="and headings and subheadings?&quot;"]]
+[[!template id=subtitle video="qnaVideo" start="00:00:59.967" text="Oh boy. That's a good one. I actually felt the lack of having the..."]]
+[[!template id=subtitle video="qnaVideo" start="00:01:04.967" text="The theme I had was great for... It looked like a novel"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:11.100" text="when I'm typing on the novel itself,"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:14.533" text="but when I expand into the subtrees,"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:19.800" text="it sort of goes haywire. It's a bit hacky."]]
+[[!template id=subtitle video="qnaVideo" start="00:01:22.233" text="You can probably switch to a monospace font,"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:24.900" text="and that works better than"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:27.133" text="the font that I have demoed it."]]
+[[!template id=subtitle video="qnaVideo" start="00:01:30.967" text="You can perhaps try monospace font"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:36.033" text="and it should work, I think,"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:37.700" text="as far as I know."]]
+[[!template id=subtitle video="qnaVideo" start="00:01:39.600" text="So, that's the second question."]]
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:01:42.667" text="The third question is maybe there should be an Emacs for Writing"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:47.600" text="mailing list, an online writer's workshop?"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:50.433" text="This is a great one."]]
+[[!template id=subtitle video="qnaVideo" start="00:01:51.300" text="I have conducted an online writer's workshop"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:54.433" text="here in India. Of course, it wasn't"]]
+[[!template id=subtitle video="qnaVideo" start="00:01:58.000" text="an Emacs-focused workshop. We used Notion as the tool. It worked pretty good."]]
+[[!template id=subtitle video="qnaVideo" start="00:02:05.467" text="for people who are not aware of Emacs and how to use Emacs, the keystrokes,"]]
+[[!template id=subtitle video="qnaVideo" start="00:02:12.633" text="the fact that I wasn't using the mouse unnerved them."]]
+[[!template id=subtitle video="qnaVideo" start="00:02:16.200" text="It was a scary experience for most people."]]
+[[!template id=subtitle video="qnaVideo" start="00:02:19.267" text="I had to switch to Notion."]]
+[[!template id=subtitle video="qnaVideo" start="00:02:22.333" text="People used that as a template"]]
+[[!template id=subtitle video="qnaVideo" start="00:02:23.567" text="and then they could type it out."]]
+[[!template id=subtitle video="qnaVideo" start="00:02:28.233" text="It wasn't my perfect experience. I liked the Emacs Org Mode experience much better."]]
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:02:33.633" text="The next question is, &quot;How do you share drafts of your novel?"]]
+[[!template id=subtitle video="qnaVideo" start="00:02:41.300" text="If you use pandoc to export to Word, etc., how do you incorporate feedback"]]
+[[!template id=subtitle video="qnaVideo" start="00:02:44.867" text="on the document back into Org?&quot;"]]
+[[!template id=subtitle video="qnaVideo" start="00:02:46.867" text="Thank you for the kind words."]]
+[[!template id=subtitle video="qnaVideo" start="00:02:50.767" text="Yes, it is a problem."]]
+[[!template id=subtitle video="qnaVideo" start="00:02:53.100" text="This is my ??, and I have a dedication to Spacemacs also and the Emacs Org Mode"]]
+[[!template id=subtitle video="qnaVideo" start="00:03:02.033" text="community in there. I don't know if you can see it."]]
+[[!template id=subtitle video="qnaVideo" start="00:03:04.433" text="Probably not."]]
+[[!template id=subtitle video="qnaVideo" start="00:03:05.467" text="I did export it to Word."]]
+[[!template id=subtitle video="qnaVideo" start="00:03:10.600" text="My editor did complain that there were a whole bunch of things,"]]
+[[!template id=subtitle video="qnaVideo" start="00:03:13.333" text="that it wasn't convenient for her."]]
+[[!template id=subtitle video="qnaVideo" start="00:03:16.633" text="So I tried having the raw Org Mode itself in a DOC embedded,"]]
+[[!template id=subtitle video="qnaVideo" start="00:03:20.933" text="and I will do a copy and paste."]]
+[[!template id=subtitle video="qnaVideo" start="00:03:26.067" text="Didn't work so well either."]]
+[[!template id=subtitle video="qnaVideo" start="00:03:27.867" text="So I'm still on the edge on how do I do this."]]
+[[!template id=subtitle video="qnaVideo" start="00:03:31.267" text="Should I train my editor to use Org Mode"]]
+[[!template id=subtitle video="qnaVideo" start="00:03:34.933" text="in Gitlab or one of those"]]
+[[!template id=subtitle video="qnaVideo" start="00:03:37.167" text="other tools, which is not a great experience?"]]
+[[!template id=subtitle video="qnaVideo" start="00:03:39.833" text="But... I don't know. It could be tricky for working with people"]]
+[[!template id=subtitle video="qnaVideo" start="00:03:47.633" text="who are not well-versed with Emacs."]]
+[[!template id=subtitle video="qnaVideo" start="00:03:50.867" text="Pandoc is very, very useful in converting it to PDF"]]
+[[!template id=subtitle video="qnaVideo" start="00:04:02.000" text="and integrating it with LaTeX, the styling, formatting into e-reader,"]]
+[[!template id=subtitle video="qnaVideo" start="00:04:02.000" text="EPUB format. For all that, Pandoc works great. You can customize it"]]
+[[!template id=subtitle video="qnaVideo" start="00:04:13.133" text="and of course there's a lot of support in the community"]]
+[[!template id=subtitle video="qnaVideo" start="00:04:16.233" text="for any style changes that you want to make, any images that you want to add."]]
+[[!template id=subtitle video="qnaVideo" start="00:04:20.133" text="It works great."]]
+[[!template id=subtitle video="qnaVideo" start="00:04:22.967" text="That was my trial to answer the pandoc question."]]
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:04:28.367" text="&quot;Can you show exported PDF of any of your novels?&quot;"]]
+[[!template id=subtitle video="qnaVideo" start="00:04:35.100" text="Unfortunately, it's still not published, so I'm..."]]
+[[!template id=subtitle video="qnaVideo" start="00:04:38.600" text="I will put it and share it on the community,"]]
+[[!template id=subtitle video="qnaVideo" start="00:04:42.067" text="or part of this in the schedule itself. Thank you for the question."]]
+[[!template id=subtitle video="qnaVideo" start="00:04:48.067" text="Unfortunately, it's not yet published, so I'm unable to publish the exported PDF."]]
+[[!template id=subtitle video="qnaVideo" start="00:04:55.000" text="But I'll make a test of an open-source novel that I'm working on"]]
+[[!template id=subtitle video="qnaVideo" start="00:05:01.300" text="I will definitely publish that so that you can see"]]
+[[!template id=subtitle video="qnaVideo" start="00:05:05.767" text="how it works also."]]
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:05:10.433" text="Can you text-wrap in the columns?"]]
+[[!template id=subtitle video="qnaVideo" start="00:05:13.167" text="I have not found a way to do text-wrap in the columns."]]
+[[!template id=subtitle video="qnaVideo" start="00:05:19.667" text="That only shows my limitation in config setup,"]]
+[[!template id=subtitle video="qnaVideo" start="00:05:23.633" text="but I'm sure people can figure this out"]]
+[[!template id=subtitle video="qnaVideo" start="00:05:27.033" text="That's a good one. I would have loved to have it."]]
+[[!template id=subtitle video="qnaVideo" start="00:05:29.900" text="Every time I want to write more on the headline,"]]
+[[!template id=subtitle video="qnaVideo" start="00:05:34.000" text="I would get out of the column-view mode and I would do the typing and expand it,"]]
+[[!template id=subtitle video="qnaVideo" start="00:05:42.467" text="and then come back into the column view when I want to set the other meta parameters."]]
+[[!template id=subtitle video="qnaVideo" start="00:05:46.700" text="So that's how I manage without the text-wrapping feature built into column."]]
+[[!template id=subtitle video="qnaVideo" start="00:05:54.133" text="But I think it's a great idea to have text wrap."]]
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:05:58.000" text="Did I leave out any questions? I don't think so."]]
+[[!template id=subtitle video="qnaVideo" start="00:06:05.333" text="Amin: I think there's at least one question on IRC,"]]
+[[!template id=subtitle video="qnaVideo" start="00:06:10.600" text="which I shall read to you."]]
+[[!template id=subtitle video="qnaVideo" start="00:06:14.500" text="Bala: Please, can you do that? Thank you."]]
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:06:17.300" text="Amin: So they asked, &quot;How do you collaborate with others while writing your novel?"]]
+[[!template id=subtitle video="qnaVideo" start="00:06:21.278" text="For example, sharing your file and getting feedback.&quot;"]]
+[[!template id=subtitle video="qnaVideo" start="00:06:28.100" text="Okay. Good question. So far, I have used... Let's see..."]]
+[[!template id=subtitle video="qnaVideo" start="00:06:37.100" text="What did I use... This is a crazy hack."]]
+[[!template id=subtitle video="qnaVideo" start="00:06:40.833" text="But it's a long-winded way of..."]]
+[[!template id=subtitle video="qnaVideo" start="00:06:44.667" text="Right now we're working on an e-book for sustainability"]]
+[[!template id=subtitle video="qnaVideo" start="00:06:50.300" text="and kids contribute their stories into this long Org Mode file"]]
+[[!template id=subtitle video="qnaVideo" start="00:06:57.767" text="and I want my editors to see it"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:00.233" text="so what we have done, actually, is with the tags and all that, I have actually"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:05.333" text="pasted it into Google Docs"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:08.167" text="so that my collaborators and"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:11.833" text="editors can see it."]]
+[[!template id=subtitle video="qnaVideo" start="00:07:14.000" text="That's my current solution. It's not elegant."]]
+[[!template id=subtitle video="qnaVideo" start="00:07:16.667" text="I'm trying to see if I can use Python code to make the copy and paste work,"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:23.900" text="but it's not so elegant for now."]]
+[[!template id=subtitle video="qnaVideo" start="00:07:26.900" text="I don't know how to work this out,"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:28.933" text="but this is my hack. That is,"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:31.100" text="the entire Org Mode text, I would paste it into"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:34.300" text="Google Docs"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:35.433" text="so that my collaborators and editors"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:37.700" text="can see it. Whenever they edit it, I ask them not to make any changes"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:41.667" text="to the Org Mode tags."]]
+[[!template id=subtitle video="qnaVideo" start="00:07:43.500" text="So just copy the entire text"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:45.633" text="and put it back into my Org Mode file"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:51.167" text="and export it using Pandoc into a PDF"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:53.300" text="and since it's synced to Google Drive"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:56.000" text="it shows up in the Google Drive"]]
+[[!template id=subtitle video="qnaVideo" start="00:07:58.600" text="and then the collaborators can see the PDF/EPUB"]]
+[[!template id=subtitle video="qnaVideo" start="00:08:03.633" text="if they want to open it up"]]
+[[!template id=subtitle video="qnaVideo" start="00:08:05.333" text="in their own space."]]
+[[!template id=subtitle video="qnaVideo" start="00:08:06.200" text="It's very very hacky and I think primitive, Stone Age sort of solution."]]
+[[!template id=subtitle video="qnaVideo" start="00:08:11.467" text="I did see a Python solution."]]
+[[!template id=subtitle video="qnaVideo" start="00:08:15.567" text="to at least help me with the copying and paste."]]
+[[!template id=subtitle video="qnaVideo" start="00:08:18.967" text="I'm still working on how do I convert this."]]
+[[!template id=subtitle video="qnaVideo" start="00:08:21.574" text="Interconvertability is driving me nuts."]]
+[[!template id=subtitle video="qnaVideo" start="00:08:24.300" text="I think most of the questions"]]
+[[!template id=subtitle video="qnaVideo" start="00:08:26.533" text="are around interconvertability."]]
+[[!template id=subtitle video="qnaVideo" start="00:08:29.333" text="This is sort of what I have right now."]]
+
+[[!template new="1" id=subtitle video="qnaVideo" start="00:08:34.767" text="Any other questions, Amin,"]]
+[[!template id=subtitle video="qnaVideo" start="00:08:37.567" text="on IRC or not?"]]
+[[!template id=subtitle video="qnaVideo" start="00:08:40.233" text="Amin: Let's see. I think that's about it."]]
+[[!template id=subtitle video="qnaVideo" start="00:08:46.433" text="Bala: Okay. Cool. That was fun."]]
+[[!template id=subtitle video="qnaVideo" start="00:08:50.033" text="Thank you so much to"]]
+[[!template id=subtitle video="qnaVideo" start="00:08:51.833" text="the organizers of Emacs conference,"]]
+[[!template id=subtitle video="qnaVideo" start="00:08:54.577" text="and the community at large,"]]
+[[!template id=subtitle video="qnaVideo" start="00:08:57.100" text="the Org Mode community and the Emacs community for helping me out."]]
+[[!template id=subtitle video="qnaVideo" start="00:09:01.303" text="Thank you so much."]]
+[[!template id=subtitle video="qnaVideo" start="00:09:02.900" text="Thanks for the opportunity as well."]]
+[[!template id=subtitle video="qnaVideo" start="00:09:05.233" text="Amin: And thank you, Bala, for your awesome talk."]]
+[[!template id=subtitle video="qnaVideo" start="00:09:07.300" text="Bala: Thanks. Thanks a lot, Amin."]]
diff --git a/2020/info/04.md b/2020/info/04.md
index 303cb2a0..e80e7518 100644
--- a/2020/info/04.md
+++ b/2020/info/04.md
@@ -1,7 +1,7 @@
# Music in Plain Text
Jonathan Gregory
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.webm" subtitles="/2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt"]]
+[[!template id=vid vidid=mainVideo src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.webm" subtitles="/2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt"]]
[Download compressed .webm video (13.8M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--04-music-in-plain-text--jonathan-gregory--vp9-q56-video-original-audio.webm)
[View transcript](#transcript)
@@ -68,113 +68,171 @@ No.
<a name="transcript"></a>
# Transcript
-Hello, everyone, and welcome to the EmacsConf. I am Jonathan. In this
-talk, I'm going to demonstrate ways of producing sheet music in Emacs
-using Lilypond, and maybe also convince you to use Emacs for writing
-your scores. I'll start with an overview of the syntax for those who
-are new to using text-based notation as a shallow dive into the deep
-pond of lilies and Lilypond, and move on to showcase some of its
-functionalities using Org Mode and lilypond-mode. One disclaimer,
-however: I am not a Lilypond developer.
-
-(00:40) So what is Lilypond? Lilypond is a file format and music engraving
-system for producing high-quality sheet music. It translates textual
-representations of music to graphical objects. It's similar to LaTeX
-in that its input format describes the visual layouts of the score,
-using commands to define musical expressions. Commands begin with a
-backslash. For example, the formatter command, as shown on the left,
-yields its graphical equivalents on the right, the fermata symbol over
-the low B and so on and so forth. It's also fully extensible, like
-Emacs, allowing users to extend and override Lilypond's
-functionalities using the Scheme scripting language. It can be used
-for early and contemporary music tablature, vocal music lead sheets,
-and so on. Above all, it works with Emacs. In fact, Lilypond ships
-with Emacs Lisp libraries, including a major mode for editing Lilypond
-files.
-
-(01:47) So the input files are similar to source files. They contain
-expressions formed with curly braces, comments that start with the
-percent sign, and the code is indented. Notes are entered using
-lowercase letters, and rests with the letter r. In this case, the
-lowercase r or r4 is the equivalence of a crotchet or quarter note
-rest. Durations are entered using numbers and dots after the note
-name. If you do not specify one, the previous duration is used. You
-can also tie notes together using the tilde symbol (~). In fact, you
-can input chords, lyrics, embellishments, and a lot more. I encourage
-you to read the manual for more information. Now let's switch to a
-terminal window. With Lilypond installed, let's create a test file
-with the extension .ly and open it in Emacs.
-
-(02:50) At the top of the file is the version statement, which tells Lilypond
-which version to use when compiling the file. Here I'm using version
-2.20.0. I've added the clef and time signature. Let's add some notes.
-I'm going to close this now and compile the file by running lilypond
-followed by the file name. So now let's view the output. Okay.
-
-(03:27) So here's a more complex example for randomizing note sequences. The
-idea is to create new reading materials each time the code blocks are
-evaluated. As usual, we begin with a header. I've added the title and
-composer. Then we add the note sequences to use in the composition. In
-this case, sn is a note name just like a b c d and so on, and stands
-for snare drum, the percussion instruments. Now here's a function
-that's going to shuffle the notes in the table. Finally, we expand the
-notes inside the Lilypond source block. So whatever the function
-returns is expanded inside the drums block. Now let's press C-c C-c to
-view the results. Okay. And if I run this again, it should create a
-new composition. Great. You can also audition a piece using the midi
-command, which creates a midi file of the score.
-
-(04:34) Note also that the ob library-- sorry, the ob-lilypond library comes
-with two modes. The one I'm using now is called arrange mode and is
-useful for assembling complete scores. The basic mode on the other
-hand allows you to mix text and music by embedding Lilypond snippets
-and export them using typical Org Mode commands.
-
-(05:00) Now to demonstrate the basic mode in action. I'm going to export this
-document to a PDF file. In this case, the :file header argument is
-required, so you have to provide one and include the file name. Again,
-you can run the code and view the results. Here it is. So now let's
-export this to a PDF file. And here it is, what it generates.
-
-(05:39) Now I'm going to show you the workflow I used to produce music books
-in Emacs, combining Lilypond and LaTeX for a perfect marriage. I begin
-by sketching the first draft of the manuscript using pencil and paper.
-Then I move to Emacs to input the notes in a git repository. This is a
-typical source file. It begins with a stylesheet where I set variables
-and layout settings, although in general, there's no need for tweaking
-the layout unless you have specific requirements to do so. The easiest
-way to compile the file from Emacs is by pressing C-c C-l, so let's do
-this now, and the compilation buffer will tell you if there were any
-errors in the file. Now to automate the process of compiling several
-files and building the PDF, I use GNU Make, so all I have to do is
-open the shell and run the make command. Don't worry, I'll provide a
-link to the source code on the last slide.
-
-(06:41) As I moved forward with the project, I found at least two things
-missing. One, I had no access to a metronome, at least not from the
-editor, so I built one for casual use and made it available in the
-MELPA repository. I also missed bar numbers in the source file. This
-is useful when going back and forth between input and output files
-without getting lost. So I wrote a command for toggling bar numbers,
-which I hope you can see on the left. Also, some expressions are
-difficult or slow to write on the keyboard-- accents and tuplets, for
-example--so I use template expansion extensively for this purpose,
-mainly yasnippet.
-
-(07:23) So what do I think? Well, I think Lilypond can be a
-sharp paradigm shift for people used to GUI alternatives, but the
-results are impressive. You don't have to dive too deeply to start
-using Lilypond. Likewise, the ability to extend the software, I think,
-is especially appealing for music professionals, enthusiasts,
-composers, and the academic community: for example, allowing users to
-create alternative notation systems required in non-Western music
-traditions and other non-conventional requirements. Also, Lilypond and
-Emacs both have extensive and well-written manuals and active
-communities of users. But if you're still not sure where to start and
-when to wedge your feet in the deep but warm pond of lilies, Lilypond,
-and Lilypond users, I invite you to contribute to my Lilypond
-projects, which you can do so from the links on the screen. So, thank
-you all. I look forward to your comments, and I hope you enjoy the
-rest of the conference.
-
-<!-- /transcript -->
+[[!template new="1" text="Hello, everyone, and welcome to the EmacsConf." start="00:00:02.000" video="mainVideo" id=subtitle]]
+[[!template text="I am Jonathan. In this talk," start="00:00:04.799" video="mainVideo" id=subtitle]]
+[[!template text="I'm going to demonstrate ways of producing sheet music in Emacs" start="00:00:06.631" video="mainVideo" id=subtitle]]
+[[!template text="using Lilypond, and maybe also convince you" start="00:00:10.880" video="mainVideo" id=subtitle]]
+[[!template text="to use Emacs for writing your scores." start="00:00:14.636" video="mainVideo" id=subtitle]]
+[[!template text="I'll start with an overview of the syntax" start="00:00:18.640" video="mainVideo" id=subtitle]]
+[[!template text="for those who are new to using" start="00:00:20.698" video="mainVideo" id=subtitle]]
+[[!template text="text-based notation" start="00:00:22.240" video="mainVideo" id=subtitle]]
+[[!template text="as a shallow dive into the deep pond" start="00:00:24.400" video="mainVideo" id=subtitle]]
+[[!template text="of lilies and Lilypond," start="00:00:26.615" video="mainVideo" id=subtitle]]
+[[!template text="and move on to showcase" start="00:00:28.800" video="mainVideo" id=subtitle]]
+[[!template text="some of its functionalities using Org Mode and lilypond-mode." start="00:00:30.171" video="mainVideo" id=subtitle]]
+[[!template text="One disclaimer, however:" start="00:00:34.723" video="mainVideo" id=subtitle]]
+[[!template text="I am not a Lilypond developer." start="00:00:37.173" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So what is Lilypond?" start="00:00:40.480" video="mainVideo" id=subtitle]]
+[[!template text="Lilypond is a file format and music engraving system" start="00:00:42.841" video="mainVideo" id=subtitle]]
+[[!template text="for producing high-quality sheet music." start="00:00:46.800" video="mainVideo" id=subtitle]]
+[[!template text="It translates textual representations" start="00:00:50.000" video="mainVideo" id=subtitle]]
+[[!template text="of music to graphical objects." start="00:00:52.442" video="mainVideo" id=subtitle]]
+[[!template text="It's similar to LaTeX in that" start="00:00:55.120" video="mainVideo" id=subtitle]]
+[[!template text="its input format describes" start="00:00:57.520" video="mainVideo" id=subtitle]]
+[[!template text="the visual layouts of the score," start="00:00:59.329" video="mainVideo" id=subtitle]]
+[[!template text="using commands to define musical expressions." start="00:01:01.600" video="mainVideo" id=subtitle]]
+[[!template text="Commands begin with a backslash." start="00:01:05.119" video="mainVideo" id=subtitle]]
+[[!template text="For example, the formatter command, as shown on the left," start="00:01:07.760" video="mainVideo" id=subtitle]]
+[[!template text="yields its graphical equivalents on the right," start="00:01:10.791" video="mainVideo" id=subtitle]]
+[[!template text="the fermata symbol over the low B" start="00:01:13.920" video="mainVideo" id=subtitle]]
+[[!template text="and so on and so forth." start="00:01:16.345" video="mainVideo" id=subtitle]]
+[[!template text="It's also fully extensible, like Emacs," start="00:01:19.119" video="mainVideo" id=subtitle]]
+[[!template text="allowing users to extend" start="00:01:21.600" video="mainVideo" id=subtitle]]
+[[!template text="and override Lilypond's functionalities" start="00:01:23.119" video="mainVideo" id=subtitle]]
+[[!template text="using the Scheme scripting language." start="00:01:25.600" video="mainVideo" id=subtitle]]
+[[!template text="It can be used for early and contemporary music tablature," start="00:01:28.452" video="mainVideo" id=subtitle]]
+[[!template text="vocal music lead sheets, and so on." start="00:01:32.422" video="mainVideo" id=subtitle]]
+[[!template text="Above all, it works with Emacs." start="00:01:35.200" video="mainVideo" id=subtitle]]
+[[!template text="In fact, Lilypond ships with Emacs Lisp libraries," start="00:01:38.000" video="mainVideo" id=subtitle]]
+[[!template text="including a major mode for editing Lilypond files." start="00:01:41.040" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So the input files are similar to source files." start="00:01:47.360" video="mainVideo" id=subtitle]]
+[[!template text="They contain expressions formed with curly braces," start="00:01:50.560" video="mainVideo" id=subtitle]]
+[[!template text="comments that start with the percent sign," start="00:01:54.079" video="mainVideo" id=subtitle]]
+[[!template text="and the code is indented." start="00:01:56.549" video="mainVideo" id=subtitle]]
+[[!template text="Notes are entered using lowercase letters," start="00:02:00.240" video="mainVideo" id=subtitle]]
+[[!template text="and rests with the letter r." start="00:02:02.903" video="mainVideo" id=subtitle]]
+[[!template text="In this case, the lowercase r or r4" start="00:02:05.600" video="mainVideo" id=subtitle]]
+[[!template text="is the equivalence of a crotchet or" start="00:02:08.800" video="mainVideo" id=subtitle]]
+[[!template text="quarter note rest." start="00:02:11.039" video="mainVideo" id=subtitle]]
+[[!template text="Durations are entered using numbers" start="00:02:14.000" video="mainVideo" id=subtitle]]
+[[!template text="and dots after the note name." start="00:02:15.938" video="mainVideo" id=subtitle]]
+[[!template text="If you do not specify one," start="00:02:18.480" video="mainVideo" id=subtitle]]
+[[!template text="the previous duration is used." start="00:02:20.196" video="mainVideo" id=subtitle]]
+[[!template text="You can also tie notes together using the tilde symbol (~)." start="00:02:22.640" video="mainVideo" id=subtitle]]
+[[!template text="In fact, you can input chords, lyrics," start="00:02:27.360" video="mainVideo" id=subtitle]]
+[[!template text="embellishments, and a lot more." start="00:02:30.000" video="mainVideo" id=subtitle]]
+[[!template text="I encourage you to read the manual for more information." start="00:02:32.080" video="mainVideo" id=subtitle]]
+[[!template text="Now let's switch to a terminal window." start="00:02:36.160" video="mainVideo" id=subtitle]]
+[[!template text="With Lilypond installed," start="00:02:39.680" video="mainVideo" id=subtitle]]
+[[!template text="let's create a test file with the extension .ly and open it in Emacs." start="00:02:41.247" video="mainVideo" id=subtitle]]
+[[!template new="1" text="At the top of the file is the version statement," start="00:02:50.560" video="mainVideo" id=subtitle]]
+[[!template text="which tells Lilypond" start="00:02:53.048" video="mainVideo" id=subtitle]]
+[[!template text="which version to use when compiling the file." start="00:02:54.395" video="mainVideo" id=subtitle]]
+[[!template text="Here I'm using version 2.20.0." start="00:02:57.440" video="mainVideo" id=subtitle]]
+[[!template text="I've added the clef and time signature." start="00:03:00.959" video="mainVideo" id=subtitle]]
+[[!template text="Let's add some notes." start="00:03:04.159" video="mainVideo" id=subtitle]]
+[[!template text="I'm going to close this now" start="00:03:09.280" video="mainVideo" id=subtitle]]
+[[!template text="and compile the file" start="00:03:12.098" video="mainVideo" id=subtitle]]
+[[!template text="by running lilypond followed by the file name." start="00:03:13.765" video="mainVideo" id=subtitle]]
+[[!template text="So now let's view the output." start="00:03:19.760" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Okay. So here's a more complex example" start="00:03:27.360" video="mainVideo" id=subtitle]]
+[[!template text="for randomizing note sequences." start="00:03:29.760" video="mainVideo" id=subtitle]]
+[[!template text="The idea is to create" start="00:03:32.239" video="mainVideo" id=subtitle]]
+[[!template text="new reading materials each time the code blocks are evaluated." start="00:03:33.410" video="mainVideo" id=subtitle]]
+[[!template text="As usual, we begin with a header." start="00:03:37.760" video="mainVideo" id=subtitle]]
+[[!template text="I've added the title and composer." start="00:03:40.640" video="mainVideo" id=subtitle]]
+[[!template text="Then we add the note sequences to use in the composition." start="00:03:43.541" video="mainVideo" id=subtitle]]
+[[!template text="In this case, sn is a note name just like" start="00:03:47.920" video="mainVideo" id=subtitle]]
+[[!template text="a b c d and so on, and stands for snare drum," start="00:03:51.200" video="mainVideo" id=subtitle]]
+[[!template text="the percussion instruments." start="00:03:54.959" video="mainVideo" id=subtitle]]
+[[!template text="Now here's a function that's going to" start="00:03:58.879" video="mainVideo" id=subtitle]]
+[[!template text="shuffle the notes in the table." start="00:04:00.720" video="mainVideo" id=subtitle]]
+[[!template text="Finally, we expand the notes inside" start="00:04:04.080" video="mainVideo" id=subtitle]]
+[[!template text="the Lilypond source block." start="00:04:06.560" video="mainVideo" id=subtitle]]
+[[!template text="So whatever the function returns" start="00:04:08.799" video="mainVideo" id=subtitle]]
+[[!template text="is expanded inside the drums block." start="00:04:10.684" video="mainVideo" id=subtitle]]
+[[!template text="Now let's press C-c C-c to view the results." start="00:04:13.680" video="mainVideo" id=subtitle]]
+[[!template text="Okay. And if I run this again, it should create a new composition." start="00:04:20.079" video="mainVideo" id=subtitle]]
+[[!template text="Great. You can also audition a piece using the midi command," start="00:04:26.840" video="mainVideo" id=subtitle]]
+[[!template text="which creates a midi file of the score." start="00:04:31.360" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Note also that the ob library--" start="00:04:34.320" video="mainVideo" id=subtitle]]
+[[!template text="sorry, the ob-lilypond library comes" start="00:04:36.560" video="mainVideo" id=subtitle]]
+[[!template text="with two modes." start="00:04:39.040" video="mainVideo" id=subtitle]]
+[[!template text="The one I'm using now is called arrange mode" start="00:04:40.400" video="mainVideo" id=subtitle]]
+[[!template text="and is useful for assembling complete scores." start="00:04:43.440" video="mainVideo" id=subtitle]]
+[[!template text="The basic mode, on the other hand," start="00:04:47.120" video="mainVideo" id=subtitle]]
+[[!template text="allows you to mix text and music" start="00:04:49.015" video="mainVideo" id=subtitle]]
+[[!template text="by embedding Lilypond snippets and" start="00:04:51.199" video="mainVideo" id=subtitle]]
+[[!template text="export them using typical Org Mode commands." start="00:04:53.360" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Now to demonstrate the basic mode in action." start="00:05:00.240" video="mainVideo" id=subtitle]]
+[[!template text="I'm going to export this document" start="00:05:02.661" video="mainVideo" id=subtitle]]
+[[!template text="to a PDF file." start="00:05:04.320" video="mainVideo" id=subtitle]]
+[[!template text="In this case, the :file header argument is required," start="00:05:05.120" video="mainVideo" id=subtitle]]
+[[!template text="so you have to provide one" start="00:05:10.077" video="mainVideo" id=subtitle]]
+[[!template text="and include the file name." start="00:05:11.919" video="mainVideo" id=subtitle]]
+[[!template text="Again, you can run the code and view the results." start="00:05:15.600" video="mainVideo" id=subtitle]]
+[[!template text="Here it is. So now let's export this to a PDF file." start="00:05:22.160" video="mainVideo" id=subtitle]]
+[[!template text="And here it is, what it generates." start="00:05:33.680" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Now I'm going to show you the workflow I used" start="00:05:39.680" video="mainVideo" id=subtitle]]
+[[!template text="to produce music books in Emacs," start="00:05:41.716" video="mainVideo" id=subtitle]]
+[[!template text="combining Lilypond and LaTeX for a" start="00:05:44.000" video="mainVideo" id=subtitle]]
+[[!template text="perfect marriage." start="00:05:46.160" video="mainVideo" id=subtitle]]
+[[!template text="I begin by sketching the first draft" start="00:05:48.000" video="mainVideo" id=subtitle]]
+[[!template text="of the manuscript using pencil and paper." start="00:05:49.858" video="mainVideo" id=subtitle]]
+[[!template text="Then I move to Emacs to input the notes" start="00:05:53.039" video="mainVideo" id=subtitle]]
+[[!template text="in a git repository." start="00:05:55.039" video="mainVideo" id=subtitle]]
+[[!template text="This is a typical source file." start="00:05:57.440" video="mainVideo" id=subtitle]]
+[[!template text="It begins with a stylesheet" start="00:05:59.486" video="mainVideo" id=subtitle]]
+[[!template text="where I set variables and layout settings," start="00:06:01.360" video="mainVideo" id=subtitle]]
+[[!template text="although in general," start="00:06:03.690" video="mainVideo" id=subtitle]]
+[[!template text="there's no need for tweaking the layout" start="00:06:04.875" video="mainVideo" id=subtitle]]
+[[!template text="unless you have specific requirements to do so." start="00:06:07.039" video="mainVideo" id=subtitle]]
+[[!template text="The easiest way to compile the file from Emacs is by pressing C-c C-l," start="00:06:11.199" video="mainVideo" id=subtitle]]
+[[!template text="so let's do this now," start="00:06:15.520" video="mainVideo" id=subtitle]]
+[[!template text="and the compilation buffer will tell you" start="00:06:19.280" video="mainVideo" id=subtitle]]
+[[!template text="if there were any errors in the file." start="00:06:21.199" video="mainVideo" id=subtitle]]
+[[!template text="Now to automate the process of" start="00:06:23.759" video="mainVideo" id=subtitle]]
+[[!template text="compiling several files and building the PDF," start="00:06:25.439" video="mainVideo" id=subtitle]]
+[[!template text="I use GNU Make, so all I have to do is" start="00:06:28.560" video="mainVideo" id=subtitle]]
+[[!template text="open the shell and run the make command. Don't worry," start="00:06:31.280" video="mainVideo" id=subtitle]]
+[[!template text="I'll provide a link to the source code" start="00:06:36.000" video="mainVideo" id=subtitle]]
+[[!template text="on the last slide." start="00:06:37.840" video="mainVideo" id=subtitle]]
+[[!template new="1" text="As I moved forward with the project," start="00:06:41.600" video="mainVideo" id=subtitle]]
+[[!template text="I found at least two things missing." start="00:06:43.494" video="mainVideo" id=subtitle]]
+[[!template text="One, I had no access to a metronome," start="00:06:46.000" video="mainVideo" id=subtitle]]
+[[!template text="at least not from the editor," start="00:06:48.720" video="mainVideo" id=subtitle]]
+[[!template text="so I built one for casual use" start="00:06:50.479" video="mainVideo" id=subtitle]]
+[[!template text="and made it available in the MELPA repository." start="00:06:52.437" video="mainVideo" id=subtitle]]
+[[!template text="I also missed bar numbers in the source file." start="00:06:55.919" video="mainVideo" id=subtitle]]
+[[!template text="This is useful when going back and forth" start="00:06:59.039" video="mainVideo" id=subtitle]]
+[[!template text="between input and output files without getting lost." start="00:07:00.880" video="mainVideo" id=subtitle]]
+[[!template text="So I wrote a command for toggling bar numbers," start="00:07:04.479" video="mainVideo" id=subtitle]]
+[[!template text="which I hope you can see on the left." start="00:07:07.290" video="mainVideo" id=subtitle]]
+[[!template text="Also, some expressions are difficult or" start="00:07:10.000" video="mainVideo" id=subtitle]]
+[[!template text="slow to write on the keyboard--" start="00:07:12.080" video="mainVideo" id=subtitle]]
+[[!template text="accents and tuplets, for example--" start="00:07:14.160" video="mainVideo" id=subtitle]]
+[[!template text="so I use template expansion extensively for this purpose," start="00:07:16.490" video="mainVideo" id=subtitle]]
+[[!template text="mainly yasnippet." start="00:07:20.160" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So what do I think?" start="00:07:23.440" video="mainVideo" id=subtitle]]
+[[!template text="Well, I think Lilypond can be a sharp paradigm shift" start="00:07:24.797" video="mainVideo" id=subtitle]]
+[[!template text="for people used to GUI alternatives," start="00:07:28.080" video="mainVideo" id=subtitle]]
+[[!template text="but the results are impressive." start="00:07:30.817" video="mainVideo" id=subtitle]]
+[[!template text="You don't have to dive too deeply to" start="00:07:32.720" video="mainVideo" id=subtitle]]
+[[!template text="start using Lilypond." start="00:07:34.639" video="mainVideo" id=subtitle]]
+[[!template text="Likewise, the ability to extend the software, I think," start="00:07:36.960" video="mainVideo" id=subtitle]]
+[[!template text="is especially appealing for music professionals," start="00:07:39.635" video="mainVideo" id=subtitle]]
+[[!template text="enthusiasts, composers, and the academic community:" start="00:07:42.400" video="mainVideo" id=subtitle]]
+[[!template text="for example, allowing users to create" start="00:07:46.560" video="mainVideo" id=subtitle]]
+[[!template text="alternative notation systems" start="00:07:48.400" video="mainVideo" id=subtitle]]
+[[!template text="required in non-Western music traditions" start="00:07:50.187" video="mainVideo" id=subtitle]]
+[[!template text="and other non-conventional requirements." start="00:07:53.120" video="mainVideo" id=subtitle]]
+[[!template text="Also, Lilypond and Emacs both have" start="00:07:56.160" video="mainVideo" id=subtitle]]
+[[!template text="extensive and well-written manuals" start="00:07:58.400" video="mainVideo" id=subtitle]]
+[[!template text="and active communities of users." start="00:08:00.720" video="mainVideo" id=subtitle]]
+[[!template text="But if you're still not sure" start="00:08:04.639" video="mainVideo" id=subtitle]]
+[[!template text="where to start and when to wedge your feet in the deep but warm pond" start="00:08:05.971" video="mainVideo" id=subtitle]]
+[[!template text="of lilies, Lilypond, and Lilypond users," start="00:08:10.475" video="mainVideo" id=subtitle]]
+[[!template text="I invite you to contribute to my Lilypond projects," start="00:08:13.680" video="mainVideo" id=subtitle]]
+[[!template text="which you can do so from the links on the screen." start="00:08:16.960" video="mainVideo" id=subtitle]]
+[[!template text="So, thank you all. I look forward to your comments," start="00:08:20.720" video="mainVideo" id=subtitle]]
+[[!template text="and I hope you enjoy the rest of the conference." start="00:08:23.271" video="mainVideo" id=subtitle]]
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 &quot;bivoaucs,&quot;" 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/info/06.md b/2020/info/06.md
index b9cc0a27..98be1573 100644
--- a/2020/info/06.md
+++ b/2020/info/06.md
@@ -1,16 +1,15 @@
# Trivial Emacs Kits
Corwin Brust
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--06-trivial-emacs-kits--corwin-brust.webm" size="114M" duration="13:41" subtitles="/2020/subtitles/emacsconf-2020--06-trivial-emacs-kits--corwin-brust.vtt"]]
-[Download compressed .webm video (12M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--06-trivial-emacs-kits--corwin-brust--vp9-q56-video-original-audio.webm)
+[[!template id=vid vidid="mainVideo" src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--06-trivial-emacs-kits--corwin-brust.webm" size="114M" duration="13:41" subtitles="/2020/subtitles/emacsconf-2020--06-trivial-emacs-kits--corwin-brust.vtt"]]
+[Download compressed .webm video (12M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--06-trivial-emacs-kits--corwin-brust--vp9-q56-video-original-audio.webm)
+[View transcript](#transcript)
Techniques to help new users bootstrap a more gentle introduction to
Emacs, one (short) init.el file at a time.
[[!inline pages="internal(2020/info/dm-notes)" raw="yes"]]
-[[!inline pages="internal(2020/info/06-transcription)" raw="yes"]]
-
<!-- from the pad --->
- Actual start and end time (EST): Start: 2020-11-28T10.45.48; Q&A
@@ -56,184 +55,240 @@ important problem space in free software, FWIW.
<a name="transcript"></a>
# Transcript
-Following is a somewhat hasty self-transcription of my talk. Please
-don't hesitate to [mailto:corwin@bru.st](ask for clarification) or to
-add any clarifications you feel helpful back into the EmacsConf wiki.
-
There is a visual gimmick underlaying the initial remarks. We are
looking at the first (first-slide ("Welcome") showing how the org
markdown looks on other editors, including cygwin emacs, Notepad++,
Sublime, VS Code, and cygwin vim. As each is closed we see the next,
until we reveal GUI Emacs running org-mode in a full-both frame.
-My name is Corwin Brust and I will be talking about getting started
-with Emacs Today. I have been an Emacs user for a long time-
-
-First of all thanks and a huge welcome to the conference..(_15s_)
-
-On behalf of and back to the other organizers. It has been cool to
-have a peek backstage.
-
-So. I've used a lot of different editors in my time. That's about 25
-years as a professional software engineer. And most of that
-time I've been using Emacs. (~54s_)
-
-I'll talk a little bit in a minute (if I can ever find my slides)
-about how I got into Emacs, but if you've used Emacs and a lot of
-other editors for a long time, something that you notice right away is
-that you get good with it in a way that stays meaningful. You learn
-new things, those things stick with you. You learn how to- how to
-make it do new tricks and then keep doing those tricks. (~1m26s_)
-
-I want to mention this conference isn't about (whoops: "this talk")
-how to adjust your configuration specifically. I don't have a bunch
-of good code samples in here. There are a bunch of other great talks,
-especially Andrew's that I think may be aimed more at that "hey, I'm
-just getting started with Emacs what are some things to try to make it
-more comfortable for me starting?" [subject/audience? cezb]. (~2m07s_)
-
-This is about how to think about the problem space more. (_2m10s_)
-
-Hopefully a good way to warm up as we start thinking about some of the
-lightning talks later on. (I'm going to bring up my IRC buffer
-[offscreen] in case I run into time- I didn't get my stopwatch started
-for this one.) (_2m25s_)
-
-So, alright: let's dive in. (_2m30s_)
-
-We assume that we want to install packages, and maybe configure some
-features. This is particularly from the perspective of where we're
-working with a bunch of others on a team and we want to get something
-done. (_2m42s_)
-
-Some of us probably have mature Emacs workflows, others may be
-installing it for the first time. (_2m50s_)
-
-So the first questions is, you know- in that context: what's the value
-proposition? Why should I mess with my machine, my mature Emacs
-configuration, impose my way of thinking and ideas over the way
-somebody else is learning Emacs? (_3m09m_)
-
-It can be [laugh] I'm off my slides here a little bit.. (_3m13s_)
-
-It can be a little tricky to learn Emacs. One thing that helps us a
-lot is if people that we are working with can tell us, kinda,
-keystroke-for-keystroke at times what to do and explain what
-everything is doing. (_3m30s_)
-
-And using the same packages as others can really help us working
-together on a project. (_3m36s_)
-
-Speaking from my personal experience, it took me decades to get to the
-point where I was excited to program in Emacs Lisp. (_3m26s_)
-
-I've programed in a lot of programming languages, but Lisp wasn't on
-my list. I looked at my config, that I was copy-pasting around from
-generation after generation of .emacs file or re-crafting it by hand
-and from Internet searches, to get things that I needed when I would
-quickly go install Emacs to start some new job or contract, and
-quickly get though that work-flow that caused me to go install the
-program. (_4m15s_)
-
-You know, just simple little one-liners that got committed to memory
-over decades eventually just lead [me] to a sort of "hey, what's going
-on here". (_4m27s_)
-
-And I credit my good friend Jeff Goff who died earlier in 2020 for my
-lifelong love of Emacs. Perhaps Erik and I will talk a little more
-about that at another talk we have scheduled but Jeff was a huge
-influence on us in a number of ways and a huge contributer to the Raku
-programming language which is very cool. (_4m52s_)
-
-So, understanding how to make a good decision about splitting up
-configuration in a way to share it with people with really different
-uses of Emacs. That's actually a complicated topic, and I want to off
-and stare at it for a second: (_5m11s_)
-
-I think Emacs is about people, so that means it is about community.
-And community means we're going to invite disagreement. In fact that
-disagreement isn't necessarily a road-block to our project, in fact
-that some of the work our project can invite us to do is to get closer
-to each other by inviting those disagreements, by learning from people
-of different styles, and from how they argue, and thinking about why
-they have that perspective and what technical benefits that perhaps
-radical point of view might carry away. Some people are really
-aggressive arguers others are very passive and really couch their
-ideas in distancing terms, "well probably this is a good idea" or
-"please double check me". Those don't always indicate how certain a
-person is. Because we're different. We have different ways of
-communicating ideas such as certainty or excitement. (_6m23s_)
-
-When we thinking about a bunch of really diverse programmers
-approaching Emacs probably one of our first really big challenges is
-just to pick what we're going to go after. There are a number of
-existing kit installs and things like this. My argument is that you
-can get pretty far just trading files around. And maybe the more
-value conversation to have is making the hard decisions, e.g. "should
-we have vertical completion", should that be out of the box and those
-that want the traditional splayed-out over a sing line such as the
-mode line will have to add a line to their configuration. (_7m26s)
-
-The way to get there?
-
-How do we find out what works?
-
-We don't want to slow down the people who are super productive with
-Emacs, and ask them to completely break their workflows to make it
-easier for new folks, at the same time we do want to make sure those
-new people. (_7m42s_)
-
-At the same time, we do want to make sure those new people arre
-excited by Emacs and not turned off by having to learn the entire
-jungle of Emacs history in the form of it's unique technical stylings
-in terms of frames, buffers, and other unique Emacs viewpoints on
-interface concepts, especially. (_8m15s_)
-
-The encouragement here is to keep using the project team as a
-crucible. Rather than following the defaults of, um, finding the
-simplest customizations that generally work, what if we tried to look
-for fairly specific configuration that we'll expect basically all of
-our developers to be using, at least when the submit bug
-reports. (_8m48s_)
-
-In particular with this, I think that degree of experimentation can
-drive back into the Emacs development process. In the development
-mailing list.. [] In the context of Emacs development as a greater
-entity, we see this struggle. We have the sense that some things can
-"never" be change. I think one thing that can help us get there is
-evidence that says "hey, my 30-40 person team is using this set of
-bindings and here is what we learned about new Emacs users coming in
-and trying that". (10m)
-
-So let's just recap real quick: in theory Emacs works out of the
-box. That means we are free to throw it all away and start over.
-[trouble with slides, again]
-
-Our goal is to enable users- to unlock our computers, to do as much
-with them as possible. My work of encouragement is experiment with it.
-And think really specifically about how the development users may be
-different from each other, as you are configuring the development
-environment of emacs for developing on a project.
-
-That's my talk, etc, answer any questions.(_12m09s_)
-
-Do you use Emacs as a Community Building Tool? (_13m15s_)
-
-Do /i/ use Emacs a community building tool? Or *how* do I use Emacs as a
-community building tool. [amin: "it doesn't say"]
-
-Yes, absolutely. I think Emacs is an ambassador to the gnu
-tool-chain. in the fullness of time we will see an Emacs that will
-make others, Android and iOS, dream. That's why that mock us and say
-that Emacs is an operating system. It's because it could be, if cared
-for it to be. It's quite a threatening product in terms of the number
-of problem spaces it can address, how many types of users it can
-satisfy. (_13m01s_)
-
-And the things that we can do to make it robust in those environments.
-We're always thinking about the weak points but is Emacs a community
-building tool? Heck yeah. (_13m13s_)
-
-[we agree that I'll write my answers to the remaining questions, I say
-thanks more, and we're done. ps, I'll get to your question or
-comments I can find a response to within the next week, I expect]
+[[!template new="1" text="My name is Corwin Brust" start="00:00:00.399" video="mainVideo" id=subtitle]]
+[[!template text="and I will be talking about getting started with Emacs today." start="00:00:02.683" video="mainVideo" id=subtitle]]
+[[!template text="I have been an Emacs user for a long time." start="00:00:08.960" video="mainVideo" id=subtitle]]
+[[!template new="1" text="First of all, thanks and a huge welcome to the conference" start="00:00:11.448" video="mainVideo" id=subtitle]]
+[[!template text="from me and and on behalf" start="00:00:15.360" video="mainVideo" id=subtitle]]
+[[!template text="and back to the other people" start="00:00:22.400" video="mainVideo" id=subtitle]]
+[[!template text="that have been helping to organize." start="00:00:24.368" video="mainVideo" id=subtitle]]
+[[!template text="It's been amazing just to be involved" start="00:00:26.080" video="mainVideo" id=subtitle]]
+[[!template text="with that and just, kind of, see backstage." start="00:00:30.480" video="mainVideo" id=subtitle]]
+[[!template new="1" text="I've used a lot of different editors in my time." start="00:00:36.399" video="mainVideo" id=subtitle]]
+[[!template text="That's about 25 years as a professional software engineer." start="00:00:42.281" video="mainVideo" id=subtitle]]
+[[!template text="And most of that time I've been using Emacs." start="00:00:52.399" video="mainVideo" id=subtitle]]
+[[!template new="1" text="I'll talk a little bit in a minute" start="00:00:54.247" video="mainVideo" id=subtitle]]
+[[!template text="(if I can ever find my slides)" start="00:00:56.160" video="mainVideo" id=subtitle]]
+[[!template text="about how I got into Emacs," start="00:01:00.960" video="mainVideo" id=subtitle]]
+[[!template text="but I think if you've used Emacs and a" start="00:01:04.479" video="mainVideo" id=subtitle]]
+[[!template text="lot of other editors for a long time," start="00:01:07.200" video="mainVideo" id=subtitle]]
+[[!template text="something that you notice right away" start="00:01:10.240" video="mainVideo" id=subtitle]]
+[[!template text="is that you get good with it in a way that stays meaningful." start="00:01:14.410" video="mainVideo" id=subtitle]]
+[[!template text="You learn new things. Those things stick with you." start="00:01:18.560" video="mainVideo" id=subtitle]]
+[[!template text="You learn how to make it do new tricks and then keep doing those tricks." start="00:01:24.199" video="mainVideo" id=subtitle]]
+[[!template new="1" text="I want to mention that this conference--oops," start="00:01:33.759" video="mainVideo" id=subtitle]]
+[[!template text="this talk isn't about how to adjust" start="00:01:39.439" video="mainVideo" id=subtitle]]
+[[!template text="your configuration specifically." start="00:01:44.829" video="mainVideo" id=subtitle]]
+[[!template text="I don't have a bunch of good code samples in here." start="00:01:46.802" video="mainVideo" id=subtitle]]
+[[!template text="There are other great talks at the conference," start="00:01:50.000" video="mainVideo" id=subtitle]]
+[[!template text="particularly Andrew's, that I looked at," start="00:01:52.451" video="mainVideo" id=subtitle]]
+[[!template text="that looked like they might be more aimed at that" start="00:01:56.411" video="mainVideo" id=subtitle]]
+[[!template text="&quot;hey, I'm just getting started with Emacs," start="00:01:59.920" video="mainVideo" id=subtitle]]
+[[!template text="what are some things to try to make" start="00:02:02.240" video="mainVideo" id=subtitle]]
+[[!template text="it more comfortable for me starting?&quot;" start="00:02:05.280" video="mainVideo" id=subtitle]]
+[[!template new="1" text="This is about how to think about the problem space." start="00:02:07.017" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Hopefully, a good warm up as we start thinking about" start="00:02:09.759" video="mainVideo" id=subtitle]]
+[[!template text="some of the lightning talks a little later on." start="00:02:13.337" video="mainVideo" id=subtitle]]
+[[!template text="I'm just gonna quickly make sure" start="00:02:17.200" video="mainVideo" id=subtitle]]
+[[!template text="I can see my IRC buffer in case" start="00:02:19.835" video="mainVideo" id=subtitle]]
+[[!template text="I run into time. I didn't get my stopwatch started for this one." start="00:02:21.789" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So all right, let's dive in." start="00:02:25.680" video="mainVideo" id=subtitle]]
+[[!template new="1" text="We assume that we want to install packages" start="00:02:29.680" video="mainVideo" id=subtitle]]
+[[!template text="and maybe configure some features." start="00:02:33.840" video="mainVideo" id=subtitle]]
+[[!template text="This is particularly from the perspective of" start="00:02:36.281" video="mainVideo" id=subtitle]]
+[[!template text="where we're working" start="00:02:38.319" video="mainVideo" id=subtitle]]
+[[!template text="with a bunch of people on a team" start="00:02:39.120" video="mainVideo" id=subtitle]]
+[[!template text="and we want to get something done." start="00:02:40.541" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Some of us probably already have mature" start="00:02:42.160" video="mainVideo" id=subtitle]]
+[[!template text="Emacs workflows." start="00:02:44.800" video="mainVideo" id=subtitle]]
+[[!template text="Others are installing it for the first time." start="00:02:46.560" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So the first question is, you know, in that context:" start="00:02:53.519" video="mainVideo" id=subtitle]]
+[[!template text="what's the value proposition?" start="00:02:57.889" video="mainVideo" id=subtitle]]
+[[!template text="Why should I mess with my machine," start="00:02:59.784" video="mainVideo" id=subtitle]]
+[[!template text="my mature Emacs configuration," start="00:03:01.532" video="mainVideo" id=subtitle]]
+[[!template text="and impose my ideas over the way somebody else is learning Emacs?" start="00:03:04.219" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Well, it can be.. I'm off my slides here a little bit." start="00:03:09.815" video="mainVideo" id=subtitle]]
+[[!template new="1" text="It can be a little bit tricky" start="00:03:13.840" video="mainVideo" id=subtitle]]
+[[!template text="to learn Emacs. One thing that helps us a lot" start="00:03:16.959" video="mainVideo" id=subtitle]]
+[[!template text="is if people that we're working with" start="00:03:21.440" video="mainVideo" id=subtitle]]
+[[!template text="can tell us, kinda, keystroke for keystroke at times," start="00:03:24.720" video="mainVideo" id=subtitle]]
+[[!template text="what to do and explain what everything is doing." start="00:03:27.301" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Using the same packages can really help us working together on a project." start="00:03:30.480" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Speaking from my personal experience," start="00:03:35.840" video="mainVideo" id=subtitle]]
+[[!template text="it took me decades to get to the point" start="00:03:40.720" video="mainVideo" id=subtitle]]
+[[!template text="where I was excited to program in Emacs Lisp." start="00:03:42.959" video="mainVideo" id=subtitle]]
+[[!template new="1" text="I've programmed in a lot of programming languages," start="00:03:45.226" video="mainVideo" id=subtitle]]
+[[!template text="but Lisp wasn't on my list." start="00:03:47.840" video="mainVideo" id=subtitle]]
+[[!template text="I looked at my config that I was copy-pasting around" start="00:03:50.252" video="mainVideo" id=subtitle]]
+[[!template text="from generation after generation of .emacs file," start="00:03:53.680" video="mainVideo" id=subtitle]]
+[[!template text="or recrafting it from hand and from Internet searches," start="00:03:57.279" video="mainVideo" id=subtitle]]
+[[!template text="to get the things that I needed when" start="00:04:00.799" video="mainVideo" id=subtitle]]
+[[!template text="I would quickly go install Emacs at some" start="00:04:03.519" video="mainVideo" id=subtitle]]
+[[!template text="new job or contract," start="00:04:05.680" video="mainVideo" id=subtitle]]
+[[!template text="and be able to to quickly get through that workflow" start="00:04:07.680" video="mainVideo" id=subtitle]]
+[[!template text="that caused me to install the program." start="00:04:14.016" video="mainVideo" id=subtitle]]
+[[!template new="1" text="You know, just little simple one-liners that got committed to memory" start="00:04:17.440" video="mainVideo" id=subtitle]]
+[[!template text="over decades eventually just led me to a sort of &quot;hey what's going on here.&quot;" start="00:04:24.049" video="mainVideo" id=subtitle]]
+[[!template new="1" text="And I credit Jeff Goff, my good friend who died earlier in 2020," start="00:04:27.675" video="mainVideo" id=subtitle]]
+[[!template text="for my lifelong love of Emacs." start="00:04:33.520" video="mainVideo" id=subtitle]]
+[[!template text="Perhaps Erik and I will talk about that" start="00:04:37.759" video="mainVideo" id=subtitle]]
+[[!template text="a little bit more in another talk we have scheduled," start="00:04:39.280" video="mainVideo" id=subtitle]]
+[[!template text="but Jeff was a huge influence on us" start="00:04:42.000" video="mainVideo" id=subtitle]]
+[[!template text="in a number of ways," start="00:04:44.400" video="mainVideo" id=subtitle]]
+[[!template text="and a huge contributor" start="00:04:46.027" video="mainVideo" id=subtitle]]
+[[!template text="to the Raku programming language, which is very cool." start="00:04:47.732" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So, understanding how to make a good decision" start="00:04:54.840" video="mainVideo" id=subtitle]]
+[[!template text="about splitting up configuration in a way to share it across" start="00:05:00.153" video="mainVideo" id=subtitle]]
+[[!template text="people with really different uses of Emacs..." start="00:05:03.680" video="mainVideo" id=subtitle]]
+[[!template text="That's actually a complicated topic" start="00:05:06.292" video="mainVideo" id=subtitle]]
+[[!template text="and I want to sort of back off and stare at it for a second." start="00:05:08.546" video="mainVideo" id=subtitle]]
+[[!template new="1" text="I think Emacs is about people, so that means it's about community." start="00:05:12.639" video="mainVideo" id=subtitle]]
+[[!template text="And community means we're going to invite disagreement." start="00:05:18.720" video="mainVideo" id=subtitle]]
+[[!template text="In fact, that disagreement isn't necessarily a road-block to our project." start="00:05:24.960" video="mainVideo" id=subtitle]]
+[[!template text="In fact, some of the work that a community project can invite us to do" start="00:05:32.687" video="mainVideo" id=subtitle]]
+[[!template text="is to get closer to each other" start="00:05:37.759" video="mainVideo" id=subtitle]]
+[[!template text="by inviting those disagreements," start="00:05:39.505" video="mainVideo" id=subtitle]]
+[[!template text="by learning from them--learning from" start="00:05:40.840" video="mainVideo" id=subtitle]]
+[[!template text="different people's styles and from how they argue," start="00:05:42.080" video="mainVideo" id=subtitle]]
+[[!template text="and thinking about why they have that perspective" start="00:05:46.880" video="mainVideo" id=subtitle]]
+[[!template text="and what technical benefits" start="00:05:50.058" video="mainVideo" id=subtitle]]
+[[!template text="that perhaps radical point of view might carry away." start="00:05:53.227" video="mainVideo" id=subtitle]]
+[[!template text="Some people are really aggressive arguers," start="00:05:55.800" video="mainVideo" id=subtitle]]
+[[!template text="and others are very passive and really" start="00:05:58.266" video="mainVideo" id=subtitle]]
+[[!template text="couch their ideas in distancing terms, to say," start="00:06:01.919" video="mainVideo" id=subtitle]]
+[[!template text="&quot;well probably, this is a good idea&quot;" start="00:06:05.824" video="mainVideo" id=subtitle]]
+[[!template text="or &quot;please double check me.&quot;" start="00:06:07.906" video="mainVideo" id=subtitle]]
+[[!template text="Those don't always necessarily indicate" start="00:06:12.479" video="mainVideo" id=subtitle]]
+[[!template text="how certain a person is, because we're different." start="00:06:15.520" video="mainVideo" id=subtitle]]
+[[!template text="We have different ways of communicating" start="00:06:17.497" video="mainVideo" id=subtitle]]
+[[!template text="ideas like certainty or excitement." start="00:06:19.520" video="mainVideo" id=subtitle]]
+[[!template new="1" text="When we think about a bunch of" start="00:06:24.560" video="mainVideo" id=subtitle]]
+[[!template text="really diverse programmers approaching Emacs," start="00:06:26.235" video="mainVideo" id=subtitle]]
+[[!template text="probably one of our first really big challenges is just" start="00:06:30.000" video="mainVideo" id=subtitle]]
+[[!template text="to pick what we're going to go after." start="00:06:36.479" video="mainVideo" id=subtitle]]
+[[!template text="There are a lot of existing kit installs and things like this." start="00:06:40.085" video="mainVideo" id=subtitle]]
+[[!template text="My argument is that you could actually get pretty far" start="00:06:49.599" video="mainVideo" id=subtitle]]
+[[!template text="just trading files around." start="00:06:54.400" video="mainVideo" id=subtitle]]
+[[!template text="Maybe the more valuable conversation to have" start="00:06:56.020" video="mainVideo" id=subtitle]]
+[[!template text="is making the hard decisions about, well," start="00:07:03.698" video="mainVideo" id=subtitle]]
+[[!template text="&quot;should we have vertical completion,&quot;" start="00:07:06.080" video="mainVideo" id=subtitle]]
+[[!template text="should that be the out of the box," start="00:07:08.000" video="mainVideo" id=subtitle]]
+[[!template text="and the people that want" start="00:07:10.080" video="mainVideo" id=subtitle]]
+[[!template text="the traditional splayed out over a single line completion," start="00:07:11.759" video="mainVideo" id=subtitle]]
+[[!template text="for example in the mode line," start="00:07:17.440" video="mainVideo" id=subtitle]]
+[[!template text="those people are going to add a line of config to their own setup?" start="00:07:19.428" video="mainVideo" id=subtitle]]
+[[!template new="1" text="The way to get there?" start="00:07:29.039" video="mainVideo" id=subtitle]]
+[[!template text="I mean, how do we find out what works?" start="00:07:30.979" video="mainVideo" id=subtitle]]
+[[!template new="1" text="We don't want to slow down the people that are super productive with Emacs" start="00:07:33.344" video="mainVideo" id=subtitle]]
+[[!template text="by asking them to completely break their workflows" start="00:07:38.587" video="mainVideo" id=subtitle]]
+[[!template text="and make it easier for new folks." start="00:07:40.879" video="mainVideo" id=subtitle]]
+[[!template new="1" text="At the same time, we do want to make sure those new people" start="00:07:42.560" video="mainVideo" id=subtitle]]
+[[!template text="are excited by Emacs and not turned off by having to learn" start="00:07:48.673" video="mainVideo" id=subtitle]]
+[[!template text="the entire jungle of Emacs history in the form of its unique" start="00:07:52.720" video="mainVideo" id=subtitle]]
+[[!template text="technical stylings for things like frames, buffers," start="00:08:00.363" video="mainVideo" id=subtitle]]
+[[!template text="and other unique Emacs viewpoints" start="00:08:07.610" video="mainVideo" id=subtitle]]
+[[!template text="on important interface concepts, especially." start="00:08:11.668" video="mainVideo" id=subtitle]]
+[[!template new="1" text="The encouragement here is to keep" start="00:08:16.240" video="mainVideo" id=subtitle]]
+[[!template text="the initialization for a project team" start="00:08:19.520" video="mainVideo" id=subtitle]]
+[[!template text="together as a crucible." start="00:08:21.680" video="mainVideo" id=subtitle]]
+[[!template text="Rather than necessarily following" start="00:08:23.280" video="mainVideo" id=subtitle]]
+[[!template text="our defaults of finding the simplest configurations" start="00:08:25.117" video="mainVideo" id=subtitle]]
+[[!template text="that generally work and letting people customize it," start="00:08:33.279" video="mainVideo" id=subtitle]]
+[[!template text="what if we tried to look" start="00:08:37.440" video="mainVideo" id=subtitle]]
+[[!template text="for fairly specific configurations" start="00:08:40.479" video="mainVideo" id=subtitle]]
+[[!template text="that we'll expect essentially all of our" start="00:08:42.346" video="mainVideo" id=subtitle]]
+[[!template text="developers to be using," start="00:08:44.159" video="mainVideo" id=subtitle]]
+[[!template text="at least when they submit bug reports." start="00:08:46.320" video="mainVideo" id=subtitle]]
+[[!template new="1" text="In particular, with this," start="00:08:52.839" video="mainVideo" id=subtitle]]
+[[!template text="I think that degree of experimentation" start="00:08:55.920" video="mainVideo" id=subtitle]]
+[[!template text="can drive back into the Emacs development process." start="00:08:59.839" video="mainVideo" id=subtitle]]
+[[!template text="In the development mailing list..." start="00:09:02.584" video="mainVideo" id=subtitle]]
+[[!template text="I'm hoping I'll get a timing cue here." start="00:09:04.800" video="mainVideo" id=subtitle]]
+[[!template text="In the context of Emacs development as a greater entity," start="00:09:15.120" video="mainVideo" id=subtitle]]
+[[!template text="we see some of these struggles." start="00:09:18.835" video="mainVideo" id=subtitle]]
+[[!template text="Should we change this default?" start="00:09:20.959" video="mainVideo" id=subtitle]]
+[[!template text="Sometimes we can have the sense that defaults in Emacs will never change." start="00:09:22.399" video="mainVideo" id=subtitle]]
+[[!template text="The conversation is too difficult." start="00:09:27.146" video="mainVideo" id=subtitle]]
+[[!template text="I think one thing that can help us get there is evidence" start="00:09:29.279" video="mainVideo" id=subtitle]]
+[[!template text="that says, &quot;hey my 30- to 40-person project" start="00:09:32.560" video="mainVideo" id=subtitle]]
+[[!template text="is using this set of bindings," start="00:09:36.160" video="mainVideo" id=subtitle]]
+[[!template text="and here's what we learned" start="00:09:38.560" video="mainVideo" id=subtitle]]
+[[!template text="about brand new Emacs users trying to come in" start="00:09:40.111" video="mainVideo" id=subtitle]]
+[[!template text="and get work done with that.&quot;" start="00:09:42.240" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: Yeah you still have" start="00:09:46.800" video="mainVideo" id=subtitle]]
+[[!template text="a couple more minutes.)" start="00:09:49.360" video="mainVideo" id=subtitle]]
+[[!template text="Oh, beautiful. Okay, great." start="00:09:50.720" video="mainVideo" id=subtitle]]
+[[!template text="I will try to get through my last few slides that I cut" start="00:09:51.984" video="mainVideo" id=subtitle]]
+[[!template text="in my last walkthrough, but I think I'm" start="00:09:54.720" video="mainVideo" id=subtitle]]
+[[!template text="going quicker today, thank you." start="00:09:56.320" video="mainVideo" id=subtitle]]
+[[!template text="Thank you." start="00:09:58.320" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So let's just recap real quick:" start="00:10:02.000" video="mainVideo" id=subtitle]]
+[[!template text="in theory, Emacs works out of the box." start="00:10:05.120" video="mainVideo" id=subtitle]]
+[[!template text="That means we're free to experiment." start="00:10:08.760" video="mainVideo" id=subtitle]]
+[[!template text="We can throw it all away and start over." start="00:10:12.853" video="mainVideo" id=subtitle]]
+[[!template text="As an organizational principle..." start="00:10:17.120" video="mainVideo" id=subtitle]]
+[[!template text="I don't know what I was thinking on that slide, excuse me." start="00:10:26.000" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Bringing it back around to the free" start="00:10:30.079" video="mainVideo" id=subtitle]]
+[[!template text="and open source software community," start="00:10:33.440" video="mainVideo" id=subtitle]]
+[[!template text="our goal is to enable users" start="00:10:35.680" video="mainVideo" id=subtitle]]
+[[!template text="to unlock their computers, to do as much" start="00:10:39.519" video="mainVideo" id=subtitle]]
+[[!template text="with them as possible." start="00:10:41.440" video="mainVideo" id=subtitle]]
+[[!template text="That's the context to take with project initialization, but sometimes" start="00:10:43.040" video="mainVideo" id=subtitle]]
+[[!template text="it could make sense" start="00:10:47.680" video="mainVideo" id=subtitle]]
+[[!template text="to put some gloves on." start="00:10:50.800" video="mainVideo" id=subtitle]]
+[[!template text="I've thrown up on the screen here" start="00:10:52.032" video="mainVideo" id=subtitle]]
+[[!template text="just a couple of other ideas," start="00:10:53.766" video="mainVideo" id=subtitle]]
+[[!template text="ways to maybe think outside of the box." start="00:10:55.276" video="mainVideo" id=subtitle]]
+[[!template text="As you're putting together project nets," start="00:10:57.920" video="mainVideo" id=subtitle]]
+[[!template text="my words of encouragement are to experiment with it," start="00:11:01.440" video="mainVideo" id=subtitle]]
+[[!template text="try different things, and think really specifically" start="00:11:05.519" video="mainVideo" id=subtitle]]
+[[!template text="about how different the development users might be from each other" start="00:11:09.941" video="mainVideo" id=subtitle]]
+[[!template text="as you define standards for configuring" start="00:11:17.010" video="mainVideo" id=subtitle]]
+[[!template text="the user environment of Emacs" start="00:11:21.680" video="mainVideo" id=subtitle]]
+[[!template text="specifically for developing on a project." start="00:11:23.519" video="mainVideo" id=subtitle]]
+[[!template new="1" text="That's pretty much my talk." start="00:11:26.552" video="mainVideo" id=subtitle]]
+[[!template text="If there's any time, I would take a couple questions." start="00:11:29.120" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: Thank you for your awesome talk, Corwin." start="00:11:32.959" video="mainVideo" id=subtitle]]
+[[!template text="I think we have one or two minutes for a few questions." start="00:11:36.480" video="mainVideo" id=subtitle]]
+[[!template text="Do you have the pad open or would you" start="00:11:49.519" video="mainVideo" id=subtitle]]
+[[!template text="like me to read the questions for you?)" start="00:11:52.000" video="mainVideo" id=subtitle]]
+[[!template text="Corwin: Oh, I managed to close the pad" start="00:11:53.839" video="mainVideo" id=subtitle]]
+[[!template text="and I am trying to open it again." start="00:11:58.000" video="mainVideo" id=subtitle]]
+[[!template text="All right, there it opened." start="00:12:00.352" video="mainVideo" id=subtitle]]
+[[!template text="Bringing it onto a screen where I can see it." start="00:12:03.519" video="mainVideo" id=subtitle]]
+[[!template text="Will you read me the first question while I drag windows around, please?" start="00:12:05.500" video="mainVideo" id=subtitle]]
+[[!template new="1" text="(Amin: Sure. It says, &quot;do you use Emacs as a community building tool?&quot;)" start="00:12:09.360" video="mainVideo" id=subtitle]]
+[[!template text="Do I use Emacs as a community building tool, or how do I?" start="00:12:15.600" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: It just says do you.) Yes, absolutely." start="00:12:19.760" video="mainVideo" id=subtitle]]
+[[!template text="I think Emacs is an ambassador to the GNU tool chain." start="00:12:23.519" video="mainVideo" id=subtitle]]
+[[!template text="I think that in the fullness of time," start="00:12:29.920" video="mainVideo" id=subtitle]]
+[[!template text="we will see an Emacs" start="00:12:33.027" video="mainVideo" id=subtitle]]
+[[!template text="that makes iOS and Android and other closed-source tools dream." start="00:12:36.558" video="mainVideo" id=subtitle]]
+[[!template text="That's why they mock us and call Emacs" start="00:12:43.760" video="mainVideo" id=subtitle]]
+[[!template text="an operating system. It's because" start="00:12:46.689" video="mainVideo" id=subtitle]]
+[[!template text="it could be, if we cared for it to be." start="00:12:49.200" video="mainVideo" id=subtitle]]
+[[!template text="It's quite a threatening product" start="00:12:51.440" video="mainVideo" id=subtitle]]
+[[!template text="from the perspective of how many problem" start="00:12:55.680" video="mainVideo" id=subtitle]]
+[[!template text="spaces it can address," start="00:12:57.440" video="mainVideo" id=subtitle]]
+[[!template text="how many types of users it can satisfy," start="00:12:58.540" video="mainVideo" id=subtitle]]
+[[!template text="the things that we can do to make" start="00:13:01.519" video="mainVideo" id=subtitle]]
+[[!template text="it robust in those environments." start="00:13:04.399" video="mainVideo" id=subtitle]]
+[[!template text="I mean, we're always thinking about the weak points," start="00:13:06.456" video="mainVideo" id=subtitle]]
+[[!template text="but is Emacs a community building tool? Heck yeah." start="00:13:09.524" video="mainVideo" id=subtitle]]
+[[!template new="1" text="(Amin: There's like one or two more questions." start="00:13:14.639" video="mainVideo" id=subtitle]]
+[[!template text="I think they're more long-form so it might be better" start="00:13:18.480" video="mainVideo" id=subtitle]]
+[[!template text="if you took them off stream so you could keep the schedule on time.)" start="00:13:22.480" video="mainVideo" id=subtitle]]
+[[!template text="I would love to take those questions offline." start="00:13:26.880" video="mainVideo" id=subtitle]]
+[[!template text="I will respond to you" start="00:13:29.463" video="mainVideo" id=subtitle]]
+[[!template text="in writing if we don't get to it" start="00:13:30.908" video="mainVideo" id=subtitle]]
+[[!template text="in a breakout room." start="00:13:32.237" video="mainVideo" id=subtitle]]
+[[!template text="Thanks so much for joining us." start="00:13:33.360" video="mainVideo" id=subtitle]]
+[[!template text="I can't wait to see the rest of the" start="00:13:35.451" video="mainVideo" id=subtitle]]
+[[!template text="conference. See you there!" start="00:13:36.639" video="mainVideo" id=subtitle]]
+[[!template text="(Amin: Awesome. Thank you again so much, Corwin.)" start="00:13:38.000" video="mainVideo" id=subtitle]]
diff --git a/2020/info/07.md b/2020/info/07.md
index f4f793e7..1b9e0939 100644
--- a/2020/info/07.md
+++ b/2020/info/07.md
@@ -1,8 +1,9 @@
# Beyond Vim and Emacs: A Scalable UI Paradigm
Sid Kasivajhula
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.webm" subtitles="/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt" size="161MB"]]
-[Download compressed .webm video (45.1M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula--vp9-q56-video-original-audio.webm)
+[[!template id=vid vidid="mainVideo" src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.webm" subtitles="/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt" size="161MB"]]
+[Download compressed .webm video (45.1M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula--vp9-q56-video-original-audio.webm)
+[View transcript](#transcript)
[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.webm" subtitles="/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.vtt" size="40MB"]]
[Download compressed .webm video (5M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula--vp9-q56-video-original-audio.webm)
@@ -196,3 +197,323 @@ green phosphor.
epistemic-mode, now called rigpa (concept in Tibetan Buddhism, in
Dzogchen teaching, or the great completion).
- Similar idea from <http://emacs-versor.sourceforge.net>
+
+<a name="transcript"></a>
+# Transcript
+
+[[!template new="1" text="&quot;Far away in the heavenly abode" start="00:00:02.960" video="mainVideo" id=subtitle]]
+[[!template text="of the great god Indra," start="00:00:04.644" video="mainVideo" id=subtitle]]
+[[!template text="there is a wonderful net" start="00:00:06.560" video="mainVideo" id=subtitle]]
+[[!template text="which has been hung by some cunning artificer" start="00:00:07.688" video="mainVideo" id=subtitle]]
+[[!template text="in such a manner that it stretches out" start="00:00:10.160" video="mainVideo" id=subtitle]]
+[[!template text="infinitely in all directions." start="00:00:12.080" video="mainVideo" id=subtitle]]
+[[!template text="In accordance with the extravagant tastes of deities," start="00:00:14.320" video="mainVideo" id=subtitle]]
+[[!template text="the artificer has hung" start="00:00:16.938" video="mainVideo" id=subtitle]]
+[[!template text="a single glittering jewel" start="00:00:18.240" video="mainVideo" id=subtitle]]
+[[!template text="in each eye of the net," start="00:00:20.277" video="mainVideo" id=subtitle]]
+[[!template text="and since the net itself is infinite," start="00:00:22.080" video="mainVideo" id=subtitle]]
+[[!template text="the jewels are infinite in number." start="00:00:23.859" video="mainVideo" id=subtitle]]
+[[!template text="There hang the jewels," start="00:00:26.480" video="mainVideo" id=subtitle]]
+[[!template text="glittering like stars in the first magnitude," start="00:00:27.642" video="mainVideo" id=subtitle]]
+[[!template text="a wonderful sight to behold." start="00:00:30.480" video="mainVideo" id=subtitle]]
+[[!template text="Were we to select one of these jewels for inspection," start="00:00:32.681" video="mainVideo" id=subtitle]]
+[[!template text="we would discover that in its polished surface" start="00:00:35.680" video="mainVideo" id=subtitle]]
+[[!template text="there are reflected" start="00:00:38.216" video="mainVideo" id=subtitle]]
+[[!template text="all the other jewels in the net," start="00:00:39.520" video="mainVideo" id=subtitle]]
+[[!template text="infinite in number." start="00:00:41.451" video="mainVideo" id=subtitle]]
+[[!template text="If we look still more closely," start="00:00:43.360" video="mainVideo" id=subtitle]]
+[[!template text="we would see that each of the jewels reflected in this one jewel" start="00:00:45.140" video="mainVideo" id=subtitle]]
+[[!template text="reflects all the others.&quot;" start="00:00:48.960" video="mainVideo" id=subtitle]]
+[[!template text="This is the metaphor of Indra's Net," start="00:00:51.264" video="mainVideo" id=subtitle]]
+[[!template text="which is told in some schools of philosophy." start="00:00:54.000" video="mainVideo" id=subtitle]]
+[[!template text="Let's keep this metaphor in mind," start="00:00:57.615" video="mainVideo" id=subtitle]]
+[[!template text="because it'll help us understand" start="00:01:00.160" video="mainVideo" id=subtitle]]
+[[!template text="the Emacs extension that we're about to discuss." start="00:01:01.773" video="mainVideo" id=subtitle]]
+[[!template new="1" text="In editing text, there's two main paradigms:" start="00:01:06.960" video="mainVideo" id=subtitle]]
+[[!template text="one is editing at the ground level," start="00:01:12.810" video="mainVideo" id=subtitle]]
+[[!template text="where the characters that we type" start="00:01:16.880" video="mainVideo" id=subtitle]]
+[[!template text="actually appear on the screen," start="00:01:19.439" video="mainVideo" id=subtitle]]
+[[!template text="the changes we make actually occur." start="00:01:22.159" video="mainVideo" id=subtitle]]
+[[!template text="The other editing paradigm" start="00:01:28.479" video="mainVideo" id=subtitle]]
+[[!template text="is where we escape to a higher level" start="00:01:30.126" video="mainVideo" id=subtitle]]
+[[!template text="and now the characters that we type are not..." start="00:01:33.439" video="mainVideo" id=subtitle]]
+[[!template text="They don't actually appear on the screen" start="00:01:36.479" video="mainVideo" id=subtitle]]
+[[!template text="because we're not at the ground level with the text," start="00:01:39.040" video="mainVideo" id=subtitle]]
+[[!template text="we are at a higher level" start="00:01:42.748" video="mainVideo" id=subtitle]]
+[[!template text="looking down at the text" start="00:01:44.799" video="mainVideo" id=subtitle]]
+[[!template text="and regarding the text," start="00:01:48.479" video="mainVideo" id=subtitle]]
+[[!template text="referring to this world of text in terms of a language." start="00:01:50.773" video="mainVideo" id=subtitle]]
+[[!template new="1" text="For instance, we could describe this" start="00:01:56.159" video="mainVideo" id=subtitle]]
+[[!template text="world as having words and paragraphs and sentences and lines and so on." start="00:01:57.920" video="mainVideo" id=subtitle]]
+[[!template text="We could reason about this text" start="00:02:03.404" video="mainVideo" id=subtitle]]
+[[!template text="in terms of these textual entities and this textual language." start="00:02:05.985" video="mainVideo" id=subtitle]]
+[[!template text="This is the second paradigm of text editing." start="00:02:13.120" video="mainVideo" id=subtitle]]
+[[!template text="When we're in the second paradigm," start="00:02:18.640" video="mainVideo" id=subtitle]]
+[[!template text="there is a way to go down to ground level." start="00:02:22.800" video="mainVideo" id=subtitle]]
+[[!template text="You hit Enter now--or we'll hit Enter to go down to the ground level," start="00:02:25.304" video="mainVideo" id=subtitle]]
+[[!template text="and you can hit Escape" start="00:02:28.997" video="mainVideo" id=subtitle]]
+[[!template text="to go back out to the referential level." start="00:02:30.480" video="mainVideo" id=subtitle]]
+[[!template text="Enter to go down to ground level" start="00:02:33.200" video="mainVideo" id=subtitle]]
+[[!template text="and Escape to go up to the referential level." start="00:02:35.200" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Now, in Vim, the nouns in this world of text" start="00:02:40.160" video="mainVideo" id=subtitle]]
+[[!template text="all share the same referential plane which we call normal mode." start="00:02:47.565" video="mainVideo" id=subtitle]]
+[[!template text="So in normal mode, all of the nouns" start="00:02:52.319" video="mainVideo" id=subtitle]]
+[[!template text="of the world of text are available," start="00:02:54.959" video="mainVideo" id=subtitle]]
+[[!template text="whether it's words or sentences or paragraphs," start="00:02:57.360" video="mainVideo" id=subtitle]]
+[[!template text="and they all share this same referential plane." start="00:03:00.959" video="mainVideo" id=subtitle]]
+[[!template text="They compete for space on the keyboard." start="00:03:08.319" video="mainVideo" id=subtitle]]
+[[!template new="1" text="An alternative way to structure these modes is" start="00:03:12.720" video="mainVideo" id=subtitle]]
+[[!template text="instead of having a single mode where all the nouns coexist," start="00:03:17.037" video="mainVideo" id=subtitle]]
+[[!template text="peacefully or otherwise," start="00:03:21.840" video="mainVideo" id=subtitle]]
+[[!template text="you instead have a dedicated mode for every noun." start="00:03:24.005" video="mainVideo" id=subtitle]]
+[[!template text="In that case, what happens is" start="00:03:30.400" video="mainVideo" id=subtitle]]
+[[!template text="because your modal spaces are now much smaller," start="00:03:32.540" video="mainVideo" id=subtitle]]
+[[!template text="you're just talking about words or paragraphs or lines or something," start="00:03:35.440" video="mainVideo" id=subtitle]]
+[[!template text="the keys that you use" start="00:03:40.593" video="mainVideo" id=subtitle]]
+[[!template text="can be much more targeted." start="00:03:42.560" video="mainVideo" id=subtitle]]
+[[!template text="You can use the same keystrokes" start="00:03:45.760" video="mainVideo" id=subtitle]]
+[[!template text="in all of your modes and they would have" start="00:03:48.560" video="mainVideo" id=subtitle]]
+[[!template text="the same ideas behind them," start="00:03:50.400" video="mainVideo" id=subtitle]]
+[[!template text="but they would have different effects" start="00:03:51.845" video="mainVideo" id=subtitle]]
+[[!template text="depending on which context you're using." start="00:03:53.280" video="mainVideo" id=subtitle]]
+[[!template text="It's the same keystrokes, different contexts." start="00:03:55.519" video="mainVideo" id=subtitle]]
+[[!template text="The advantage of that is it's often easier to change context" start="00:03:59.120" video="mainVideo" id=subtitle]]
+[[!template text="than it is to learn new key bindings." start="00:04:04.244" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So let's see an example of how that works." start="00:04:07.888" video="mainVideo" id=subtitle]]
+[[!template text="We go into character mode, and if you look at the mode line" start="00:04:11.289" video="mainVideo" id=subtitle]]
+[[!template text="at the bottom of the screen there," start="00:04:14.039" video="mainVideo" id=subtitle]]
+[[!template text="you'll see that we're in character mode." start="00:04:15.439" video="mainVideo" id=subtitle]]
+[[!template text="Now, when we move up, down, left, and right," start="00:04:18.720" video="mainVideo" id=subtitle]]
+[[!template text="we're moving by character." start="00:04:21.955" video="mainVideo" id=subtitle]]
+[[!template text="We can also transform the text," start="00:04:23.919" video="mainVideo" id=subtitle]]
+[[!template text="and the transformations occur in terms of character." start="00:04:28.088" video="mainVideo" id=subtitle]]
+[[!template text="You can also go into word mode." start="00:04:32.400" video="mainVideo" id=subtitle]]
+[[!template text="In word mode, the transformations that you do are on words." start="00:04:34.207" video="mainVideo" id=subtitle]]
+[[!template text="and you try... Your movement is also in terms of words." start="00:04:40.000" video="mainVideo" id=subtitle]]
+[[!template text="So that's the level of granularity that you have." start="00:04:43.440" video="mainVideo" id=subtitle]]
+[[!template text="You could also go to line mode." start="00:04:46.560" video="mainVideo" id=subtitle]]
+[[!template text="When you're in line mode," start="00:04:49.191" video="mainVideo" id=subtitle]]
+[[!template text="you go up and down by line," start="00:04:50.720" video="mainVideo" id=subtitle]]
+[[!template text="and you can move lines" start="00:04:52.901" video="mainVideo" id=subtitle]]
+[[!template text="up and down left and right and so on." start="00:04:54.240" video="mainVideo" id=subtitle]]
+[[!template text="The transformations you do are in" start="00:04:59.120" video="mainVideo" id=subtitle]]
+[[!template text="terms of lines." start="00:05:00.880" video="mainVideo" id=subtitle]]
+[[!template text="You could also go to window mode," start="00:05:02.800" video="mainVideo" id=subtitle]]
+[[!template text="where now the objects that you're referring to are windows." start="00:05:07.682" video="mainVideo" id=subtitle]]
+[[!template text="You can move spatially amongst the windows" start="00:05:11.695" video="mainVideo" id=subtitle]]
+[[!template text="or do transformations on the windows" start="00:05:15.578" video="mainVideo" id=subtitle]]
+[[!template text="using the same keystrokes." start="00:05:17.520" video="mainVideo" id=subtitle]]
+[[!template text="So let's go to..." start="00:05:25.360" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Right. One of the things," start="00:05:28.720" video="mainVideo" id=subtitle]]
+[[!template text="the principles at play here" start="00:05:32.800" video="mainVideo" id=subtitle]]
+[[!template text="is something called the Rumpelstiltskin principle," start="00:05:35.114" video="mainVideo" id=subtitle]]
+[[!template text="which is something that's known in computer science." start="00:05:37.266" video="mainVideo" id=subtitle]]
+[[!template text="If you can name something," start="00:05:40.720" video="mainVideo" id=subtitle]]
+[[!template text="then you have power over it." start="00:05:42.113" video="mainVideo" id=subtitle]]
+[[!template text="This is kind of an adaptation of that principle" start="00:05:45.824" video="mainVideo" id=subtitle]]
+[[!template text="which says that if you can name something" start="00:05:48.560" video="mainVideo" id=subtitle]]
+[[!template text="and if you can talk about it," start="00:05:51.123" video="mainVideo" id=subtitle]]
+[[!template text="then it's a noun in your editing language." start="00:05:52.572" video="mainVideo" id=subtitle]]
+[[!template text="If it's a noun, then it has..." start="00:05:56.334" video="mainVideo" id=subtitle]]
+[[!template text="It's a mode. So if we can talk about it, it's a noun." start="00:05:58.960" video="mainVideo" id=subtitle]]
+[[!template text="If it's a noun, then it's a mode." start="00:06:02.319" video="mainVideo" id=subtitle]]
+[[!template new="1" text="One of the things we've been talking a lot about is modes." start="00:06:04.818" video="mainVideo" id=subtitle]]
+[[!template text="In fact, by this principle," start="00:06:08.919" video="mainVideo" id=subtitle]]
+[[!template text="modes also should be a mode." start="00:06:12.699" video="mainVideo" id=subtitle]]
+[[!template text="You should have a mode that can reason" start="00:06:17.280" video="mainVideo" id=subtitle]]
+[[!template text="in terms of modes as objects," start="00:06:19.039" video="mainVideo" id=subtitle]]
+[[!template text="just like you have modes" start="00:06:20.639" video="mainVideo" id=subtitle]]
+[[!template text="where you can reason in terms of" start="00:06:22.300" video="mainVideo" id=subtitle]]
+[[!template text="words or lines as objects." start="00:06:23.759" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So let's do that. Let's go to mode mode." start="00:06:26.560" video="mainVideo" id=subtitle]]
+[[!template text="When you go to mode mode, you see that" start="00:06:30.479" video="mainVideo" id=subtitle]]
+[[!template text="the objects that are depicted here" start="00:06:34.000" video="mainVideo" id=subtitle]]
+[[!template text="are the modes that are present in the buffer," start="00:06:35.915" video="mainVideo" id=subtitle]]
+[[!template text="which we knew about because" start="00:06:40.960" video="mainVideo" id=subtitle]]
+[[!template text="the style of editing that we had in this buffer" start="00:06:44.500" video="mainVideo" id=subtitle]]
+[[!template text="was the Vim style of editing" start="00:06:46.797" video="mainVideo" id=subtitle]]
+[[!template text="where there's an insert mode at the ground level" start="00:06:48.720" video="mainVideo" id=subtitle]]
+[[!template text="and a normal mode that you can escape to." start="00:06:51.143" video="mainVideo" id=subtitle]]
+[[!template text="You insert, enter the ground level." start="00:06:53.039" video="mainVideo" id=subtitle]]
+[[!template text="Enter to the insert mode and escape to normal mode." start="00:06:57.280" video="mainVideo" id=subtitle]]
+[[!template text="When you look at the mode mode representation," start="00:07:01.352" video="mainVideo" id=subtitle]]
+[[!template text="you see that in fact that" start="00:07:04.647" video="mainVideo" id=subtitle]]
+[[!template text="is the structure that's depicted." start="00:07:06.160" video="mainVideo" id=subtitle]]
+[[!template text="But in different situations, you might find" start="00:07:10.479" video="mainVideo" id=subtitle]]
+[[!template text="that these modes are not the" start="00:07:14.080" video="mainVideo" id=subtitle]]
+[[!template text="ones that you want." start="00:07:16.080" video="mainVideo" id=subtitle]]
+[[!template text="You want something more tailored for the specific application." start="00:07:16.922" video="mainVideo" id=subtitle]]
+[[!template text="For instance, if you're editing Lisp code" start="00:07:20.880" video="mainVideo" id=subtitle]]
+[[!template text="(or code in general, but" start="00:07:25.065" video="mainVideo" id=subtitle]]
+[[!template text="Lisp code is a particular example)," start="00:07:27.360" video="mainVideo" id=subtitle]]
+[[!template text="you might want to take advantage" start="00:07:30.880" video="mainVideo" id=subtitle]]
+[[!template text="of the structure of the code." start="00:07:32.640" video="mainVideo" id=subtitle]]
+[[!template text="For Lisp code in particular," start="00:07:34.852" video="mainVideo" id=subtitle]]
+[[!template text="we have a mode called symex-mode" start="00:07:37.599" video="mainVideo" id=subtitle]]
+[[!template text="which is able to reason about your code" start="00:07:40.960" video="mainVideo" id=subtitle]]
+[[!template text="in terms of its tree structure." start="00:07:45.414" video="mainVideo" id=subtitle]]
+[[!template text="So you can use the same keystrokes: hjkl goes left, right, up, and down," start="00:07:47.919" video="mainVideo" id=subtitle]]
+[[!template text="but you also have other keystrokes that are more specialized to the application." start="00:07:52.397" video="mainVideo" id=subtitle]]
+[[!template text="You can run the code." start="00:07:58.080" video="mainVideo" id=subtitle]]
+[[!template text="We'll see that happen here in a minute." start="00:08:01.520" video="mainVideo" id=subtitle]]
+[[!template text="You can make changes to it really quickly" start="00:08:06.960" video="mainVideo" id=subtitle]]
+[[!template text="and see the effects of those changes." start="00:08:12.240" video="mainVideo" id=subtitle]]
+[[!template text="You're doing this all in a mode" start="00:08:18.000" video="mainVideo" id=subtitle]]
+[[!template text="that's convenient for this particular application," start="00:08:19.440" video="mainVideo" id=subtitle]]
+[[!template text="which is editing Lisp code," start="00:08:22.625" video="mainVideo" id=subtitle]]
+[[!template text="and that is, in this case, symex-mode." start="00:08:25.039" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Typically, when you're editing code like this," start="00:08:28.960" video="mainVideo" id=subtitle]]
+[[!template text="you'd want to be in insert mode" start="00:08:31.631" video="mainVideo" id=subtitle]]
+[[!template text="actually typing out the code," start="00:08:33.435" video="mainVideo" id=subtitle]]
+[[!template text="and then you'd want to escape to symex mode rather than normal mode," start="00:08:36.640" video="mainVideo" id=subtitle]]
+[[!template text="and then you could escape again" start="00:08:40.959" video="mainVideo" id=subtitle]]
+[[!template text="and you'd end up in normal mode." start="00:08:42.021" video="mainVideo" id=subtitle]]
+[[!template text="So this, if we go to mode mode, we see is depicted" start="00:08:44.080" video="mainVideo" id=subtitle]]
+[[!template text="as this tower where insert is at the" start="00:08:48.000" video="mainVideo" id=subtitle]]
+[[!template text="bottom and normal is at the top," start="00:08:51.040" video="mainVideo" id=subtitle]]
+[[!template text="but symex-mode is in between the two." start="00:08:52.604" video="mainVideo" id=subtitle]]
+[[!template text="You could also change that if you like." start="00:08:55.305" video="mainVideo" id=subtitle]]
+[[!template text="If you don't want symex-mode to be there," start="00:08:57.551" video="mainVideo" id=subtitle]]
+[[!template text="you could just move it to the top." start="00:08:59.566" video="mainVideo" id=subtitle]]
+[[!template text="Now you find symex is at the top" start="00:09:02.187" video="mainVideo" id=subtitle]]
+[[!template text="and you enter down to normal." start="00:09:04.392" video="mainVideo" id=subtitle]]
+[[!template text="You can see it on the status bar at the bottom there." start="00:09:06.160" video="mainVideo" id=subtitle]]
+[[!template text="Enter to insert, escape to normal, escape to symex." start="00:09:08.848" video="mainVideo" id=subtitle]]
+[[!template text="In fact, you can even add more modes" start="00:09:13.839" video="mainVideo" id=subtitle]]
+[[!template text="if you don't like the existing ones." start="00:09:16.344" video="mainVideo" id=subtitle]]
+[[!template text="Now we have an additional mode here." start="00:09:21.519" video="mainVideo" id=subtitle]]
+[[!template text="We have window mode. It goes down to symex," start="00:09:23.839" video="mainVideo" id=subtitle]]
+[[!template text="it goes down to normal." start="00:09:25.855" video="mainVideo" id=subtitle]]
+[[!template text="Enter the insert, escape to normal," start="00:09:27.519" video="mainVideo" id=subtitle]]
+[[!template text="escape to symex, escape to window." start="00:09:29.919" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So we've talked... Okay, so another thing actually to note here" start="00:09:33.600" video="mainVideo" id=subtitle]]
+[[!template text="is that in editing modes," start="00:09:41.232" video="mainVideo" id=subtitle]]
+[[!template text="if you look at the mode line" start="00:09:45.360" video="mainVideo" id=subtitle]]
+[[!template text="at the bottom of the screen," start="00:09:46.486" video="mainVideo" id=subtitle]]
+[[!template text="you'll see that we are currently," start="00:09:48.399" video="mainVideo" id=subtitle]]
+[[!template text="in this buffer," start="00:09:50.257" video="mainVideo" id=subtitle]]
+[[!template text="we are currently in line mode." start="00:09:51.519" video="mainVideo" id=subtitle]]
+[[!template text="I'm going to hit Enter now" start="00:09:54.560" video="mainVideo" id=subtitle]]
+[[!template text="and you'll see that when I hit Enter," start="00:09:57.296" video="mainVideo" id=subtitle]]
+[[!template text="nothing is happening." start="00:09:59.119" video="mainVideo" id=subtitle]]
+[[!template text="It's still in line mode." start="00:10:00.627" video="mainVideo" id=subtitle]]
+[[!template text="If you hit Escape, it's still in line mode." start="00:10:02.160" video="mainVideo" id=subtitle]]
+[[!template text="You can find out the reason for that" start="00:10:05.120" video="mainVideo" id=subtitle]]
+[[!template text="by taking another meta jump out of this." start="00:10:07.200" video="mainVideo" id=subtitle]]
+[[!template text="You'll see that, in fact, the reason" start="00:10:10.640" video="mainVideo" id=subtitle]]
+[[!template text="is that we're currently in line mode," start="00:10:12.800" video="mainVideo" id=subtitle]]
+[[!template text="and line mode is the only one available" start="00:10:15.279" video="mainVideo" id=subtitle]]
+[[!template text="in this tower" start="00:10:17.360" video="mainVideo" id=subtitle]]
+[[!template text="for editing the modes that are" start="00:10:19.519" video="mainVideo" id=subtitle]]
+[[!template text="in operation in your ground level." start="00:10:21.556" video="mainVideo" id=subtitle]]
+[[!template text="In fact, line mode is all you need here," start="00:10:24.880" video="mainVideo" id=subtitle]]
+[[!template text="because this is just the nature of how these modes are laid out is in rows." start="00:10:26.898" video="mainVideo" id=subtitle]]
+[[!template text="So line mode is the most appropriate thing here." start="00:10:32.796" video="mainVideo" id=subtitle]]
+[[!template text="But you could change it to something else if you like." start="00:10:36.399" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Now we've seen two towers." start="00:10:40.959" video="mainVideo" id=subtitle]]
+[[!template text="We've seen the Vim tower and we've seen also the symex tower, the Lisp tower." start="00:10:43.659" video="mainVideo" id=subtitle]]
+[[!template text="It turns out that, because we've been talking about towers now," start="00:10:53.680" video="mainVideo" id=subtitle]]
+[[!template text="by the Rumpelstiltskin principle, towers also can be talked about," start="00:10:58.880" video="mainVideo" id=subtitle]]
+[[!template text="and therefore they also are a mode." start="00:11:06.399" video="mainVideo" id=subtitle]]
+[[!template text="So how do we go to tower mode?" start="00:11:09.127" video="mainVideo" id=subtitle]]
+[[!template text="The way we go to tower mode is" start="00:11:11.200" video="mainVideo" id=subtitle]]
+[[!template text="we go in a slightly different direction," start="00:11:14.640" video="mainVideo" id=subtitle]]
+[[!template text="and we find that we are now in tower mode." start="00:11:19.200" video="mainVideo" id=subtitle]]
+[[!template text="We see that there are many towers available. We're now..." start="00:11:23.360" video="mainVideo" id=subtitle]]
+[[!template text="We're seeing several possible towers" start="00:11:29.279" video="mainVideo" id=subtitle]]
+[[!template text="that we have written to be available and for use in different buffers." start="00:11:33.440" video="mainVideo" id=subtitle]]
+[[!template text="You can edit them on the fly." start="00:11:40.344" video="mainVideo" id=subtitle]]
+[[!template text="For instance, let's enter this tower." start="00:11:42.110" video="mainVideo" id=subtitle]]
+[[!template text="Now you see that in the bottom of the..." start="00:11:48.000" video="mainVideo" id=subtitle]]
+[[!template text="In the mode line, you see that we're" start="00:11:50.180" video="mainVideo" id=subtitle]]
+[[!template text="going across all of these different modes" start="00:11:51.519" video="mainVideo" id=subtitle]]
+[[!template text="that were in the tower." start="00:11:53.944" video="mainVideo" id=subtitle]]
+[[!template text="You could escape and you could even move things around." start="00:11:56.480" video="mainVideo" id=subtitle]]
+[[!template text="You could put window mode" start="00:11:59.724" video="mainVideo" id=subtitle]]
+[[!template text="all the way at the bottom," start="00:12:00.880" video="mainVideo" id=subtitle]]
+[[!template text="right above insert mode." start="00:12:02.573" video="mainVideo" id=subtitle]]
+[[!template text="Let's see that happen. There it is," start="00:12:04.079" video="mainVideo" id=subtitle]]
+[[!template text="window is right above insert, and so on." start="00:12:06.479" video="mainVideo" id=subtitle]]
+[[!template text="The tower always reflects your current position," start="00:12:10.444" video="mainVideo" id=subtitle]]
+[[!template text="so if you're in buffer mode here and you go down to line mode," start="00:12:14.240" video="mainVideo" id=subtitle]]
+[[!template text="when you go back to mode mode, you see that we are in line mode." start="00:12:17.600" video="mainVideo" id=subtitle]]
+[[!template text="But in practice, you wouldn't have a tower this elaborate" start="00:12:22.480" video="mainVideo" id=subtitle]]
+[[!template text="because you'd rather have several smaller towers you enter," start="00:12:25.620" video="mainVideo" id=subtitle]]
+[[!template text="that you alternate between." start="00:12:29.440" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Okay. So one other thing of interest here is that" start="00:12:33.360" video="mainVideo" id=subtitle]]
+[[!template text="when you're in tower mode," start="00:12:39.839" video="mainVideo" id=subtitle]]
+[[!template text="if you look at the status line at the bottom there," start="00:12:42.240" video="mainVideo" id=subtitle]]
+[[!template text="we are currently in buffer mode while we are in tower mode." start="00:12:44.740" video="mainVideo" id=subtitle]]
+[[!template text="Tower mode actually isn't a mode really. Neither is mode mode." start="00:12:49.839" video="mainVideo" id=subtitle]]
+[[!template text="They're really referential planes or meta planes." start="00:12:53.151" video="mainVideo" id=subtitle]]
+[[!template text="In any case, you can see that we're in buffer mode." start="00:12:58.000" video="mainVideo" id=subtitle]]
+[[!template text="We can take a meta jump out of this" start="00:13:01.679" video="mainVideo" id=subtitle]]
+[[!template text="to confirm that buffer mode is the only mode available" start="00:13:03.840" video="mainVideo" id=subtitle]]
+[[!template text="when we're editing towers" start="00:13:08.000" video="mainVideo" id=subtitle]]
+[[!template text="because that's the one we need," start="00:13:09.664" video="mainVideo" id=subtitle]]
+[[!template text="given that our towers are represented in individual buffers." start="00:13:11.915" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Right. So let's see where we're at." start="00:13:23.200" video="mainVideo" id=subtitle]]
+[[!template text="Rumpelstiltskin principle..." start="00:13:26.320" video="mainVideo" id=subtitle]]
+[[!template text="We talked about mode mode." start="00:13:27.785" video="mainVideo" id=subtitle]]
+[[!template text="We talked about the strange loop" start="00:13:30.160" video="mainVideo" id=subtitle]]
+[[!template text="application of ground level modes in meta levels." start="00:13:32.240" video="mainVideo" id=subtitle]]
+[[!template text="We saw the different towers," start="00:13:39.600" video="mainVideo" id=subtitle]]
+[[!template text="and in fact, we're currently in Vim tower," start="00:13:41.992" video="mainVideo" id=subtitle]]
+[[!template text="where you can go to Emacs tower." start="00:13:50.720" video="mainVideo" id=subtitle]]
+[[!template text="Now, with a single keystroke, you can" start="00:13:52.860" video="mainVideo" id=subtitle]]
+[[!template text="alternate between Emacs and Vim," start="00:13:54.720" video="mainVideo" id=subtitle]]
+[[!template text="which are represented--" start="00:13:59.695" video="mainVideo" id=subtitle]]
+[[!template text="which are modeled as towers." start="00:14:01.638" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So there's... One thing" start="00:14:13.360" video="mainVideo" id=subtitle]]
+[[!template text="that we've sort of alluded to is that there are two directions" start="00:14:14.760" video="mainVideo" id=subtitle]]
+[[!template text="that you can travel in" start="00:14:18.160" video="mainVideo" id=subtitle]]
+[[!template text="when you're going through this framework." start="00:14:19.494" video="mainVideo" id=subtitle]]
+[[!template text="One direction is--and we'll visualize it like so..." start="00:14:22.399" video="mainVideo" id=subtitle]]
+[[!template text="There's two directions you can travel," start="00:14:33.760" video="mainVideo" id=subtitle]]
+[[!template text="and you can either go sideways or you" start="00:14:35.120" video="mainVideo" id=subtitle]]
+[[!template text="can go up and down." start="00:14:37.040" video="mainVideo" id=subtitle]]
+[[!template text="If you go sideways, you're changing your perspective." start="00:14:38.399" video="mainVideo" id=subtitle]]
+[[!template text="So normal mode, word mode, line mode," start="00:14:41.680" video="mainVideo" id=subtitle]]
+[[!template text="window mode, and so on" start="00:14:45.440" video="mainVideo" id=subtitle]]
+[[!template text="are all different perspectives on your ground editing experience." start="00:14:46.544" video="mainVideo" id=subtitle]]
+[[!template text="The other direction you can travel in" start="00:14:51.680" video="mainVideo" id=subtitle]]
+[[!template text="is up or down, which takes you through meta levels." start="00:14:53.265" video="mainVideo" id=subtitle]]
+[[!template text="So you go from the ground level editing experience," start="00:14:56.811" video="mainVideo" id=subtitle]]
+[[!template text="up to mode mode, and then up to the tower plane, and so on, and so on." start="00:14:59.600" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So this all sounds very complex," start="00:15:07.040" video="mainVideo" id=subtitle]]
+[[!template text="but the truth is it's not really that complicated," start="00:15:12.568" video="mainVideo" id=subtitle]]
+[[!template text="even though it feels that way." start="00:15:18.160" video="mainVideo" id=subtitle]]
+[[!template text="The reason it isn't that complicated" start="00:15:20.699" video="mainVideo" id=subtitle]]
+[[!template text="is because no matter how many levels" start="00:15:22.959" video="mainVideo" id=subtitle]]
+[[!template text="up or down you go and no matter where you are," start="00:15:26.480" video="mainVideo" id=subtitle]]
+[[!template text="whether you're in at the ground level" start="00:15:30.160" video="mainVideo" id=subtitle]]
+[[!template text="editing the actual text" start="00:15:32.399" video="mainVideo" id=subtitle]]
+[[!template text="or whether you're at a meta level," start="00:15:34.079" video="mainVideo" id=subtitle]]
+[[!template text="some unknown meta level and you don't know where you are," start="00:15:35.802" video="mainVideo" id=subtitle]]
+[[!template text="no matter where you are," start="00:15:39.279" video="mainVideo" id=subtitle]]
+[[!template text="the way in which you interact with it" start="00:15:41.133" video="mainVideo" id=subtitle]]
+[[!template text="is the same at every level." start="00:15:44.399" video="mainVideo" id=subtitle]]
+[[!template text="That is the great power of this approach:" start="00:15:47.519" video="mainVideo" id=subtitle]]
+[[!template text="that all of the different levels are the same." start="00:15:54.751" video="mainVideo" id=subtitle]]
+[[!template text="In fact, the complexity of the whole" start="00:16:00.880" video="mainVideo" id=subtitle]]
+[[!template text="is exactly identical to" start="00:16:03.839" video="mainVideo" id=subtitle]]
+[[!template text="the complexity of each part," start="00:16:05.545" video="mainVideo" id=subtitle]]
+[[!template text="so if you know how to edit words" start="00:16:07.657" video="mainVideo" id=subtitle]]
+[[!template text="in the ground level buffer" start="00:16:10.000" video="mainVideo" id=subtitle]]
+[[!template text="and you know how to move lines around using line mode," start="00:16:12.048" video="mainVideo" id=subtitle]]
+[[!template text="then you know how to edit any aspect of your editing experience at any level." start="00:16:15.378" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So this is a pre-release demo." start="00:16:30.079" video="mainVideo" id=subtitle]]
+[[!template text="This doesn't exist on MELPA yet, but you can follow updates at this repo on github." start="00:16:31.780" video="mainVideo" id=subtitle]]
+[[!template text="If you can also be a beta tester" start="00:16:40.079" video="mainVideo" id=subtitle]]
+[[!template text="or something like that, if you like, that would be very helpful." start="00:16:43.850" video="mainVideo" id=subtitle]]
+[[!template text="You can learn more about this at" start="00:16:46.775" video="mainVideo" id=subtitle]]
+[[!template text="drym.org, which is where I house" start="00:16:50.560" video="mainVideo" id=subtitle]]
+[[!template text="the research that I work on." start="00:16:53.920" video="mainVideo" id=subtitle]]
+[[!template text="In particular, the research on epistemic levels" start="00:16:55.726" video="mainVideo" id=subtitle]]
+[[!template text="is what inspired this particular Emacs extension." start="00:17:00.154" video="mainVideo" id=subtitle]]
+[[!template text="You can also learn about" start="00:17:03.600" video="mainVideo" id=subtitle]]
+[[!template text="dialectical inheritance attribution, which is the basis of" start="00:17:05.600" video="mainVideo" id=subtitle]]
+[[!template text="a new economic system that could be fair" start="00:17:10.880" video="mainVideo" id=subtitle]]
+[[!template text="and could lead to a prosperous and happy world." start="00:17:14.559" video="mainVideo" id=subtitle]]
+[[!template text="You can follow me on Twitter at @countvajhula." start="00:17:19.439" video="mainVideo" id=subtitle]]
+[[!template text="That's it! Thank you." start="00:17:26.319" video="mainVideo" id=subtitle]]
diff --git a/2020/info/15.md b/2020/info/15.md
index 98c711e1..297b6cfe 100644
--- a/2020/info/15.md
+++ b/2020/info/15.md
@@ -53,100 +53,27 @@ website.
<a name="transcript"></a>
# Transcript
-00:00:00.080 --> 00:00:03.120
-Adolfo: Okay, excellent.
-
-00:00:03.120 --> 00:00:06.960
-Hello, everyone and
-
-00:00:06.960 --> 00:00:10.080
-nice meeting you. Let me
-
-00:00:10.080 --> 00:00:12.400
-thank the the organizer for all the
-
-00:00:12.400 --> 00:00:13.920
-organization and all the work they are
-
-00:00:13.920 --> 00:00:15.200
-doing to support us.
-
-00:00:15.200 --> 00:00:18.400
-My name is Adolfo Villafiorita.
-
-00:00:18.400 --> 00:00:20.733
-I'm teaching at the University of
-Trento.
-
-00:00:20.733 --> 00:00:24.480
-I will shortly be working at
-
-00:00:24.480 --> 00:00:26.240
-shared.tech, which is
-
-00:00:26.240 --> 00:00:29.359
-a non-profit organization developing
-
-00:00:29.359 --> 00:00:30.530
-applications to
-
-00:00:32.399 --> 00:00:35.680
-recover surplus food.
-
-00:00:35.680 --> 00:00:38.600
-The reason of the talk today
-
-00:00:38.600 --> 00:00:40.079
-and the reason I'm here today
-
-00:00:40.079 --> 00:00:42.719
-is to talk about my experience in moving
-
-00:00:42.719 --> 00:00:47.200
-from Jekyll static website generator to
-Org Mode.
-
-00:00:47.200 --> 00:00:50.700
-The reason I moved to Org Mode
-
-00:00:50.700 --> 00:00:53.100
-is to have better support for
-
-00:00:53.100 --> 00:00:56.800
-literate programming on the websites
-
-00:00:56.800 --> 00:00:58.399
-at the University of Trento, where we
-
-00:00:58.399 --> 00:01:00.480
-make available the content for the
-
-00:01:00.480 --> 00:01:04.720
-the students.
-
-00:01:04.720 --> 00:01:08.900
-First of all, what is a static
-website generator?
-
-00:01:08.900 --> 00:01:10.080
-It is basically a tool which
-
-00:01:10.080 --> 00:01:11.360
-allows you to
-
-00:01:11.360 --> 00:01:15.360
-generate HTML files out of text files
-
-00:01:15.360 --> 00:01:17.439
-containing basically two types of
-
-00:01:17.439 --> 00:01:20.700
-information: metadata and content.
+00:00:00.080 --> 00:00:03.120 Adolfo: Okay, excellent. Hello, everyone
+and nice meeting you. Let me thank the the organizer for all the
+organization and all the work they are doing to support us. My name is
+Adolfo Villafiorita. I'm teaching at the University of Trento. I will
+shortly be working at shared.tech, which is a non-profit organization
+developing applications to recover surplus food.
+
+00:00:35.680 --> 00:00:38.600 The reason of the talk today and the
+reason I'm here today is to talk about my experience in moving from
+Jekyll static website generator to Org Mode. The reason I moved to Org
+Mode is to have better support for literate programming on the
+websites at the University of Trento, where we make available the
+content for the the students.
+
+00:01:04.720 --> 00:01:08.900 First of all, what is a static website
+generator? It is basically a tool which allows you to generate HTML
+files out of text files containing basically two types of information:
+metadata and content.
00:01:20.700 --> 00:01:23.119
Metadata is a
-
-00:01:23.119 --> 00:01:26.159
set of key pairs describing the
00:01:26.159 --> 00:01:28.560
diff --git a/2020/info/20.md b/2020/info/20.md
index 4e346503..51024c41 100644
--- a/2020/info/20.md
+++ b/2020/info/20.md
@@ -1,8 +1,9 @@
# OMG Macros
Corwin Brust
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--20-omg-macros--corwin-brust.webm" subtitles="/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust.vtt"]]
-[Download compressed .webm video (24.3M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--20-omg-macros--corwin-brust--vp9-q56-video-original-audio.webm)
+[[!template id=vid vidid="mainVideo" src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--20-omg-macros--corwin-brust.webm" subtitles="/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust.vtt"]]
+[Download compressed .webm video (24.3M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--20-omg-macros--corwin-brust--vp9-q56-video-original-audio.webm)
+[View transcript](#transcript)
Macros are a powerful tool. In the context of Emacs Lisp programming
they can also provide us with a "foot-gun" of immense proportions.
@@ -47,3 +48,486 @@ Macros are powerful and necessary. Consider how you use them?
## Do you mind if I use your macro code as inspiration for an elisp uglifier?
Have At! It's GPLv3 and you are welcome; let me know if you have any
trouble finding fruit to throw.
+
+<a name="transcript"></a>
+# Transcript
+
+[[!template id=subtitle video="mainVideo" start="00:00:00.480" text="Good evening again. I think"]]
+[[!template id=subtitle video="mainVideo" start="00:00:02.796" text="I have a little time here"]]
+[[!template id=subtitle video="mainVideo" start="00:00:04.319" text="to talk about macros."]]
+[[!template id=subtitle video="mainVideo" start="00:00:06.447" text="Is there still room in our schedule for that,"]]
+[[!template id=subtitle video="mainVideo" start="00:00:09.440" text="or should I just jump to some of"]]
+[[!template id=subtitle video="mainVideo" start="00:00:11.440" text="my thoughts on the day?"]]
+[[!template id=subtitle video="mainVideo" start="00:00:12.559" text="(Amin: Pretty sure we"]]
+[[!template id=subtitle video="mainVideo" start="00:00:15.920" text="have some time.)"]]
+[[!template id=subtitle video="mainVideo" start="00:00:17.039" text="Corwin: All right. Great. (Amin: Yeah, go for it.)"]]
+[[!template id=subtitle video="mainVideo" start="00:00:19.039" text="Well, I'll just dive into my"]]
+[[!template id=subtitle video="mainVideo" start="00:00:20.720" text="prepared thing here then."]]
+[[!template id=subtitle video="mainVideo" start="00:00:22.384" text="(Amin: yeah, actually, you're right on time, so...)"]]
+[[!template id=subtitle video="mainVideo" start="00:00:24.720" text="Corwin: oh what an amazing thing."]]
+[[!template id=subtitle video="mainVideo" start="00:00:27.664" text="I just... You know, I have been trying to do what I..."]]
+[[!template id=subtitle video="mainVideo" start="00:00:31.199" text="I've got a big thank you planned"]]
+[[!template id=subtitle video="mainVideo" start="00:00:33.040" text="at the end, but let me just say,"]]
+[[!template id=subtitle video="mainVideo" start="00:00:36.239" text="it's been really cool to watch the"]]
+[[!template id=subtitle video="mainVideo" start="00:00:39.200" text="way that people work together."]]
+[[!template id=subtitle video="mainVideo" start="00:00:42.160" text="(Amin: Absolutely. It's... This whole event today has been"]]
+[[!template id=subtitle video="mainVideo" start="00:00:46.800" text="nothing but awesome, and"]]
+[[!template id=subtitle video="mainVideo" start="00:00:50.879" text="no little part thanks to all of the help"]]
+[[!template id=subtitle video="mainVideo" start="00:00:53.120" text="from all of you guys and everyone."]]
+[[!template id=subtitle video="mainVideo" start="00:00:56.909" text="Yeah, it's awesome."]]
+[[!template id=subtitle video="mainVideo" start="00:00:59.120" text="With that, I'll just shut up for now."]]
+[[!template id=subtitle video="mainVideo" start="00:01:03.065" text="Take it away, Corwin.)"]]
+[[!template id=subtitle video="mainVideo" start="00:01:04.891" text="Corwin: Who knows how to make"]]
+[[!template id=subtitle video="mainVideo" start="00:01:06.479" text="make that the default in good old smex?"]]
+
+[[!template id=subtitle video="mainVideo" start="00:01:09.840" text="All right. So I'm gonna try to continue"]]
+[[!template id=subtitle video="mainVideo" start="00:01:12.799" text="my theme from the previous talk."]]
+[[!template id=subtitle video="mainVideo" start="00:01:14.551" text="I'm a longtime Emacs user,"]]
+[[!template id=subtitle video="mainVideo" start="00:01:16.393" text="but I'm a pretty new person"]]
+[[!template id=subtitle video="mainVideo" start="00:01:20.240" text="to trying to really understand"]]
+[[!template id=subtitle video="mainVideo" start="00:01:22.380" text="what's going on within Emacs and make"]]
+[[!template id=subtitle video="mainVideo" start="00:01:24.960" text="my customizations to it--simple for"]]
+[[!template id=subtitle video="mainVideo" start="00:01:28.240" text="what I tend to just think of will work."]]
+[[!template id=subtitle video="mainVideo" start="00:01:30.960" text="And maybe that's a nice bow"]]
+[[!template id=subtitle video="mainVideo" start="00:01:33.566" text="to put on that earlier talk."]]
+[[!template id=subtitle video="mainVideo" start="00:01:40.479" text="Let's see here now. It's C-x M-i."]]
+[[!template id=subtitle video="mainVideo" start="00:01:44.981" text="That's right."]]
+[[!template id=subtitle video="mainVideo" start="00:01:48.159" text="And let's try that again. Okay, good."]]
+[[!template id=subtitle video="mainVideo" start="00:01:52.960" text="So demoing is fun,"]]
+[[!template id=subtitle video="mainVideo" start="00:01:55.240" text="but I will save most of that"]]
+[[!template id=subtitle video="mainVideo" start="00:01:57.192" text="for tomorrow where my"]]
+[[!template id=subtitle video="mainVideo" start="00:01:59.759" text="dear friend and co-collaborator"]]
+[[!template id=subtitle video="mainVideo" start="00:02:02.750" text="in bringing you the dungeon-mode project,"]]
+[[!template id=subtitle video="mainVideo" start="00:02:04.799" text="which is sort of the exciting thing"]]
+[[!template id=subtitle video="mainVideo" start="00:02:07.261" text="that we hope you'll be interested in,"]]
+[[!template id=subtitle video="mainVideo" start="00:02:10.800" text="gets a little more of a reveal."]]
+
+[[!template id=subtitle video="mainVideo" start="00:02:15.680" text="Tonight, I'll just close saying"]]
+[[!template id=subtitle video="mainVideo" start="00:02:19.360" text="a few things about the process of"]]
+[[!template id=subtitle video="mainVideo" start="00:02:22.640" text="making it and continuing my theme of community."]]
+[[!template id=subtitle video="mainVideo" start="00:02:25.680" text="First of all, a specific and upfront shout out"]]
+[[!template id=subtitle video="mainVideo" start="00:02:29.760" text="to tv's wasamasa who"]]
+[[!template id=subtitle video="mainVideo" start="00:02:33.120" text="absolutely shaped and guided this"]]
+[[!template id=subtitle video="mainVideo" start="00:02:36.239" text="this program. I may have taken out"]]
+[[!template id=subtitle video="mainVideo" start="00:02:38.582" text="a slide with your name on it,"]]
+[[!template id=subtitle video="mainVideo" start="00:02:39.898" text="but thank you."]]
+
+[[!template id=subtitle video="mainVideo" start="00:02:43.599" text="So when we think about Emacs macros"]]
+[[!template id=subtitle video="mainVideo" start="00:02:46.479" text="and the power that they give us,"]]
+[[!template id=subtitle video="mainVideo" start="00:02:53.280" text="I think about them as a really"]]
+[[!template id=subtitle video="mainVideo" start="00:02:54.720" text="deep rabbit hole. They confuse"]]
+[[!template id=subtitle video="mainVideo" start="00:02:56.400" text="people a lot. And so, to try to center"]]
+[[!template id=subtitle video="mainVideo" start="00:03:00.239" text="myself on that, I remember first that"]]
+[[!template id=subtitle video="mainVideo" start="00:03:03.599" text="they're going to be talking to us about code."]]
+[[!template id=subtitle video="mainVideo" start="00:03:09.599" text="Excuse me, I realize I hadn't set my timer."]]
+[[!template id=subtitle video="mainVideo" start="00:03:13.519" text="Here we are."]]
+
+[[!template id=subtitle video="mainVideo" start="00:03:18.000" text="So a simple macro syntax is"]]
+[[!template id=subtitle video="mainVideo" start="00:03:20.543" text="going to generate"]]
+[[!template id=subtitle video="mainVideo" start="00:03:22.239" text="something that is implicitly confusing"]]
+[[!template id=subtitle video="mainVideo" start="00:03:25.920" text="to somebody that knows the syntax"]]
+[[!template id=subtitle video="mainVideo" start="00:03:27.657" text="of Emacs Lisp well."]]
+[[!template id=subtitle video="mainVideo" start="00:03:28.988" text="We see something like this"]]
+[[!template id=subtitle video="mainVideo" start="00:03:30.785" text="and a veteran eye says"]]
+[[!template id=subtitle video="mainVideo" start="00:03:32.784" text="&quot;That x isn't quoted. What's going on?&quot;"]]
+[[!template id=subtitle video="mainVideo" start="00:03:36.239" text="but it can be hard to miss."]]
+[[!template id=subtitle video="mainVideo" start="00:03:39.840" text="A lot of the functions (as we'll talk"]]
+[[!template id=subtitle video="mainVideo" start="00:03:43.040" text="about in a moment) that are built into Emacs"]]
+[[!template id=subtitle video="mainVideo" start="00:03:46.640" text="really are macros, so a lot of"]]
+[[!template id=subtitle video="mainVideo" start="00:03:48.572" text="Emacs features work this way."]]
+[[!template id=subtitle video="mainVideo" start="00:03:50.480" text="It might be scary, but we have to look at"]]
+[[!template id=subtitle video="mainVideo" start="00:03:53.040" text="it closely if we really want to get"]]
+[[!template id=subtitle video="mainVideo" start="00:03:54.640" text="friendly with Emacs."]]
+
+[[!template id=subtitle video="mainVideo" start="00:03:58.400" text="Let's just jump right into defmacro,"]]
+[[!template id=subtitle video="mainVideo" start="00:04:01.439" text="which is our key entry point."]]
+[[!template id=subtitle video="mainVideo" start="00:04:04.720" text="The notes from this talk"]]
+[[!template id=subtitle video="mainVideo" start="00:04:05.833" text="include the link to that,"]]
+[[!template id=subtitle video="mainVideo" start="00:04:09.420" text="which... Definitely"]]
+[[!template id=subtitle video="mainVideo" start="00:04:12.000" text="read through a couple of times."]]
+[[!template id=subtitle video="mainVideo" start="00:04:14.640" text="That may take you through"]]
+[[!template id=subtitle video="mainVideo" start="00:04:16.000" text="into the cl-def macro, which adds"]]
+[[!template id=subtitle video="mainVideo" start="00:04:19.440" text="the Common Lisp extensions."]]
+[[!template id=subtitle video="mainVideo" start="00:04:23.440" text="Definitely challenging."]]
+[[!template id=subtitle video="mainVideo" start="00:04:28.080" text="I've struggled there,"]]
+[[!template id=subtitle video="mainVideo" start="00:04:30.560" text="as we'll take a look at"]]
+[[!template id=subtitle video="mainVideo" start="00:04:31.759" text="in a moment."]]
+[[!template id=subtitle video="mainVideo" start="00:04:34.800" text="So I haven't played too much with"]]
+[[!template id=subtitle video="mainVideo" start="00:04:36.266" text="cl-maclet. Perhaps success in"]]
+[[!template id=subtitle video="mainVideo" start="00:04:38.320" text="in that keyword space"]]
+[[!template id=subtitle video="mainVideo" start="00:04:40.804" text="and figuring out what the right balance is there"]]
+[[!template id=subtitle video="mainVideo" start="00:04:44.320" text="will give me the confidence to try"]]
+[[!template id=subtitle video="mainVideo" start="00:04:46.000" text="some more lexical macros."]]
+
+[[!template id=subtitle video="mainVideo" start="00:04:51.680" text="Let me also briefly introduce"]]
+[[!template id=subtitle video="mainVideo" start="00:04:53.402" text="the comma (,) and back quote (`)."]]
+[[!template id=subtitle video="mainVideo" start="00:04:55.134" text="If you have allowed your eyes"]]
+[[!template id=subtitle video="mainVideo" start="00:04:57.389" text="to cross when you see these,"]]
+[[!template id=subtitle video="mainVideo" start="00:04:59.321" text="that's not a shameful, shameful thing."]]
+[[!template id=subtitle video="mainVideo" start="00:05:03.113" text="It's confusing, and we should be"]]
+[[!template id=subtitle video="mainVideo" start="00:05:06.080" text="alerting each other"]]
+[[!template id=subtitle video="mainVideo" start="00:05:07.543" text="when we stick macros in,"]]
+[[!template id=subtitle video="mainVideo" start="00:05:09.520" text="often by putting them in"]]
+[[!template id=subtitle video="mainVideo" start="00:05:11.199" text="different library spaces"]]
+[[!template id=subtitle video="mainVideo" start="00:05:12.255" text="for complicated projects,"]]
+[[!template id=subtitle video="mainVideo" start="00:05:14.160" text="or otherwise warning people"]]
+[[!template id=subtitle video="mainVideo" start="00:05:17.520" text="that this is not an interactive function,"]]
+[[!template id=subtitle video="mainVideo" start="00:05:19.520" text="even if you get away with using it like one."]]
+[[!template id=subtitle video="mainVideo" start="00:05:22.639" text="Watch your back."]]
+
+[[!template id=subtitle video="mainVideo" start="00:05:26.000" text="The manual itself talks about macros"]]
+[[!template id=subtitle video="mainVideo" start="00:05:32.800" text="as being a way of evaluating,"]]
+[[!template id=subtitle video="mainVideo" start="00:05:35.840" text="as being an evaluator that will take"]]
+[[!template id=subtitle video="mainVideo" start="00:05:39.993" text="our Emacs Lisp expression"]]
+[[!template id=subtitle video="mainVideo" start="00:05:42.800" text="and the set of forms that"]]
+[[!template id=subtitle video="mainVideo" start="00:05:44.800" text="will feed to it our code,"]]
+[[!template id=subtitle video="mainVideo" start="00:05:48.960" text="but it also provides us with"]]
+[[!template id=subtitle video="mainVideo" start="00:05:50.792" text="this concept of an environment."]]
+[[!template id=subtitle video="mainVideo" start="00:05:53.467" text="That's really where the power comes in."]]
+[[!template id=subtitle video="mainVideo" start="00:05:57.027" text="Through that, we can have"]]
+[[!template id=subtitle video="mainVideo" start="00:05:58.240" text="lexical variables and"]]
+[[!template id=subtitle video="mainVideo" start="00:06:00.080" text="think about--bring in some of the"]]
+[[!template id=subtitle video="mainVideo" start="00:06:03.199" text="capabilities that"]]
+[[!template id=subtitle video="mainVideo" start="00:06:06.400" text="can be harder to reach with"]]
+[[!template id=subtitle video="mainVideo" start="00:06:09.759" text="a pure declarative statement that"]]
+[[!template id=subtitle video="mainVideo" start="00:06:13.840" text="doesn't allow for top level"]]
+[[!template id=subtitle video="mainVideo" start="00:06:21.440" text="asynchronous... Asynchronicity..."]]
+[[!template id=subtitle video="mainVideo" start="00:06:28.639" text="I'm gonna basically"]]
+[[!template id=subtitle video="mainVideo" start="00:06:33.520" text="ignore the byte-compilation phase"]]
+[[!template id=subtitle video="mainVideo" start="00:06:35.577" text="for this talk"]]
+[[!template id=subtitle video="mainVideo" start="00:06:36.880" text="in order to have any prayer"]]
+[[!template id=subtitle video="mainVideo" start="00:06:38.463" text="of getting through it in the"]]
+[[!template id=subtitle video="mainVideo" start="00:06:39.919" text="remaining 9 or 11 minutes or whatever."]]
+[[!template id=subtitle video="mainVideo" start="00:06:43.600" text="But suffice to say, that's a scary space,"]]
+[[!template id=subtitle video="mainVideo" start="00:06:50.441" text="and that's really"]]
+[[!template id=subtitle video="mainVideo" start="00:06:52.240" text="the thing that you want to"]]
+[[!template id=subtitle video="mainVideo" start="00:06:53.800" text="start learning about"]]
+[[!template id=subtitle video="mainVideo" start="00:06:55.277" text="as you think about"]]
+[[!template id=subtitle video="mainVideo" start="00:06:57.199" text="taking macros on in earnest."]]
+
+[[!template id=subtitle video="mainVideo" start="00:07:02.160" text="Coming back to the comma syntax,"]]
+[[!template id=subtitle video="mainVideo" start="00:07:05.919" text="then, having given ourselves a"]]
+[[!template id=subtitle video="mainVideo" start="00:07:09.759" text="working definition for the Emacs Lisp"]]
+[[!template id=subtitle video="mainVideo" start="00:07:12.479" text="runtime environment, then we can say that"]]
+[[!template id=subtitle video="mainVideo" start="00:07:14.479" text="macros are going to"]]
+[[!template id=subtitle video="mainVideo" start="00:07:15.840" text="inject code back into that stream,"]]
+[[!template id=subtitle video="mainVideo" start="00:07:21.120" text="whereas backquote (`)"]]
+[[!template id=subtitle video="mainVideo" start="00:07:25.280" text="is going to give code back."]]
+[[!template id=subtitle video="mainVideo" start="00:07:28.479" text="to the stream--or interject, sorry,"]]
+[[!template id=subtitle video="mainVideo" start="00:07:31.919" text="it's going to interject"]]
+[[!template id=subtitle video="mainVideo" start="00:07:33.632" text="back into the stream."]]
+[[!template id=subtitle video="mainVideo" start="00:07:35.360" text="Sort of an exclamatory &quot;Excuse me,"]]
+[[!template id=subtitle video="mainVideo" start="00:07:39.840" text="I'd like to have a value here.&quot; We can take that value"]]
+[[!template id=subtitle video="mainVideo" start="00:07:46.966" text="from the environment as it exists"]]
+[[!template id=subtitle video="mainVideo" start="00:07:48.639" text="when our macro is evaluated."]]
+[[!template id=subtitle video="mainVideo" start="00:07:54.160" text="Backquote, on the other hand,"]]
+[[!template id=subtitle video="mainVideo" start="00:07:56.003" text="takes the result from that"]]
+[[!template id=subtitle video="mainVideo" start="00:08:00.560" text="and returns it back to the stream"]]
+[[!template id=subtitle video="mainVideo" start="00:08:02.201" text="for evaluation at the"]]
+[[!template id=subtitle video="mainVideo" start="00:08:03.467" text="processing level that invoked us."]]
+[[!template id=subtitle video="mainVideo" start="00:08:05.680" text="So in other words, perhaps back up to"]]
+[[!template id=subtitle video="mainVideo" start="00:08:08.720" text="a top-level eval expression where our"]]
+[[!template id=subtitle video="mainVideo" start="00:08:10.960" text="macro is invoked."]]
+
+[[!template id=subtitle video="mainVideo" start="00:08:20.080" text="I'm going to briefly bring"]]
+[[!template id=subtitle video="mainVideo" start="00:08:22.560" text="you back to the game"]]
+[[!template id=subtitle video="mainVideo" start="00:08:23.759" text="for just a moment."]]
+[[!template id=subtitle video="mainVideo" start="00:08:30.240" text="I won't linger on this slide,"]]
+[[!template id=subtitle video="mainVideo" start="00:08:32.479" text="but briefly: this is a"]]
+[[!template id=subtitle video="mainVideo" start="00:08:37.039" text="role-playing, pen and pencil,"]]
+[[!template id=subtitle video="mainVideo" start="00:08:41.615" text="physical dice tradition"]]
+[[!template id=subtitle video="mainVideo" start="00:08:43.829" text="that dates back a long time"]]
+[[!template id=subtitle video="mainVideo" start="00:08:46.320" text="from a technology perspective."]]
+[[!template id=subtitle video="mainVideo" start="00:08:48.080" text="It's old in the same way"]]
+[[!template id=subtitle video="mainVideo" start="00:08:50.727" text="that other tools that I like are old."]]
+[[!template id=subtitle video="mainVideo" start="00:08:58.560" text="It's simple to understand."]]
+[[!template id=subtitle video="mainVideo" start="00:09:00.185" text="I can communicate a lot with it"]]
+[[!template id=subtitle video="mainVideo" start="00:09:01.873" text="with a simple amount of typing"]]
+[[!template id=subtitle video="mainVideo" start="00:09:03.952" text="or scribbling something on a piece of paper."]]
+[[!template id=subtitle video="mainVideo" start="00:09:09.120" text="It has a complicated problem space of its own."]]
+
+[[!template id=subtitle video="mainVideo" start="00:09:13.500" text="Again, I don't want to"]]
+[[!template id=subtitle video="mainVideo" start="00:09:15.519" text="get too much into the game here,"]]
+[[!template id=subtitle video="mainVideo" start="00:09:18.212" text="but in this talk,"]]
+[[!template id=subtitle video="mainVideo" start="00:09:20.177" text="for the last five minutes,"]]
+[[!template id=subtitle video="mainVideo" start="00:09:22.590" text="I'll focus on the process"]]
+[[!template id=subtitle video="mainVideo" start="00:09:24.751" text="that we took to"]]
+[[!template id=subtitle video="mainVideo" start="00:09:26.640" text="automate getting data out of"]]
+[[!template id=subtitle video="mainVideo" start="00:09:29.190" text="the Org Mode tables which eventually"]]
+[[!template id=subtitle video="mainVideo" start="00:09:31.564" text="(as we'll talk about more tomorrow)"]]
+[[!template id=subtitle video="mainVideo" start="00:09:33.855" text="are used to draw"]]
+[[!template id=subtitle video="mainVideo" start="00:09:36.000" text="game maps and other things."]]
+[[!template id=subtitle video="mainVideo" start="00:09:39.440" text="Here I talk about why we did that."]]
+[[!template id=subtitle video="mainVideo" start="00:09:42.543" text="I'm going to skip briefly past that,"]]
+[[!template id=subtitle video="mainVideo" start="00:09:45.279" text="and say instead that at a high level,"]]
+[[!template id=subtitle video="mainVideo" start="00:09:49.360" text="it's symbolic informatics."]]
+[[!template id=subtitle video="mainVideo" start="00:09:51.440" text="We're giving a symbolic name"]]
+[[!template id=subtitle video="mainVideo" start="00:09:53.519" text="to a tile set,"]]
+[[!template id=subtitle video="mainVideo" start="00:10:02.000" text="and then assigning that tile set some"]]
+[[!template id=subtitle video="mainVideo" start="00:10:04.000" text="some characteristics"]]
+[[!template id=subtitle video="mainVideo" start="00:10:04.840" text="like physical speeds, screen space"]]
+[[!template id=subtitle video="mainVideo" start="00:10:06.820" text="(a variable that we might"]]
+[[!template id=subtitle video="mainVideo" start="00:10:08.399" text="want to swap in), and so forth."]]
+[[!template id=subtitle video="mainVideo" start="00:10:12.800" text="You know, our project rests heavily on"]]
+[[!template id=subtitle video="mainVideo" start="00:10:15.200" text="Org Mode and its fundamental capabilities."]]
+[[!template id=subtitle video="mainVideo" start="00:10:21.040" text="The code I'm going to show here"]]
+[[!template id=subtitle video="mainVideo" start="00:10:28.320" text="is focused around a sticky"]]
+[[!template id=subtitle video="mainVideo" start="00:10:31.360" text="problem space in"]]
+[[!template id=subtitle video="mainVideo" start="00:10:32.380" text="information technology."]]
+[[!template id=subtitle video="mainVideo" start="00:10:33.861" text="I'm a professional software engineer"]]
+[[!template id=subtitle video="mainVideo" start="00:10:38.240" text="turned technology architect."]]
+[[!template id=subtitle video="mainVideo" start="00:10:40.362" text="I support the websites for"]]
+[[!template id=subtitle video="mainVideo" start="00:10:43.495" text="a recognizable financial services brand"]]
+[[!template id=subtitle video="mainVideo" start="00:10:46.533" text="that I don't identify"]]
+[[!template id=subtitle video="mainVideo" start="00:10:48.500" text="just so I don't accidentally end up"]]
+[[!template id=subtitle video="mainVideo" start="00:10:50.720" text="inadvertently misrepresenting my firm"]]
+[[!template id=subtitle video="mainVideo" start="00:10:54.399" text="in some financial perspective"]]
+[[!template id=subtitle video="mainVideo" start="00:10:56.456" text="if I let some other"]]
+[[!template id=subtitle video="mainVideo" start="00:10:57.760" text="companies' name slip, or my own."]]
+[[!template id=subtitle video="mainVideo" start="00:11:03.300" text="It's certainly no representation"]]
+[[!template id=subtitle video="mainVideo" start="00:11:07.700" text="of an opinion other than my own."]]
+[[!template id=subtitle video="mainVideo" start="00:11:18.800" text="So ETL has to do with moving data around."]]
+[[!template id=subtitle video="mainVideo" start="00:11:22.720" text="We have the idea of"]]
+[[!template id=subtitle video="mainVideo" start="00:11:26.240" text="a pipeline where we'll be able to verify"]]
+[[!template id=subtitle video="mainVideo" start="00:11:29.200" text="certain assumptions,"]]
+[[!template id=subtitle video="mainVideo" start="00:11:30.560" text="nominally about data quality,"]]
+[[!template id=subtitle video="mainVideo" start="00:11:32.106" text="but it could be about anything."]]
+[[!template id=subtitle video="mainVideo" start="00:11:33.600" text="Before the pipeline starts, okay,"]]
+[[!template id=subtitle video="mainVideo" start="00:11:35.630" text="we've got a state where we think"]]
+[[!template id=subtitle video="mainVideo" start="00:11:36.886" text="it should work if we run it."]]
+[[!template id=subtitle video="mainVideo" start="00:11:38.560" text="We have some extraction where we'll"]]
+[[!template id=subtitle video="mainVideo" start="00:11:41.920" text="get our sources, and we may have"]]
+[[!template id=subtitle video="mainVideo" start="00:11:43.973" text="the opportunity to"]]
+[[!template id=subtitle video="mainVideo" start="00:11:45.040" text="make some assertions there."]]
+[[!template id=subtitle video="mainVideo" start="00:11:47.327" text="In the transform stage, as well as the load,"]]
+[[!template id=subtitle video="mainVideo" start="00:11:50.510" text="things get a little dicer,"]]
+[[!template id=subtitle video="mainVideo" start="00:11:52.720" text="to the point where we come out of the"]]
+[[!template id=subtitle video="mainVideo" start="00:11:54.079" text="load stage and we should have some"]]
+[[!template id=subtitle video="mainVideo" start="00:11:55.360" text="really solid assertions again"]]
+[[!template id=subtitle video="mainVideo" start="00:11:56.676" text="that we can even go back"]]
+[[!template id=subtitle video="mainVideo" start="00:11:57.724" text="and compare to the extract stage."]]
+[[!template id=subtitle video="mainVideo" start="00:11:59.680" text="From this, we have the rudimentaries"]]
+[[!template id=subtitle video="mainVideo" start="00:12:02.639" text="of a data quality practice."]]
+[[!template id=subtitle video="mainVideo" start="00:12:04.959" text="In this case, we have a number of"]]
+[[!template id=subtitle video="mainVideo" start="00:12:08.120" text="Org Mode files that will all"]]
+[[!template id=subtitle video="mainVideo" start="00:12:09.360" text="be distributed across a"]]
+[[!template id=subtitle video="mainVideo" start="00:12:12.639" text="number of players' computers,"]]
+[[!template id=subtitle video="mainVideo" start="00:12:16.720" text="so we might not want to update every"]]
+[[!template id=subtitle video="mainVideo" start="00:12:18.959" text="part of every buffer."]]
+[[!template id=subtitle video="mainVideo" start="00:12:20.320" text="I think it's a complicated problem space."]]
+[[!template id=subtitle video="mainVideo" start="00:12:22.720" text="So we tried to take"]]
+[[!template id=subtitle video="mainVideo" start="00:12:24.560" text="a long-term view of"]]
+[[!template id=subtitle video="mainVideo" start="00:12:27.839" text="the solution that we needed."]]
+[[!template id=subtitle video="mainVideo" start="00:12:30.321" text="So I'll go ahead"]]
+[[!template id=subtitle video="mainVideo" start="00:12:32.160" text="and open up the function that..."]]
+[[!template id=subtitle video="mainVideo" start="00:12:36.279" text="Let's actually start with the one"]]
+[[!template id=subtitle video="mainVideo" start="00:12:39.020" text="that's pretty easy to read."]]
+[[!template id=subtitle video="mainVideo" start="00:12:41.680" text="I'm gonna go ahead and just crank it up huge,"]]
+[[!template id=subtitle video="mainVideo" start="00:12:46.800" text="in case anybody's watching in 480."]]
+
+[[!template id=subtitle video="mainVideo" start="00:12:51.680" text="This program is not a work of art."]]
+[[!template id=subtitle video="mainVideo" start="00:12:57.733" text="It's a simple implementation of the idea that"]]
+[[!template id=subtitle video="mainVideo" start="00:13:01.120" text="an alist of functions"]]
+[[!template id=subtitle video="mainVideo" start="00:13:04.000" text="that return maybe some data,"]]
+[[!template id=subtitle video="mainVideo" start="00:13:06.633" text="maybe some data and an entry back into that alist,"]]
+[[!template id=subtitle video="mainVideo" start="00:13:10.399" text="can be done quite extensively with"]]
+[[!template id=subtitle video="mainVideo" start="00:13:13.040" text="very few lines of code."]]
+[[!template id=subtitle video="mainVideo" start="00:13:15.680" text="Neither is it an especially tight"]]
+[[!template id=subtitle video="mainVideo" start="00:13:17.586" text="or thrifty implementation."]]
+[[!template id=subtitle video="mainVideo" start="00:13:19.600" text="It's just trying to get the job done"]]
+[[!template id=subtitle video="mainVideo" start="00:13:22.000" text="with a doc statement for everything."]]
+[[!template id=subtitle video="mainVideo" start="00:13:25.056" text="At the heart, we see a call to"]]
+[[!template id=subtitle video="mainVideo" start="00:13:28.595" text="this macro called dm-coalesce-hash,"]]
+[[!template id=subtitle video="mainVideo" start="00:13:32.067" text="and that's what I'd like to focus in on."]]
+[[!template id=subtitle video="mainVideo" start="00:13:33.714" text="You can see... I think"]]
+[[!template id=subtitle video="mainVideo" start="00:13:35.360" text="that something unpleasant is happening here."]]
+[[!template id=subtitle video="mainVideo" start="00:13:38.800" text="I've got an eval in what is..."]]
+
+[[!template id=subtitle video="mainVideo" start="00:13:43.991" text="I will share a fairly central function"]]
+[[!template id=subtitle video="mainVideo" start="00:13:49.519" text="that those implementing this ETL pattern are"]]
+[[!template id=subtitle video="mainVideo" start="00:13:52.160" text="welcome to derive from."]]
+[[!template id=subtitle video="mainVideo" start="00:13:54.933" text="That is, this is a default transform"]]
+[[!template id=subtitle video="mainVideo" start="00:13:57.680" text="that you can get when loading certain kinds of"]]
+[[!template id=subtitle video="mainVideo" start="00:14:00.959" text="org-mode tables that have been"]]
+[[!template id=subtitle video="mainVideo" start="00:14:04.560" text="properly adorned. Again, we'll get"]]
+[[!template id=subtitle video="mainVideo" start="00:14:06.399" text="into that all tomorrow."]]
+[[!template id=subtitle video="mainVideo" start="00:14:09.120" text="So, keeping an eye on time. Couple minutes left."]]
+
+[[!template id=subtitle video="mainVideo" start="00:14:11.900" text="Let's look at the macro itself."]]
+[[!template id=subtitle video="mainVideo" start="00:14:13.760" text="I have a slide on this,"]]
+[[!template id=subtitle video="mainVideo" start="00:14:15.000" text="but let's go ahead and risk getting off page."]]
+[[!template id=subtitle video="mainVideo" start="00:14:24.639" text="Oh boy. Here we go. So this is my"]]
+[[!template id=subtitle video="mainVideo" start="00:14:27.199" text="utilities bucket."]]
+[[!template id=subtitle video="mainVideo" start="00:14:28.959" text="It has such basic features as &quot;give me a"]]
+[[!template id=subtitle video="mainVideo" start="00:14:31.920" text="hash table with some defaults, I'll think"]]
+[[!template id=subtitle video="mainVideo" start="00:14:34.000" text="about that later,&quot;"]]
+[[!template id=subtitle video="mainVideo" start="00:14:36.000" text="and &quot;add to list,&quot; a special version"]]
+[[!template id=subtitle video="mainVideo" start="00:14:44.720" text="that enables us to be a little cavalier"]]
+[[!template id=subtitle video="mainVideo" start="00:14:47.600" text="in experimenting with alist versus"]]
+[[!template id=subtitle video="mainVideo" start="00:14:49.360" text="hashes versus plists."]]
+[[!template id=subtitle video="mainVideo" start="00:14:50.967" text="We've made a right mess for ourselves"]]
+[[!template id=subtitle video="mainVideo" start="00:14:53.178" text="in the proof of concept area,"]]
+[[!template id=subtitle video="mainVideo" start="00:14:54.399" text="and it's ripe for someone to write a"]]
+[[!template id=subtitle video="mainVideo" start="00:14:57.433" text="whitepaper about"]]
+[[!template id=subtitle video="mainVideo" start="00:14:58.560" text="when to prefer these things."]]
+[[!template id=subtitle video="mainVideo" start="00:15:04.800" text="The merge alist..."]]
+[[!template id=subtitle video="mainVideo" start="00:15:08.000" text="Same work here. Let's get down to business."]]
+
+[[!template id=subtitle video="mainVideo" start="00:15:12.959" text="This function has quite a..."]]
+[[!template id=subtitle video="mainVideo" start="00:15:14.667" text="This macro has quite a doc string."]]
+[[!template id=subtitle video="mainVideo" start="00:15:17.467" text="I think I mentioned earlier that I got myself into"]]
+[[!template id=subtitle video="mainVideo" start="00:15:20.720" text="trouble with the keyword properties."]]
+[[!template id=subtitle video="mainVideo" start="00:15:22.088" text="You can see that we have"]]
+[[!template id=subtitle video="mainVideo" start="00:15:23.519" text="not only quite a number of them,"]]
+[[!template id=subtitle video="mainVideo" start="00:15:27.359" text="but a lot of default values,"]]
+[[!template id=subtitle video="mainVideo" start="00:15:31.155" text="many of which may be relying on"]]
+[[!template id=subtitle video="mainVideo" start="00:15:35.446" text="the values that are passed in here."]]
+[[!template id=subtitle video="mainVideo" start="00:15:37.264" text="This is complicated. As it turns out,"]]
+[[!template id=subtitle video="mainVideo" start="00:15:40.000" text="I wasn't brave enough in most cases"]]
+[[!template id=subtitle video="mainVideo" start="00:15:44.000" text="to try to write a lambda"]]
+[[!template id=subtitle video="mainVideo" start="00:15:45.485" text="that could understand and"]]
+[[!template id=subtitle video="mainVideo" start="00:15:47.279" text="replace its own local variable."]]
+[[!template id=subtitle video="mainVideo" start="00:15:49.300" text="I just didn't..."]]
+[[!template id=subtitle video="mainVideo" start="00:15:50.399" text="It didn't save me enough time. This was"]]
+[[!template id=subtitle video="mainVideo" start="00:15:53.519" text="really easy to read and write and understand"]]
+[[!template id=subtitle video="mainVideo" start="00:15:56.532" text="as I thought through my problem,"]]
+[[!template id=subtitle video="mainVideo" start="00:15:58.240" text="but now, as I use it,"]]
+[[!template id=subtitle video="mainVideo" start="00:16:00.000" text="I've lost a little ground with this."]]
+[[!template id=subtitle video="mainVideo" start="00:16:02.486" text="I'm not even sure"]]
+[[!template id=subtitle video="mainVideo" start="00:16:04.079" text="I like what I got from"]]
+[[!template id=subtitle video="mainVideo" start="00:16:06.453" text="the many keyword properties when it..."]]
+[[!template id=subtitle video="mainVideo" start="00:16:09.341" text="And we can look, perhaps if we have"]]
+[[!template id=subtitle video="mainVideo" start="00:16:11.920" text="the time, at what that looks like in"]]
+[[!template id=subtitle video="mainVideo" start="00:16:19.920" text="Oh, all right, I have to separately"]]
+[[!template id=subtitle video="mainVideo" start="00:16:22.720" text="dismiss and restart that."]]
+
+[[!template id=subtitle video="mainVideo" start="00:16:24.480" text="So that's just about my time."]]
+[[!template id=subtitle video="mainVideo" start="00:16:27.519" text="Being respectful of that, I want"]]
+[[!template id=subtitle video="mainVideo" start="00:16:29.600" text="to invite presenters to just jump in at"]]
+[[!template id=subtitle video="mainVideo" start="00:16:31.920" text="any of the many large pauses I leave."]]
+[[!template id=subtitle video="mainVideo" start="00:16:35.519" text="I'll just leave up the doc string"]]
+[[!template id=subtitle video="mainVideo" start="00:16:38.079" text="for a moment and maybe split the screen"]]
+[[!template id=subtitle video="mainVideo" start="00:16:40.160" text="and pull open an item."]]
+[[!template id=subtitle video="mainVideo" start="00:16:45.199" text="(Amin: Thank you very"]]
+[[!template id=subtitle video="mainVideo" start="00:16:48.720" text="much for your talk, Corwin."]]
+[[!template id=subtitle video="mainVideo" start="00:16:50.720" text="I think you still have"]]
+[[!template id=subtitle video="mainVideo" start="00:16:53.839" text="maybe three or four more minutes,"]]
+[[!template id=subtitle video="mainVideo" start="00:16:55.027" text="if you want to quickly wrap up.)"]]
+[[!template id=subtitle video="mainVideo" start="00:16:57.680" text="Corwin: Okay, so three or four more minutes"]]
+[[!template id=subtitle video="mainVideo" start="00:17:00.644" text="I can easily spend on thank yous."]]
+[[!template id=subtitle video="mainVideo" start="00:17:05.439" text="I might switch to that if there aren't"]]
+[[!template id=subtitle video="mainVideo" start="00:17:07.280" text="questions on the pad."]]
+[[!template id=subtitle video="mainVideo" start="00:17:10.160" text="(Amin: Would you like me to pull up the pad,"]]
+[[!template id=subtitle video="mainVideo" start="00:17:12.559" text="or are you looking at it?)"]]
+[[!template id=subtitle video="mainVideo" start="00:17:14.079" text="Corwin: I am. I bookmarked it."]]
+[[!template id=subtitle video="mainVideo" start="00:17:16.777" text="I am pulling the tab and I'll bring it in."]]
+[[!template id=subtitle video="mainVideo" start="00:17:30.840" text="Okay. All right. This is the wrong Etherpad."]]
+[[!template id=subtitle video="mainVideo" start="00:17:38.799" text="Thanks for the link."]]
+[[!template id=subtitle video="mainVideo" start="00:17:44.480" text="All right. So I think I'm looking for macros."]]
+
+[[!template id=subtitle video="mainVideo" start="00:17:54.880" text="Okay. Key message. Sure."]]
+[[!template id=subtitle video="mainVideo" start="00:17:57.630" text="So, the key message is that it's"]]
+[[!template id=subtitle video="mainVideo" start="00:18:01.679" text="a jungle out there."]]
+[[!template id=subtitle video="mainVideo" start="00:18:02.960" text="Macros, along with any other design,"]]
+[[!template id=subtitle video="mainVideo" start="00:18:05.912" text="can leave you in a position"]]
+[[!template id=subtitle video="mainVideo" start="00:18:08.559" text="where you have a nice API. I can show"]]
+[[!template id=subtitle video="mainVideo" start="00:18:11.919" text="you other examples (you can find them in"]]
+[[!template id=subtitle video="mainVideo" start="00:18:13.600" text="the dungeon-mode source)"]]
+[[!template id=subtitle video="mainVideo" start="00:18:14.960" text="of many, many other places where I use"]]
+[[!template id=subtitle video="mainVideo" start="00:18:18.480" text="this exact same formula,"]]
+[[!template id=subtitle video="mainVideo" start="00:18:20.820" text="quickly sketching out how a character sheet"]]
+[[!template id=subtitle video="mainVideo" start="00:18:23.840" text="or another big data set"]]
+[[!template id=subtitle video="mainVideo" start="00:18:26.180" text="needs to figure out what tables are"]]
+[[!template id=subtitle video="mainVideo" start="00:18:28.480" text="going to be interesting"]]
+[[!template id=subtitle video="mainVideo" start="00:18:29.320" text="from the collection of files,"]]
+[[!template id=subtitle video="mainVideo" start="00:18:30.720" text="and then load up the tile set,"]]
+[[!template id=subtitle video="mainVideo" start="00:18:33.967" text="and the layout file from that."]]
+[[!template id=subtitle video="mainVideo" start="00:18:38.880" text="And I mean, it works."]]
+[[!template id=subtitle video="mainVideo" start="00:18:40.542" text="The project is moving forward with this."]]
+[[!template id=subtitle video="mainVideo" start="00:18:42.677" text="I have the flexibility that I need."]]
+[[!template id=subtitle video="mainVideo" start="00:18:44.799" text="But here I am evaling my own code"]]
+[[!template id=subtitle video="mainVideo" start="00:18:46.559" text="to make darn sure even if I get"]]
+[[!template id=subtitle video="mainVideo" start="00:18:48.640" text="byte-compiled, this macro"]]
+[[!template id=subtitle video="mainVideo" start="00:18:52.400" text="does get evaluated in the user's real"]]
+[[!template id=subtitle video="mainVideo" start="00:18:55.440" text="run time. Clearly a design fail."]]
+[[!template id=subtitle video="mainVideo" start="00:18:57.684" text="So that would be..."]]
+
+[[!template id=subtitle video="mainVideo" start="00:18:58.890" text="The key point of my talk is to"]]
+[[!template id=subtitle video="mainVideo" start="00:19:00.880" text="present this design fail and"]]
+[[!template id=subtitle video="mainVideo" start="00:19:05.600" text="thank the community, but especially"]]
+[[!template id=subtitle video="mainVideo" start="00:19:08.320" text="wasamasa for some patience."]]
+[[!template id=subtitle video="mainVideo" start="00:19:10.942" text="Let me add at this moment that"]]
+[[!template id=subtitle video="mainVideo" start="00:19:13.280" text="he was so frustrated with me."]]
+[[!template id=subtitle video="mainVideo" start="00:19:13.333" text="They were sort of frustrated with me"]]
+[[!template id=subtitle video="mainVideo" start="00:19:17.115" text="(I think I didn't qualify pronouns)"]]
+[[!template id=subtitle video="mainVideo" start="00:19:24.240" text="with doing this. The first..."]]
+[[!template id=subtitle video="mainVideo" start="00:19:26.287" text="This was one of our first interactions,"]]
+[[!template id=subtitle video="mainVideo" start="00:19:27.985" text="and the feedback was,"]]
+[[!template id=subtitle video="mainVideo" start="00:19:29.919" text="&quot;Why is this a macro. Full stop.&quot;"]]
+[[!template id=subtitle video="mainVideo" start="00:19:34.240" text="And that's a great message, actually."]]
+[[!template id=subtitle video="mainVideo" start="00:19:36.640" text="I hope that maybe this can encourage"]]
+[[!template id=subtitle video="mainVideo" start="00:19:39.520" text="further talks across the subject about,"]]
+[[!template id=subtitle video="mainVideo" start="00:19:42.720" text="you know, &quot;Hey, wait a minute,"]]
+[[!template id=subtitle video="mainVideo" start="00:19:43.808" text="macros are really fantastic,&quot;"]]
+[[!template id=subtitle video="mainVideo" start="00:19:45.549" text="as I hope I made clear."]]
+[[!template id=subtitle video="mainVideo" start="00:19:47.018" text="You can do a tremendous amount"]]
+[[!template id=subtitle video="mainVideo" start="00:19:48.559" text="with them, and we rely on them"]]
+[[!template id=subtitle video="mainVideo" start="00:19:51.039" text="for almost all the fun goodies,"]]
+[[!template id=subtitle video="mainVideo" start="00:19:55.200" text="from defun, setq..."]]
+[[!template id=subtitle video="mainVideo" start="00:20:02.159" text="I want to get to my thank yous."]]
+
+[[!template id=subtitle video="mainVideo" start="00:20:04.639" text="Let me just peek back at the pad."]]
+[[!template id=subtitle video="mainVideo" start="00:20:20.000" text="Well, that was actually a scratch buffer,"]]
+[[!template id=subtitle video="mainVideo" start="00:20:22.080" text="so I'll have to read it cold off my notes."]]
+[[!template id=subtitle video="mainVideo" start="00:20:27.919" text="But I'll switch to... I'll also..."]]
+[[!template id=subtitle video="mainVideo" start="00:20:30.320" text="I'll say a couple of thank-yous if you"]]
+[[!template id=subtitle video="mainVideo" start="00:20:31.600" text="don't mind, Amin."]]
+[[!template id=subtitle video="mainVideo" start="00:20:34.320" text="In addition to the big thank you that I"]]
+[[!template id=subtitle video="mainVideo" start="00:20:36.080" text="hope was implied by my shout out to wasamasa,"]]
+[[!template id=subtitle video="mainVideo" start="00:20:39.360" text="I also want to thank you, Amin, for"]]
+[[!template id=subtitle video="mainVideo" start="00:20:42.720" text="your kindness in extending"]]
+[[!template id=subtitle video="mainVideo" start="00:20:46.640" text="to the project as well as to me, the"]]
+[[!template id=subtitle video="mainVideo" start="00:20:51.360" text="the chance to present here."]]
+[[!template id=subtitle video="mainVideo" start="00:20:54.320" text="You've also done a lot of great stuff"]]
+[[!template id=subtitle video="mainVideo" start="00:20:56.358" text="for our project. Thank you very much for that."]]
+[[!template id=subtitle video="mainVideo" start="00:20:59.360" text="Sacha Chua (I'll get there),"]]
+[[!template id=subtitle video="mainVideo" start="00:21:03.400" text="thank you so much for"]]
+[[!template id=subtitle video="mainVideo" start="00:21:15.919" text="the inspiration that you are to our"]]
+[[!template id=subtitle video="mainVideo" start="00:21:17.200" text="whole community."]]
+[[!template id=subtitle video="mainVideo" start="00:21:18.320" text="I also want to thank the presenters"]]
+[[!template id=subtitle video="mainVideo" start="00:21:22.400" text="for just being so flexible and"]]
+[[!template id=subtitle video="mainVideo" start="00:21:25.600" text="nagging back through the whole thing,"]]
+[[!template id=subtitle video="mainVideo" start="00:21:27.600" text="and especially to Leo"]]
+[[!template id=subtitle video="mainVideo" start="00:21:29.120" text="who has done so much to drive the show today."]]
+[[!template id=subtitle video="mainVideo" start="00:21:32.159" text="This is a fractious tent at times,"]]
+[[!template id=subtitle video="mainVideo" start="00:21:37.242" text="and sometimes it is indeed"]]
+[[!template id=subtitle video="mainVideo" start="00:21:39.800" text="a little bit of a circus,"]]
+[[!template id=subtitle video="mainVideo" start="00:21:41.360" text="but I am learning so much so fast."]]
+[[!template id=subtitle video="mainVideo" start="00:21:44.746" text="I'm just inspired by how much"]]
+[[!template id=subtitle video="mainVideo" start="00:21:46.880" text="Emacs can teach us."]]
+[[!template id=subtitle video="mainVideo" start="00:21:49.333" text="(Amin: thank you, Corwin, for your kind words"]]
+[[!template id=subtitle video="mainVideo" start="00:21:52.901" text="about me, of course,"]]
+[[!template id=subtitle video="mainVideo" start="00:21:54.960" text="about all of us"]]
+[[!template id=subtitle video="mainVideo" start="00:21:56.000" text="and the conference..."]]
+[[!template id=subtitle video="mainVideo" start="00:21:58.000" text="Indeed, thanks to everyone who's helped,"]]
+[[!template id=subtitle video="mainVideo" start="00:22:02.400" text="including the speakers, of course,"]]
+[[!template id=subtitle video="mainVideo" start="00:22:04.159" text="without whom EmacsConf really"]]
+[[!template id=subtitle video="mainVideo" start="00:22:05.840" text="wouldn't have been a EmacsConf."]]
+[[!template id=subtitle video="mainVideo" start="00:22:08.960" text="It's been a pleasure"]]
+[[!template id=subtitle video="mainVideo" start="00:22:10.640" text="knowing you and working with you,"]]
+[[!template id=subtitle video="mainVideo" start="00:22:12.366" text="from afar for the most part"]]
+[[!template id=subtitle video="mainVideo" start="00:22:15.743" text="on dungeon-mode,"]]
+[[!template id=subtitle video="mainVideo" start="00:22:17.360" text="helping with small things here and there"]]
+[[!template id=subtitle video="mainVideo" start="00:22:19.937" text="but yeah, it's been my pleasure,"]]
+[[!template id=subtitle video="mainVideo" start="00:22:21.796" text="and it's great to have you and"]]
+[[!template id=subtitle video="mainVideo" start="00:22:23.840" text="everyone else part of the community,"]]
+[[!template id=subtitle video="mainVideo" start="00:22:26.582" text="and for me to be part of the community."]]
+[[!template id=subtitle video="mainVideo" start="00:22:29.180" text="It's been a lot of fun."]]
+[[!template id=subtitle video="mainVideo" start="00:22:30.559" text="Thank you.)"]]
+[[!template id=subtitle video="mainVideo" start="00:22:33.679" text="Corwin: It's an honor."]]
+[[!template id=subtitle video="mainVideo" start="00:22:35.206" text="I don't use that word an awful lot"]]
+[[!template id=subtitle video="mainVideo" start="00:22:37.428" text="because I sort of smirk at it."]]
+[[!template id=subtitle video="mainVideo" start="00:22:39.867" text="It gets us in a lot of trouble, honor does,"]]
+[[!template id=subtitle video="mainVideo" start="00:22:43.941" text="but this will be a sure time to use it."]]
+[[!template id=subtitle video="mainVideo" start="00:22:46.904" text="(Amin: Thank you.)"]]
+[[!template id=subtitle video="mainVideo" start="00:22:48.840" text="Corwin: Likewise."]]
diff --git a/2020/info/35.md b/2020/info/35.md
index 2901eee9..276d24aa 100644
--- a/2020/info/35.md
+++ b/2020/info/35.md
@@ -1,11 +1,13 @@
# WAVEing at Repetitive Repetitive Repetitive Music
Zachary Kanfer
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--zachary-kanfer.webm"]]
+[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--zachary-kanfer.webm" size="122M" subtitles="/2020/subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--zachary-kanfer.vtt" duration="9:44"]]
[Download compressed .webm video (12.7M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--zachary-kanfer--vp9-q56-video-original-audio.webm)
+[View transcript](#transcript)
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer.webm" download="Download Q&A video"]]
+[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer.webm" download="Download Q&A video" size="89M" subtitles="/2020/subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer.vtt" duration="6:18"]]
[Download compressed Q&A .webm video (6.9M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer--vp9-q56-video-original-audio.webm)
+[View transcript for Q&A](#transcript-questions)
During quarantine, I found myself spending time with an Android app.
One of the features this app has is composing music that loops
@@ -77,3 +79,231 @@ something worth looking into.
# Notes
Notes, references, and links at <https://zck.org/emacsconf2020>
+
+
+<!-- transcript: 2020/subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--zachary-kanfer.vtt -->
+
+<a name="transcript"></a>
+# Transcript
+
+(00:04) Hi. I'm Zachary Kanfer, and this is waving at repetitive
+repetitive repetitive music. Over quarantine, I've been bored, and I
+found this Android app that has a bunch of mini-games, one of which
+lets you compose music. And it works, but I want a little bit more
+functionality than it offers, it's not very flexible. So, I thought
+what if I made this, and what programs could I make this in that are
+really flexible, are really customizable. Emacs. So, I looked into
+it, and Emacs can play sounds, right? If you hit control g a couple of
+times, you'll hear like an error tone, and it turns out that, that is
+actually playing a WAVE file, but what's a WAVE file?
+
+(00:58) Well, it turns out that WAVE is a musical file format, or
+really an annoying file format. So, data in it can be an unsigned
+integer or a signed integer, it's not consistent, and it's
+little-endian by default which is not the way I like to think about
+it. Now, you can set a WAVE file to be big-endian, but if you do
+that, Emacs can't play it. So, little-endian it is. There's also
+duplicate data fields. Here are some fields that are fine, but then
+there's a fourth field that's calculated based on multiplying two of
+the other ones together, and then there's another data field that's…
+you multiply those three ones together. So, it's just repetitive and
+unnecessary, but you have to do it, or it's not a valid WAVE file.
+Also, the last part of the file is described as data or as one website
+I found said, the actual sound data.
+
+(02:04) Now, I don't know about you but when I see that, I think, what
+is data? It turns out that sound is just a wave, and the data is just
+a bunch of measurements of the height of that wave forming each
+sample. So, this wave starts at 8 goes 9, 11, 13, 14, 15, and then
+back down. If you just take those measurements, those numbers, put
+them in a file, that's all your data is.
+
+(02:35) All right. Let's go to a demo of my program. So, this is what
+zmusic looks like. The blue highlighted row is a single beat, there's
+16 of them in this zmusic file, and each dash in the row is a single
+note increasing…, starting really low all the way on the left and
+going up as we go to the right. So, if we started playing, we won't
+hear anything, but we'll see the highlighted beat is the currently
+playing one, and we see that it loops. So, we can stop it, and now we
+can click to add some notes. [Music] Even more than one note at the
+same time works. [Music] And we can even add notes while it's
+playing. [Music]
+
+(04:08) Okay, here are some other features that I didn't have time to
+demo. So, you can save the music to a file, and this is interesting
+because normally if there's no note in a beat, we just don't play that
+beat, but if you're writing to a file you have to put something in, so
+when it's playing it knows to not make a sound there. We can also use
+different scales. We're using the minor pentatonic in the demo, but
+you can use the major scale the minor scale or anything else. And
+there's also keyboard support, but it sounds really bad, and I'll
+explain why later.
+
+(04:48) Here are some things I learned while writing zmusic. Emacs
+has buttons which are great as long as you don't put two of them right
+next to each other. So, if you do that, mousing over one of them
+highlights both of them. Now, that's because a button is really just
+a series of characters with a text property to highlight them. So,
+the fix is, you put another character between the two buttons, then
+mousing over one of them only highlights the one you want, but even
+this doesn't work really great for zmusic, because zmusic has a lot of
+very small buttons in a row. So, it's really easy to accidentally put
+your cursor over the space and click on that instead of the button.
+So, I looked into unicode, and I found this character called a
+zero-width space. So, we should be able to put that between buttons
+and not be able to accidentally click on it. Unfortunately, a
+zero-width space isn't actually zero width. If we put a hundred of
+them between two other characters, you can see there's space there,
+and I think what's happening is, the space is zero width but then
+Emacs `put` uses one pixel between each pair of characters for the
+cursor, so it's almost zero width. Some ways to play sound that don't
+quite work! `play-sound` plays music, but it blocks, you can't do
+things like, set other notes or even pause the music. And if you
+throw it into async.el, it's silent, and I don't know why. So, the
+solution I went with is taking that WAVE file, ran into the file
+system, and then shelling out to a native executable to play the
+sound. And that works fine as long as you only do it once, because if
+you do it a couple of times at the same time like if you have a chord,
+and you want to play three notes simultaneously, you get this weird
+interference, and that's actually why the keyboard from before didn't
+work. Also, side effects have this unexpected impact, when you saw
+the demo it was running pretty smoothly, but if I just add one message
+statement every beat for debugging purposes, I was getting lag and
+jitter.
+
+(07:03) Here's the one thing I learned about music theory, music
+theory is not easy to program. I was looking around to see what
+concepts we can use to code the scales, to code the notes, the first
+thing that I saw is scale degrees, and this when I looked into it, you
+don't want to program in scale degrees. So, you see we have the
+first, second, third, fourth, fifth, sixth, seventh but then it wraps
+around. That octave up is also a first, and that's because both of
+those notes are C, so that didn't work, and also you couldn't really
+easily specify a flat or sharp. You could say a sharp third or you
+know, a flat seventh or whatever, but then you kind of have these two
+pieces of data that indicate the note, and I didn't love that.
+
+(07:55) So, I looked again, and I found intervals, and then I thought
+about it, and you don't really want to program in intervals either.
+It fixes some of the problems with scale degrees, you see, all the way
+on the right you have an octave, so you wrap to 8, and you go 9, 10
+and that works. But you solve the same problem, you see you have a
+major third but below we also have a minor third, so you saw that
+problem of having two pieces of information.
+
+(08:20) So, I thought about it. Music is really frequencies. Like an A
+is 440 hertz. So, at a low level that's what we're going to do, we're
+just going to use frequencies. And then at the one level above that,
+that's a little bit easier for humans to think about, we're going to
+use semitones up from the root, which is kind of like scale degrees,
+but instead of just counting each note as one more, we're going to say
+how many semitones up it is. So, if there's a sharp between two
+notes, that's going to be two steps up instead of just one. And then
+we translate those two frequencies, so your A is 440 hertz, another
+note might be 613.5, or whatever, and that's we use the low level to
+play.
+
+(09:02) Some future work I have, I want to add some drums. I want to
+make that keyboard actually work, and computers and synthesizers are
+the only place you hear a pure sine wave like the one we have here, so
+I want to add overtones or other octaves above it just to make it
+sound a little bit more realistic. I've put notes references and the
+source code up at <https://zck.org/emacsconf2020> [updated]. I'm one
+of the organizers of EmacsNYC check that out. And if you take a look
+or have any thoughts, I'd love to hear them, and thanks so much for
+coming to my talk.
+
+<!-- /transcript -->
+
+
+<!-- transcript: 2020/subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer.vtt -->
+
+<a name="transcript-questions"></a>
+# Transcript: Q&A
+
+(00:09) Okay, yeah, so I'm Zachary Kanfer, let's go to the
+questions. The first question, "Why do we go top to bottom for time
+progression, and left to right for low to high?" Interesting, I
+think…, so the initial thing I was copying, that initial app work this
+way, and yeah, I mean, certainly traditional music, you know, on a
+staff does go left to right like this. I mean, going top to bottom
+does make it easier to add more beats without having to wrap, but
+certainly that could be managed. Yeah, I had not really thought about
+it, but it is definitely something worth looking into.
+
+(01:21) Two, "Will you play us another song?" Not now, I can make some
+recordings of it, or certainly you can try it. I couldn't quite get
+the microphone and the webcam and everything to work with the sound
+playing now. So, I can record some. Also, I have put a link in the
+Etherpad, <https://zck.org/emacsconf2020> [updated], where you can go
+and get the source, and you can try it yourself. There's no
+dependencies needed, so it's just all in Emacs. So, please, you know,
+try it yourself.
+
+(01:57) "Any chance for an Emacs tracker or mod player?" I don't
+really know what a mod player or tracker are, but I mean, I'm sure
+that would be cool, maybe there's one on now, but I don't know.
+
+(02:11) My musical background. So, I've played various instruments
+since about the third grade. Started recorder, play cello, I play
+guitar now. But yeah, so just kind of random instruments, and I guess
+kind of some of those things influence how I think about music.
+
+(02:33) "Are there any open source musical management sample libraries
+that could be used?" Good question, I'm sure there are, I don't know
+any of that integrate really well with Emacs. One of the cool things
+that I liked about this is that there are no dependencies, you know,
+you don't need any external program to generate the music. I mean, it
+does shell out to to play, but that should be able to be done on any
+operating system, as always, you have something that can play WAVE
+files, but yeah, it is interesting to kind of try the different sounds
+and different tones that you could get with different instruments.
+
+(03:14) Have I written any actual songs? Nothing super well put
+together, I kind of just been playing around with this. It's kind of…
+making this was one of those things where once I made it, I was like,
+okay, now I can play with it, and I did a little bit, and was like, I
+don't know if I feel like it right now. You know, which I've found
+that to be the case with some things that I've implemented in Emacs
+where it's… I make it, and then it's the kind of some of the desire to
+use it all the time goes away, but I'm sure I'll circle back around at
+some point especially kind of maybe once I add in different tones or
+something.
+
+(03:54) I guess a similar question for pre-recorded sounds. Yeah, I
+mean, if it's… part of what I did, what I wrote was a WAVE generation
+library, so, if you kind of have the data, you could use those and
+chop them up and take certain lengths of them and make a WAVE file, so
+it's not plug and play right now, but you could certainly add those
+notes to do it.
+
+(04:19) "Any MIDI mapping possibilities?" I haven't looked into it,
+but I'm sure you definitely could output to MIDI which is another
+benefit of having that multiple layers with the top layer is just, you
+know, if the root note is this, we're just two semitones up or seven
+semitones up or whatever it is. It should be relatively simple to
+kind of switch out that layer underneath from WAVE to MIDI or other
+things.
+
+(04:44) "What were some of the challenges with writing a special mode
+for Emacs?" Interested in getting into this, not sure where to start.
+This isn't the first mode I've written, so that's right…, certainly
+that helps. I actually… I have a video that we recorded it as part of
+EmacsNYC on making a major mode. That's basically starts from
+nothing, and kind of builds up to an implementation of tic-tac-toe,
+but so it kind of goes into printing things out and buttons and making
+the mode. I mean, one of the best parts about Emacs is, because it's
+so configurable and so introspectible, you can start pretty simply,
+and just kind of ask Emacs about things, and then make one little
+change. It's really… it's not that bad, so, I'll try to throw a link
+up on that page I put up, or please email me for whoever asked this
+question to get a link to that video, or just look at the source code
+of this or any other major mode. Emacs makes it pretty easy to extend
+major modes.
+
+(05:54) And I think that's the last question in the Etherpad, so,
+thanks so much everybody for coming. (Amin: Thank you so much to
+Zachary for your awesome talk, and for doing live questions. Thank
+you.) Thank you. (Amin: Cheers.)
+
+<!-- /transcript -->
diff --git a/2020/info/39.md b/2020/info/39.md
index 303f553a..4ca2f49d 100644
--- a/2020/info/39.md
+++ b/2020/info/39.md
@@ -1,7 +1,7 @@
# NonGNU ELPA
Richard Stallman
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--39-nongnu-elpa--richard-stallman.webm" size="282M" subtitles="/2020/subtitles/emacsconf-2020--39-nongnu-elpa--richard-stallman.vtt" duration="6:56"]]
+[[!template id=vid vidid="mainVideo" src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--39-nongnu-elpa--richard-stallman.webm" size="282M" subtitles="/2020/subtitles/emacsconf-2020--39-nongnu-elpa--richard-stallman.vtt" duration="6:56"]]
[Download compressed .webm video (20.8M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--39-nongnu-elpa--richard-stallman--vp9-q56-video-original-audio.webm)
[View transcript](#transcript)
@@ -238,83 +238,131 @@ them fit in.
<a name="transcript"></a>
# Transcript
-Hello, I'm Richard Stallman, founder of the GNU project. In 1976, I
-developed the first Emacs editor with some help from Guy Steele.
-Then, shortly after starting to develop the GNU operating system in
-1984, I wanted an Emacs editor for it. So I started writing GNU Emacs
-in September 1984.
-
-(00:29) Several years ago we decided to move many of the Emacs Lisp
-packages outside the core Emacs distribution into a separate package
-archive that we call the Emacs Lisp package archive ELPA. There were
-two main reasons for this. One is to make the Emacs distribution
-smaller so every user wouldn't have to get all the packages and
-install all the packages. And the other reason was to make it possible
-to release individual packages separately from Emacs releases.
-
-(01:08) Now, at that point somehow we decided to support loading
-packages from a variety of different Emacs Lisp package archives and
-ours would be called the GNU ELPA, but ELPA could be any other. Now, I
-think that naming was a mistake. We should have meant, we should have
-decided that ELPA referred to our package archive and any other
-package archive should be called some other name. Oh, well! Uh this is
-a mistake I believe, because it leads to a lot of confusion it would
-have been clearer if we had uh used the other naming.
-
-(01:55) Because the difference between having a package in core Emacs
-and having it in GNU ELPA, is purely a practical convenience matter.
-Convenience of distribution and convenience of maintenance. We wanted
-to be able to move packages between the two whenever that was
-convenient. So, to make that possible we insisted on getting copyright
-assignments for packages in GNU ELPA just the same way we do for
-packages in core Emacs.
-
-(02:31) Having the facility for installing packages from package
-archives, led to a tremendous boost in the development and release of
-Emacs packages. Unfortunately there was a problem with the way that
-was done. For the most part, the developers of these packages wouldn't
-even tell us about them. They posted them in another package archive
-where we didn't know about them and (where they) no attempt was made
-to try to fit them into Emacs so that they could make sense as parts
-of the Emacs distribution. This led to both moral problems, packages
-that depended on non-free software in order to be usable and technical
-problems because the developers of those packages didn't coordinate
-with us about how to make it useful and convenient and clean to have
-them in Emacs.
-
-(03:36) So, the idea of NonGNU ELPA is an effort to smooth these
-things out. The fundamental plan of NonGNU ELPA is that, we won't ask
-for copyright assignments for those packages. So, we won't be able to
-put them into core Emacs; at least not easily, but we will have some
-control over how we distribute them. We can put any package into
-NonGNU ELPA as long as it's free software. If we like it we can set up
-that way for users to get it. We could put the package in exactly as
-it is if there's no problem at all with it. We can make an arrangement
-with the package's developers to work on it with us and maintain it
-directly for distribution by NonGNU ELPA but if they are not
-interested we can put it in ourselves and if we need to make any
-changes we can do so.
-
-(04:52) So, NonGNU ELPA is not meant to be just a way that others can
-distribute their packages. It's meant at least in a minimal technical
-sense to work with GNU Emacs, and we'll make changes if necessary so
-that it works smoothly with Emacs. And this means that we're going to
-maintain it differently from GNU ELPA. Well, GNU ELPA is hosted in a
-way that is actually rather inconvenient. It is one single Git
-repository. And so anybody that has access to write it can write any
-part of it. There are many different packages in there maintained by
-different people, and we have no way to give each one of them access
-to per own package and not to the others. Well, with NonGNU ELPA we
-plan to fix that. The idea is to have a single Git repository where
-you can download various packages from. But, they won't be maintained
-there. Each of those packages will be copied automatically from some
-other place. Probably some other repository where the right people
-have access to work on it. And this way we can avoid giving a gigantic
-number of people access to every part of it. So far NonGNU ELPA is
-just a plan, we need people to implement the plan. So, if you would
-like to help please write to me. I think this is a very important step
-for progress and it's got to be implemented. Thanks and happy hacking!
-
+[[!template new="1" text="Hello, I'm Richard Stallman," start="00:00:00.320" video="mainVideo" id=subtitle]]
+[[!template text="founder of the GNU project." start="00:00:03.280" video="mainVideo" id=subtitle]]
+[[!template text="In 1976, I developed the first" start="00:00:07.816" video="mainVideo" id=subtitle]]
+[[!template text="Emacs editor with some help" start="00:00:09.200" video="mainVideo" id=subtitle]]
+[[!template text="from Guy Steele." start="00:00:12.320" video="mainVideo" id=subtitle]]
+[[!template text="Then, shortly after starting to develop" start="00:00:13.440" video="mainVideo" id=subtitle]]
+[[!template text="the GNU operating system in 1984," start="00:00:15.839" video="mainVideo" id=subtitle]]
+[[!template text="I wanted an Emacs editor for it." start="00:00:19.119" video="mainVideo" id=subtitle]]
+[[!template text="So I started writing GNU Emacs in September 1984." start="00:00:22.240" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Several years ago we decided to move" start="00:00:29.519" video="mainVideo" id=subtitle]]
+[[!template text="many of the Emacs Lisp packages outside" start="00:00:32.640" video="mainVideo" id=subtitle]]
+[[!template text="the core Emacs distribution into" start="00:00:35.920" video="mainVideo" id=subtitle]]
+[[!template text="a separate package archive that we call the Emacs Lisp package archive ELPA." start="00:00:39.866" video="mainVideo" id=subtitle]]
+[[!template text="There were two main reasons for this." start="00:00:46.480" video="mainVideo" id=subtitle]]
+[[!template text="One is to make the Emacs distribution smaller" start="00:00:49.555" video="mainVideo" id=subtitle]]
+[[!template text="so every user wouldn't have to" start="00:00:51.520" video="mainVideo" id=subtitle]]
+[[!template text="get all the packages" start="00:00:54.870" video="mainVideo" id=subtitle]]
+[[!template text="and install all the packages." start="00:00:55.680" video="mainVideo" id=subtitle]]
+[[!template text="And the other reason was to make it possible to" start="00:00:58.820" video="mainVideo" id=subtitle]]
+[[!template text="release individual packages" start="00:01:00.480" video="mainVideo" id=subtitle]]
+[[!template text="separately from Emacs releases." start="00:01:03.485" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Now, at that point somehow we decided to" start="00:01:08.880" video="mainVideo" id=subtitle]]
+[[!template text="support loading packages from" start="00:01:13.119" video="mainVideo" id=subtitle]]
+[[!template text="a variety of different Emacs Lisp package archives" start="00:01:17.040" video="mainVideo" id=subtitle]]
+[[!template text="and ours would be called the GNU ELPA," start="00:01:21.119" video="mainVideo" id=subtitle]]
+[[!template text="but ELPA could be any other." start="00:01:25.520" video="mainVideo" id=subtitle]]
+[[!template text="Now, I think that naming was a mistake." start="00:01:29.280" video="mainVideo" id=subtitle]]
+[[!template text="We should have meant, we should have decided that ELPA" start="00:01:32.945" video="mainVideo" id=subtitle]]
+[[!template text="referred to our package archive" start="00:01:35.119" video="mainVideo" id=subtitle]]
+[[!template text="and any other package archive" start="00:01:37.759" video="mainVideo" id=subtitle]]
+[[!template text="should be called some other name." start="00:01:39.297" video="mainVideo" id=subtitle]]
+[[!template text="Oh, well! Uh this is a mistake," start="00:01:42.479" video="mainVideo" id=subtitle]]
+[[!template text="I believe, because it leads" start="00:01:46.128" video="mainVideo" id=subtitle]]
+[[!template text="to a lot of confusion." start="00:01:48.320" video="mainVideo" id=subtitle]]
+[[!template text="It would have been clearer" start="00:01:49.397" video="mainVideo" id=subtitle]]
+[[!template text="if we had used the other naming." start="00:01:51.119" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Because the difference between" start="00:01:55.759" video="mainVideo" id=subtitle]]
+[[!template text="having a package in core Emacs and having it in GNU ELPA," start="00:01:59.812" video="mainVideo" id=subtitle]]
+[[!template text="is purely a practical convenience matter." start="00:02:04.159" video="mainVideo" id=subtitle]]
+[[!template text="Convenience of distribution" start="00:02:07.840" video="mainVideo" id=subtitle]]
+[[!template text="and convenience of maintenance." start="00:02:10.501" video="mainVideo" id=subtitle]]
+[[!template text="We wanted to be able to move packages" start="00:02:12.000" video="mainVideo" id=subtitle]]
+[[!template text="between the two" start="00:02:14.879" video="mainVideo" id=subtitle]]
+[[!template text="whenever that was convenient." start="00:02:16.800" video="mainVideo" id=subtitle]]
+[[!template text="So, to make that possible" start="00:02:19.258" video="mainVideo" id=subtitle]]
+[[!template text="we insisted on getting copyright" start="00:02:21.200" video="mainVideo" id=subtitle]]
+[[!template text="assignments for packages in GNU ELPA" start="00:02:23.200" video="mainVideo" id=subtitle]]
+[[!template text="just the same way we do for packages in core Emacs." start="00:02:26.319" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Having the facility for installing" start="00:02:31.360" video="mainVideo" id=subtitle]]
+[[!template text="packages from package archives," start="00:02:33.760" video="mainVideo" id=subtitle]]
+[[!template text="led to a tremendous boost in the" start="00:02:36.239" video="mainVideo" id=subtitle]]
+[[!template text="development and release of Emacs packages." start="00:02:39.440" video="mainVideo" id=subtitle]]
+[[!template text="Unfortunately there was a problem with" start="00:02:42.239" video="mainVideo" id=subtitle]]
+[[!template text="the way that was done." start="00:02:44.879" video="mainVideo" id=subtitle]]
+[[!template text="For the most part, the developers of these packages" start="00:02:46.560" video="mainVideo" id=subtitle]]
+[[!template text="wouldn't even tell us about them." start="00:02:50.000" video="mainVideo" id=subtitle]]
+[[!template text="They posted them in another package archive" start="00:02:52.218" video="mainVideo" id=subtitle]]
+[[!template text="where we didn't know about them" start="00:02:56.027" video="mainVideo" id=subtitle]]
+[[!template text="and no attempt was made to try to fit them" start="00:02:58.480" video="mainVideo" id=subtitle]]
+[[!template text="into Emacs so that they could make sense" start="00:03:03.120" video="mainVideo" id=subtitle]]
+[[!template text="as parts of the Emacs distribution." start="00:03:06.560" video="mainVideo" id=subtitle]]
+[[!template text="This led to both moral problems," start="00:03:10.879" video="mainVideo" id=subtitle]]
+[[!template text="(packages that depended on" start="00:03:14.480" video="mainVideo" id=subtitle]]
+[[!template text="non-free software in order to be usable)" start="00:03:16.375" video="mainVideo" id=subtitle]]
+[[!template text="and technical problems," start="00:03:19.599" video="mainVideo" id=subtitle]]
+[[!template text="because the developers of those packages" start="00:03:21.354" video="mainVideo" id=subtitle]]
+[[!template text="didn't coordinate with us" start="00:03:24.877" video="mainVideo" id=subtitle]]
+[[!template text="about how to make it useful and" start="00:03:26.159" video="mainVideo" id=subtitle]]
+[[!template text="convenient and clean to have them in Emacs." start="00:03:29.519" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So, the idea of NonGNU ELPA" start="00:03:36.560" video="mainVideo" id=subtitle]]
+[[!template text="is an effort to smooth these things out." start="00:03:41.120" video="mainVideo" id=subtitle]]
+[[!template text="The fundamental plan of" start="00:03:45.337" video="mainVideo" id=subtitle]]
+[[!template text="NonGNU ELPA is that" start="00:03:48.319" video="mainVideo" id=subtitle]]
+[[!template text="we won't ask for copyright assignments" start="00:03:51.680" video="mainVideo" id=subtitle]]
+[[!template text="for those packages." start="00:03:54.480" video="mainVideo" id=subtitle]]
+[[!template text="So, we won't be able to put them into core Emacs;" start="00:03:56.159" video="mainVideo" id=subtitle]]
+[[!template text="at least not easily," start="00:04:00.000" video="mainVideo" id=subtitle]]
+[[!template text="but we will have some control over how we distribute them." start="00:04:03.550" video="mainVideo" id=subtitle]]
+[[!template text="We can put any package into NonGNU ELPA" start="00:04:09.519" video="mainVideo" id=subtitle]]
+[[!template text="as long as it's free software." start="00:04:14.691" video="mainVideo" id=subtitle]]
+[[!template text="If we like it, we can set up that way for users to get it." start="00:04:16.320" video="mainVideo" id=subtitle]]
+[[!template text="We could put the package in exactly as it is" start="00:04:23.360" video="mainVideo" id=subtitle]]
+[[!template text="if there's no problem at all with it." start="00:04:26.720" video="mainVideo" id=subtitle]]
+[[!template text="We can make an arrangement" start="00:04:29.919" video="mainVideo" id=subtitle]]
+[[!template text="with the package's developers" start="00:04:32.647" video="mainVideo" id=subtitle]]
+[[!template text="to work on it with us and maintain it" start="00:04:34.160" video="mainVideo" id=subtitle]]
+[[!template text="directly for distribution by NonGNU ELPA," start="00:04:38.000" video="mainVideo" id=subtitle]]
+[[!template text="but if they are not interested," start="00:04:42.560" video="mainVideo" id=subtitle]]
+[[!template text="we can put it in ourselves," start="00:04:45.778" video="mainVideo" id=subtitle]]
+[[!template text="and if we need to make any changes," start="00:04:48.729" video="mainVideo" id=subtitle]]
+[[!template text="we can do so." start="00:04:50.453" video="mainVideo" id=subtitle]]
+[[!template text="So, NonGNU ELPA is not meant to be" start="00:04:52.000" video="mainVideo" id=subtitle]]
+[[!template text="just a way that others can distribute their packages." start="00:04:58.688" video="mainVideo" id=subtitle]]
+[[!template text="It's meant, at least in" start="00:05:02.720" video="mainVideo" id=subtitle]]
+[[!template text="a minimal technical sense," start="00:05:04.336" video="mainVideo" id=subtitle]]
+[[!template text="to work with GNU Emacs," start="00:05:07.574" video="mainVideo" id=subtitle]]
+[[!template text="and we'll make changes if necessary," start="00:05:10.686" video="mainVideo" id=subtitle]]
+[[!template text="so that it works smoothly with Emacs." start="00:05:12.305" video="mainVideo" id=subtitle]]
+[[!template text="And this means that we're going to maintain it differently from GNU ELPA." start="00:05:17.928" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Well, GNU ELPA is hosted in a way that is actually rather inconvenient." start="00:05:25.365" video="mainVideo" id=subtitle]]
+[[!template text="It is one single Git repository." start="00:05:31.520" video="mainVideo" id=subtitle]]
+[[!template text="And so anybody that has access to write it" start="00:05:35.600" video="mainVideo" id=subtitle]]
+[[!template text="can write any part of it." start="00:05:39.039" video="mainVideo" id=subtitle]]
+[[!template text="There are many different packages in there, maintained by different people," start="00:05:41.239" video="mainVideo" id=subtitle]]
+[[!template text="and we have no way to give each one of" start="00:05:46.080" video="mainVideo" id=subtitle]]
+[[!template text="them access to per own package" start="00:05:48.080" video="mainVideo" id=subtitle]]
+[[!template text="and not to the others." start="00:05:50.960" video="mainVideo" id=subtitle]]
+[[!template text="Well, with NonGNU ELPA, we plan to fix that." start="00:05:53.122" video="mainVideo" id=subtitle]]
+[[!template text="The idea is to have a single Git repository" start="00:05:57.035" video="mainVideo" id=subtitle]]
+[[!template text="where you can download various packages from." start="00:06:01.411" video="mainVideo" id=subtitle]]
+[[!template text="But they won't be maintained there." start="00:06:05.600" video="mainVideo" id=subtitle]]
+[[!template text="Each of those packages will be" start="00:06:08.400" video="mainVideo" id=subtitle]]
+[[!template text="copied automatically from some other place." start="00:06:10.800" video="mainVideo" id=subtitle]]
+[[!template text="Probably some other repository" start="00:06:15.280" video="mainVideo" id=subtitle]]
+[[!template text="where the right people have access to work on it." start="00:06:18.311" video="mainVideo" id=subtitle]]
+[[!template text="And this way we can avoid giving" start="00:06:22.960" video="mainVideo" id=subtitle]]
+[[!template text="a gigantic number of people" start="00:06:26.375" video="mainVideo" id=subtitle]]
+[[!template new="1" text="access to every part of it." start="00:06:28.160" video="mainVideo" id=subtitle]]
+[[!template text="So far NonGNU ELPA is just a plan," start="00:06:32.240" video="mainVideo" id=subtitle]]
+[[!template text="we need people to implement the plan." start="00:06:37.039" video="mainVideo" id=subtitle]]
+[[!template text="So, if you would like to help," start="00:06:40.479" video="mainVideo" id=subtitle]]
+[[!template text="please write to me." start="00:06:43.825" video="mainVideo" id=subtitle]]
+[[!template text="I think this is a very important step for progress" start="00:06:45.120" video="mainVideo" id=subtitle]]
+[[!template text="and it's got to be implemented." start="00:06:49.520" video="mainVideo" id=subtitle]]
+[[!template text="Thanks and happy hacking!" start="00:06:52.639" video="mainVideo" id=subtitle]]
<!-- /transcript -->