WEBVTT captioned by bala, checked by sachac NOTE Intro 00:00:00.000 --> 00:00:04.559 Hello everyone, I'm Jeremy Friesen, pronouns he/him, 00:00:04.560 --> 00:00:05.879 and today I'll be talking about 00:00:05.880 --> 00:00:08.599 how Emacs turbocharges my writing. 00:00:08.600 --> 00:00:11.799 Quick intro: I've been programming since 1998 00:00:11.800 --> 00:00:14.079 and blogging since 2011. 00:00:14.080 --> 00:00:16.639 In May of 2020 I switched to Emacs, 00:00:16.640 --> 00:00:19.919 having previously used a long list of different editors. 00:00:19.920 --> 00:00:23.039 Curious about how Emacs impacted my writing, 00:00:23.040 --> 00:00:25.559 I wrote some stuff on my personal site and 00:00:25.560 --> 00:00:30.399 found that I blogged about 95 words per day prior to Emacs, 00:00:30.400 --> 00:00:33.719 and with Emacs I'm blogging about 340. 00:00:33.720 --> 00:00:37.959 Now, this is not a fair comparison, many things changed. 00:00:37.960 --> 00:00:40.919 A pandemic removed 2 hours of commute every day 00:00:40.920 --> 00:00:44.199 as a big contributor. 00:00:44.200 --> 00:00:46.999 Ultimately though, I've used Emacs and extended it 00:00:47.000 --> 00:00:50.319 to reduce barriers to capturing and writing and thinking, 00:00:50.320 --> 00:00:53.319 and I'm always on the lookout for minor refinements 00:00:53.320 --> 00:00:57.119 that help me stay in my thinking. NOTE How I got here 00:00:57.120 --> 00:00:59.239 How I got here was I started in WordPress, 00:00:59.240 --> 00:01:02.599 then I moved to Jekyll, and then to Hugo, 00:01:02.600 --> 00:01:05.439 and through that process I started writing in Markdown. 00:01:05.440 --> 00:01:07.119 And when I was learning Emacs, 00:01:07.120 --> 00:01:09.359 I also didn't want to learn Org Mode, 00:01:09.360 --> 00:01:12.399 it felt intimidating because it could do so many things. 00:01:12.400 --> 00:01:15.519 I later learned Org Mode grows with you, 00:01:15.520 --> 00:01:18.399 and that's where I'm at now. NOTE Friction 00:01:18.400 --> 00:01:19.999 But I didn't realize that friction 00:01:20.000 --> 00:01:23.359 between writing Markdown for my public blog 00:01:23.360 --> 00:01:25.479 and then adopting Org Mode locally 00:01:25.480 --> 00:01:28.519 for writing and time tracking and things like that. 00:01:28.520 --> 00:01:31.119 And also, where did I put things, 00:01:31.120 --> 00:01:35.159 because migrating the formats was just a little clunky. 00:01:35.160 --> 00:01:38.199 So ultimately I spent some time thinking about the data flow 00:01:38.200 --> 00:01:39.519 and where I would put things, 00:01:39.520 --> 00:01:41.039 this kind of pre-thinking, 00:01:41.040 --> 00:01:45.959 where does stuff go when it comes into and out of my brain. NOTE Domains for notes 00:01:45.960 --> 00:01:49.399 So I have many domains where I'll write towards. 00:01:49.400 --> 00:01:51.119 The ones for this presentation are going to be 00:01:51.120 --> 00:01:54.159 blog posts, epigraphs, glossary, and melange. 00:01:54.160 --> 00:01:56.319 Melange is, I don't know where it goes, 00:01:56.320 --> 00:02:00.999 but now I do, I just throw it in melange. 00:02:01.000 --> 00:02:04.479 So I began exploring Org Mode via Org Roam, 00:02:04.480 --> 00:02:07.559 but I've ultimately switched from Org Roam 00:02:07.560 --> 00:02:10.639 to the simplified Denote package. 00:02:10.640 --> 00:02:13.199 I didn't use a lot of the functionality 00:02:13.200 --> 00:02:15.919 and I appreciate the plain text reality of Denote. NOTE Demo 00:02:15.920 --> 00:02:18.799 So let's hop into the demo. 00:02:18.800 --> 00:02:19.919 I'm going to split my screen. 00:02:19.920 --> 00:02:21.959 Over on the right is going to be 00:02:21.960 --> 00:02:24.199 where I'm going to be live typing stuff. 00:02:24.200 --> 00:02:27.319 So let's get going. 00:02:27.320 --> 00:02:29.799 You'll notice I don't do a lot of screen splitting. 00:02:29.800 --> 00:02:32.239 It just makes it easier to focus. 00:02:32.240 --> 00:02:34.039 So let's create a note. 00:02:34.040 --> 00:02:41.279 All right, I have bound hyper to my command key, 00:02:41.280 --> 00:02:42.519 my right command key. 00:02:42.520 --> 00:02:43.679 This opens up a whole world. 00:02:43.680 --> 00:02:45.559 I'm going to create a blog post 00:02:45.560 --> 00:02:49.799 and we're going to name it the ever popular "hello world". 00:02:49.800 --> 00:02:50.799 It's Emacs. 00:02:50.800 --> 00:02:51.519 Great. 00:02:51.520 --> 00:02:55.439 We've saved it. NOTE Dabbrev and hippie-expand 00:02:55.440 --> 00:02:57.399 One of the things I encourage everybody to do 00:02:57.400 --> 00:03:02.039 is to watch Jay Dixit's presentation, Emacs for Writers. 00:03:02.040 --> 00:03:08.079 It showed me the utility of Dabbrev for quick auto correction. 00:03:08.080 --> 00:03:11.479 And I also love using hippie-expand. 00:03:11.480 --> 00:03:14.639 When I watch VS coders code, it's always a little sad pants 00:03:14.640 --> 00:03:17.319 because they're thinking about coding or writing 00:03:17.320 --> 00:03:19.159 in terms of their code. 00:03:19.160 --> 00:03:24.239 But I have found as a programmer, I tend to write more tech, 00:03:24.240 --> 00:03:27.799 more like English instead of programming code. 00:03:27.800 --> 00:03:30.719 So I think it's important to understand these tools 00:03:30.720 --> 00:03:32.839 that help me write better. NOTE Links 00:03:32.840 --> 00:03:34.879 All right, we're going to go with links. 00:03:34.880 --> 00:03:36.999 Links are foundational for the web. 00:03:37.000 --> 00:03:41.159 I'm going to insert a public link, 00:03:41.160 --> 00:03:43.439 which is a role playing game that I love, 00:03:43.440 --> 00:03:45.159 Worlds Without Number. 00:03:45.160 --> 00:03:48.399 And I'm going to go ahead and describe it. 00:03:48.400 --> 00:03:49.239 A role playing game. 00:03:49.240 --> 00:03:53.479 But I don't want to always say role playing game. 00:03:53.480 --> 00:03:54.599 I'm going to abbreviate it. 00:03:54.600 --> 00:03:57.079 So I wrote a function that will transform it. 00:03:57.080 --> 00:04:00.239 And let's take a look at what that looks like on the inside. 00:04:00.240 --> 00:04:06.279 When I do this real quick, it's toggling it back and forth. 00:04:06.280 --> 00:04:10.119 And I'll just keep doing that. 00:04:10.120 --> 00:04:12.999 I also have the idea of public notes and private notes. 00:04:13.000 --> 00:04:15.399 Public is things that's going to have a URL. 00:04:15.400 --> 00:04:16.879 I met a person at a conference. 00:04:16.880 --> 00:04:19.639 He gave a talk on something that I thought was very useful. 00:04:19.640 --> 00:04:23.159 I didn't write down what he talked about on his note. 00:04:23.160 --> 00:04:26.279 I wrote it where it was more relevant to the topic. 00:04:26.280 --> 00:04:31.159 And I can use a backlink to go find that. 00:04:31.160 --> 00:04:34.119 Next up, I demonstrate the abbreviation. 00:04:34.120 --> 00:04:35.839 I also have dates. 00:04:35.840 --> 00:04:37.999 This is a semantic date in HTML5. 00:04:38.000 --> 00:04:41.839 I can just have the year. 00:04:41.840 --> 00:04:48.359 I can also just have something like that date is today. 00:04:48.360 --> 00:04:52.239 And we have date links. 00:04:52.240 --> 00:04:54.199 I don't have backlinks built up for that, 00:04:54.200 --> 00:04:56.959 but I have ideas of how I go about doing it. 00:04:56.960 --> 00:04:58.759 And last up, thank you Frank Herbert, 00:04:58.760 --> 00:05:00.799 I want to introduce epigraphs. 00:05:00.800 --> 00:05:04.359 So this is epigraph. 00:05:04.360 --> 00:05:08.719 I just have that, any sufficiently, dot, dot, dot. 00:05:08.720 --> 00:05:10.359 And that's my epigraph. 00:05:10.360 --> 00:05:16.719 Backlinks, I mentioned that. 00:05:16.720 --> 00:05:18.999 Let's go take a look at Jonathan, right? 00:05:19.000 --> 00:05:23.119 He's a Rubyist, but importantly is the backlinks. 00:05:23.120 --> 00:05:27.319 He gave a talk on, that's right, PDFs. 00:05:27.320 --> 00:05:28.959 I can go look at what he spoke to 00:05:28.960 --> 00:05:31.879 and I can reference that because I will remember 00:05:31.880 --> 00:05:36.679 that talk or I will remember, oh, I need to look up PDFs. 00:05:36.680 --> 00:05:39.799 Oh, I have something in PDFs. 00:05:39.800 --> 00:05:43.239 Again, it's about stumbling upon data in a good way. 00:05:43.240 --> 00:05:48.319 So thinking of making linking easy helps me 00:05:48.320 --> 00:05:52.159 create more and more ways to find things, 00:05:52.160 --> 00:05:57.119 both by links, backlinks, indices, file searches, and so forth. 00:05:57.120 --> 00:05:59.239 It's all about information organization. 00:05:59.240 --> 00:06:04.879 Next up is a really cool function of org capture. 00:06:04.880 --> 00:06:06.679 So let's take a look here. 00:06:06.680 --> 00:06:08.039 I'm going to start a clock. 00:06:08.040 --> 00:06:09.159 It's running. 00:06:09.160 --> 00:06:11.479 And I'm going to bring up my browser. 00:06:11.480 --> 00:06:19.679 And I'm going to go ahead and capture to the content to clock. 00:06:19.680 --> 00:06:23.159 And it brings up this block quote, which is lovely. 00:06:23.160 --> 00:06:25.719 And boom, I'm going to save it. 00:06:25.720 --> 00:06:28.199 I'm going to close this. 00:06:28.200 --> 00:06:30.959 We're back here to my "hello world". 00:06:30.960 --> 00:06:33.519 And it has grabbed a block quote for this. 00:06:33.520 --> 00:06:38.039 Again, it helps me gather stuff up quickly. 00:06:38.040 --> 00:06:41.119 I've bound that also in my RSS feed. 00:06:41.120 --> 00:06:44.199 We're going to skip over macros, blocks, and the abstract. 00:06:44.200 --> 00:06:45.479 And we're going to get into the export 00:06:45.480 --> 00:06:47.519 because this is where we can see the magic 00:06:47.520 --> 00:06:49.599 that happens because I want to take things 00:06:49.600 --> 00:06:51.079 from private to public. 00:06:51.080 --> 00:06:53.199 So I have bound a key. 00:06:53.200 --> 00:06:55.559 These are my menu of things I don't want to forget. 00:06:55.560 --> 00:06:56.759 I will export. 00:06:56.760 --> 00:06:57.839 And here we go. 00:06:57.840 --> 00:07:04.959 Here is my blog post in markdown format with Hugo shortcodes. 00:07:04.960 --> 00:07:07.399 So let's go take a look at what that looks like. 00:07:07.400 --> 00:07:09.359 Localhost. 00:07:09.360 --> 00:07:12.359 I'm not writing in Rails. 00:07:12.360 --> 00:07:14.919 "Hello world" right there. 00:07:14.920 --> 00:07:17.159 This is the epigraph. 00:07:17.160 --> 00:07:22.279 And I have a mention of Worlds without Number. 00:07:22.280 --> 00:07:24.799 And I have mentioned this as a abbreviation. 00:07:24.800 --> 00:07:27.519 So I include the first time this text. 00:07:27.520 --> 00:07:30.199 Here's also Jonathan. 00:07:30.200 --> 00:07:33.399 He is not a public reference thing. 00:07:33.400 --> 00:07:37.519 Also, I have these things here. 00:07:37.520 --> 00:07:39.399 And here's my captured information 00:07:39.400 --> 00:07:42.599 along with the citation link to it. 00:07:42.600 --> 00:07:49.159 Again, helpful to be consistent. NOTE Conclusion 00:07:49.160 --> 00:07:52.279 In conclusion, when I started learning Emacs, 00:07:52.280 --> 00:07:55.879 I quickly shifted to vanilla Emacs and just started writing. 00:07:55.880 --> 00:07:59.519 As I wrote, when I needed to do something that I'd previously 00:07:59.520 --> 00:08:02.999 done in a text editor, I'd find an experiment with a package. 00:08:03.000 --> 00:08:04.679 I continue that mindset. 00:08:04.680 --> 00:08:06.839 As I write, I'm attending to what I'm doing. 00:08:06.840 --> 00:08:08.879 And eventually, I realize if I were to just write 00:08:08.880 --> 00:08:11.639 a function that does this one thing, 00:08:11.640 --> 00:08:13.559 I'd have a smoother writing experience. 00:08:13.560 --> 00:08:16.359 This helps me practice my craft, extend my editor, 00:08:16.360 --> 00:08:19.999 understand its capabilities, and begin exploring other things. 00:08:20.000 --> 00:08:23.159 The goal of this is all to minimize the distractions. 00:08:23.160 --> 00:08:25.759 As I'm thinking about it, I wanted to quickly add it 00:08:25.760 --> 00:08:27.159 and then move along, 00:08:27.160 --> 00:08:29.559 basically creating breadcrumbs for me 00:08:29.560 --> 00:08:31.239 to follow my thoughts in the future. 00:08:31.240 --> 00:08:33.159 And one of those functions is 00:08:33.160 --> 00:08:36.479 I'd like to write an extender for my abbr, 00:08:36.480 --> 00:08:38.679 abbreviation export to work in Latex. 00:08:38.680 --> 00:08:40.279 It's like halfway there. 00:08:40.280 --> 00:08:42.239 So I'm looking forward to getting that done 00:08:42.240 --> 00:08:45.439 when I have some time and can prioritize it. 00:08:45.440 --> 00:08:47.799 But for now, thank you. 00:08:47.800 --> 00:08:53.160 And I look forward to your questions.