summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2020/info/22.md537
-rw-r--r--2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.vtt2386
-rw-r--r--2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy.vtt1723
3 files changed, 2259 insertions, 2387 deletions
diff --git a/2020/info/22.md b/2020/info/22.md
index 6e616cda..d6e3d717 100644
--- a/2020/info/22.md
+++ b/2020/info/22.md
@@ -1,8 +1,9 @@
# Powering-up Special Blocks
Musa Al-hassy
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy.webm"]]
+[[!template id=vid vidid="mainVideo" src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy.webm" subtitles="/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy.vtt" video]]
[Download compressed .webm video (29.2M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy--vp9-q56-video-original-audio.webm)
+[View transcript](#transcript)
Users will generally only make use of a few predefined \`special
blocks', such as \`example, centre, quote', and will not bother with
@@ -138,3 +139,537 @@ love to have it.
<https://alhassy.github.io/ElispCheatSheet/CheatSheet.pdf>.
- My Emacs init:
<https://github.com/alhassy/emacs.d#a-life-configuring-emacs>.
+
+<a name="transcript"></a>
+# Transcript
+
+[[!template text="All right, then. Well, hello everyone." start="00:00:04.080" video="mainVideo" id=subtitle]]
+[[!template text="I hope you're all enjoying the EmacsConf." start="00:00:07.359" video="mainVideo" id=subtitle]]
+[[!template text="My name is Musa Al-hassy, and I hope you're" start="00:00:11.519" video="mainVideo" id=subtitle]]
+[[!template text="excited to learn about powering up special blocks." start="00:00:15.040" video="mainVideo" id=subtitle]]
+[[!template text="Let's first off find out what these special blocks are," start="00:00:19.840" video="mainVideo" id=subtitle]]
+[[!template text="and see what we can go from." start="00:00:25.574" video="mainVideo" id=subtitle]]
+[[!template text="Yesterday, I saw a lot of cool talks" start="00:00:27.920" video="mainVideo" id=subtitle]]
+[[!template text="and people were chatting about" start="00:00:30.240" video="mainVideo" id=subtitle]]
+[[!template text="how should you present? Should you do it this way or that way?" start="00:00:33.200" video="mainVideo" id=subtitle]]
+[[!template text="I thought maybe I should try a different way." start="00:00:37.200" video="mainVideo" id=subtitle]]
+[[!template text="But I'm talking about special blocks" start="00:00:39.931" video="mainVideo" id=subtitle]]
+[[!template text="and if I show you an Emacs, then I have to export" start="00:00:42.567" video="mainVideo" id=subtitle]]
+[[!template text="the HTML so you can see what it looks like" start="00:00:45.039" video="mainVideo" id=subtitle]]
+[[!template text="or export to a PDF so you can see what it looks like." start="00:00:47.840" video="mainVideo" id=subtitle]]
+[[!template text="So I ended up writing in org-reveal," start="00:00:51.920" video="mainVideo" id=subtitle]]
+[[!template text="and joyously, this just works." start="00:00:54.239" video="mainVideo" id=subtitle]]
+[[!template text="You can just see things here." start="00:00:58.960" video="mainVideo" id=subtitle]]
+[[!template text="I was worried that I'd have to take pictures" start="00:01:00.879" video="mainVideo" id=subtitle]]
+[[!template text="and then insert pings, so that was a delight." start="00:01:03.452" video="mainVideo" id=subtitle]]
+[[!template text="Okay. Special blocks are these things like a center small quote." start="00:01:09.760" video="mainVideo" id=subtitle]]
+[[!template text="That's what a special block is," start="00:01:15.704" video="mainVideo" id=subtitle]]
+[[!template text="and with a bit of Lisp, we can make" start="00:01:17.280" video="mainVideo" id=subtitle]]
+[[!template text="special blocks and link types." start="00:01:19.733" video="mainVideo" id=subtitle]]
+[[!template text="Right. Using a single interface." start="00:01:22.741" video="mainVideo" id=subtitle]]
+[[!template text="The interface is going to be similar" start="00:01:24.799" video="mainVideo" id=subtitle]]
+[[!template text="to one many people are familiar with." start="00:01:27.344" video="mainVideo" id=subtitle]]
+[[!template text="In particular, Org Babel's src interface" start="00:01:29.281" video="mainVideo" id=subtitle]]
+[[!template text="as well as using global header arguments for link types." start="00:01:34.712" video="mainVideo" id=subtitle]]
+[[!template text="The idea is to write it once" start="00:01:37.840" video="mainVideo" id=subtitle]]
+[[!template text="and generate many different kinds." start="00:01:39.450" video="mainVideo" id=subtitle]]
+[[!template text="You write in Org markup and you can have HTML," start="00:01:41.200" video="mainVideo" id=subtitle]]
+[[!template text="you can have PDF, and joyously, org-reveal." start="00:01:45.213" video="mainVideo" id=subtitle]]
+[[!template text="That was an unexpected delight." start="00:01:49.767" video="mainVideo" id=subtitle]]
+[[!template text="Here are a few that you'll just see" start="00:01:53.600" video="mainVideo" id=subtitle]]
+[[!template text="in this presentation." start="00:01:57.840" video="mainVideo" id=subtitle]]
+[[!template text="I won't show some of these link-only ones," start="00:02:01.759" video="mainVideo" id=subtitle]]
+[[!template text="but we'll see a few of these other ones" start="00:02:05.040" video="mainVideo" id=subtitle]]
+[[!template text="just to make the presentation look nice" start="00:02:06.799" video="mainVideo" id=subtitle]]
+[[!template text="So the presentation is really going to" start="00:02:09.500" video="mainVideo" id=subtitle]]
+[[!template text="present these blocks and the mechanism" start="00:02:11.520" video="mainVideo" id=subtitle]]
+[[!template text="at the same time." start="00:02:14.000" video="mainVideo" id=subtitle]]
+[[!template text="No HTML was written." start="00:02:15.120" video="mainVideo" id=subtitle]]
+[[!template text="Look, Ma! No HTML, just pure Org Mode," start="00:02:18.400" video="mainVideo" id=subtitle]]
+[[!template text="and you get all these beautiful boxes and things." start="00:02:21.280" video="mainVideo" id=subtitle]]
+[[!template text="The motivation for this is..." start="00:02:25.840" video="mainVideo" id=subtitle]]
+[[!template text="you're online, you run into a blog," start="00:02:29.120" video="mainVideo" id=subtitle]]
+[[!template text="and you see something you like," start="00:02:31.200" video="mainVideo" id=subtitle]]
+[[!template text="and you're like, man," start="00:02:32.120" video="mainVideo" id=subtitle]]
+[[!template text="you know, I wish I could produce that." start="00:02:33.120" video="mainVideo" id=subtitle]]
+[[!template text="But you check, and the author wrote raw HTML." start="00:02:36.640" video="mainVideo" id=subtitle]]
+[[!template text="You know, #+HTML: everywhere." start="00:02:41.639" video="mainVideo" id=subtitle]]
+[[!template text="That's going to obscure your real content." start="00:02:44.239" video="mainVideo" id=subtitle]]
+[[!template text="It's going to be surrounded by all this" start="00:02:49.533" video="mainVideo" id=subtitle]]
+[[!template text="styling information. That's unfortunate." start="00:02:51.200" video="mainVideo" id=subtitle]]
+[[!template text="The author decides to use an Org macro." start="00:02:54.239" video="mainVideo" id=subtitle]]
+[[!template text="All right, a bit better," start="00:02:57.033" video="mainVideo" id=subtitle]]
+[[!template text="but then what if you decide," start="00:02:58.959" video="mainVideo" id=subtitle]]
+[[!template text="hey I want to make a PDF? Not great." start="00:03:00.333" video="mainVideo" id=subtitle]]
+[[!template text="And then the worst of all," start="00:03:04.667" video="mainVideo" id=subtitle]]
+[[!template text="the author doesn't give you the source," start="00:03:06.000" video="mainVideo" id=subtitle]]
+[[!template text="and then you have to view page source," start="00:03:07.840" video="mainVideo" id=subtitle]]
+[[!template text="and learn cascading style sheets," start="00:03:10.159" video="mainVideo" id=subtitle]]
+[[!template text="and sit in a corner and cry," start="00:03:14.239" video="mainVideo" id=subtitle]]
+[[!template text="and decide to do other things with your life." start="00:03:15.767" video="mainVideo" id=subtitle]]
+[[!template text="We want to give you Org users numerous styles" start="00:03:18.080" video="mainVideo" id=subtitle]]
+[[!template text="and an extensible mechanism to add more of these" start="00:03:22.640" video="mainVideo" id=subtitle]]
+[[!template text="aesthetically pleasing styles," start="00:03:27.200" video="mainVideo" id=subtitle]]
+[[!template text="to have really nice things" start="00:03:28.799" video="mainVideo" id=subtitle]]
+[[!template text="look one way in the HTML" start="00:03:31.200" video="mainVideo" id=subtitle]]
+[[!template text="and look almost the same way in the PDF" start="00:03:33.933" video="mainVideo" id=subtitle]]
+[[!template text="and other back ends." start="00:03:36.567" video="mainVideo" id=subtitle]]
+[[!template text="And if by having these newer ones," start="00:03:38.667" video="mainVideo" id=subtitle]]
+[[!template text="people might be encouraged to try making new ones," start="00:03:41.680" video="mainVideo" id=subtitle]]
+[[!template text="especially when the interface is not so difficult," start="00:03:45.519" video="mainVideo" id=subtitle]]
+[[!template text="that's the aim." start="00:03:49.040" video="mainVideo" id=subtitle]]
+[[!template text="So let's have a real story to motivate this even more." start="00:03:54.159" video="mainVideo" id=subtitle]]
+[[!template text="Here's three friends. I hope I don't butcher their names," start="00:03:59.120" video="mainVideo" id=subtitle]]
+[[!template text="but these friends are called" start="00:04:03.533" video="mainVideo" id=subtitle]]
+[[!template text="Amin, Sacha, and Corwin. They're organizing a conference," start="00:04:04.640" video="mainVideo" id=subtitle]]
+[[!template text="EmacsConf 2020." start="00:04:08.720" video="mainVideo" id=subtitle]]
+[[!template text="So Sacha decides to write an Org file" start="00:04:12.080" video="mainVideo" id=subtitle]]
+[[!template text="and she would like some feedback." start="00:04:14.239" video="mainVideo" id=subtitle]]
+[[!template text="Okay. Just to make it clear, there's no..." start="00:04:16.479" video="mainVideo" id=subtitle]]
+[[!template text="just how easy this looks," start="00:04:19.840" video="mainVideo" id=subtitle]]
+[[!template text="let's look at the source for this block." start="00:04:22.960" video="mainVideo" id=subtitle]]
+[[!template text="Notice it's just the word &quot;green,&quot; then a colon," start="00:04:27.280" video="mainVideo" id=subtitle]]
+[[!template text="then Amin. No div style coloring," start="00:04:30.720" video="mainVideo" id=subtitle]]
+[[!template text="just green:Amin." start="00:04:37.333" video="mainVideo" id=subtitle]]
+[[!template text="A very pleasant Org markup." start="00:04:38.479" video="mainVideo" id=subtitle]]
+[[!template text="So that's quite nice. Put some bold around it." start="00:04:41.520" video="mainVideo" id=subtitle]]
+[[!template text="Not too difficult." start="00:04:44.960" video="mainVideo" id=subtitle]]
+[[!template text="Hopefully, this will be useful to other people as well." start="00:04:46.433" video="mainVideo" id=subtitle]]
+[[!template text="So what kind of feedback" start="00:04:49.900" video="mainVideo" id=subtitle]]
+[[!template text="would Sacha expect to get?" start="00:04:52.240" video="mainVideo" id=subtitle]]
+[[!template text="Maybe she would expect top-level remarks" start="00:04:55.233" video="mainVideo" id=subtitle]]
+[[!template text="visible in the export." start="00:04:59.120" video="mainVideo" id=subtitle]]
+[[!template text="When she makes an HTML, she can see right there a big block." start="00:05:00.833" video="mainVideo" id=subtitle]]
+[[!template text="Right. Maybe Amin will suggest to Sacha," start="00:05:04.400" video="mainVideo" id=subtitle]]
+[[!template text="please replace this part" start="00:05:09.533" video="mainVideo" id=subtitle]]
+[[!template text="with this other part" start="00:05:11.120" video="mainVideo" id=subtitle]]
+[[!template text="or replace this word" start="00:05:12.267" video="mainVideo" id=subtitle]]
+[[!template text="with this other word." start="00:05:13.333" video="mainVideo" id=subtitle]]
+[[!template text="This is not really possible" start="00:05:14.639" video="mainVideo" id=subtitle]]
+[[!template text="with raw HTML or with even LaTeX." start="00:05:16.960" video="mainVideo" id=subtitle]]
+[[!template text="You'd have to have multiple arguments:" start="00:05:21.919" video="mainVideo" id=subtitle]]
+[[!template text="the first argument, and then" start="00:05:24.000" video="mainVideo" id=subtitle]]
+[[!template text="the replacement argument. It's a bit clunky." start="00:05:25.360" video="mainVideo" id=subtitle]]
+[[!template text="But with our setup, you just write some text," start="00:05:28.800" video="mainVideo" id=subtitle]]
+[[!template text="write #+replace_with" start="00:05:32.080" video="mainVideo" id=subtitle]]
+[[!template text="and then write more text, and you're good to go." start="00:05:34.367" video="mainVideo" id=subtitle]]
+[[!template text="Normal Org markup." start="00:05:36.240" video="mainVideo" id=subtitle]]
+[[!template text="Everyone speaks different languages." start="00:05:39.440" video="mainVideo" id=subtitle]]
+[[!template text="Maybe they want to use one word," start="00:05:40.720" video="mainVideo" id=subtitle]]
+[[!template text="or they're arguing about" start="00:05:43.833" video="mainVideo" id=subtitle]]
+[[!template text="whether we talk about frames or windows," start="00:05:45.919" video="mainVideo" id=subtitle]]
+[[!template text="so maybe they want to have some translations." start="00:05:48.000" video="mainVideo" id=subtitle]]
+[[!template text="So there are different kinds of feedback." start="00:05:50.560" video="mainVideo" id=subtitle]]
+[[!template text="Let's take an example." start="00:05:53.433" video="mainVideo" id=subtitle]]
+[[!template text="Look at what they are." start="00:05:55.360" video="mainVideo" id=subtitle]]
+[[!template text="For example, Sacha might write" start="00:05:59.360" video="mainVideo" id=subtitle]]
+[[!template text="this Org Mode right here," start="00:06:02.560" video="mainVideo" id=subtitle]]
+[[!template text="and then in her HTML exports, you might see this," start="00:06:06.160" video="mainVideo" id=subtitle]]
+[[!template text="and her feedback might look really nicely" start="00:06:09.759" video="mainVideo" id=subtitle]]
+[[!template text="from anyone who says" start="00:06:12.733" video="mainVideo" id=subtitle]]
+[[!template text="let's do some Lisp instead of mathematics." start="00:06:14.560" video="mainVideo" id=subtitle]]
+[[!template text="Let's just do some Lisp." start="00:06:17.400" video="mainVideo" id=subtitle]]
+[[!template text="Corwin says, let's not be so silly." start="00:06:18.560" video="mainVideo" id=subtitle]]
+[[!template text="Let's just say 9 a.m. and move on." start="00:06:22.479" video="mainVideo" id=subtitle]]
+[[!template text="Amin likes to export to PDF," start="00:06:28.080" video="mainVideo" id=subtitle]]
+[[!template text="and so he writes his top-level remarks using LaTeX." start="00:06:31.360" video="mainVideo" id=subtitle]]
+[[!template text="That's how. To get this square" start="00:06:34.333" video="mainVideo" id=subtitle]]
+[[!template text="Amin: please change whatever," start="00:06:36.900" video="mainVideo" id=subtitle]]
+[[!template text="he might write like this: #+latex:." start="00:06:38.960" video="mainVideo" id=subtitle]]
+[[!template text="But then Sacha only exports to HTML, for example," start="00:06:43.120" video="mainVideo" id=subtitle]]
+[[!template text="so she doesn't look at the PDF," start="00:06:50.880" video="mainVideo" id=subtitle]]
+[[!template text="and she may not see his top-level feedback" start="00:06:54.880" video="mainVideo" id=subtitle]]
+[[!template text="with those nice brackets and and bold." start="00:06:57.867" video="mainVideo" id=subtitle]]
+[[!template text="She might think everything's good." start="00:07:00.667" video="mainVideo" id=subtitle]]
+[[!template text="That can be a bit disastrous." start="00:07:03.120" video="mainVideo" id=subtitle]]
+[[!template text="So maybe Sacha will then" start="00:07:06.160" video="mainVideo" id=subtitle]]
+[[!template text="make some of her own feedback." start="00:07:08.600" video="mainVideo" id=subtitle]]
+[[!template text="To produce it, she might write" start="00:07:13.199" video="mainVideo" id=subtitle]]
+[[!template text="HTML commands, #+html: to get that." start="00:07:16.560" video="mainVideo" id=subtitle]]
+[[!template text="But then Amin will make a PDF," start="00:07:21.680" video="mainVideo" id=subtitle]]
+[[!template text="and this won't stick out." start="00:07:24.100" video="mainVideo" id=subtitle]]
+[[!template text="So he might think everything's okay," start="00:07:25.680" video="mainVideo" id=subtitle]]
+[[!template text="even though it's not." start="00:07:28.367" video="mainVideo" id=subtitle]]
+[[!template text="Then Corwin actually decides," start="00:07:30.160" video="mainVideo" id=subtitle]]
+[[!template text="&quot;Hey, let me read the exported result" start="00:07:33.100" video="mainVideo" id=subtitle]]
+[[!template text="and there's all those feedback from two people" start="00:07:35.900" video="mainVideo" id=subtitle]]
+[[!template text="who haven't read anything, because maybe they were in a rush," start="00:07:38.867" video="mainVideo" id=subtitle]]
+[[!template text="and didn't see the top-level feedback." start="00:07:42.633" video="mainVideo" id=subtitle]]
+[[!template text="So they agree. &quot;Hey, let's have a uniform Org interface that exports" start="00:07:45.167" video="mainVideo" id=subtitle]]
+[[!template text="to both HTML and PDF." start="00:07:50.000" video="mainVideo" id=subtitle]]
+[[!template text="Make both of us happy.&quot;" start="00:07:52.567" video="mainVideo" id=subtitle]]
+[[!template text="Okay. So they decide to use Org special blocks." start="00:07:54.080" video="mainVideo" id=subtitle]]
+[[!template text="Right. To set this up," start="00:07:58.160" video="mainVideo" id=subtitle]]
+[[!template text="they need to read a little bit of Lisp," start="00:08:01.300" video="mainVideo" id=subtitle]]
+[[!template text="hooks, advice, macros to get all of this set up," start="00:08:04.400" video="mainVideo" id=subtitle]]
+[[!template text="and then they'll use Org as the main interface." start="00:08:08.879" video="mainVideo" id=subtitle]]
+[[!template text="It's a lot of work, but it's worth it, right? maybe?" start="00:08:12.319" video="mainVideo" id=subtitle]]
+[[!template text="But then Corwin's a bit terse." start="00:08:16.479" video="mainVideo" id=subtitle]]
+[[!template text="Corwin maybe doesn't want to write using blocks." start="00:08:19.759" video="mainVideo" id=subtitle]]
+[[!template text="He thinks they're overkill." start="00:08:24.333" video="mainVideo" id=subtitle]]
+[[!template text="Sacha wants HTML, and Amin wants PDF, and Corwin wants org-reveal." start="00:08:26.080" video="mainVideo" id=subtitle]]
+[[!template text="So now they have to reformat all their code." start="00:08:32.560" video="mainVideo" id=subtitle]]
+[[!template text="And then they need to use org link types" start="00:08:35.533" video="mainVideo" id=subtitle]]
+[[!template text="to reduce the overkill," start="00:08:36.900" video="mainVideo" id=subtitle]]
+[[!template text="so they can try to avoid duplication" start="00:08:38.867" video="mainVideo" id=subtitle]]
+[[!template text="by factoring things out into self-contained functions." start="00:08:41.367" video="mainVideo" id=subtitle]]
+[[!template text="But now, to set up our links," start="00:08:46.800" video="mainVideo" id=subtitle]]
+[[!template text="we'll have to learn a new interface, org setup link." start="00:08:50.320" video="mainVideo" id=subtitle]]
+[[!template text="Learn a little bit about fonts, follow links, export handlers..." start="00:08:55.467" video="mainVideo" id=subtitle]]
+[[!template text="It's so much. That's so much. But then," start="00:09:02.160" video="mainVideo" id=subtitle]]
+[[!template text="the friends, they learn a lot." start="00:09:05.040" video="mainVideo" id=subtitle]]
+[[!template text="They learn about defun." start="00:09:06.800" video="mainVideo" id=subtitle]]
+[[!template text="So these words are red." start="00:09:08.399" video="mainVideo" id=subtitle]]
+[[!template text="You get a little explanation." start="00:09:11.120" video="mainVideo" id=subtitle]]
+[[!template text="I think it's a bit too small for anyone to read." start="00:09:12.185" video="mainVideo" id=subtitle]]
+[[!template text="This is Lisp documentation for defun." start="00:09:14.320" video="mainVideo" id=subtitle]]
+[[!template text="advice-add. There's some Lisp documentation." start="00:09:18.000" video="mainVideo" id=subtitle]]
+[[!template text="They learn about destructuring -let." start="00:09:21.600" video="mainVideo" id=subtitle]]
+[[!template text="This is from the dash library." start="00:09:23.600" video="mainVideo" id=subtitle]]
+[[!template text="Here's all that glorious," start="00:09:25.279" video="mainVideo" id=subtitle]]
+[[!template text="glorious documentation with examples." start="00:09:26.959" video="mainVideo" id=subtitle]]
+[[!template text="Sorry. I like that." start="00:09:28.800" video="mainVideo" id=subtitle]]
+[[!template text="They might make an ad-hoc mechanism" start="00:09:30.300" video="mainVideo" id=subtitle]]
+[[!template text="to simulate arguments for special blocks," start="00:09:32.467" video="mainVideo" id=subtitle]]
+[[!template text="so something maybe called extract-arguments," start="00:09:35.400" video="mainVideo" id=subtitle]]
+[[!template text="and then, of course, to make new link types," start="00:09:38.500" video="mainVideo" id=subtitle]]
+[[!template text="they have to learn about" start="00:09:41.533" video="mainVideo" id=subtitle]]
+[[!template text="org-link-set-parameters and its numerous bits and pieces." start="00:09:42.480" video="mainVideo" id=subtitle]]
+[[!template text="Let's close all these ones down." start="00:09:49.920" video="mainVideo" id=subtitle]]
+[[!template text="Of course they also need to be comfortable" start="00:09:53.600" video="mainVideo" id=subtitle]]
+[[!template text="with loops and maps and matching and string functions." start="00:09:55.800" video="mainVideo" id=subtitle]]
+[[!template text="So it's a bit of a pain." start="00:09:59.920" video="mainVideo" id=subtitle]]
+[[!template text="It's probably not worth it." start="00:10:03.360" video="mainVideo" id=subtitle]]
+[[!template text="Maybe I'll just rush things quickly," start="00:10:05.839" video="mainVideo" id=subtitle]]
+[[!template text="or do it ad-hoc..." start="00:10:07.767" video="mainVideo" id=subtitle]]
+[[!template text="We have things to do." start="00:10:10.320" video="mainVideo" id=subtitle]]
+[[!template text="But maybe the squad wants to have a modular and unified interface" start="00:10:13.680" video="mainVideo" id=subtitle]]
+[[!template text="so everyone's comfortable with defun to define a function" start="00:10:19.367" video="mainVideo" id=subtitle]]
+[[!template text="and they say, &quot;It would be nice if we could just define simultaneously" start="00:10:23.700" video="mainVideo" id=subtitle]]
+[[!template text="both a block and the link type.&quot;" start="00:10:29.440" video="mainVideo" id=subtitle]]
+[[!template text="That way, we have a single interface" start="00:10:32.959" video="mainVideo" id=subtitle]]
+[[!template text="Org mode, for these things." start="00:10:36.000" video="mainVideo" id=subtitle]]
+[[!template text="It would be nice if it was modular." start="00:10:37.867" video="mainVideo" id=subtitle]]
+[[!template text="If I defined a one kind of block and you defined another," start="00:10:39.767" video="mainVideo" id=subtitle]]
+[[!template text="we could compose them," start="00:10:44.633" video="mainVideo" id=subtitle]]
+[[!template text="then get a nice bigger block, like LEGO." start="00:10:45.519" video="mainVideo" id=subtitle]]
+[[!template text="That would be nice. Building blocks." start="00:10:49.360" video="mainVideo" id=subtitle]]
+[[!template text="This is what we have come up with, called defblock." start="00:10:52.320" video="mainVideo" id=subtitle]]
+[[!template text="It also has a long documentation string containing examples and things." start="00:10:56.240" video="mainVideo" id=subtitle]]
+[[!template text="So that way, it can try to be useful." start="00:11:01.760" video="mainVideo" id=subtitle]]
+[[!template text="Let's look at a solution to these friends' trilemma." start="00:11:04.800" video="mainVideo" id=subtitle]]
+[[!template text="So here's a way to define a block." start="00:11:10.880" video="mainVideo" id=subtitle]]
+[[!template text="It doesn't look that difficult, but this is how they can define a block" start="00:11:14.320" video="mainVideo" id=subtitle]]
+[[!template text="for their top-level feedback." start="00:11:22.320" video="mainVideo" id=subtitle]]
+[[!template text="Let's look at the three main parts together." start="00:11:25.920" video="mainVideo" id=subtitle]]
+[[!template text="It's not that difficult, I hope." start="00:11:28.959" video="mainVideo" id=subtitle]]
+[[!template text="Just six lines, and that's including a documentation string," start="00:11:31.233" video="mainVideo" id=subtitle]]
+[[!template text="newlines and things." start="00:11:35.300" video="mainVideo" id=subtitle]]
+[[!template text="So in line 1, we define the block just like you define a function." start="00:11:37.633" video="mainVideo" id=subtitle]]
+[[!template text="We define a block." start="00:11:43.300" video="mainVideo" id=subtitle]]
+[[!template text="The block name is going to be called &quot;feedback.&quot;" start="00:11:44.880" video="mainVideo" id=subtitle]]
+[[!template text="It has an author, &quot;who.&quot;" start="00:11:47.433" video="mainVideo" id=subtitle]]
+[[!template text="The author has no default value." start="00:11:49.680" video="mainVideo" id=subtitle]]
+[[!template text="It has a color, and the color has a default value of red." start="00:11:54.133" video="mainVideo" id=subtitle]]
+[[!template text="So just as when you define functions," start="00:11:57.760" video="mainVideo" id=subtitle]]
+[[!template text="you start by define or defblock," start="00:12:01.680" video="mainVideo" id=subtitle]]
+[[!template text="then the name, some mandatory argument, and some optional arguments." start="00:12:06.233" video="mainVideo" id=subtitle]]
+[[!template text="Then the next stage is definition. Documentation." start="00:12:13.440" video="mainVideo" id=subtitle]]
+[[!template text="The people who use this," start="00:12:18.480" video="mainVideo" id=subtitle]]
+[[!template text="which are future you or future me," start="00:12:20.133" video="mainVideo" id=subtitle]]
+[[!template text="might want to know what this is." start="00:12:22.880" video="mainVideo" id=subtitle]]
+[[!template text="So let's get to document this." start="00:12:25.519" video="mainVideo" id=subtitle]]
+[[!template text="For Corwin, who might want to use tooltips..." start="00:12:27.839" video="mainVideo" id=subtitle]]
+[[!template text="When Corwin writes feedback in Emacs, they'll see a nice little tooltip," start="00:12:32.079" video="mainVideo" id=subtitle]]
+[[!template text="and the tooltip will have" start="00:12:37.120" video="mainVideo" id=subtitle]]
+[[!template text="this documentation string." start="00:12:38.639" video="mainVideo" id=subtitle]]
+[[!template text="That'll be nice." start="00:12:41.279" video="mainVideo" id=subtitle]]
+[[!template text="And then here's the third part." start="00:12:43.279" video="mainVideo" id=subtitle]]
+[[!template text="The last three lines are not so difficult." start="00:12:45.980" video="mainVideo" id=subtitle]]
+[[!template text="If the backend is HTML," start="00:12:48.067" video="mainVideo" id=subtitle]]
+[[!template text="please use this template string." start="00:12:52.800" video="mainVideo" id=subtitle]]
+[[!template text="Otherwise, use the other string." start="00:12:55.360" video="mainVideo" id=subtitle]]
+[[!template text="For each of these string markers," start="00:12:57.440" video="mainVideo" id=subtitle]]
+[[!template text="please put in the color, who wrote it, and then the contents" start="00:13:01.279" video="mainVideo" id=subtitle]]
+[[!template text="of the special block or the link type." start="00:13:04.959" video="mainVideo" id=subtitle]]
+[[!template text="So that's pretty neat. Not so difficult." start="00:13:08.160" video="mainVideo" id=subtitle]]
+[[!template text="I thought that was kind of cool," start="00:13:11.600" video="mainVideo" id=subtitle]]
+[[!template text="then noticed it's anaphoric." start="00:13:14.639" video="mainVideo" id=subtitle]]
+[[!template text="This defblock gives you two new names." start="00:13:16.600" video="mainVideo" id=subtitle]]
+[[!template text="It gives you a name called contents," start="00:13:21.033" video="mainVideo" id=subtitle]]
+[[!template text="and it gives you a name called backend." start="00:13:23.433" video="mainVideo" id=subtitle]]
+[[!template text="So even if you're writing a defblock" start="00:13:26.480" video="mainVideo" id=subtitle]]
+[[!template text="and you intend it to be used only for links..." start="00:13:29.733" video="mainVideo" id=subtitle]]
+[[!template text="Like these colors, for example." start="00:13:32.560" video="mainVideo" id=subtitle]]
+[[!template text="These colors were defined using defblock." start="00:13:35.440" video="mainVideo" id=subtitle]]
+[[!template text="I used them as links right here." start="00:13:38.399" video="mainVideo" id=subtitle]]
+[[!template text="You don't need to worry" start="00:13:41.279" video="mainVideo" id=subtitle]]
+[[!template text="where does the text come from in the link." start="00:13:43.360" video="mainVideo" id=subtitle]]
+[[!template text="If I say &quot;red:Bob,&quot; is it Bob?" start="00:13:45.300" video="mainVideo" id=subtitle]]
+[[!template text="Or if I put a description, is it the description?" start="00:13:48.959" video="mainVideo" id=subtitle]]
+[[!template text="So it's whatever is available will" start="00:13:52.000" video="mainVideo" id=subtitle]]
+[[!template text="become the value of contents." start="00:13:54.000" video="mainVideo" id=subtitle]]
+[[!template text="If you're really interested" start="00:13:56.720" video="mainVideo" id=subtitle]]
+[[!template text="and you want to do some intricate stuff," start="00:13:59.199" video="mainVideo" id=subtitle]]
+[[!template text="defblock also gives you something called raw-contents," start="00:14:02.433" video="mainVideo" id=subtitle]]
+[[!template text="if you really want to touch" start="00:14:06.933" video="mainVideo" id=subtitle]]
+[[!template text="the raw contents with all of the Org markups still there." start="00:14:08.633" video="mainVideo" id=subtitle]]
+[[!template text="Let's see how everyone can communicate amongst themselves" start="00:14:12.639" video="mainVideo" id=subtitle]]
+[[!template text="using this new interface." start="00:14:19.440" video="mainVideo" id=subtitle]]
+[[!template text="So, Sacha speculates and she... How does" start="00:14:22.480" video="mainVideo" id=subtitle]]
+[[!template text="she speculate for her Org HTML?" start="00:14:26.000" video="mainVideo" id=subtitle]]
+[[!template text="She might just write. Hey look at that, no HTML, nice." start="00:14:28.399" video="mainVideo" id=subtitle]]
+[[!template text="Amin wants to have some green," start="00:14:34.800" video="mainVideo" id=subtitle]]
+[[!template text="and so he just says, hey here's some color green." start="00:14:36.833" video="mainVideo" id=subtitle]]
+[[!template text="There you go. It looks almost the same." start="00:14:39.600" video="mainVideo" id=subtitle]]
+[[!template text="Notice that the main argument is right here." start="00:14:42.959" video="mainVideo" id=subtitle]]
+[[!template text="defblock took an author," start="00:14:48.267" video="mainVideo" id=subtitle]]
+[[!template text="and here's the author again." start="00:14:49.680" video="mainVideo" id=subtitle]]
+[[!template text="And now the optional argument" start="00:14:51.333" video="mainVideo" id=subtitle]]
+[[!template text="uses the org babel source interface" start="00:14:53.920" video="mainVideo" id=subtitle]]
+[[!template text="You just say :, then a key, and then the argument. Quite nice." start="00:14:57.007" video="mainVideo" id=subtitle]]
+[[!template text="Corwin doesn't want to use blocks. It's a bit of an overkill." start="00:15:02.867" video="mainVideo" id=subtitle]]
+[[!template text="He can just write a link." start="00:15:07.920" video="mainVideo" id=subtitle]]
+[[!template text="So the main argument is now the label of the link," start="00:15:12.959" video="mainVideo" id=subtitle]]
+[[!template text="and the description of the link is the contents of the feedback." start="00:15:17.440" video="mainVideo" id=subtitle]]
+[[!template text="So that was quite nice." start="00:15:23.667" video="mainVideo" id=subtitle]]
+[[!template text="So it looks like everyone uses the same interface on the left" start="00:15:25.680" video="mainVideo" id=subtitle]]
+[[!template text="and can have varying outputs." start="00:15:29.360" video="mainVideo" id=subtitle]]
+[[!template text="I think it looks quite nice," start="00:15:32.800" video="mainVideo" id=subtitle]]
+[[!template text="and I hope you do too." start="00:15:34.480" video="mainVideo" id=subtitle]]
+[[!template text="There's a few more." start="00:15:36.639" video="mainVideo" id=subtitle]]
+[[!template text="Maybe, as you saw in some previous ones," start="00:15:38.800" video="mainVideo" id=subtitle]]
+[[!template text="we had text side beside side," start="00:15:41.800" video="mainVideo" id=subtitle]]
+[[!template text="or we folded some regions away." start="00:15:43.920" video="mainVideo" id=subtitle]]
+[[!template text="We put some things in pretty boxes." start="00:15:47.440" video="mainVideo" id=subtitle]]
+[[!template text="We had some spoilers at the very beginning that we hid some text." start="00:15:50.959" video="mainVideo" id=subtitle]]
+[[!template text="We demoed some texts. Here's some Org and here's what it looks like," start="00:15:57.120" video="mainVideo" id=subtitle]]
+[[!template text="and most importantly, they compose." start="00:16:01.680" video="mainVideo" id=subtitle]]
+[[!template text="There's a a macro called thread-block." start="00:16:05.199" video="mainVideo" id=subtitle]]
+[[!template text="thread-block call, and it lets you thread the contents" start="00:16:12.639" video="mainVideo" id=subtitle]]
+[[!template text="through a number of blocks," start="00:16:17.000" video="mainVideo" id=subtitle]]
+[[!template text="treating them as if they were functions." start="00:16:18.000" video="mainVideo" id=subtitle]]
+[[!template text="So, really, you can think of a block" start="00:16:20.639" video="mainVideo" id=subtitle]]
+[[!template text="as a string-valued function." start="00:16:23.680" video="mainVideo" id=subtitle]]
+[[!template text="That's pretty neat, I think." start="00:16:25.567" video="mainVideo" id=subtitle]]
+[[!template text="Thank you for listening." start="00:16:28.533" video="mainVideo" id=subtitle]]
+[[!template text="I hope you've enjoyed this little" start="00:16:31.759" video="mainVideo" id=subtitle]]
+[[!template text="happy fun time with the Emacs and friends." start="00:16:34.880" video="mainVideo" id=subtitle]]
+[[!template text="I'll happily answer questions right now." start="00:16:38.160" video="mainVideo" id=subtitle]]
+[[!template text="Someone says: &quot;Why did you put optional arguments" start="00:16:45.360" video="mainVideo" id=subtitle]]
+[[!template text="in a separate list" start="00:16:49.467" video="mainVideo" id=subtitle]]
+[[!template text="rather than using cl-style argument lists?&quot;" start="00:16:50.480" video="mainVideo" id=subtitle]]
+[[!template text="So that's a very good question," start="00:16:54.560" video="mainVideo" id=subtitle]]
+[[!template text="and I will answer that" start="00:16:58.399" video="mainVideo" id=subtitle]]
+[[!template text="by showing you a more involved definition of feedback." start="00:17:00.000" video="mainVideo" id=subtitle]]
+[[!template text="Let's look at a more involved one right here." start="00:17:05.467" video="mainVideo" id=subtitle]]
+[[!template text="So, for example, this one is called rremark." start="00:17:14.567" video="mainVideo" id=subtitle]]
+[[!template text="Please let me know if my text is not sufficiently big." start="00:17:19.280" video="mainVideo" id=subtitle]]
+[[!template text="Here is why we have two arguments." start="00:17:23.439" video="mainVideo" id=subtitle]]
+[[!template text="That takes two arguments instead of one" start="00:17:28.033" video="mainVideo" id=subtitle]]
+[[!template text="for its argument list." start="00:17:30.720" video="mainVideo" id=subtitle]]
+[[!template text="You have def block," start="00:17:33.360" video="mainVideo" id=subtitle]]
+[[!template text="then you have the name," start="00:17:34.799" video="mainVideo" id=subtitle]]
+[[!template text="then you have the first argument list" start="00:17:36.000" video="mainVideo" id=subtitle]]
+[[!template text="and the second argument list." start="00:17:40.467" video="mainVideo" id=subtitle]]
+[[!template text="The first argument list" start="00:17:42.880" video="mainVideo" id=subtitle]]
+[[!template text="takes the text right after the begin." start="00:17:46.080" video="mainVideo" id=subtitle]]
+[[!template text="The text right after the begin is the main argument." start="00:17:49.280" video="mainVideo" id=subtitle]]
+[[!template text="And then the remaining key-value pairs are in the second argument list." start="00:17:53.000" video="mainVideo" id=subtitle]]
+[[!template text="Now the reason we have two is because" start="00:18:00.320" video="mainVideo" id=subtitle]]
+[[!template text="in order to streamline the interface to account for both special blocks" start="00:18:03.280" video="mainVideo" id=subtitle]]
+[[!template text="and Org link types, what we do is we say," start="00:18:08.880" video="mainVideo" id=subtitle]]
+[[!template text="in the first argument list, you can give a name to the first argument," start="00:18:13.360" video="mainVideo" id=subtitle]]
+[[!template text="give it a default value," start="00:18:18.000" video="mainVideo" id=subtitle]]
+[[!template text="and anything else you provide will become part of the link information." start="00:18:19.633" video="mainVideo" id=subtitle]]
+[[!template text="For example, this link," start="00:18:28.800" video="mainVideo" id=subtitle]]
+[[!template text="we decided to make its face angry red." start="00:18:30.861" video="mainVideo" id=subtitle]]
+[[!template text="You might want to give other features to links." start="00:18:32.833" video="mainVideo" id=subtitle]]
+[[!template text="So we're trying to streamline the interface" start="00:18:36.433" video="mainVideo" id=subtitle]]
+[[!template text="for both special blocks and Org link types," start="00:18:39.100" video="mainVideo" id=subtitle]]
+[[!template text="and we thought this way was quite nice." start="00:18:41.733" video="mainVideo" id=subtitle]]
+[[!template text="That was the main reason." start="00:18:46.240" video="mainVideo" id=subtitle]]
+[[!template text="Someone asks--" start="00:18:47.500" video="mainVideo" id=subtitle]]
+[[!template text="if you have follow-ups, please ask--" start="00:18:52.480" video="mainVideo" id=subtitle]]
+[[!template text="Someone asks, &quot;Do you intend to try to" start="00:18:55.039" video="mainVideo" id=subtitle]]
+[[!template text="upstream this amazing work into Org?&quot;" start="00:18:57.600" video="mainVideo" id=subtitle]]
+[[!template text="Well, I'm glad you like it." start="00:19:00.559" video="mainVideo" id=subtitle]]
+[[!template text="I don't know how to upstream," start="00:19:02.300" video="mainVideo" id=subtitle]]
+[[!template text="but I will look into it," start="00:19:04.559" video="mainVideo" id=subtitle]]
+[[!template text="and any advice or guidance would be much appreciated." start="00:19:06.400" video="mainVideo" id=subtitle]]
+[[!template text="Lisp is awesome. Just as defun is a macro," start="00:19:11.840" video="mainVideo" id=subtitle]]
+[[!template text="defblock is a macro, and then" start="00:19:15.267" video="mainVideo" id=subtitle]]
+[[!template text="source blocks are awesome." start="00:19:17.120" video="mainVideo" id=subtitle]]
+[[!template text="Now maybe we can have arguments in special blocks," start="00:19:20.240" video="mainVideo" id=subtitle]]
+[[!template text="and motivate and encourage more people to learn Lisp." start="00:19:22.467" video="mainVideo" id=subtitle]]
+[[!template text="So another person asks," start="00:19:28.799" video="mainVideo" id=subtitle]]
+[[!template text="&quot;What is used to produce colorful" start="00:19:32.559" video="mainVideo" id=subtitle]]
+[[!template text="boxes around the cursor?&quot;" start="00:19:35.280" video="mainVideo" id=subtitle]]
+[[!template text="I'm not quite sure if you're asking..." start="00:19:38.559" video="mainVideo" id=subtitle]]
+[[!template text="Are you talking about my cursor right here," start="00:19:40.400" video="mainVideo" id=subtitle]]
+[[!template text="or are you talking about in the slide?" start="00:19:42.559" video="mainVideo" id=subtitle]]
+[[!template text="So this cursor is some application called Streambrush," start="00:19:48.400" video="mainVideo" id=subtitle]]
+[[!template text="that I had to purchase." start="00:19:53.767" video="mainVideo" id=subtitle]]
+[[!template text="Unfortunately, I could not find a a suitable free one." start="00:19:55.440" video="mainVideo" id=subtitle]]
+[[!template text="The blocks... I can demonstrate some Emacs Lisp." start="00:19:59.039" video="mainVideo" id=subtitle]]
+[[!template text="I can open up my Emacs, if people like," start="00:20:03.067" video="mainVideo" id=subtitle]]
+[[!template text="and we can try some things out." start="00:20:04.467" video="mainVideo" id=subtitle]]
+[[!template text="Happy to do that." start="00:20:06.320" video="mainVideo" id=subtitle]]
+[[!template text="You're welcome." start="00:20:09.440" video="mainVideo" id=subtitle]]
+[[!template text="Someone asks a side question about org-reveal: &quot;How do you get" start="00:20:10.133" video="mainVideo" id=subtitle]]
+[[!template text="bespoke or multiple-column layouts" start="00:20:15.520" video="mainVideo" id=subtitle]]
+[[!template text="without using HTML?&quot;" start="00:20:17.440" video="mainVideo" id=subtitle]]
+[[!template text="Excellent question. That's what we do." start="00:20:19.120" video="mainVideo" id=subtitle]]
+[[!template text="That's what this project is about." start="00:20:22.559" video="mainVideo" id=subtitle]]
+[[!template text="So it's not org-reveal," start="00:20:25.533" video="mainVideo" id=subtitle]]
+[[!template text="it's our fancy parallel block." start="00:20:27.000" video="mainVideo" id=subtitle]]
+[[!template text="So we have this thing. You say, #+begin_parallel." start="00:20:30.267" video="mainVideo" id=subtitle]]
+[[!template text="You say how many columns you would like." start="00:20:33.440" video="mainVideo" id=subtitle]]
+[[!template text="Do you want a bar or not?" start="00:20:35.679" video="mainVideo" id=subtitle]]
+[[!template text="And then you write some text," start="00:20:37.967" video="mainVideo" id=subtitle]]
+[[!template text="and then you get some text, and according with the bar or not." start="00:20:39.679" video="mainVideo" id=subtitle]]
+[[!template text="That's how we achieve that in our slides." start="00:20:44.400" video="mainVideo" id=subtitle]]
+[[!template text="I'm not quite sure where this was." start="00:20:47.520" video="mainVideo" id=subtitle]]
+[[!template text="Somewhere here, I think." start="00:20:52.880" video="mainVideo" id=subtitle]]
+[[!template text="Let me try to find this for you." start="00:20:59.520" video="mainVideo" id=subtitle]]
+[[!template text="I can't seem to find where the parallel blocks were. Apologies." start="00:21:06.240" video="mainVideo" id=subtitle]]
+[[!template text="Let's move on to the next question, I suppose." start="00:21:10.433" video="mainVideo" id=subtitle]]
+[[!template text="I'm pretty sure they're here. Ah, there they are." start="00:21:15.039" video="mainVideo" id=subtitle]]
+[[!template text="So these were just instances of using" start="00:21:18.400" video="mainVideo" id=subtitle]]
+[[!template text="the parallel block, and it makes things parallel." start="00:21:22.640" video="mainVideo" id=subtitle]]
+[[!template text="So that's quite nice." start="00:21:26.480" video="mainVideo" id=subtitle]]
+[[!template text="Another person asks," start="00:21:27.633" video="mainVideo" id=subtitle]]
+[[!template text="&quot;How does this relate to pandoc," start="00:21:33.360" video="mainVideo" id=subtitle]]
+[[!template text="which is used for converting between markup formats?&quot;" start="00:21:37.840" video="mainVideo" id=subtitle]]
+[[!template text="So all we're doing is we're saying," start="00:21:40.960" video="mainVideo" id=subtitle]]
+[[!template text="hey, please write Org because Org is just fantastic," start="00:21:43.919" video="mainVideo" id=subtitle]]
+[[!template text="and we love it, and it's the dream," start="00:21:47.679" video="mainVideo" id=subtitle]]
+[[!template text="and if you would like to view things" start="00:21:49.267" video="mainVideo" id=subtitle]]
+[[!template text="in HTML, or in org-reveal, or in PDF," start="00:21:51.760" video="mainVideo" id=subtitle]]
+[[!template text="that's up to the user." start="00:21:55.900" video="mainVideo" id=subtitle]]
+[[!template text="Made it too small now. So here is an example." start="00:22:02.320" video="mainVideo" id=subtitle]]
+[[!template text="Here's how parallel is implemented," start="00:22:06.080" video="mainVideo" id=subtitle]]
+[[!template text="just as a quick example, not too long." start="00:22:10.240" video="mainVideo" id=subtitle]]
+[[!template text="About half of the implementation is documentation," start="00:22:14.320" video="mainVideo" id=subtitle]]
+[[!template text="so, hopefully, that speaks for for how useful this feature is." start="00:22:17.800" video="mainVideo" id=subtitle]]
+[[!template text="We decide if there's a rule or not." start="00:22:22.720" video="mainVideo" id=subtitle]]
+[[!template text="We look for the column break." start="00:22:25.280" video="mainVideo" id=subtitle]]
+[[!template text="Here we're looking at the backend." start="00:22:28.080" video="mainVideo" id=subtitle]]
+[[!template text="If the backend is LaTeX," start="00:22:30.600" video="mainVideo" id=subtitle]]
+[[!template text="please use this incantation" start="00:22:31.840" video="mainVideo" id=subtitle]]
+[[!template text="with multicolumns, minipages, what have you." start="00:22:34.133" video="mainVideo" id=subtitle]]
+[[!template text="If the backend is something else, please do this:" start="00:22:37.679" video="mainVideo" id=subtitle]]
+[[!template text="div, style and other gibberish that we don't really want to look at." start="00:22:41.600" video="mainVideo" id=subtitle]]
+[[!template text="Pandoc works from Org," start="00:22:48.080" video="mainVideo" id=subtitle]]
+[[!template text="so it might not work directly," start="00:22:51.760" video="mainVideo" id=subtitle]]
+[[!template text="since our interface... The way we set it up is: when you try to export," start="00:22:53.633" video="mainVideo" id=subtitle]]
+[[!template text="we hook in and we do a bunch of pre-processing," start="00:22:59.679" video="mainVideo" id=subtitle]]
+[[!template text="so this defblock is a string-valued function." start="00:23:03.039" video="mainVideo" id=subtitle]]
+[[!template text="Whenever we see these #+begin_parallel when you do an export," start="00:23:07.440" video="mainVideo" id=subtitle]]
+[[!template text="I tell Emacs, hold up, look for those #+begin_parallels, please." start="00:23:13.919" video="mainVideo" id=subtitle]]
+[[!template text="Oh, you found them? Grab that text." start="00:23:17.767" video="mainVideo" id=subtitle]]
+[[!template text="You grabbed it. Great." start="00:23:20.320" video="mainVideo" id=subtitle]]
+[[!template text="Now please apply this person's function" start="00:23:21.533" video="mainVideo" id=subtitle]]
+[[!template text="onto that text, and splice in the result." start="00:23:24.080" video="mainVideo" id=subtitle]]
+[[!template text="So when you export, we're performing" start="00:23:27.120" video="mainVideo" id=subtitle]]
+[[!template text="arbitrary computations on your text." start="00:23:30.400" video="mainVideo" id=subtitle]]
+[[!template text="Some people might not find that comforting," start="00:23:35.120" video="mainVideo" id=subtitle]]
+[[!template text="to have arbitrary computations happening." start="00:23:39.633" video="mainVideo" id=subtitle]]
+[[!template text="In this article, there's a few where" start="00:23:43.039" video="mainVideo" id=subtitle]]
+[[!template text="we change your text upon export." start="00:23:45.039" video="mainVideo" id=subtitle]]
+[[!template text="We translate it, we do other things to it." start="00:23:47.167" video="mainVideo" id=subtitle]]
+[[!template text="So someone says, &quot;If you export to LaTeX, to PDF," start="00:23:51.760" video="mainVideo" id=subtitle]]
+[[!template text="does that work well with Beamer as well" start="00:23:56.500" video="mainVideo" id=subtitle]]
+[[!template text="to create slides with columns?&quot;" start="00:23:58.640" video="mainVideo" id=subtitle]]
+[[!template text="I made a bunch of these changes" start="00:24:05.200" video="mainVideo" id=subtitle]]
+[[!template text="earlier this morning," start="00:24:08.000" video="mainVideo" id=subtitle]]
+[[!template text="and it just says LaTeX right here." start="00:24:09.200" video="mainVideo" id=subtitle]]
+[[!template text="So if you want to go to beamer," start="00:24:12.320" video="mainVideo" id=subtitle]]
+[[!template text="I think the back end for me," start="00:24:14.400" video="mainVideo" id=subtitle]]
+[[!template text="beamer is called, well, beamer," start="00:24:15.360" video="mainVideo" id=subtitle]]
+[[!template text="so instead of a pcase, what we would do is, we would say," start="00:24:17.333" video="mainVideo" id=subtitle]]
+[[!template text="if it's a 'latex or it's a 'beamer, then use this." start="00:24:22.000" video="mainVideo" id=subtitle]]
+[[!template text="Otherwise, it's not a LaTeX," start="00:24:27.167" video="mainVideo" id=subtitle]]
+[[!template text="it will simply default to this one," start="00:24:30.267" video="mainVideo" id=subtitle]]
+[[!template text="which could be dangerous for your needs." start="00:24:31.867" video="mainVideo" id=subtitle]]
+[[!template text="I think it's a bad practice to put a underscore," start="00:24:34.433" video="mainVideo" id=subtitle]]
+[[!template text="but I did it really quickly" start="00:24:39.167" video="mainVideo" id=subtitle]]
+[[!template text="because I just wanted to show you that it works fine in org-reveal" start="00:24:40.767" video="mainVideo" id=subtitle]]
+[[!template text="Contributions are more than welcome." start="00:24:44.500" video="mainVideo" id=subtitle]]
+[[!template text="I happily would love any assistance." start="00:24:47.440" video="mainVideo" id=subtitle]]
+[[!template text="We have a Lisp reference cheat sheet here" start="00:24:52.240" video="mainVideo" id=subtitle]]
+[[!template text="to learn a little bit about Lisp, if you're not comfortable," start="00:24:58.633" video="mainVideo" id=subtitle]]
+[[!template text="or to ask some questions." start="00:25:01.000" video="mainVideo" id=subtitle]]
+[[!template text="Lots of helpful people." start="00:25:03.267" video="mainVideo" id=subtitle]]
+[[!template text="So there's another question that says," start="00:25:06.400" video="mainVideo" id=subtitle]]
+[[!template text="&quot;Does typing in a block mess up with syntax highlighting?" start="00:25:09.440" video="mainVideo" id=subtitle]]
+[[!template text="Usually, you use a single color inside an" start="00:25:13.120" video="mainVideo" id=subtitle]]
+[[!template text="example block, for example." start="00:25:15.679" video="mainVideo" id=subtitle]]
+[[!template text="Ah, you found my crutch." start="00:25:17.279" video="mainVideo" id=subtitle]]
+[[!template text="Emacs is all encompassing," start="00:25:25.279" video="mainVideo" id=subtitle]]
+[[!template text="and I'm not quite sure how fonts work." start="00:25:27.333" video="mainVideo" id=subtitle]]
+[[!template text="I learned enough to get by." start="00:25:29.760" video="mainVideo" id=subtitle]]
+[[!template text="Here's how links work." start="00:25:37.440" video="mainVideo" id=subtitle]]
+[[!template text="They're a bit complicated." start="00:25:38.667" video="mainVideo" id=subtitle]]
+[[!template text="This is a bit scary." start="00:25:40.799" video="mainVideo" id=subtitle]]
+[[!template text="I don't recommend anyone read it." start="00:25:42.567" video="mainVideo" id=subtitle]]
+[[!template text="Actually, let me open up an email" start="00:25:47.039" video="mainVideo" id=subtitle]]
+[[!template text="and you can see what I see." start="00:25:50.559" video="mainVideo" id=subtitle]]
+[[!template text="So here's an Emacs." start="00:25:52.100" video="mainVideo" id=subtitle]]
+[[!template text="Let's make that a bit bigger." start="00:25:54.799" video="mainVideo" id=subtitle]]
+[[!template text="Let's change this slightly." start="00:25:56.799" video="mainVideo" id=subtitle]]
+[[!template text="Nope, that's worse. There you go." start="00:25:59.133" video="mainVideo" id=subtitle]]
+[[!template text="Here's some words. Here's red hello." start="00:26:01.919" video="mainVideo" id=subtitle]]
+[[!template text="But you're worried about preserving fontification." start="00:26:09.360" video="mainVideo" id=subtitle]]
+[[!template text="Let's make an emacs-lisp block." start="00:26:15.679" video="mainVideo" id=subtitle]]
+[[!template text="Let's say, (+ 1 2)." start="00:26:18.880" video="mainVideo" id=subtitle]]
+[[!template text="Ah, where's the fun? Hello. Bye." start="00:26:22.840" video="mainVideo" id=subtitle]]
+[[!template text="Okay. Where's the coloring?" start="00:26:31.133" video="mainVideo" id=subtitle]]
+[[!template text="If we zoom in on this #+begin_src block," start="00:26:32.080" video="mainVideo" id=subtitle]]
+[[!template text="you can see down here" start="00:26:36.000" video="mainVideo" id=subtitle]]
+[[!template text="we have our our coloring" start="00:26:39.200" video="mainVideo" id=subtitle]]
+[[!template text="when we zoom in." start="00:26:42.159" video="mainVideo" id=subtitle]]
+[[!template text="If we zoom out, no coloring." start="00:26:43.279" video="mainVideo" id=subtitle]]
+[[!template text="Zoom in, coloring. Zoom out, aah, no coloring." start="00:26:46.960" video="mainVideo" id=subtitle]]
+[[!template text="Let's take off these bad boys, and oh, look, my coloring's back." start="00:26:50.880" video="mainVideo" id=subtitle]]
+[[!template text="In a previous iteration of the system, I was able to maintain coloring." start="00:26:55.679" video="mainVideo" id=subtitle]]
+[[!template text="In this new iteration, I am not." start="00:27:03.760" video="mainVideo" id=subtitle]]
+[[!template text="I don't know how to do it." start="00:27:06.400" video="mainVideo" id=subtitle]]
+[[!template text="I haven't had the time to implement it." start="00:27:07.400" video="mainVideo" id=subtitle]]
+[[!template text="I spent a lot of time writing this 48-page documentation" start="00:27:10.333" video="mainVideo" id=subtitle]]
+[[!template text="with some fun examples to try to help people learn." start="00:27:17.279" video="mainVideo" id=subtitle]]
+[[!template text="But I would appreciate any help or guidance" start="00:27:21.133" video="mainVideo" id=subtitle]]
+[[!template text="on how to maintain the fontification." start="00:27:23.200" video="mainVideo" id=subtitle]]
+[[!template text="I really would like to keep those colors in." start="00:27:26.240" video="mainVideo" id=subtitle]]
+[[!template text="Amin: Musa, we have time for maybe one more question," start="00:27:29.200" video="mainVideo" id=subtitle]]
+[[!template text="one or two more questions," start="00:27:32.640" video="mainVideo" id=subtitle]]
+[[!template text="and then we have to move on to the next talk." start="00:27:34.500" video="mainVideo" id=subtitle]]
+[[!template text="You're more than welcome to" start="00:27:37.039" video="mainVideo" id=subtitle]]
+[[!template text="continue taking the questions via IRC or the pad." start="00:27:39.120" video="mainVideo" id=subtitle]]
+[[!template text="Musa: Okay. Thank you." start="00:27:42.559" video="mainVideo" id=subtitle]]
+[[!template text="The final question we'll take is," start="00:27:45.760" video="mainVideo" id=subtitle]]
+[[!template text="&quot;Should packages implement" start="00:27:48.880" video="mainVideo" id=subtitle]]
+[[!template text="interface to one specific format," start="00:27:52.320" video="mainVideo" id=subtitle]]
+[[!template text="or attempt to be inclusive" start="00:27:53.967" video="mainVideo" id=subtitle]]
+[[!template text="to all the potential output targets?&quot;" start="00:27:55.600" video="mainVideo" id=subtitle]]
+[[!template text="I think you should just make them as you go," start="00:27:57.279" video="mainVideo" id=subtitle]]
+[[!template text="and add them as you need them." start="00:27:59.300" video="mainVideo" id=subtitle]]
+[[!template text="We'll make Github requests for things." start="00:28:01.500" video="mainVideo" id=subtitle]]
+[[!template text="We can share recipes in this document," start="00:28:05.600" video="mainVideo" id=subtitle]]
+[[!template text="and then try to add other techniques," start="00:28:08.533" video="mainVideo" id=subtitle]]
+[[!template text="and then we can use these blocks as a common interface" start="00:28:12.333" video="mainVideo" id=subtitle]]
+[[!template text="for exporting to PDF and other things." start="00:28:19.200" video="mainVideo" id=subtitle]]
+[[!template text="Since someone asked," start="00:28:22.240" video="mainVideo" id=subtitle]]
+[[!template text="here what a PDF looks like." start="00:28:26.000" video="mainVideo" id=subtitle]]
+[[!template text="This is the same PDF rendered." start="00:28:28.033" video="mainVideo" id=subtitle]]
+[[!template text="I made no effort to make it look good," start="00:28:31.667" video="mainVideo" id=subtitle]]
+[[!template text="but it surprisingly does look good." start="00:28:34.960" video="mainVideo" id=subtitle]]
+[[!template text="That was nice." start="00:28:38.559" video="mainVideo" id=subtitle]]
+[[!template text="That was a terrible magenta, but that is life." start="00:28:40.067" video="mainVideo" id=subtitle]]
+[[!template text="Anyhow, I hope you all enjoyed this talk." start="00:28:44.320" video="mainVideo" id=subtitle]]
+[[!template text="I hope you will find defblock useful to you." start="00:28:47.100" video="mainVideo" id=subtitle]]
+[[!template text="It is available on MELPA." start="00:28:51.033" video="mainVideo" id=subtitle]]
+[[!template text="In a rush to make it available for EmacsConf 2020," start="00:28:52.799" video="mainVideo" id=subtitle]]
+[[!template text="some MELPA guidelines may not have been adhered to." start="00:28:56.367" video="mainVideo" id=subtitle]]
+[[!template text="Please do not hit me." start="00:29:00.159" video="mainVideo" id=subtitle]]
+[[!template text="I hope everyone enjoys the rest of the EmacsConf 2020. Thank you!" start="00:29:01.600" video="mainVideo" id=subtitle]]
diff --git a/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.vtt b/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.vtt
deleted file mode 100644
index b1831710..00000000
--- a/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.vtt
+++ /dev/null
@@ -1,2386 +0,0 @@
-WEBVTT
-
-00:00:01.680 --> 00:00:04.080
-oh you are now muted
-
-00:00:04.080 --> 00:00:07.359
-all right then well uh hello everyone
-
-00:00:07.359 --> 00:00:09.840
-I hope uh you're all enjoying the Emacs
-
-00:00:09.840 --> 00:00:11.519
-conf
-
-00:00:11.519 --> 00:00:14.480
-my name is musa alhassi and I hope
-
-00:00:14.480 --> 00:00:15.040
-you're
-
-00:00:15.040 --> 00:00:17.920
-excited to learn about uh powering up
-
-00:00:17.920 --> 00:00:19.840
-special blocks
-
-00:00:19.840 --> 00:00:22.880
-um so let's let's first off uh find out
-
-00:00:22.880 --> 00:00:24.800
-what these special blocks are and
-
-00:00:24.800 --> 00:00:27.920
-and see what we can uh go from so
-
-00:00:27.920 --> 00:00:30.240
-uh yesterday I saw a lot of cool talks
-
-00:00:30.240 --> 00:00:32.719
-and uh people were chatting about how do
-
-00:00:32.719 --> 00:00:33.200
-you
-
-00:00:33.200 --> 00:00:35.520
-I know how should you present should you
-
-00:00:35.520 --> 00:00:37.200
-do it this way or that way and
-
-00:00:37.200 --> 00:00:38.640
-I thought maybe I should try a different
-
-00:00:38.640 --> 00:00:41.120
-way uh but but I'm talking about special
-
-00:00:41.120 --> 00:00:42.239
-blocks and if I
-
-00:00:42.239 --> 00:00:45.039
-show you an emax then I have to export
-
-00:00:45.039 --> 00:00:47.039
-the html so you can see what it looks
-
-00:00:47.039 --> 00:00:47.840
-like
-
-00:00:47.840 --> 00:00:50.800
-or export to a pdf so you can see what
-
-00:00:50.800 --> 00:00:51.920
-it looks like
-
-00:00:51.920 --> 00:00:54.239
-uh so I ended up writing an org reveal
-
-00:00:54.239 --> 00:00:56.399
-and
-
-00:00:56.399 --> 00:00:58.960
-joyously this this just works you can
-
-00:00:58.960 --> 00:01:00.879
-you can just see things here
-
-00:01:00.879 --> 00:01:02.960
-uh I was worried that I'd have to take
-
-00:01:02.960 --> 00:01:04.559
-pictures and then you know
-
-00:01:04.559 --> 00:01:07.600
-uh uh you know insert pings so that that
-
-00:01:07.600 --> 00:01:09.760
-was a delight
-
-00:01:09.760 --> 00:01:12.159
-okay uh so special blocks are these
-
-00:01:12.159 --> 00:01:12.960
-things like
-
-00:01:12.960 --> 00:01:16.000
-a center small quote uh that's what a
-
-00:01:16.000 --> 00:01:17.280
-special block is
-
-00:01:17.280 --> 00:01:19.360
-and with a bit of lisp we can we can
-
-00:01:19.360 --> 00:01:20.720
-make special blocks
-
-00:01:20.720 --> 00:01:23.200
-and link types right so uh using a
-
-00:01:23.200 --> 00:01:24.799
-single interface
-
-00:01:24.799 --> 00:01:26.720
-um and the interface is going to be
-
-00:01:26.720 --> 00:01:27.840
-similar to one
-
-00:01:27.840 --> 00:01:29.439
-many people are familiar with in
-
-00:01:29.439 --> 00:01:32.560
-particular org babel's
-
-00:01:32.560 --> 00:01:35.840
-source interface as well as using global
-
-00:01:35.840 --> 00:01:37.840
-header arguments for link types
-
-00:01:37.840 --> 00:01:39.680
-and the idea is to write it once and
-
-00:01:39.680 --> 00:01:41.200
-generate many different kinds
-
-00:01:41.200 --> 00:01:44.159
-right you write uh an org markup and you
-
-00:01:44.159 --> 00:01:44.720
-can have
-
-00:01:44.720 --> 00:01:47.680
-uh html you can have pdf and and
-
-00:01:47.680 --> 00:01:48.560
-joyously
-
-00:01:48.560 --> 00:01:51.840
-uh org reveal so that was uh that was an
-
-00:01:51.840 --> 00:01:53.600
-unexpected delight
-
-00:01:53.600 --> 00:01:56.640
-um so here is a few that you'll you'll
-
-00:01:56.640 --> 00:01:57.840
-just see as we
-
-00:01:57.840 --> 00:02:01.759
-uh in this presentation you know some uh
-
-00:02:01.759 --> 00:02:04.000
-uh I won't show some of these uh link
-
-00:02:04.000 --> 00:02:05.040
-only ones
-
-00:02:05.040 --> 00:02:06.799
-but we'll see a few of these other ones
-
-00:02:06.799 --> 00:02:08.080
-just to make the uh
-
-00:02:08.080 --> 00:02:09.920
-presentation look nice so the
-
-00:02:09.920 --> 00:02:11.520
-presentation is really going to
-
-00:02:11.520 --> 00:02:14.000
-present these blocks and the mechanism
-
-00:02:14.000 --> 00:02:15.120
-at the same time
-
-00:02:15.120 --> 00:02:18.400
-so uh so this no no html was written
-
-00:02:18.400 --> 00:02:21.280
-look ma no html just pure org mode and
-
-00:02:21.280 --> 00:02:22.000
-and
-
-00:02:22.000 --> 00:02:23.520
-you get all these beautiful boxes and
-
-00:02:23.520 --> 00:02:25.840
-things okay
-
-00:02:25.840 --> 00:02:27.680
-so the motivation for this is you know
-
-00:02:27.680 --> 00:02:29.120
-what uh
-
-00:02:29.120 --> 00:02:31.200
-you're you're online you run into a blog
-
-00:02:31.200 --> 00:02:32.239
-and you see something you like and
-
-00:02:32.239 --> 00:02:33.120
-you're like man
-
-00:02:33.120 --> 00:02:35.280
-you know I wish I could uh you know
-
-00:02:35.280 --> 00:02:36.640
-produce that
-
-00:02:36.640 --> 00:02:39.519
-um uh but you you check in the author
-
-00:02:39.519 --> 00:02:40.160
-wrote raw
-
-00:02:40.160 --> 00:02:44.239
-html you know plus html everywhere
-
-00:02:44.239 --> 00:02:46.800
-and uh that's that's you know gonna
-
-00:02:46.800 --> 00:02:47.840
-obscure
-
-00:02:47.840 --> 00:02:49.680
-your your real content it's going to be
-
-00:02:49.680 --> 00:02:51.200
-surrounded by all this uh
-
-00:02:51.200 --> 00:02:54.239
-styling information that's unfortunate
-
-00:02:54.239 --> 00:02:56.400
-uh the author decides to use an org
-
-00:02:56.400 --> 00:02:58.959
-macro all right a bit better
-
-00:02:58.959 --> 00:03:01.120
-but then what if you decide hey I want
-
-00:03:01.120 --> 00:03:03.360
-to make a
-
-00:03:03.360 --> 00:03:06.000
-not pdf great and then the worst of all
-
-00:03:06.000 --> 00:03:07.840
-the author doesn't give you the source
-
-00:03:07.840 --> 00:03:10.159
-and then you have to view page source
-
-00:03:10.159 --> 00:03:10.879
-and
-
-00:03:10.879 --> 00:03:13.760
-learn cascading style sheets and and you
-
-00:03:13.760 --> 00:03:14.239
-know
-
-00:03:14.239 --> 00:03:16.159
-sit in a corner and cry decide to do
-
-00:03:16.159 --> 00:03:18.080
-other things with your life
-
-00:03:18.080 --> 00:03:20.959
-so uh we want to give you org users
-
-00:03:20.959 --> 00:03:22.640
-numerous styles
-
-00:03:22.640 --> 00:03:26.000
-and uh and an extensible mechanism to
-
-00:03:26.000 --> 00:03:27.200
-add more of these
-
-00:03:27.200 --> 00:03:28.799
-aesthetically pleasing styles you know
-
-00:03:28.799 --> 00:03:31.200
-to have really nice things
-
-00:03:31.200 --> 00:03:34.720
-look one way in the html and look almost
-
-00:03:34.720 --> 00:03:35.599
-the same way
-
-00:03:35.599 --> 00:03:39.120
-in the pdf and other uh back ends and
-
-00:03:39.120 --> 00:03:41.680
-if by having these newer ones you know
-
-00:03:41.680 --> 00:03:42.159
-people
-
-00:03:42.159 --> 00:03:44.879
-might be encouraged to try making new
-
-00:03:44.879 --> 00:03:45.519
-ones
-
-00:03:45.519 --> 00:03:47.920
-especially when the interface is uh not
-
-00:03:47.920 --> 00:03:49.040
-so difficult
-
-00:03:49.040 --> 00:03:54.159
-uh that's the that's the aim okay
-
-00:03:54.159 --> 00:03:57.360
-uh so let's let's have a a real story to
-
-00:03:57.360 --> 00:03:59.120
-motivate this even more
-
-00:03:59.120 --> 00:04:02.319
-um so here's three friends uh I hope I
-
-00:04:02.319 --> 00:04:03.599
-don't butcher their names but these
-
-00:04:03.599 --> 00:04:04.640
-friends are called
-
-00:04:04.640 --> 00:04:07.040
-amin sasha and corwin and then they're
-
-00:04:07.040 --> 00:04:08.720
-organizing a conference
-
-00:04:08.720 --> 00:04:12.080
-uh EmacsConf 2020.
-
-00:04:12.080 --> 00:04:14.239
-so sasha decides to write an org file
-
-00:04:14.239 --> 00:04:16.479
-and and she would like some feedback
-
-00:04:16.479 --> 00:04:19.199
-okay and and just uh make it clear
-
-00:04:19.199 --> 00:04:19.840
-there's no
-
-00:04:19.840 --> 00:04:22.960
-uh just how easy this looks
-
-00:04:22.960 --> 00:04:27.280
-let's look at the source for this block
-
-00:04:27.280 --> 00:04:30.000
-notice it's just the word green then a
-
-00:04:30.000 --> 00:04:30.720
-colon
-
-00:04:30.720 --> 00:04:34.560
-than amine uh so no
-
-00:04:34.560 --> 00:04:37.759
-no div style coloring just just you know
-
-00:04:37.759 --> 00:04:38.479
-green color
-
-00:04:38.479 --> 00:04:41.520
-immune a very pleasant uh or markup
-
-00:04:41.520 --> 00:04:43.600
-so that's that's quite nice put some
-
-00:04:43.600 --> 00:04:44.960
-bold around it
-
-00:04:44.960 --> 00:04:47.840
-not not too difficult so hopefully uh
-
-00:04:47.840 --> 00:04:49.040
-this will be useful to
-
-00:04:49.040 --> 00:04:51.680
-other people as well so what kind of
-
-00:04:51.680 --> 00:04:52.240
-feedback
-
-00:04:52.240 --> 00:04:56.639
-uh would sasha expect to get um so maybe
-
-00:04:56.639 --> 00:04:59.120
-she would expect top level remarks
-
-00:04:59.120 --> 00:04:59.680
-visible
-
-00:04:59.680 --> 00:05:01.759
-in the export you know when she makes an
-
-00:05:01.759 --> 00:05:04.400
-html she can see right there a big block
-
-00:05:04.400 --> 00:05:07.840
-right maybe
-
-00:05:07.840 --> 00:05:09.840
-amin will suggest to sasha please
-
-00:05:09.840 --> 00:05:11.120
-replace this part
-
-00:05:11.120 --> 00:05:12.960
-with this other part or replace this
-
-00:05:12.960 --> 00:05:14.639
-word with this other word
-
-00:05:14.639 --> 00:05:16.960
-right um this is not really possible
-
-00:05:16.960 --> 00:05:17.680
-with raw
-
-00:05:17.680 --> 00:05:21.919
-html or uh yeah or with even latex
-
-00:05:21.919 --> 00:05:24.000
-you'd have to have multiple arguments
-
-00:05:24.000 --> 00:05:25.360
-the first argument and then
-
-00:05:25.360 --> 00:05:27.840
-the replacement argument and it's a bit
-
-00:05:27.840 --> 00:05:28.800
-clunky
-
-00:05:28.800 --> 00:05:30.960
-um but with our setup you just write
-
-00:05:30.960 --> 00:05:32.080
-some text
-
-00:05:32.080 --> 00:05:34.479
-write hashtag plus replace with and then
-
-00:05:34.479 --> 00:05:36.240
-write more text and you're good to go
-
-00:05:36.240 --> 00:05:39.440
-normal uh org markup um
-
-00:05:39.440 --> 00:05:40.720
-everyone speaks different languages
-
-00:05:40.720 --> 00:05:42.479
-maybe they want to use a
-
-00:05:42.479 --> 00:05:45.919
-uh one word or they're arguing about
-
-00:05:45.919 --> 00:05:48.000
-whether we talk about frames or windows
-
-00:05:48.000 --> 00:05:49.759
-um so maybe they want to have some
-
-00:05:49.759 --> 00:05:50.560
-translations
-
-00:05:50.560 --> 00:05:52.479
-right so there's different kinds of
-
-00:05:52.479 --> 00:05:55.360
-feedbacks uh let's let's take an example
-
-00:05:55.360 --> 00:05:59.360
-uh look at what they are okay
-
-00:05:59.360 --> 00:06:02.560
-uh so for example sasha might write
-
-00:06:02.560 --> 00:06:06.160
-uh this org mode right here and uh
-
-00:06:06.160 --> 00:06:08.319
-and then in her html exports you might
-
-00:06:08.319 --> 00:06:09.759
-see this
-
-00:06:09.759 --> 00:06:12.080
-and uh her feedback might look really
-
-00:06:12.080 --> 00:06:13.840
-nicely from anyone who says you know
-
-00:06:13.840 --> 00:06:14.560
-let's uh
-
-00:06:14.560 --> 00:06:16.639
-let's do some lisp instead of uh
-
-00:06:16.639 --> 00:06:18.560
-mathematics let's just do some list
-
-00:06:18.560 --> 00:06:20.960
-and and corwin says you know let's let's
-
-00:06:20.960 --> 00:06:22.479
-not be so silly
-
-00:06:22.479 --> 00:06:25.120
-maybe let's just say 9 a.m and move on
-
-00:06:25.120 --> 00:06:28.080
-okay
-
-00:06:28.080 --> 00:06:31.360
-um so amin likes to export to pdf
-
-00:06:31.360 --> 00:06:33.039
-and so he writes his top-level remarks
-
-00:06:33.039 --> 00:06:34.720
-using latex that's how
-
-00:06:34.720 --> 00:06:37.600
-so to get this uh square I mean please
-
-00:06:37.600 --> 00:06:38.960
-change whatever
-
-00:06:38.960 --> 00:06:41.440
-he might write like this hashtag you
-
-00:06:41.440 --> 00:06:43.120
-know plus latex
-
-00:06:43.120 --> 00:06:46.960
-hashtag plus latex right but then
-
-00:06:46.960 --> 00:06:50.000
-sasha only exports to p to html uh for
-
-00:06:50.000 --> 00:06:50.880
-example
-
-00:06:50.880 --> 00:06:54.880
-um and uh so she doesn't look at the pdf
-
-00:06:54.880 --> 00:06:57.199
-and she may not see his top-level
-
-00:06:57.199 --> 00:06:58.560
-feedback you know with those nice
-
-00:06:58.560 --> 00:06:59.440
-brackets and
-
-00:06:59.440 --> 00:07:02.160
-and bold right and so she might think
-
-00:07:02.160 --> 00:07:03.120
-everything's good
-
-00:07:03.120 --> 00:07:06.160
-right and that can be a bit disastrous
-
-00:07:06.160 --> 00:07:09.039
-um so maybe sasha will will then uh make
-
-00:07:09.039 --> 00:07:09.440
-some
-
-00:07:09.440 --> 00:07:13.199
-of her own feedback all right uh but
-
-00:07:13.199 --> 00:07:16.160
-and to produce it she might write html
-
-00:07:16.160 --> 00:07:16.560
-uh
-
-00:07:16.560 --> 00:07:20.639
-um html commands hashtag plus html to
-
-00:07:20.639 --> 00:07:21.680
-get that
-
-00:07:21.680 --> 00:07:24.240
-uh but then amin will make a pdf and
-
-00:07:24.240 --> 00:07:25.680
-this won't stick out
-
-00:07:25.680 --> 00:07:27.759
-and then so he might think everything's
-
-00:07:27.759 --> 00:07:30.160
-okay even even though it's not
-
-00:07:30.160 --> 00:07:33.520
-um then corwin actually decides hey
-
-00:07:33.520 --> 00:07:36.240
-uh let me read the exported result and
-
-00:07:36.240 --> 00:07:36.800
-these
-
-00:07:36.800 --> 00:07:38.319
-there's all those feedback from two
-
-00:07:38.319 --> 00:07:39.919
-people who haven't uh
-
-00:07:39.919 --> 00:07:42.080
-read anything because maybe they were in
-
-00:07:42.080 --> 00:07:43.840
-a russian and didn't
-
-00:07:43.840 --> 00:07:46.400
-see the top level feedback and so they
-
-00:07:46.400 --> 00:07:48.160
-agree hey let's have a uniform org
-
-00:07:48.160 --> 00:07:50.000
-interface that exports
-
-00:07:50.000 --> 00:07:53.280
-to both html and pdf make both of us
-
-00:07:53.280 --> 00:07:54.080
-happy
-
-00:07:54.080 --> 00:07:57.280
-okay so they decide to use org special
-
-00:07:57.280 --> 00:07:58.160
-blocks
-
-00:07:58.160 --> 00:08:01.840
-right um and to set this up they need to
-
-00:08:01.840 --> 00:08:04.400
-you know maybe read a little bit of lisp
-
-00:08:04.400 --> 00:08:04.879
-hooks
-
-00:08:04.879 --> 00:08:08.879
-advice macros to get all of this set up
-
-00:08:08.879 --> 00:08:10.840
-and then they'll use org as the main
-
-00:08:10.840 --> 00:08:12.319
-interface okay
-
-00:08:12.319 --> 00:08:14.400
-it's a lot of work but it's worth it
-
-00:08:14.400 --> 00:08:16.479
-right maybe
-
-00:08:16.479 --> 00:08:19.360
-um but then corwin corbin's a bit tears
-
-00:08:19.360 --> 00:08:19.759
-so
-
-00:08:19.759 --> 00:08:22.960
-uh corwin maybe doesn't want to write
-
-00:08:22.960 --> 00:08:24.800
-uh using blocks he thinks they're
-
-00:08:24.800 --> 00:08:26.080
-overkill and
-
-00:08:26.080 --> 00:08:29.360
-and sasha wants html and uh and
-
-00:08:29.360 --> 00:08:31.840
-I mean wants pdf and corwin wants org
-
-00:08:31.840 --> 00:08:32.560
-reveal
-
-00:08:32.560 --> 00:08:34.240
-so now they have to reformat all their
-
-00:08:34.240 --> 00:08:36.320
-code and then they need to use org link
-
-00:08:36.320 --> 00:08:37.120
-types to
-
-00:08:37.120 --> 00:08:39.599
-reduce the overkill all right so they
-
-00:08:39.599 --> 00:08:41.519
-can try to avoid duplication by
-
-00:08:41.519 --> 00:08:44.000
-factoring things out into self-contained
-
-00:08:44.000 --> 00:08:46.800
-uh defined functions or defunds
-
-00:08:46.800 --> 00:08:50.320
-um but now to set up or links
-
-00:08:50.320 --> 00:08:53.440
-uh we'll have uh to learn a new
-
-00:08:53.440 --> 00:08:54.399
-interface
-
-00:08:54.399 --> 00:08:57.040
-org setup link um learn a little bit
-
-00:08:57.040 --> 00:08:58.000
-about fonts
-
-00:08:58.000 --> 00:09:02.160
-follow links exports handles
-
-00:09:02.160 --> 00:09:05.040
-it's so much that's so much but but then
-
-00:09:05.040 --> 00:09:06.800
-you know the friends they learn a lot
-
-00:09:06.800 --> 00:09:08.399
-you know they learn about defund all
-
-00:09:08.399 --> 00:09:11.120
-right so these these words are red
-
-00:09:11.120 --> 00:09:12.480
-you get a little explanation I think
-
-00:09:12.480 --> 00:09:14.320
-it's a bit too small for anyone to read
-
-00:09:14.320 --> 00:09:16.720
-this is lisp documentation right for
-
-00:09:16.720 --> 00:09:18.000
-defund
-
-00:09:18.000 --> 00:09:19.680
-advice ad there's some list
-
-00:09:19.680 --> 00:09:21.600
-documentation right
-
-00:09:21.600 --> 00:09:23.600
-they learn about destructuring let's so
-
-00:09:23.600 --> 00:09:25.279
-this is from the dash library
-
-00:09:25.279 --> 00:09:26.959
-here's all that you know glorious
-
-00:09:26.959 --> 00:09:28.800
-glorious documentation with examples
-
-00:09:28.800 --> 00:09:29.360
-sorry
-
-00:09:29.360 --> 00:09:31.680
-I like that they might make an ad-hoc
-
-00:09:31.680 --> 00:09:33.760
-mechanism to simulate
-
-00:09:33.760 --> 00:09:36.000
-arguments for special blocks so
-
-00:09:36.000 --> 00:09:37.040
-something maybe called
-
-00:09:37.040 --> 00:09:40.399
-extract arguments and then of course to
-
-00:09:40.399 --> 00:09:41.920
-make new link types they have to learn
-
-00:09:41.920 --> 00:09:42.480
-about
-
-00:09:42.480 --> 00:09:45.120
-org link set parameters and then it's
-
-00:09:45.120 --> 00:09:46.480
-numerous uh
-
-00:09:46.480 --> 00:09:49.920
-bits and pieces all right so let's oh
-
-00:09:49.920 --> 00:09:50.720
-let's uh
-
-00:09:50.720 --> 00:09:53.600
-close all these ones down and and uh of
-
-00:09:53.600 --> 00:09:55.040
-course they also need to be uh
-
-00:09:55.040 --> 00:09:56.080
-comfortable with
-
-00:09:56.080 --> 00:09:58.720
-uh loops and maps and matching and
-
-00:09:58.720 --> 00:09:59.920
-string functions
-
-00:09:59.920 --> 00:10:02.560
-so it's it's a bit of a pain it's a bit
-
-00:10:02.560 --> 00:10:03.360
-of a pain
-
-00:10:03.360 --> 00:10:05.839
-um so it's probably not worth it so
-
-00:10:05.839 --> 00:10:06.560
-maybe I'll just
-
-00:10:06.560 --> 00:10:09.360
-rush things quickly or do an ad hoc you
-
-00:10:09.360 --> 00:10:10.320
-know
-
-00:10:10.320 --> 00:10:13.680
-we have things to do right
-
-00:10:13.680 --> 00:10:15.920
-so maybe maybe the squad wants to have a
-
-00:10:15.920 --> 00:10:17.839
-modular
-
-00:10:17.839 --> 00:10:21.120
-and unified interface so everyone's
-
-00:10:21.120 --> 00:10:23.040
-comfortable with defunct to define a
-
-00:10:23.040 --> 00:10:25.279
-function and they say you know what
-
-00:10:25.279 --> 00:10:26.480
-it would be nice if we could just you
-
-00:10:26.480 --> 00:10:29.440
-know define simultaneously
-
-00:10:29.440 --> 00:10:32.959
-both a block and the link type right
-
-00:10:32.959 --> 00:10:34.880
-and uh that way we have a single
-
-00:10:34.880 --> 00:10:36.000
-interface
-
-00:10:36.000 --> 00:10:38.240
-org mode for for these things and it
-
-00:10:38.240 --> 00:10:39.040
-would be nice was
-
-00:10:39.040 --> 00:10:42.079
-modular so if I defined a
-
-00:10:42.079 --> 00:10:43.680
-one kind of block and you defined
-
-00:10:43.680 --> 00:10:45.519
-another we could compose them
-
-00:10:45.519 --> 00:10:47.600
-right and then get a you know a nice
-
-00:10:47.600 --> 00:10:49.360
-bigger block like lego
-
-00:10:49.360 --> 00:10:52.320
-that would be nice building box okay and
-
-00:10:52.320 --> 00:10:54.160
-uh this is uh what we
-
-00:10:54.160 --> 00:10:56.240
-have come up with called death block and
-
-00:10:56.240 --> 00:10:57.600
-it also has a
-
-00:10:57.600 --> 00:11:00.240
-long documentation string containing
-
-00:11:00.240 --> 00:11:01.760
-examples and things
-
-00:11:01.760 --> 00:11:04.800
-so that way you can try to be useful
-
-00:11:04.800 --> 00:11:08.320
-okay um so let's let's look at a a
-
-00:11:08.320 --> 00:11:10.880
-solution to these friends uh trilemma
-
-00:11:10.880 --> 00:11:12.800
-all right so here's here's a way to
-
-00:11:12.800 --> 00:11:14.320
-define a block
-
-00:11:14.320 --> 00:11:17.040
-um it looks it's it doesn't look that
-
-00:11:17.040 --> 00:11:19.200
-difficult but this is how they can
-
-00:11:19.200 --> 00:11:22.320
-define a block for um
-
-00:11:22.320 --> 00:11:25.920
-for uh their top-level feedback right
-
-00:11:25.920 --> 00:11:27.680
-so let's let's look at the three main
-
-00:11:27.680 --> 00:11:28.959
-parts together
-
-00:11:28.959 --> 00:11:31.920
-it's not that uh difficult I hope just
-
-00:11:31.920 --> 00:11:33.040
-six lines
-
-00:11:33.040 --> 00:11:34.720
-and that's including a documentation
-
-00:11:34.720 --> 00:11:36.160
-string and you know
-
-00:11:36.160 --> 00:11:39.440
-uh new lines and things okay so in line
-
-00:11:39.440 --> 00:11:41.279
-one we just define the block just like
-
-00:11:41.279 --> 00:11:42.000
-you define
-
-00:11:42.000 --> 00:11:44.880
-a function we define a block the flag
-
-00:11:44.880 --> 00:11:46.399
-the block name is going to be called
-
-00:11:46.399 --> 00:11:49.680
-feedback it has an author who
-
-00:11:49.680 --> 00:11:53.360
-right the author has no default
-
-00:11:53.360 --> 00:11:56.160
-value it has a color and the color has a
-
-00:11:56.160 --> 00:11:57.760
-default value of red
-
-00:11:57.760 --> 00:12:00.560
-okay so just just as when you define
-
-00:12:00.560 --> 00:12:01.680
-functions they
-
-00:12:01.680 --> 00:12:04.880
-they uh you start by uh define
-
-00:12:04.880 --> 00:12:08.639
-or def block than the name some
-
-00:12:08.639 --> 00:12:10.720
-mandatory argument and some optional
-
-00:12:10.720 --> 00:12:13.440
-arguments okay
-
-00:12:13.440 --> 00:12:15.760
-then the next stage is well and
-
-00:12:15.760 --> 00:12:18.480
-definition a documentation you know
-
-00:12:18.480 --> 00:12:20.880
-uh the people who use this which are
-
-00:12:20.880 --> 00:12:22.880
-future you or future me you know
-
-00:12:22.880 --> 00:12:25.519
-uh might want to know what this is all
-
-00:12:25.519 --> 00:12:27.839
-right so let's get to document this
-
-00:12:27.839 --> 00:12:30.560
-uh and uh for for corwin who might want
-
-00:12:30.560 --> 00:12:32.079
-to use uh tooltips
-
-00:12:32.079 --> 00:12:34.560
-uh when corwin writes feedback whatever
-
-00:12:34.560 --> 00:12:35.120
-and
-
-00:12:35.120 --> 00:12:37.120
-Emacs they'll see a nice little tooltip
-
-00:12:37.120 --> 00:12:38.639
-and the tooltip will have
-
-00:12:38.639 --> 00:12:41.279
-this uh documentation string right so
-
-00:12:41.279 --> 00:12:43.279
-that'll be nice
-
-00:12:43.279 --> 00:12:45.200
-okay and then here's the third part the
-
-00:12:45.200 --> 00:12:46.480
-last three lines are
-
-00:12:46.480 --> 00:12:49.440
-not not so difficult if the back end is
-
-00:12:49.440 --> 00:12:49.680
-in
-
-00:12:49.680 --> 00:12:52.800
-is html the backend is html
-
-00:12:52.800 --> 00:12:55.360
-please use this template string
-
-00:12:55.360 --> 00:12:57.440
-otherwise use the other string
-
-00:12:57.440 --> 00:13:00.639
-okay and for each of these uh string
-
-00:13:00.639 --> 00:13:01.279
-markers
-
-00:13:01.279 --> 00:13:03.600
-please put in the color who wrote it and
-
-00:13:03.600 --> 00:13:04.959
-then the contents
-
-00:13:04.959 --> 00:13:07.279
-of the special block or the link type
-
-00:13:07.279 --> 00:13:08.160
-okay
-
-00:13:08.160 --> 00:13:10.639
-um so that's pretty neat not not so
-
-00:13:10.639 --> 00:13:11.600
-difficult
-
-00:13:11.600 --> 00:13:14.639
-so I thought that was kind of cool and
-
-00:13:14.639 --> 00:13:15.519
-then notice it's
-
-00:13:15.519 --> 00:13:18.480
-anaphoric it's it's a this this def
-
-00:13:18.480 --> 00:13:19.519
-block
-
-00:13:19.519 --> 00:13:21.760
-gives you two new names it gives you a
-
-00:13:21.760 --> 00:13:22.560
-name called
-
-00:13:22.560 --> 00:13:25.120
-uh contents and it gives you a name
-
-00:13:25.120 --> 00:13:26.480
-called back end
-
-00:13:26.480 --> 00:13:29.040
-right and so even if you're writing a
-
-00:13:29.040 --> 00:13:31.040
-def block and you intend it to be used
-
-00:13:31.040 --> 00:13:32.560
-only for links
-
-00:13:32.560 --> 00:13:35.440
-uh like the uh these colors for example
-
-00:13:35.440 --> 00:13:37.600
-uh these colors were defined using dev
-
-00:13:37.600 --> 00:13:38.399
-block
-
-00:13:38.399 --> 00:13:41.279
-uh and I used them as links right here
-
-00:13:41.279 --> 00:13:43.360
-and you don't need to worry
-
-00:13:43.360 --> 00:13:44.880
-where does the text come from in the
-
-00:13:44.880 --> 00:13:48.160
-link you know if I say red colon bob uh
-
-00:13:48.160 --> 00:13:48.959
-is it bob
-
-00:13:48.959 --> 00:13:50.720
-or if I put a description is it the
-
-00:13:50.720 --> 00:13:52.000
-description so
-
-00:13:52.000 --> 00:13:54.000
-it's whatever is available will will
-
-00:13:54.000 --> 00:13:56.720
-become uh the value of contents
-
-00:13:56.720 --> 00:13:59.199
-and if you're really you know interested
-
-00:13:59.199 --> 00:14:00.320
-and you want to do some
-
-00:14:00.320 --> 00:14:03.839
-intricate stuff uh def block also gives
-
-00:14:03.839 --> 00:14:04.959
-you something called
-
-00:14:04.959 --> 00:14:08.160
-raw dash contents if you really want to
-
-00:14:08.160 --> 00:14:09.360
-touch the raw
-
-00:14:09.360 --> 00:14:11.920
-uh contents with all of the org markups
-
-00:14:11.920 --> 00:14:12.639
-still there
-
-00:14:12.639 --> 00:14:16.000
-okay so let's uh let's see
-
-00:14:16.000 --> 00:14:18.320
-how uh everyone can uh communicate
-
-00:14:18.320 --> 00:14:19.440
-amongst themselves
-
-00:14:19.440 --> 00:14:22.480
-using this new interface okay so
-
-00:14:22.480 --> 00:14:26.000
-uh uh sasha speculates and she how does
-
-00:14:26.000 --> 00:14:28.399
-she speculate for her organ html
-
-00:14:28.399 --> 00:14:31.440
-she might just write hey look at that no
-
-00:14:31.440 --> 00:14:34.800
-no no html nice and and
-
-00:14:34.800 --> 00:14:37.519
-amin wants to have some green and so he
-
-00:14:37.519 --> 00:14:39.600
-just says hey here's some color green
-
-00:14:39.600 --> 00:14:42.240
-and and uh there you go it looks almost
-
-00:14:42.240 --> 00:14:42.959
-the same
-
-00:14:42.959 --> 00:14:46.560
-right uh notice that the main argument
-
-00:14:46.560 --> 00:14:49.680
-is right here def block took an author
-
-00:14:49.680 --> 00:14:52.480
-and here's the author again and now the
-
-00:14:52.480 --> 00:14:53.920
-optional argument
-
-00:14:53.920 --> 00:14:57.360
-uses the org babel source interface you
-
-00:14:57.360 --> 00:14:58.000
-just say
-
-00:14:58.000 --> 00:15:00.639
-colon and then a key and then the
-
-00:15:00.639 --> 00:15:01.440
-argument
-
-00:15:01.440 --> 00:15:05.040
-quite quite nice and and corwin doesn't
-
-00:15:05.040 --> 00:15:05.519
-want to
-
-00:15:05.519 --> 00:15:07.920
-use blocks it's a bit of an overkill and
-
-00:15:07.920 --> 00:15:09.760
-can just write a
-
-00:15:09.760 --> 00:15:12.959
-a little um right
-
-00:15:12.959 --> 00:15:16.000
-so the main argument is now the uh uh
-
-00:15:16.000 --> 00:15:17.440
-the label of the link
-
-00:15:17.440 --> 00:15:19.360
-all right and then the description of
-
-00:15:19.360 --> 00:15:21.600
-the link is the contents
-
-00:15:21.600 --> 00:15:24.959
-of uh of the feedback so that was quite
-
-00:15:24.959 --> 00:15:25.680
-nice
-
-00:15:25.680 --> 00:15:28.079
-so it looks like uh everyone uses the
-
-00:15:28.079 --> 00:15:29.360
-same interface on the left
-
-00:15:29.360 --> 00:15:32.800
-and can have varying uh outputs
-
-00:15:32.800 --> 00:15:34.480
-and it looks I think it looks quite nice
-
-00:15:34.480 --> 00:15:36.639
-and I hope you do too
-
-00:15:36.639 --> 00:15:40.000
-um and there's a few more maybe
-
-00:15:40.000 --> 00:15:42.160
-as you saw in some previous ones we had
-
-00:15:42.160 --> 00:15:43.920
-text side beside side
-
-00:15:43.920 --> 00:15:46.800
-right now um or we folded some regions
-
-00:15:46.800 --> 00:15:47.440
-away
-
-00:15:47.440 --> 00:15:49.360
-that was quite nice we put some things
-
-00:15:49.360 --> 00:15:50.959
-in pretty boxes
-
-00:15:50.959 --> 00:15:54.000
-um uh we had some spoilers at the very
-
-00:15:54.000 --> 00:15:57.120
-beginning that we we uh hit some text uh
-
-00:15:57.120 --> 00:15:58.160
-we demoed uh
-
-00:15:58.160 --> 00:15:59.600
-some texts right you know here's some
-
-00:15:59.600 --> 00:16:01.680
-org and here's what it looks like
-
-00:16:01.680 --> 00:16:04.480
-um and and most importantly uh they they
-
-00:16:04.480 --> 00:16:05.199
-compose
-
-00:16:05.199 --> 00:16:08.320
-right there's uh uh there's a
-
-00:16:08.320 --> 00:16:12.639
-a macro called uh uh thread block
-
-00:16:12.639 --> 00:16:14.720
-uh thread block a thread block call and
-
-00:16:14.720 --> 00:16:16.160
-it lets you thread the
-
-00:16:16.160 --> 00:16:18.000
-the contents through a number of blocks
-
-00:16:18.000 --> 00:16:20.639
-treating them as if they were functions
-
-00:16:20.639 --> 00:16:22.480
-and so really you can think of a block
-
-00:16:22.480 --> 00:16:23.680
-as a as a
-
-00:16:23.680 --> 00:16:26.560
-as a string valued function so that's
-
-00:16:26.560 --> 00:16:27.360
-pretty neat
-
-00:16:27.360 --> 00:16:30.959
-I I think and uh thank you for listening
-
-00:16:30.959 --> 00:16:31.759
-and uh
-
-00:16:31.759 --> 00:16:34.320
-I I hope you've uh enjoyed this little
-
-00:16:34.320 --> 00:16:34.880
-uh
-
-00:16:34.880 --> 00:16:37.600
-happy fun time with uh with the Emacs
-
-00:16:37.600 --> 00:16:38.160
-and friends
-
-00:16:38.160 --> 00:16:40.720
-and uh I'll I'm I'll happy happily
-
-00:16:40.720 --> 00:16:41.759
-answer questions
-
-00:16:41.759 --> 00:16:43.730
-uh right now um
-
-00:16:43.730 --> 00:16:45.360
-[Music]
-
-00:16:45.360 --> 00:16:48.160
-so uh someone says why did you put
-
-00:16:48.160 --> 00:16:50.480
-optional arguments in a separate list
-
-00:16:50.480 --> 00:16:53.600
-rather than using cl style argument
-
-00:16:53.600 --> 00:16:54.560
-lists
-
-00:16:54.560 --> 00:16:58.399
-um so that's a very good question
-
-00:16:58.399 --> 00:17:01.680
-and I will answer that by
-
-00:17:01.680 --> 00:17:04.400
-showing you a more involved definition
-
-00:17:04.400 --> 00:17:04.880
-of
-
-00:17:04.880 --> 00:17:08.959
-feedback so let's look at a
-
-00:17:08.959 --> 00:17:13.039
-a more involved one
-
-00:17:13.039 --> 00:17:16.079
-right right here so for example
-
-00:17:16.079 --> 00:17:19.280
-this one is called rural mark all right
-
-00:17:19.280 --> 00:17:21.760
-and uh please let me know if my text is
-
-00:17:21.760 --> 00:17:23.439
-not sufficiently big
-
-00:17:23.439 --> 00:17:26.799
-so here is here is why uh we have
-
-00:17:26.799 --> 00:17:29.520
-two arguments that takes two arguments
-
-00:17:29.520 --> 00:17:30.720
-uh instead of one
-
-00:17:30.720 --> 00:17:33.360
-for for its argument list right so you
-
-00:17:33.360 --> 00:17:34.799
-you have def block
-
-00:17:34.799 --> 00:17:37.679
-then you have the name right then you
-
-00:17:37.679 --> 00:17:38.400
-have
-
-00:17:38.400 --> 00:17:40.960
-the first uh argument list and the
-
-00:17:40.960 --> 00:17:42.880
-second argument list
-
-00:17:42.880 --> 00:17:46.080
-the first argument list uh takes the
-
-00:17:46.080 --> 00:17:49.280
-takes the text right after the begin
-
-00:17:49.280 --> 00:17:51.760
-right the text right after the begin is
-
-00:17:51.760 --> 00:17:52.320
-the main
-
-00:17:52.320 --> 00:17:55.760
-argument okay and then the remaining key
-
-00:17:55.760 --> 00:17:57.039
-value pairs
-
-00:17:57.039 --> 00:18:00.320
-are in the second argument list okay
-
-00:18:00.320 --> 00:18:03.280
-now the reason we have two is because uh
-
-00:18:03.280 --> 00:18:04.640
-in order to
-
-00:18:04.640 --> 00:18:06.799
-streamline the interface to account for
-
-00:18:06.799 --> 00:18:08.880
-both uh special blocks
-
-00:18:08.880 --> 00:18:12.320
-and or link types uh what we do is we
-
-00:18:12.320 --> 00:18:13.360
-say hey
-
-00:18:13.360 --> 00:18:16.160
-uh in the first argument list uh you can
-
-00:18:16.160 --> 00:18:18.000
-give a name to the first argument
-
-00:18:18.000 --> 00:18:21.039
-give it a default value and anything
-
-00:18:21.039 --> 00:18:24.240
-else you provide will become uh
-
-00:18:24.240 --> 00:18:27.760
-uh part of the I'll co link
-
-00:18:27.760 --> 00:18:30.000
-information so for example this link we
-
-00:18:30.000 --> 00:18:32.000
-decided to make its face
-
-00:18:32.000 --> 00:18:34.799
-angry red um you might want to give
-
-00:18:34.799 --> 00:18:35.840
-other features to
-
-00:18:35.840 --> 00:18:37.919
-links so we're trying to streamline the
-
-00:18:37.919 --> 00:18:39.679
-interface for both
-
-00:18:39.679 --> 00:18:42.320
-special blocks and org link types and we
-
-00:18:42.320 --> 00:18:42.880
-thought
-
-00:18:42.880 --> 00:18:46.240
-this way was quite nice um so
-
-00:18:46.240 --> 00:18:49.840
-that was the main reason uh someone asks
-
-00:18:49.840 --> 00:18:52.480
-uh so if if you uh if that's uh if you
-
-00:18:52.480 --> 00:18:55.039
-need if you have follow-up please ask
-
-00:18:55.039 --> 00:18:57.600
-someone asks do you intend to try to
-
-00:18:57.600 --> 00:19:00.559
-upstream this amazing work into org
-
-00:19:00.559 --> 00:19:03.600
-well I'm glad you like it I I don't know
-
-00:19:03.600 --> 00:19:04.559
-how to upstream
-
-00:19:04.559 --> 00:19:06.880
-but but I I will look into it and any
-
-00:19:06.880 --> 00:19:08.799
-advice or guidance would be
-
-00:19:08.799 --> 00:19:11.840
-much appreciated um you know
-
-00:19:11.840 --> 00:19:14.640
-lisp is awesome and just as defunded as
-
-00:19:14.640 --> 00:19:17.120
-a macro deathblock is a macro and then
-
-00:19:17.120 --> 00:19:20.240
-source blocks are awesome and then now
-
-00:19:20.240 --> 00:19:21.919
-maybe we can have arguments and special
-
-00:19:21.919 --> 00:19:24.080
-blocks and motivate and encourage more
-
-00:19:24.080 --> 00:19:25.280
-people to uh
-
-00:19:25.280 --> 00:19:28.799
-to uh learn lisp right
-
-00:19:28.799 --> 00:19:32.559
-so another person asks
-
-00:19:32.559 --> 00:19:35.280
-um what is used to produce colorful
-
-00:19:35.280 --> 00:19:38.559
-boxes around the cursor
-
-00:19:38.559 --> 00:19:40.400
-I I'm not quite sure if you're asking
-
-00:19:40.400 --> 00:19:41.840
-are you talking about my cursor right
-
-00:19:41.840 --> 00:19:42.559
-here
-
-00:19:42.559 --> 00:19:48.400
-or are you talking about in the slide um
-
-00:19:48.400 --> 00:19:50.559
-so this this this cursor is some
-
-00:19:50.559 --> 00:19:52.400
-application called
-
-00:19:52.400 --> 00:19:55.440
-a stream brush that I had to purchase uh
-
-00:19:55.440 --> 00:19:57.679
-unfortunately I could not find a a
-
-00:19:57.679 --> 00:19:59.039
-suitable free one
-
-00:19:59.039 --> 00:20:02.159
-um and the blocks I can demonstrate some
-
-00:20:02.159 --> 00:20:03.840
-Emacs list but I can open up my Emacs if
-
-00:20:03.840 --> 00:20:05.679
-people like and we can try some things
-
-00:20:05.679 --> 00:20:06.320
-out
-
-00:20:06.320 --> 00:20:09.440
-happy to do that uh
-
-00:20:09.440 --> 00:20:12.480
-you're welcome uh someone asks
-
-00:20:12.480 --> 00:20:14.880
-a side question about org reveal how do
-
-00:20:14.880 --> 00:20:15.520
-you get
-
-00:20:15.520 --> 00:20:17.440
-bespoke or multiple column layouts
-
-00:20:17.440 --> 00:20:19.120
-without using html
-
-00:20:19.120 --> 00:20:22.559
-ah excellent question that's what we do
-
-00:20:22.559 --> 00:20:24.640
-that's that's what this uh project is
-
-00:20:24.640 --> 00:20:26.000
-about so it's not
-
-00:20:26.000 --> 00:20:28.960
-org reveal it's it's our fancy parallel
-
-00:20:28.960 --> 00:20:29.440
-uh
-
-00:20:29.440 --> 00:20:32.240
-uh block so we have this thing you say
-
-00:20:32.240 --> 00:20:33.440
-begin parallel
-
-00:20:33.440 --> 00:20:35.679
-you say how many columns you would like
-
-00:20:35.679 --> 00:20:37.120
-uh do you want a bar
-
-00:20:37.120 --> 00:20:39.679
-or not and then you write some text and
-
-00:20:39.679 --> 00:20:40.960
-then you uh
-
-00:20:40.960 --> 00:20:42.480
-you get some text and according with the
-
-00:20:42.480 --> 00:20:44.400
-bar or not right so that's
-
-00:20:44.400 --> 00:20:47.520
-that's how we achieve that in our slides
-
-00:20:47.520 --> 00:20:50.080
-so I'm not uh I'm not quite sure where
-
-00:20:50.080 --> 00:20:52.880
-this was
-
-00:20:52.880 --> 00:20:59.520
-somewhere here I think
-
-00:20:59.520 --> 00:21:06.240
-let me try to find this for you
-
-00:21:06.240 --> 00:21:08.320
-I can't seem to find where the parallel
-
-00:21:08.320 --> 00:21:09.440
-blocks were
-
-00:21:09.440 --> 00:21:12.159
-apologies let's move on to the next
-
-00:21:12.159 --> 00:21:15.039
-question I suppose
-
-00:21:15.039 --> 00:21:17.760
-uh I'm pretty sure they're here ah there
-
-00:21:17.760 --> 00:21:18.400
-they are
-
-00:21:18.400 --> 00:21:21.360
-yes so these these uh were just
-
-00:21:21.360 --> 00:21:22.640
-instances of using
-
-00:21:22.640 --> 00:21:25.440
-uh the parallel block and it makes
-
-00:21:25.440 --> 00:21:26.480
-things parallel
-
-00:21:26.480 --> 00:21:29.600
-so that's quite nice um another person
-
-00:21:29.600 --> 00:21:33.360
-asks uh yes
-
-00:21:33.360 --> 00:21:36.720
-excellent um how does this relate to
-
-00:21:36.720 --> 00:21:37.840
-banda pandoc
-
-00:21:37.840 --> 00:21:39.360
-which is used for converting between
-
-00:21:39.360 --> 00:21:40.960
-markup formats
-
-00:21:40.960 --> 00:21:43.919
-so all we're doing is we're we're saying
-
-00:21:43.919 --> 00:21:44.400
-hey
-
-00:21:44.400 --> 00:21:46.799
-please write org because org is just
-
-00:21:46.799 --> 00:21:47.679
-fantastic
-
-00:21:47.679 --> 00:21:50.400
-and we love it and it's the dream and if
-
-00:21:50.400 --> 00:21:51.760
-you would like to view things
-
-00:21:51.760 --> 00:21:55.039
-in html or in org reveal or
-
-00:21:55.039 --> 00:21:58.559
-in pdf that's up to the user so
-
-00:21:58.559 --> 00:22:02.320
-here is a um oh
-
-00:22:02.320 --> 00:22:05.039
-made it too small now so here is a an
-
-00:22:05.039 --> 00:22:06.080
-example
-
-00:22:06.080 --> 00:22:08.880
-so here's an uh how here's how parallel
-
-00:22:08.880 --> 00:22:10.240
-is implemented
-
-00:22:10.240 --> 00:22:13.120
-uh just as a quick example uh not too
-
-00:22:13.120 --> 00:22:14.320
-long
-
-00:22:14.320 --> 00:22:16.880
-uh about half of the implementation is
-
-00:22:16.880 --> 00:22:18.400
-documentation so
-
-00:22:18.400 --> 00:22:20.720
-uh hopefully that speaks for for how
-
-00:22:20.720 --> 00:22:22.720
-useful this feature is
-
-00:22:22.720 --> 00:22:25.280
-uh so we decide if there's a rule or not
-
-00:22:25.280 --> 00:22:28.080
-um we look for the column break
-
-00:22:28.080 --> 00:22:29.760
-and really here we're looking at the
-
-00:22:29.760 --> 00:22:31.840
-back end if the back end is latex
-
-00:22:31.840 --> 00:22:34.960
-uh please use this uh incantation with
-
-00:22:34.960 --> 00:22:37.679
-multi columns mini pages what have you
-
-00:22:37.679 --> 00:22:38.559
-and if the
-
-00:22:38.559 --> 00:22:41.039
-back end is something else uh please uh
-
-00:22:41.039 --> 00:22:41.600
-do this
-
-00:22:41.600 --> 00:22:44.960
-uh div and style and uh other uh
-
-00:22:44.960 --> 00:22:46.640
-gibberish that we don't really wanna
-
-00:22:46.640 --> 00:22:48.080
-look at uh so
-
-00:22:48.080 --> 00:22:51.760
-uh when you pandoc works from org
-
-00:22:51.760 --> 00:22:55.280
-so it might not work directly since our
-
-00:22:55.280 --> 00:22:58.080
-interface the way we set it up is when
-
-00:22:58.080 --> 00:22:59.679
-you try to export
-
-00:22:59.679 --> 00:23:01.919
-uh we hook in and we do a bunch of
-
-00:23:01.919 --> 00:23:03.039
-pre-processing
-
-00:23:03.039 --> 00:23:05.919
-so this this uh def block is a is a
-
-00:23:05.919 --> 00:23:07.440
-string valued function
-
-00:23:07.440 --> 00:23:10.880
-and so whenever we see these uh begin
-
-00:23:10.880 --> 00:23:13.919
-parallel uh when you do an export
-
-00:23:13.919 --> 00:23:16.480
-I tell Emacs hold up look for those
-
-00:23:16.480 --> 00:23:16.960
-begin
-
-00:23:16.960 --> 00:23:19.360
-parallels please oh you found them grab
-
-00:23:19.360 --> 00:23:20.320
-that text
-
-00:23:20.320 --> 00:23:22.400
-you grabbed it great now please apply
-
-00:23:22.400 --> 00:23:24.080
-this person's uh function
-
-00:23:24.080 --> 00:23:27.120
-onto that text and splice in the result
-
-00:23:27.120 --> 00:23:29.760
-okay so so when you export uh we're
-
-00:23:29.760 --> 00:23:30.400
-performing
-
-00:23:30.400 --> 00:23:33.600
-arbitrary computations on your uh uh on
-
-00:23:33.600 --> 00:23:35.120
-your text
-
-00:23:35.120 --> 00:23:38.799
-so uh um some people might not find that
-
-00:23:38.799 --> 00:23:40.159
-comforting to have
-
-00:23:40.159 --> 00:23:43.039
-arbitrary uh computations happening so
-
-00:23:43.039 --> 00:23:45.039
-in this article there's a few where
-
-00:23:45.039 --> 00:23:47.520
-uh we change your text upon export we
-
-00:23:47.520 --> 00:23:48.320
-translate it
-
-00:23:48.320 --> 00:23:51.760
-we do other things to it um
-
-00:23:51.760 --> 00:23:55.360
-so someone says uh if you export to
-
-00:23:55.360 --> 00:23:57.360
-latex to pdf does that work well with
-
-00:23:57.360 --> 00:23:58.640
-beamer as well
-
-00:23:58.640 --> 00:24:00.320
-to create slides with columns for
-
-00:24:00.320 --> 00:24:02.080
-example for uh
-
-00:24:02.080 --> 00:24:05.200
-um so uh actually uh
-
-00:24:05.200 --> 00:24:08.000
-so uh I I made a bunch of these changes
-
-00:24:08.000 --> 00:24:09.200
-earlier this morning
-
-00:24:09.200 --> 00:24:12.320
-and it just says latex right here um
-
-00:24:12.320 --> 00:24:14.480
-so if you want to go to beamer I think
-
-00:24:14.480 --> 00:24:15.360
-the back end for me
-
-00:24:15.360 --> 00:24:18.240
-beamer is called well beamer so instead
-
-00:24:18.240 --> 00:24:18.960
-of a
-
-00:24:18.960 --> 00:24:21.200
-a p case what we would do is we would
-
-00:24:21.200 --> 00:24:22.000
-say oh
-
-00:24:22.000 --> 00:24:25.360
-if it's a latex or it's a beamer
-
-00:24:25.360 --> 00:24:29.279
-then uh use this uh otherwise
-
-00:24:29.279 --> 00:24:31.120
-it's not a latex it will simply default
-
-00:24:31.120 --> 00:24:33.039
-to this one which could be
-
-00:24:33.039 --> 00:24:36.400
-dangerous for your needs um I think it's
-
-00:24:36.400 --> 00:24:39.679
-a bad practice to put a underscore but I
-
-00:24:39.679 --> 00:24:41.279
-did it really quickly because I just
-
-00:24:41.279 --> 00:24:43.679
-wanted to show you that it works fine in
-
-00:24:43.679 --> 00:24:46.559
-org reveal contributions are more than
-
-00:24:46.559 --> 00:24:47.440
-welcome
-
-00:24:47.440 --> 00:24:51.039
-I I uh happily uh would love any
-
-00:24:51.039 --> 00:24:52.240
-assistance
-
-00:24:52.240 --> 00:24:56.080
-um and and I have a uh we have a
-
-00:24:56.080 --> 00:24:58.640
-list a reference cheat sheet here to to
-
-00:24:58.640 --> 00:25:00.159
-learn a little bit about lisp if you're
-
-00:25:00.159 --> 00:25:02.000
-not comfortable or to
-
-00:25:02.000 --> 00:25:04.640
-ask some questions lots of helpful
-
-00:25:04.640 --> 00:25:06.400
-people
-
-00:25:06.400 --> 00:25:09.440
-so there's another question that says uh
-
-00:25:09.440 --> 00:25:11.679
-does typing in a block mess up with a
-
-00:25:11.679 --> 00:25:13.120
-syntax highlighting
-
-00:25:13.120 --> 00:25:15.679
-usually you use a single color inside an
-
-00:25:15.679 --> 00:25:17.279
-example block for example
-
-00:25:17.279 --> 00:25:21.279
-ah you found my crutch you found
-
-00:25:21.279 --> 00:25:25.279
-my crutch um so I so there's
-
-00:25:25.279 --> 00:25:27.440
-emax's is all encompassing and I'm not
-
-00:25:27.440 --> 00:25:29.760
-quite sure how fonts work or are
-
-00:25:29.760 --> 00:25:32.559
-you know I I learned enough to get by I
-
-00:25:32.559 --> 00:25:33.840
-learned enough to get by
-
-00:25:33.840 --> 00:25:37.440
-so let me um but here's
-
-00:25:37.440 --> 00:25:39.760
-here's how links work they're they're a
-
-00:25:39.760 --> 00:25:40.799
-bit complicated
-
-00:25:40.799 --> 00:25:42.960
-this this is a bit scary I don't
-
-00:25:42.960 --> 00:25:43.919
-recommend anyone
-
-00:25:43.919 --> 00:25:47.039
-uh read it um
-
-00:25:47.039 --> 00:25:49.840
-but uh actually let me open up an email
-
-00:25:49.840 --> 00:25:50.559
-and you can
-
-00:25:50.559 --> 00:25:53.600
-you can see what I see uh so here's an
-
-00:25:53.600 --> 00:25:54.799
-Emacs
-
-00:25:54.799 --> 00:25:56.799
-all right let's make that a bit bigger
-
-00:25:56.799 --> 00:25:58.400
-uh let's change this
-
-00:25:58.400 --> 00:26:01.200
-slightly nope that's worse there you go
-
-00:26:01.200 --> 00:26:01.919
-so
-
-00:26:01.919 --> 00:26:05.760
-here's here's some words um so here's
-
-00:26:05.760 --> 00:26:09.360
-red hello um
-
-00:26:09.360 --> 00:26:12.000
-but you're worried about uh preserving
-
-00:26:12.000 --> 00:26:12.400
-uh
-
-00:26:12.400 --> 00:26:15.679
-uh uh um quantification
-
-00:26:15.679 --> 00:26:18.480
-so let's make an emax list block all
-
-00:26:18.480 --> 00:26:18.880
-right
-
-00:26:18.880 --> 00:26:22.840
-and let's say plus one two ah
-
-00:26:22.840 --> 00:26:28.000
-where's the fun hello
-
-00:26:28.000 --> 00:26:32.080
-um bye okay where's the coloring
-
-00:26:32.080 --> 00:26:34.880
-if we if we zoom in on this on this
-
-00:26:34.880 --> 00:26:36.000
-begin source block
-
-00:26:36.000 --> 00:26:39.200
-if we zoom in you can see down here
-
-00:26:39.200 --> 00:26:42.159
-uh we have our our coloring all right
-
-00:26:42.159 --> 00:26:43.279
-when we zoom in
-
-00:26:43.279 --> 00:26:46.960
-if we if we zoom out ah no coloring
-
-00:26:46.960 --> 00:26:50.080
-zoom in coloring it's about ah no
-
-00:26:50.080 --> 00:26:50.880
-coloring
-
-00:26:50.880 --> 00:26:53.840
-let's take off these bad boys and oh
-
-00:26:53.840 --> 00:26:55.679
-look my coloring's back
-
-00:26:55.679 --> 00:26:59.360
-so um in a previous
-
-00:26:59.360 --> 00:27:02.320
-uh iteration of the system I was able to
-
-00:27:02.320 --> 00:27:03.760
-maintain coloring
-
-00:27:03.760 --> 00:27:06.400
-uh in this new iteration I am not I
-
-00:27:06.400 --> 00:27:08.559
-don't know how to do it I haven't uh
-
-00:27:08.559 --> 00:27:11.039
-had the time to to implement it I spent
-
-00:27:11.039 --> 00:27:13.279
-a lot of time writing this uh
-
-00:27:13.279 --> 00:27:17.279
-48 page uh documentation uh with uh
-
-00:27:17.279 --> 00:27:19.679
-with some fun examples to to to try to
-
-00:27:19.679 --> 00:27:20.320
-help
-
-00:27:20.320 --> 00:27:21.760
-people learn so but but I would
-
-00:27:21.760 --> 00:27:23.760
-appreciate any help or guidance on
-
-00:27:23.760 --> 00:27:26.240
-how to uh maintain the quantification I
-
-00:27:26.240 --> 00:27:28.000
-I really would like to keep those colors
-
-00:27:28.000 --> 00:27:29.200
-in
-
-00:27:29.200 --> 00:27:31.840
-um musa we have time for maybe one more
-
-00:27:31.840 --> 00:27:32.640
-question
-
-00:27:32.640 --> 00:27:34.960
-um one or two more questions and then we
-
-00:27:34.960 --> 00:27:37.039
-have to move on to the next talk
-
-00:27:37.039 --> 00:27:39.120
-um but yeah you're more than welcome to
-
-00:27:39.120 --> 00:27:40.799
-take continue taking the questions via
-
-00:27:40.799 --> 00:27:42.559
-irc or the pad
-
-00:27:42.559 --> 00:27:45.760
-okay thank you thank you
-
-00:27:45.760 --> 00:27:48.480
-let's uh the final question we'll take
-
-00:27:48.480 --> 00:27:48.880
-is
-
-00:27:48.880 --> 00:27:52.320
-um should packages implement
-
-00:27:52.320 --> 00:27:54.399
-interface to one specific format or
-
-00:27:54.399 --> 00:27:55.840
-attempt to be conclusive to all the
-
-00:27:55.840 --> 00:27:57.279
-potential output targets
-
-00:27:57.279 --> 00:27:58.880
-I think you should just make them as you
-
-00:27:58.880 --> 00:28:01.120
-go and you know add them as you need
-
-00:28:01.120 --> 00:28:02.559
-them we'll make uh
-
-00:28:02.559 --> 00:28:05.600
-help requests or things and uh
-
-00:28:05.600 --> 00:28:07.840
-we can we can share recipes in this uh
-
-00:28:07.840 --> 00:28:09.279
-document and then
-
-00:28:09.279 --> 00:28:12.799
-try to add other uh techniques and then
-
-00:28:12.799 --> 00:28:16.000
-and we can uh use these blocks as a
-
-00:28:16.000 --> 00:28:19.200
-common uh interface for
-
-00:28:19.200 --> 00:28:22.240
-for exporting to pdf and other things
-
-00:28:22.240 --> 00:28:26.000
-and since someone asked here is a um
-
-00:28:26.000 --> 00:28:28.399
-here is uh what a pdf looks like this is
-
-00:28:28.399 --> 00:28:30.159
-the same pdf and
-
-00:28:30.159 --> 00:28:33.840
-uh rendered uh just I made no effort to
-
-00:28:33.840 --> 00:28:34.960
-make it look good
-
-00:28:34.960 --> 00:28:37.840
-but it surprisingly does look good so so
-
-00:28:37.840 --> 00:28:38.559
-uh that was
-
-00:28:38.559 --> 00:28:41.600
-uh that was nice um that was a
-
-00:28:41.600 --> 00:28:44.320
-terrible magenta but that is life uh
-
-00:28:44.320 --> 00:28:44.880
-anyhow
-
-00:28:44.880 --> 00:28:47.279
-I hope you all enjoyed this talk I hope
-
-00:28:47.279 --> 00:28:48.960
-you will find um
-
-00:28:48.960 --> 00:28:51.679
-death block uh useful to you it is
-
-00:28:51.679 --> 00:28:52.799
-available on melbourne
-
-00:28:52.799 --> 00:28:54.960
-uh in a rush to make it available for
-
-00:28:54.960 --> 00:28:57.679
-EmacsConf 2020 some melba
-
-00:28:57.679 --> 00:29:00.159
-guidelines may not have been in here too
-
-00:29:00.159 --> 00:29:00.960
-please do not
-
-00:29:00.960 --> 00:29:03.200
-hit me um and I hope everyone enjoys the
-
-00:29:03.200 --> 00:29:04.720
-rest of the EmacsConf
-
-00:29:04.720 --> 00:29:08.559
-2020 thank you
diff --git a/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy.vtt b/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy.vtt
new file mode 100644
index 00000000..46b7433f
--- /dev/null
+++ b/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy.vtt
@@ -0,0 +1,1723 @@
+WEBVTT
+
+00:00:04.080 --> 00:00:07.359
+All right, then. Well, hello everyone.
+
+00:00:07.359 --> 00:00:11.519
+I hope you're all enjoying the EmacsConf.
+
+00:00:11.519 --> 00:00:15.040
+My name is Musa Al-hassy, and I hope you're
+
+00:00:15.040 --> 00:00:19.840
+excited to learn about powering up special blocks.
+
+00:00:19.840 --> 00:00:25.574
+Let's first off find out
+what these special blocks are,
+
+00:00:25.574 --> 00:00:27.920
+and see what we can go from.
+
+00:00:27.920 --> 00:00:30.240
+Yesterday, I saw a lot of cool talks
+
+00:00:30.240 --> 00:00:33.200
+and people were chatting about
+
+00:00:33.200 --> 00:00:37.200
+how should you present? Should you
+do it this way or that way?
+
+00:00:37.200 --> 00:00:39.931
+I thought maybe I should try a different way.
+
+00:00:39.931 --> 00:00:42.567
+But I'm talking about special blocks
+
+00:00:42.567 --> 00:00:45.039
+and if I show you an Emacs, then I have to export
+
+00:00:45.039 --> 00:00:47.840
+the HTML so you can see what it looks like
+
+00:00:47.840 --> 00:00:51.920
+or export to a PDF so you can see what it looks like.
+
+00:00:51.920 --> 00:00:54.239
+So I ended up writing in org-reveal,
+
+00:00:54.239 --> 00:00:58.233
+and joyously, this just works.
+
+00:00:58.960 --> 00:01:00.879
+You can just see things here.
+
+00:01:00.879 --> 00:01:03.452
+I was worried that I'd have to take pictures
+
+00:01:03.452 --> 00:01:09.760
+and then insert pings, so that was a delight.
+
+00:01:09.760 --> 00:01:15.704
+Okay. Special blocks are these things like a center small quote.
+
+00:01:15.704 --> 00:01:17.280
+That's what a special block is,
+
+00:01:17.280 --> 00:01:19.733
+and with a bit of Lisp, we can make
+
+00:01:19.733 --> 00:01:22.741
+special blocks and link types.
+
+00:01:22.741 --> 00:01:24.799
+Right. Using a single interface.
+
+00:01:24.799 --> 00:01:27.344
+The interface is going to be similar
+
+00:01:27.344 --> 00:01:29.281
+to one many people are familiar with.
+
+00:01:29.281 --> 00:01:34.712
+In particular, Org Babel's src interface
+
+00:01:34.712 --> 00:01:37.840
+as well as using global header arguments for link types.
+
+00:01:37.840 --> 00:01:39.450
+The idea is to write it once
+
+00:01:39.450 --> 00:01:41.200
+and generate many different kinds.
+
+00:01:41.200 --> 00:01:45.213
+You write in Org markup and you can have HTML,
+
+00:01:45.213 --> 00:01:49.767
+you can have PDF, and joyously, org-reveal.
+
+00:01:49.767 --> 00:01:53.600
+That was an unexpected delight.
+
+00:01:53.600 --> 00:01:57.840
+Here are a few that you'll just see
+
+00:01:57.840 --> 00:02:01.759
+in this presentation.
+
+00:02:01.759 --> 00:02:05.040
+I won't show some of these link-only ones,
+
+00:02:05.040 --> 00:02:06.799
+but we'll see a few of these other ones
+
+00:02:06.799 --> 00:02:09.500
+just to make the presentation look nice
+
+00:02:09.500 --> 00:02:11.520
+So the presentation is really going to
+
+00:02:11.520 --> 00:02:14.000
+present these blocks and the mechanism
+
+00:02:14.000 --> 00:02:15.120
+at the same time.
+
+00:02:15.120 --> 00:02:18.400
+No HTML was written.
+
+00:02:18.400 --> 00:02:21.280
+Look, Ma! No HTML, just pure Org Mode,
+
+00:02:21.280 --> 00:02:25.840
+and you get all these beautiful boxes and things.
+
+00:02:25.840 --> 00:02:27.680
+The motivation for this is...
+
+00:02:29.120 --> 00:02:31.200
+you're online, you run into a blog,
+
+00:02:31.200 --> 00:02:32.120
+and you see something you like,
+
+00:02:32.120 --> 00:02:33.120
+and you're like, man,
+
+00:02:33.120 --> 00:02:36.640
+you know, I wish I could produce that.
+
+00:02:36.640 --> 00:02:41.639
+But you check, and the author wrote raw HTML.
+
+00:02:41.639 --> 00:02:44.239
+You know, #+HTML: everywhere.
+
+00:02:44.239 --> 00:02:49.533
+That's going to obscure your real content.
+
+00:02:49.533 --> 00:02:51.200
+It's going to be surrounded by all this
+
+00:02:51.200 --> 00:02:54.239
+styling information. That's unfortunate.
+
+00:02:54.239 --> 00:02:57.033
+The author decides to use an Org macro.
+
+00:02:57.033 --> 00:02:58.959
+All right, a bit better,
+
+00:02:58.959 --> 00:03:00.333
+but then what if you decide,
+
+00:03:00.333 --> 00:03:04.667
+hey I want to make a PDF? Not great.
+
+00:03:04.667 --> 00:03:06.000
+And then the worst of all,
+
+00:03:06.000 --> 00:03:07.840
+the author doesn't give you the source,
+
+00:03:07.840 --> 00:03:10.159
+and then you have to view page source,
+
+00:03:10.159 --> 00:03:13.760
+and learn cascading style sheets,
+
+00:03:14.239 --> 00:03:15.767
+and sit in a corner and cry,
+
+00:03:15.767 --> 00:03:18.080
+and decide to do other things with your life.
+
+00:03:18.080 --> 00:03:22.640
+We want to give you Org users numerous styles
+
+00:03:22.640 --> 00:03:27.200
+and an extensible mechanism to add more of these
+
+00:03:27.200 --> 00:03:28.799
+aesthetically pleasing styles,
+
+00:03:28.799 --> 00:03:31.200
+to have really nice things
+
+00:03:31.200 --> 00:03:33.933
+look one way in the HTML
+
+00:03:33.933 --> 00:03:36.567
+and look almost the same way in the PDF
+
+00:03:36.567 --> 00:03:38.667
+and other back ends.
+
+00:03:38.667 --> 00:03:41.680
+And if by having these newer ones,
+
+00:03:41.680 --> 00:03:45.519
+people might be encouraged to try making new ones,
+
+00:03:45.519 --> 00:03:49.040
+especially when the interface is not so difficult,
+
+00:03:49.040 --> 00:03:54.159
+that's the aim.
+
+00:03:54.159 --> 00:03:59.120
+So let's have a real story to motivate this even more.
+
+00:03:59.120 --> 00:04:03.533
+Here's three friends. I hope I don't butcher their names,
+
+00:04:03.533 --> 00:04:04.640
+but these friends are called
+
+00:04:04.640 --> 00:04:08.720
+Amin, Sacha, and Corwin. They're organizing a conference,
+
+00:04:08.720 --> 00:04:12.080
+EmacsConf 2020.
+
+00:04:12.080 --> 00:04:14.239
+So Sacha decides to write an Org file
+
+00:04:14.239 --> 00:04:16.479
+and she would like some feedback.
+
+00:04:16.479 --> 00:04:19.840
+Okay. Just to make it clear, there's no...
+
+00:04:19.840 --> 00:04:22.960
+just how easy this looks,
+
+00:04:22.960 --> 00:04:27.280
+let's look at the source for this block.
+
+00:04:27.280 --> 00:04:30.720
+Notice it's just the word "green," then a colon,
+
+00:04:30.720 --> 00:04:37.333
+then Amin. No div style coloring,
+
+00:04:37.333 --> 00:04:38.479
+just green:Amin.
+
+00:04:38.479 --> 00:04:41.520
+A very pleasant Org markup.
+
+00:04:41.520 --> 00:04:44.960
+So that's quite nice. Put some bold around it.
+
+00:04:44.960 --> 00:04:46.433
+Not too difficult.
+
+00:04:46.433 --> 00:04:49.900
+Hopefully, this will be useful to other people as well.
+
+00:04:49.900 --> 00:04:52.240
+So what kind of feedback
+
+00:04:52.240 --> 00:04:55.233
+would Sacha expect to get?
+
+00:04:55.233 --> 00:04:59.120
+Maybe she would expect top-level remarks
+
+00:04:59.120 --> 00:05:00.833
+visible in the export.
+
+00:05:00.833 --> 00:05:04.400
+When she makes an HTML, she can see right there a big block.
+
+00:05:04.400 --> 00:05:09.533
+Right. Maybe Amin will suggest to Sacha,
+
+00:05:09.533 --> 00:05:11.120
+please replace this part
+
+00:05:11.120 --> 00:05:12.267
+with this other part
+
+00:05:12.267 --> 00:05:13.333
+or replace this word
+
+00:05:13.333 --> 00:05:14.639
+with this other word.
+
+00:05:14.639 --> 00:05:16.960
+This is not really possible
+
+00:05:16.960 --> 00:05:21.919
+with raw HTML or with even LaTeX.
+
+00:05:21.919 --> 00:05:24.000
+You'd have to have multiple arguments:
+
+00:05:24.000 --> 00:05:25.360
+the first argument, and then
+
+00:05:25.360 --> 00:05:28.800
+the replacement argument. It's a bit clunky.
+
+00:05:28.800 --> 00:05:32.080
+But with our setup, you just write some text,
+
+00:05:32.080 --> 00:05:34.367
+write #+replace_with
+
+00:05:34.367 --> 00:05:36.240
+and then write more text, and you're good to go.
+
+00:05:36.240 --> 00:05:39.440
+Normal Org markup.
+
+00:05:39.440 --> 00:05:40.720
+Everyone speaks different languages.
+
+00:05:40.720 --> 00:05:43.833
+Maybe they want to use one word,
+
+00:05:43.833 --> 00:05:45.919
+or they're arguing about
+
+00:05:45.919 --> 00:05:48.000
+whether we talk about frames or windows,
+
+00:05:48.000 --> 00:05:50.560
+so maybe they want to have some translations.
+
+00:05:50.560 --> 00:05:53.433
+So there are different kinds of feedback.
+
+00:05:53.433 --> 00:05:55.360
+Let's take an example.
+
+00:05:55.360 --> 00:05:59.360
+Look at what they are.
+
+00:05:59.360 --> 00:06:02.560
+For example, Sacha might write
+
+00:06:02.560 --> 00:06:06.160
+this Org Mode right here,
+
+00:06:06.160 --> 00:06:09.759
+and then in her HTML exports, you might see this,
+
+00:06:09.759 --> 00:06:12.733
+and her feedback might look really nicely
+
+00:06:12.733 --> 00:06:13.840
+from anyone who says
+
+00:06:14.560 --> 00:06:17.400
+let's do some Lisp instead of mathematics.
+
+00:06:17.400 --> 00:06:18.560
+Let's just do some Lisp.
+
+00:06:18.560 --> 00:06:22.479
+Corwin says, let's not be so silly.
+
+00:06:22.479 --> 00:06:25.120
+Let's just say 9 a.m. and move on.
+
+00:06:28.080 --> 00:06:31.360
+Amin likes to export to PDF,
+
+00:06:31.360 --> 00:06:34.333
+and so he writes his top-level remarks using LaTeX.
+
+00:06:34.333 --> 00:06:36.900
+That's how. To get this square
+
+00:06:36.900 --> 00:06:38.960
+Amin: please change whatever,
+
+00:06:38.960 --> 00:06:43.120
+he might write like this: #+latex:.
+
+00:06:43.120 --> 00:06:50.880
+But then Sacha only exports to HTML, for example,
+
+00:06:50.880 --> 00:06:54.880
+so she doesn't look at the PDF,
+
+00:06:54.880 --> 00:06:57.867
+and she may not see his top-level feedback
+
+00:06:57.867 --> 00:07:00.667
+with those nice brackets and and bold.
+
+00:07:00.667 --> 00:07:03.120
+She might think everything's good.
+
+00:07:03.120 --> 00:07:06.160
+That can be a bit disastrous.
+
+00:07:06.160 --> 00:07:08.600
+So maybe Sacha will then
+
+00:07:08.600 --> 00:07:13.199
+make some of her own feedback.
+
+00:07:13.199 --> 00:07:16.160
+To produce it, she might write
+
+00:07:16.560 --> 00:07:21.680
+HTML commands, #+html: to get that.
+
+00:07:21.680 --> 00:07:24.100
+But then Amin will make a PDF,
+
+00:07:24.100 --> 00:07:25.680
+and this won't stick out.
+
+00:07:25.680 --> 00:07:28.367
+So he might think everything's okay,
+
+00:07:28.367 --> 00:07:30.160
+even though it's not.
+
+00:07:30.160 --> 00:07:33.100
+Then Corwin actually decides,
+
+00:07:33.100 --> 00:07:35.900
+"Hey, let me read the exported result
+
+00:07:35.900 --> 00:07:38.867
+and there's all those feedback
+from two people
+
+00:07:38.867 --> 00:07:42.633
+who haven't read anything,
+because maybe they were in a rush,
+
+00:07:42.633 --> 00:07:45.167
+and didn't see the top-level feedback.
+
+00:07:45.167 --> 00:07:50.000
+So they agree. "Hey, let's have a
+uniform Org interface that exports
+
+00:07:50.000 --> 00:07:52.567
+to both HTML and PDF.
+
+00:07:52.567 --> 00:07:54.080
+Make both of us happy."
+
+00:07:54.080 --> 00:07:58.160
+Okay. So they decide to use
+Org special blocks.
+
+00:07:58.160 --> 00:08:01.300
+Right. To set this up,
+
+00:08:01.300 --> 00:08:04.400
+they need to read a little bit of Lisp,
+
+00:08:04.400 --> 00:08:08.879
+hooks, advice, macros to get all of this
+set up,
+
+00:08:08.879 --> 00:08:12.319
+and then they'll use Org as the main
+interface.
+
+00:08:12.319 --> 00:08:16.479
+It's a lot of work, but it's worth it,
+right? maybe?
+
+00:08:16.479 --> 00:08:19.360
+But then Corwin's a bit terse.
+
+00:08:19.759 --> 00:08:24.333
+Corwin maybe doesn't want to
+write using blocks.
+
+00:08:24.333 --> 00:08:26.080
+He thinks they're overkill.
+
+00:08:26.080 --> 00:08:32.560
+Sacha wants HTML, and Amin wants PDF,
+and Corwin wants org-reveal.
+
+00:08:32.560 --> 00:08:35.533
+So now they have to reformat
+all their code.
+
+00:08:35.533 --> 00:08:36.900
+And then they need to use org link types
+
+00:08:36.900 --> 00:08:38.867
+to reduce the overkill,
+
+00:08:38.867 --> 00:08:41.367
+so they can try to avoid duplication
+
+00:08:41.367 --> 00:08:46.800
+by factoring things out into
+self-contained functions.
+
+00:08:46.800 --> 00:08:50.320
+But now, to set up our links,
+
+00:08:50.320 --> 00:08:55.467
+we'll have to learn a new interface, org
+setup link.
+
+00:08:55.467 --> 00:09:02.160
+Learn a little bit about fonts, follow
+links, export handlers...
+
+00:09:02.160 --> 00:09:05.040
+It's so much. That's so much. But then,
+
+00:09:05.040 --> 00:09:06.800
+the friends, they learn a lot.
+
+00:09:06.800 --> 00:09:08.399
+They learn about defun.
+
+00:09:08.399 --> 00:09:11.120
+So these words are red.
+
+00:09:11.120 --> 00:09:12.185
+You get a little explanation.
+
+00:09:12.185 --> 00:09:14.320
+I think it's a bit too small for anyone
+to read.
+
+00:09:14.320 --> 00:09:18.000
+This is Lisp documentation for defun.
+
+00:09:18.000 --> 00:09:21.600
+advice-add. There's some Lisp
+documentation.
+
+00:09:21.600 --> 00:09:23.600
+They learn about destructuring -let.
+
+00:09:23.600 --> 00:09:25.279
+This is from the dash library.
+
+00:09:25.279 --> 00:09:26.959
+Here's all that glorious,
+
+00:09:26.959 --> 00:09:28.800
+glorious documentation with examples.
+
+00:09:28.800 --> 00:09:30.300
+Sorry. I like that.
+
+00:09:30.300 --> 00:09:32.467
+They might make
+an ad-hoc mechanism
+
+00:09:32.467 --> 00:09:35.400
+to simulate arguments for special blocks,
+
+00:09:35.400 --> 00:09:38.500
+so something maybe called
+extract-arguments,
+
+00:09:38.500 --> 00:09:41.533
+and then, of course, to make
+new link types,
+
+00:09:41.533 --> 00:09:42.480
+they have to learn about
+
+00:09:42.480 --> 00:09:47.400
+org-link-set-parameters and
+its numerous bits and pieces.
+
+00:09:49.920 --> 00:09:53.600
+Let's close all these ones down.
+
+00:09:53.600 --> 00:09:55.800
+Of course they also need to be
+comfortable
+
+00:09:55.800 --> 00:09:59.920
+with loops and maps and matching and
+string functions.
+
+00:09:59.920 --> 00:10:02.560
+So it's a bit of a pain.
+
+00:10:03.360 --> 00:10:05.839
+It's probably not worth it.
+
+00:10:05.839 --> 00:10:07.767
+Maybe I'll just rush things quickly,
+
+00:10:07.767 --> 00:10:09.360
+or do it ad-hoc...
+
+00:10:10.320 --> 00:10:13.680
+We have things to do.
+
+00:10:13.680 --> 00:10:19.367
+But maybe the squad wants to have a
+modular and unified interface
+
+00:10:19.367 --> 00:10:23.700
+so everyone's comfortable with defun to
+define a function
+
+00:10:23.700 --> 00:10:29.440
+and they say, "It would be nice if we
+could just define simultaneously
+
+00:10:29.440 --> 00:10:32.959
+both a block and the link type."
+
+00:10:32.959 --> 00:10:36.000
+That way, we have a single interface
+
+00:10:36.000 --> 00:10:37.867
+Org mode, for these things.
+
+00:10:37.867 --> 00:10:39.767
+It would be nice if it was modular.
+
+00:10:39.767 --> 00:10:44.633
+If I defined a one kind of block and
+you defined another,
+
+00:10:44.633 --> 00:10:45.519
+we could compose them,
+
+00:10:45.519 --> 00:10:49.360
+then get a nice bigger block, like LEGO.
+
+00:10:49.360 --> 00:10:52.320
+That would be nice. Building blocks.
+
+00:10:52.320 --> 00:10:56.240
+This is what we have come up with,
+called defblock.
+
+00:10:56.240 --> 00:11:01.760
+It also has a long documentation string
+containing examples and things.
+
+00:11:01.760 --> 00:11:04.800
+So that way, it can try to be useful.
+
+00:11:04.800 --> 00:11:10.880
+Let's look at a solution to these
+friends' trilemma.
+
+00:11:10.880 --> 00:11:14.320
+So here's a way to define a block.
+
+00:11:14.320 --> 00:11:22.320
+It doesn't look that difficult, but this
+is how they can define a block
+
+00:11:22.320 --> 00:11:25.920
+for their top-level feedback.
+
+00:11:25.920 --> 00:11:28.959
+Let's look at the three main parts
+together.
+
+00:11:28.959 --> 00:11:31.233
+It's not that difficult, I hope.
+
+00:11:31.233 --> 00:11:35.300
+Just six lines, and that's including a
+documentation string,
+
+00:11:35.300 --> 00:11:37.633
+newlines and things.
+
+00:11:37.633 --> 00:11:43.300
+So in line 1, we define the block just
+like you define a function.
+
+00:11:43.300 --> 00:11:44.880
+We define a block.
+
+00:11:44.880 --> 00:11:47.433
+The block name is going to be called
+"feedback."
+
+00:11:47.433 --> 00:11:49.680
+It has an author, "who."
+
+00:11:49.680 --> 00:11:54.133
+The author has no default value.
+
+00:11:54.133 --> 00:11:57.760
+It has a color, and the color has a
+default value of red.
+
+00:11:57.760 --> 00:12:01.680
+So just as when you define functions,
+
+00:12:01.680 --> 00:12:06.233
+you start by define or defblock,
+
+00:12:06.233 --> 00:12:13.440
+then the name, some mandatory argument,
+and some optional arguments.
+
+00:12:13.440 --> 00:12:18.480
+Then the next stage is definition.
+Documentation.
+
+00:12:18.480 --> 00:12:20.133
+The people who use this,
+
+00:12:20.133 --> 00:12:22.880
+which are future you or future me,
+
+00:12:22.880 --> 00:12:25.519
+might want to know what this is.
+
+00:12:25.519 --> 00:12:27.839
+So let's get to document this.
+
+00:12:27.839 --> 00:12:32.079
+For Corwin, who might want to use
+tooltips...
+
+00:12:32.079 --> 00:12:37.120
+When Corwin writes feedback in Emacs,
+they'll see a nice little tooltip,
+
+00:12:37.120 --> 00:12:38.639
+and the tooltip will have
+
+00:12:38.639 --> 00:12:41.279
+this documentation string.
+
+00:12:41.279 --> 00:12:43.279
+That'll be nice.
+
+00:12:43.279 --> 00:12:45.980
+And then here's the third part.
+
+00:12:45.980 --> 00:12:48.067
+The last three lines are not so
+difficult.
+
+00:12:48.067 --> 00:12:52.800
+If the backend is HTML,
+
+00:12:52.800 --> 00:12:55.360
+please use this template string.
+
+00:12:55.360 --> 00:12:57.440
+Otherwise, use the other string.
+
+00:12:57.440 --> 00:13:01.279
+For each of these string markers,
+
+00:13:01.279 --> 00:13:04.959
+please put in the color, who wrote it,
+and then the contents
+
+00:13:04.959 --> 00:13:07.279
+of the special block or the link type.
+
+00:13:08.160 --> 00:13:11.600
+So that's pretty neat. Not so difficult.
+
+00:13:11.600 --> 00:13:14.639
+I thought that was kind of cool,
+
+00:13:14.639 --> 00:13:16.600
+then noticed it's anaphoric.
+
+00:13:16.600 --> 00:13:21.033
+This defblock gives you two new names.
+
+00:13:21.033 --> 00:13:23.433
+It gives you a name called contents,
+
+00:13:23.433 --> 00:13:26.480
+and it gives you a name called backend.
+
+00:13:26.480 --> 00:13:29.733
+So even if you're writing a defblock
+
+00:13:29.733 --> 00:13:32.560
+and you intend it to be used
+only for links...
+
+00:13:32.560 --> 00:13:35.440
+Like these colors, for example.
+
+00:13:35.440 --> 00:13:38.399
+These colors were defined using defblock.
+
+00:13:38.399 --> 00:13:41.279
+I used them as links right here.
+
+00:13:41.279 --> 00:13:43.360
+You don't need to worry
+
+00:13:43.360 --> 00:13:45.300
+where does the text come from
+in the link.
+
+00:13:45.300 --> 00:13:48.959
+If I say "red:Bob," is it Bob?
+
+00:13:48.959 --> 00:13:52.000
+Or if I put a description, is it the
+description?
+
+00:13:52.000 --> 00:13:54.000
+So it's whatever is available will
+
+00:13:54.000 --> 00:13:56.720
+become the value of contents.
+
+00:13:56.720 --> 00:13:59.199
+If you're really interested
+
+00:13:59.199 --> 00:14:02.433
+and you want to do some intricate stuff,
+
+00:14:02.433 --> 00:14:06.933
+defblock also gives you something called
+raw-contents,
+
+00:14:06.933 --> 00:14:08.633
+if you really want to touch
+
+00:14:08.633 --> 00:14:12.639
+the raw contents with all of the Org
+markups still there.
+
+00:14:12.639 --> 00:14:19.440
+Let's see how everyone can communicate
+amongst themselves
+
+00:14:19.440 --> 00:14:22.480
+using this new interface.
+
+00:14:22.480 --> 00:14:26.000
+So, Sacha speculates and she... How does
+
+00:14:26.000 --> 00:14:28.399
+she speculate for her Org HTML?
+
+00:14:28.399 --> 00:14:33.733
+She might just write. Hey look at that,
+no HTML, nice.
+
+00:14:34.800 --> 00:14:36.833
+Amin wants to have some green,
+
+00:14:36.833 --> 00:14:39.600
+and so he just says, hey here's some
+color green.
+
+00:14:39.600 --> 00:14:42.959
+There you go. It looks almost the same.
+
+00:14:42.959 --> 00:14:48.267
+Notice that the main argument is right
+here.
+
+00:14:48.267 --> 00:14:49.680
+defblock took an author,
+
+00:14:49.680 --> 00:14:51.333
+and here's the author again.
+
+00:14:51.333 --> 00:14:53.920
+And now the optional argument
+
+00:14:53.920 --> 00:14:57.007
+uses the org babel source interface
+
+00:14:57.007 --> 00:15:02.867
+You just say :, then a key, and then the
+argument. Quite nice.
+
+00:15:02.867 --> 00:15:07.920
+Corwin doesn't want to use blocks.
+It's a bit of an overkill.
+
+00:15:07.920 --> 00:15:12.959
+He can just write a link.
+
+00:15:12.959 --> 00:15:17.440
+So the main argument is now
+the label of the link,
+
+00:15:17.440 --> 00:15:23.667
+and the description of the link is the
+contents of the feedback.
+
+00:15:23.667 --> 00:15:25.680
+So that was quite nice.
+
+00:15:25.680 --> 00:15:29.360
+So it looks like everyone uses the same
+interface on the left
+
+00:15:29.360 --> 00:15:32.800
+and can have varying outputs.
+
+00:15:32.800 --> 00:15:34.480
+I think it looks quite nice,
+
+00:15:34.480 --> 00:15:36.639
+and I hope you do too.
+
+00:15:36.639 --> 00:15:38.800
+There's a few more.
+
+00:15:38.800 --> 00:15:41.800
+Maybe, as you saw in some previous ones,
+
+00:15:41.800 --> 00:15:43.920
+we had text side beside side,
+
+00:15:43.920 --> 00:15:47.440
+or we folded some regions away.
+
+00:15:47.440 --> 00:15:50.959
+We put some things in pretty boxes.
+
+00:15:50.959 --> 00:15:57.120
+We had some spoilers at the very
+beginning that we hid some text.
+
+00:15:57.120 --> 00:16:01.680
+We demoed some texts. Here's some Org
+and here's what it looks like,
+
+00:16:01.680 --> 00:16:05.199
+and most importantly, they compose.
+
+00:16:05.199 --> 00:16:12.639
+There's a a macro called thread-block.
+
+00:16:12.639 --> 00:16:17.000
+thread-block call, and it lets you
+thread the contents
+
+00:16:17.000 --> 00:16:18.000
+through a number of blocks,
+
+00:16:18.000 --> 00:16:20.639
+treating them as if they were functions.
+
+00:16:20.639 --> 00:16:22.480
+So, really, you can think of a block
+
+00:16:23.680 --> 00:16:25.567
+as a string-valued function.
+
+00:16:25.567 --> 00:16:28.533
+That's pretty neat, I think.
+
+00:16:28.533 --> 00:16:30.959
+Thank you for listening.
+
+00:16:31.759 --> 00:16:34.320
+I hope you've enjoyed this little
+
+00:16:34.880 --> 00:16:38.160
+happy fun time with the Emacs and
+friends.
+
+00:16:38.160 --> 00:16:43.730
+I'll happily answer questions right now.
+
+00:16:45.360 --> 00:16:49.467
+Someone says: "Why did you put
+optional arguments
+
+00:16:49.467 --> 00:16:50.480
+in a separate list
+
+00:16:50.480 --> 00:16:54.560
+rather than using cl-style argument
+lists?"
+
+00:16:54.560 --> 00:16:58.399
+So that's a very good question,
+
+00:16:58.399 --> 00:17:00.000
+and I will answer that
+
+00:17:00.000 --> 00:17:05.467
+by showing you a more involved
+definition of feedback.
+
+00:17:05.467 --> 00:17:14.567
+Let's look at a more involved one right
+here.
+
+00:17:14.567 --> 00:17:19.280
+So, for example, this one is
+called rremark.
+
+00:17:19.280 --> 00:17:23.439
+Please let me know if my text is not
+sufficiently big.
+
+00:17:23.439 --> 00:17:28.033
+Here is why we have two arguments.
+
+00:17:28.033 --> 00:17:30.720
+That takes two arguments instead of one
+
+00:17:30.720 --> 00:17:33.360
+for its argument list.
+
+00:17:33.360 --> 00:17:34.799
+You have def block,
+
+00:17:34.799 --> 00:17:36.000
+then you have the name,
+
+00:17:36.000 --> 00:17:40.467
+then you have the first argument list
+
+00:17:40.467 --> 00:17:42.880
+and the second argument list.
+
+00:17:42.880 --> 00:17:46.080
+The first argument list
+
+00:17:46.080 --> 00:17:49.280
+takes the text right after the begin.
+
+00:17:49.280 --> 00:17:53.000
+The text right after the begin is the
+main argument.
+
+00:17:53.000 --> 00:17:59.200
+And then the remaining key-value pairs
+are in the second argument list.
+
+00:18:00.320 --> 00:18:03.280
+Now the reason we have two is because
+
+00:18:03.280 --> 00:18:08.880
+in order to streamline the interface to
+account for both special blocks
+
+00:18:08.880 --> 00:18:13.360
+and Org link types, what we do is we say,
+
+00:18:13.360 --> 00:18:18.000
+in the first argument list, you can give
+a name to the first argument,
+
+00:18:18.000 --> 00:18:19.633
+give it a default value,
+
+00:18:19.633 --> 00:18:28.800
+and anything else you provide will
+become part of the link information.
+
+00:18:28.800 --> 00:18:30.861
+For example, this link,
+
+00:18:30.861 --> 00:18:32.833
+we decided to make its face
+angry red.
+
+00:18:32.833 --> 00:18:36.433
+You might want to give other
+features to links.
+
+00:18:36.433 --> 00:18:39.100
+So we're trying to streamline
+the interface
+
+00:18:39.100 --> 00:18:41.733
+for both special blocks and
+Org link types,
+
+00:18:41.733 --> 00:18:46.240
+and we thought this way was quite nice.
+
+00:18:46.240 --> 00:18:47.500
+That was the main reason.
+
+00:18:47.500 --> 00:18:52.480
+Someone asks--
+
+00:18:52.480 --> 00:18:55.039
+if you have follow-ups, please ask--
+
+00:18:55.039 --> 00:18:57.600
+Someone asks, "Do you intend to try to
+
+00:18:57.600 --> 00:19:00.559
+upstream this amazing work into Org?"
+
+00:19:00.559 --> 00:19:02.300
+Well, I'm glad you like it.
+
+00:19:02.300 --> 00:19:04.559
+I don't know how to upstream,
+
+00:19:04.559 --> 00:19:06.400
+but I will look into it,
+
+00:19:06.400 --> 00:19:09.833
+and any advice or guidance
+would be much appreciated.
+
+00:19:11.840 --> 00:19:15.267
+Lisp is awesome. Just as
+defun is a macro,
+
+00:19:15.267 --> 00:19:17.120
+defblock is a macro, and then
+
+00:19:17.120 --> 00:19:20.240
+source blocks are awesome.
+
+00:19:20.240 --> 00:19:22.467
+Now maybe we can have arguments in
+special blocks,
+
+00:19:22.467 --> 00:19:28.799
+and motivate and encourage more
+people to learn Lisp.
+
+00:19:28.799 --> 00:19:32.559
+So another person asks,
+
+00:19:32.559 --> 00:19:35.280
+"What is used to produce colorful
+
+00:19:35.280 --> 00:19:38.559
+boxes around the cursor?"
+
+00:19:38.559 --> 00:19:40.400
+I'm not quite sure if you're asking...
+
+00:19:40.400 --> 00:19:42.559
+Are you talking about my cursor
+right here,
+
+00:19:42.559 --> 00:19:48.400
+or are you talking about in the slide?
+
+00:19:48.400 --> 00:19:53.767
+So this cursor is some application
+called Streambrush,
+
+00:19:53.767 --> 00:19:55.440
+that I had to purchase.
+
+00:19:55.440 --> 00:19:59.039
+Unfortunately, I could not find a a
+suitable free one.
+
+00:19:59.039 --> 00:20:03.067
+The blocks... I can demonstrate some
+Emacs Lisp.
+
+00:20:03.067 --> 00:20:04.467
+I can open up my Emacs, if people like,
+
+00:20:04.467 --> 00:20:06.320
+and we can try some things out.
+
+00:20:06.320 --> 00:20:09.440
+Happy to do that.
+
+00:20:09.440 --> 00:20:10.133
+You're welcome.
+
+00:20:10.133 --> 00:20:15.520
+Someone asks a side question about
+org-reveal: "How do you get
+
+00:20:15.520 --> 00:20:17.440
+bespoke or multiple-column layouts
+
+00:20:17.440 --> 00:20:19.120
+without using HTML?"
+
+00:20:19.120 --> 00:20:22.559
+Excellent question. That's what we do.
+
+00:20:22.559 --> 00:20:25.533
+That's what this project is about.
+
+00:20:25.533 --> 00:20:27.000
+So it's not org-reveal,
+
+00:20:27.000 --> 00:20:30.267
+it's our fancy parallel block.
+
+00:20:30.267 --> 00:20:33.440
+So we have this thing. You say,
+#+begin_parallel.
+
+00:20:33.440 --> 00:20:35.679
+You say how many columns you would like.
+
+00:20:35.679 --> 00:20:37.967
+Do you want a bar or not?
+
+00:20:37.967 --> 00:20:39.679
+And then you write some text,
+
+00:20:39.679 --> 00:20:44.400
+and then you get some text, and
+according with the bar or not.
+
+00:20:44.400 --> 00:20:47.520
+That's how we achieve that in our slides.
+
+00:20:47.520 --> 00:20:52.880
+I'm not quite sure where this was.
+
+00:20:52.880 --> 00:20:59.520
+Somewhere here, I think.
+
+00:20:59.520 --> 00:21:06.240
+Let me try to find this for you.
+
+00:21:06.240 --> 00:21:10.433
+I can't seem to find where the parallel
+blocks were. Apologies.
+
+00:21:10.433 --> 00:21:15.039
+Let's move on to the next question,
+I suppose.
+
+00:21:15.039 --> 00:21:18.400
+I'm pretty sure they're here. Ah, there
+they are.
+
+00:21:18.400 --> 00:21:22.640
+So these were just instances of using
+
+00:21:22.640 --> 00:21:26.480
+the parallel block, and it makes things
+parallel.
+
+00:21:26.480 --> 00:21:27.633
+So that's quite nice.
+
+00:21:27.633 --> 00:21:33.360
+Another person asks,
+
+00:21:33.360 --> 00:21:37.840
+"How does this relate to pandoc,
+
+00:21:37.840 --> 00:21:40.960
+which is used for converting between
+markup formats?"
+
+00:21:40.960 --> 00:21:43.919
+So all we're doing is we're saying,
+
+00:21:43.919 --> 00:21:47.679
+hey, please write Org because Org is
+just fantastic,
+
+00:21:47.679 --> 00:21:49.267
+and we love it, and it's the dream,
+
+00:21:49.267 --> 00:21:51.760
+and if you would like to view things
+
+00:21:51.760 --> 00:21:55.900
+in HTML, or in org-reveal, or in PDF,
+
+00:21:55.900 --> 00:21:58.559
+that's up to the user.
+
+00:22:02.320 --> 00:22:06.080
+Made it too small now.
+So here is an example.
+
+00:22:06.080 --> 00:22:10.240
+Here's how parallel is implemented,
+
+00:22:10.240 --> 00:22:14.320
+just as a quick example, not too long.
+
+00:22:14.320 --> 00:22:17.800
+About half of the implementation is
+documentation,
+
+00:22:17.800 --> 00:22:22.720
+so, hopefully, that speaks for for how
+useful this feature is.
+
+00:22:22.720 --> 00:22:25.280
+We decide if there's a rule or not.
+
+00:22:25.280 --> 00:22:28.080
+We look for the column break.
+
+00:22:28.080 --> 00:22:30.600
+Here we're looking at the backend.
+
+00:22:30.600 --> 00:22:31.840
+If the backend is LaTeX,
+
+00:22:31.840 --> 00:22:34.133
+please use this incantation
+
+00:22:34.133 --> 00:22:37.679
+with multicolumns, minipages,
+what have you.
+
+00:22:37.679 --> 00:22:41.600
+If the backend is something else, please
+do this:
+
+00:22:41.600 --> 00:22:48.080
+div, style and other gibberish that we
+don't really want to look at.
+
+00:22:48.080 --> 00:22:51.760
+Pandoc works from Org,
+
+00:22:51.760 --> 00:22:53.633
+so it might not work directly,
+
+00:22:53.633 --> 00:22:59.679
+since our interface... The way we set it
+up is: when you try to export,
+
+00:22:59.679 --> 00:23:03.039
+we hook in and we do a bunch of
+pre-processing,
+
+00:23:03.039 --> 00:23:07.440
+so this defblock is a
+string-valued function.
+
+00:23:07.440 --> 00:23:13.919
+Whenever we see these #+begin_parallel
+when you do an export,
+
+00:23:13.919 --> 00:23:17.767
+I tell Emacs, hold up, look for those
+#+begin_parallels, please.
+
+00:23:17.767 --> 00:23:20.320
+Oh, you found them? Grab that text.
+
+00:23:20.320 --> 00:23:21.533
+You grabbed it. Great.
+
+00:23:21.533 --> 00:23:24.080
+Now please apply this person's function
+
+00:23:24.080 --> 00:23:27.120
+onto that text, and splice in the result.
+
+00:23:27.120 --> 00:23:30.400
+So when you export, we're performing
+
+00:23:30.400 --> 00:23:35.120
+arbitrary computations on your text.
+
+00:23:35.120 --> 00:23:39.633
+Some people might not find that
+comforting,
+
+00:23:39.633 --> 00:23:43.039
+to have arbitrary computations happening.
+
+00:23:43.039 --> 00:23:45.039
+In this article, there's a few where
+
+00:23:45.039 --> 00:23:47.167
+we change your text upon export.
+
+00:23:47.167 --> 00:23:51.760
+We translate it, we do other things
+to it.
+
+00:23:51.760 --> 00:23:56.500
+So someone says, "If you export to
+LaTeX, to PDF,
+
+00:23:56.500 --> 00:23:58.640
+does that work well with Beamer as well
+
+00:23:58.640 --> 00:24:00.320
+to create slides with columns?"
+
+00:24:05.200 --> 00:24:08.000
+I made a bunch of these changes
+
+00:24:08.000 --> 00:24:09.200
+earlier this morning,
+
+00:24:09.200 --> 00:24:12.320
+and it just says LaTeX right here.
+
+00:24:12.320 --> 00:24:14.400
+So if you want to go to beamer,
+
+00:24:14.400 --> 00:24:15.360
+I think the back end for me,
+
+00:24:15.360 --> 00:24:17.333
+beamer is called, well, beamer,
+
+00:24:17.333 --> 00:24:22.000
+so instead of a pcase, what we would do
+is, we would say,
+
+00:24:22.000 --> 00:24:27.167
+if it's a 'latex or it's a 'beamer, then
+use this.
+
+00:24:27.167 --> 00:24:30.267
+Otherwise, it's not a LaTeX,
+
+00:24:30.267 --> 00:24:31.867
+it will simply default to this one,
+
+00:24:31.867 --> 00:24:34.433
+which could be dangerous
+for your needs.
+
+00:24:34.433 --> 00:24:39.167
+I think it's a bad practice to put a
+underscore,
+
+00:24:39.167 --> 00:24:40.767
+but I did it really quickly
+
+00:24:40.767 --> 00:24:44.500
+because I just wanted to show you that
+it works fine in org-reveal
+
+00:24:44.500 --> 00:24:47.440
+Contributions are more than welcome.
+
+00:24:47.440 --> 00:24:52.240
+I happily would love any assistance.
+
+00:24:52.240 --> 00:24:58.633
+We have a Lisp reference
+cheat sheet here
+
+00:24:58.633 --> 00:25:01.000
+to learn a little bit about Lisp, if
+you're not comfortable,
+
+00:25:01.000 --> 00:25:03.267
+or to ask some questions.
+
+00:25:03.267 --> 00:25:06.400
+Lots of helpful people.
+
+00:25:06.400 --> 00:25:09.440
+So there's another question that says,
+
+00:25:09.440 --> 00:25:13.120
+"Does typing in a block mess up with
+syntax highlighting?
+
+00:25:13.120 --> 00:25:15.679
+Usually, you use a single color inside an
+
+00:25:15.679 --> 00:25:17.279
+example block, for example.
+
+00:25:17.279 --> 00:25:21.279
+Ah, you found my crutch.
+
+00:25:25.279 --> 00:25:27.333
+Emacs is all encompassing,
+
+00:25:27.333 --> 00:25:29.760
+and I'm not quite sure how fonts work.
+
+00:25:29.760 --> 00:25:32.559
+I learned enough to get by.
+
+00:25:37.440 --> 00:25:38.667
+Here's how links work.
+
+00:25:38.667 --> 00:25:40.799
+They're a bit complicated.
+
+00:25:40.799 --> 00:25:42.567
+This is a bit scary.
+
+00:25:42.567 --> 00:25:47.039
+I don't recommend anyone read it.
+
+00:25:47.039 --> 00:25:49.840
+Actually, let me open up an email
+
+00:25:50.559 --> 00:25:52.100
+and you can see what I see.
+
+00:25:52.100 --> 00:25:54.799
+So here's an Emacs.
+
+00:25:54.799 --> 00:25:56.799
+Let's make that a bit bigger.
+
+00:25:56.799 --> 00:25:59.133
+Let's change this slightly.
+
+00:25:59.133 --> 00:26:01.200
+Nope, that's worse. There you go.
+
+00:26:01.919 --> 00:26:09.360
+Here's some words. Here's red hello.
+
+00:26:09.360 --> 00:26:15.679
+But you're worried about preserving
+fontification.
+
+00:26:15.679 --> 00:26:18.480
+Let's make an emacs-lisp block.
+
+00:26:18.880 --> 00:26:22.840
+Let's say, (+ 1 2).
+
+00:26:22.840 --> 00:26:31.133
+Ah, where's the fun? Hello. Bye.
+
+00:26:31.133 --> 00:26:32.080
+Okay. Where's the coloring?
+
+00:26:32.080 --> 00:26:36.000
+If we zoom in on this #+begin_src block,
+
+00:26:36.000 --> 00:26:39.200
+you can see down here
+
+00:26:39.200 --> 00:26:42.159
+we have our our coloring
+
+00:26:42.159 --> 00:26:43.279
+when we zoom in.
+
+00:26:43.279 --> 00:26:46.960
+If we zoom out, no coloring.
+
+00:26:46.960 --> 00:26:50.880
+Zoom in, coloring.
+Zoom out, aah, no coloring.
+
+00:26:50.880 --> 00:26:55.679
+Let's take off these bad boys,
+and oh, look, my coloring's back.
+
+00:26:55.679 --> 00:27:03.760
+In a previous iteration of the system,
+I was able to maintain coloring.
+
+00:27:03.760 --> 00:27:06.400
+In this new iteration, I am not.
+
+00:27:06.400 --> 00:27:07.400
+I don't know how to do it.
+
+00:27:07.400 --> 00:27:10.333
+I haven't had the time to implement it.
+
+00:27:10.333 --> 00:27:17.279
+I spent a lot of time writing this
+48-page documentation
+
+00:27:17.279 --> 00:27:21.133
+with some fun examples to try to help
+people learn.
+
+00:27:21.133 --> 00:27:23.200
+But I would appreciate any help or
+guidance
+
+00:27:23.200 --> 00:27:26.240
+on how to maintain the fontification.
+
+00:27:26.240 --> 00:27:29.200
+I really would like to keep those
+colors in.
+
+00:27:29.200 --> 00:27:32.640
+[Amin]: Musa, we have time for maybe one
+more question,
+
+00:27:32.640 --> 00:27:34.500
+one or two more questions,
+
+00:27:34.500 --> 00:27:37.039
+and then we have to move on to the
+next talk.
+
+00:27:37.039 --> 00:27:39.120
+You're more than welcome to
+
+00:27:39.120 --> 00:27:42.559
+continue taking the questions via
+IRC or the pad.
+
+00:27:42.559 --> 00:27:45.760
+[Musa]: Okay. Thank you.
+
+00:27:45.760 --> 00:27:48.880
+The final question we'll take is,
+
+00:27:48.880 --> 00:27:52.320
+"Should packages implement
+
+00:27:52.320 --> 00:27:53.967
+interface to one specific format,
+
+00:27:53.967 --> 00:27:55.600
+or attempt to be inclusive
+
+00:27:55.600 --> 00:27:57.279
+to all the potential output targets?"
+
+00:27:57.279 --> 00:27:59.300
+I think you should just make them
+as you go,
+
+00:27:59.300 --> 00:28:01.500
+and add them as you need them.
+
+00:28:01.500 --> 00:28:05.600
+We'll make Github requests for things.
+
+00:28:05.600 --> 00:28:08.533
+We can share recipes in this document,
+
+00:28:08.533 --> 00:28:12.333
+and then try to add other techniques,
+
+00:28:12.333 --> 00:28:19.200
+and then we can use these blocks as a
+common interface
+
+00:28:19.200 --> 00:28:22.240
+for exporting to PDF and other things.
+
+00:28:22.240 --> 00:28:26.000
+Since someone asked,
+
+00:28:26.000 --> 00:28:28.033
+here what a PDF looks like.
+
+00:28:28.033 --> 00:28:31.667
+This is the same PDF rendered.
+
+00:28:31.667 --> 00:28:34.960
+I made no effort to make it look good,
+
+00:28:34.960 --> 00:28:37.840
+but it surprisingly does look good.
+
+00:28:38.559 --> 00:28:40.067
+That was nice.
+
+00:28:40.067 --> 00:28:44.320
+That was a terrible magenta,
+but that is life.
+
+00:28:44.320 --> 00:28:47.100
+Anyhow, I hope you all enjoyed this talk.
+
+00:28:47.100 --> 00:28:51.033
+I hope you will find
+defblock useful to you.
+
+00:28:51.033 --> 00:28:52.799
+It is available on MELPA.
+
+00:28:52.799 --> 00:28:56.367
+In a rush to make it available for
+EmacsConf 2020,
+
+00:28:56.367 --> 00:29:00.159
+some MELPA guidelines may not have been
+adhered to.
+
+00:29:00.159 --> 00:29:01.600
+Please do not hit me.
+
+00:29:01.600 --> 00:29:08.559
+I hope everyone enjoys the rest of the
+EmacsConf 2020. Thank you!