summaryrefslogtreecommitdiffstats
path: root/2020/info/22.md
diff options
context:
space:
mode:
Diffstat (limited to '2020/info/22.md')
-rw-r--r--2020/info/22.md537
1 files changed, 536 insertions, 1 deletions
diff --git a/2020/info/22.md b/2020/info/22.md
index 6e616cd..d6e3d71 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]]