# Transcript [[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-literate" id="subtitle"]] [[!template text="""Can you believe it's been a decade since I started""" start="00:00:00.000" video="mainVideo-literate" id="subtitle"]] [[!template text="""pontificating on literate programming?""" start="00:00:09.360" video="mainVideo-literate" id="subtitle"]] [[!template text="""I am Howard Abrams. In 2015, I spoke at this EmacsConf""" start="00:00:12.359" video="mainVideo-literate" id="subtitle"]] [[!template text="""where I described my challenges I called Literate DevOps.""" start="00:00:17.543" video="mainVideo-literate" id="subtitle"]] [[!template text="""The conference wasn't completely virtual, even though I was.""" start="00:00:21.706" video="mainVideo-literate" id="subtitle"]] [[!template text="""My city of Portland was suffering a citywide electrical outage""" start="00:00:25.635" video="mainVideo-literate" id="subtitle"]] [[!template text="""and I was without power, so I gave the talk in a corner of my""" start="00:00:29.318" video="mainVideo-literate" id="subtitle"]] [[!template text="""friend's living room. People online asking questions and""" start="00:00:33.480" video="mainVideo-literate" id="subtitle"]] [[!template text="""wondering about literate programming... I also see comments""" start="00:00:37.440" video="mainVideo-literate" id="subtitle"]] [[!template text="""explaining why literate programming hasn't caught on in""" start="00:00:41.440" video="mainVideo-literate" id="subtitle"]] [[!template text="""corporate practice. I often don't engage. I mean, is the""" start="00:00:44.600" video="mainVideo-literate" id="subtitle"]] [[!template text="""online arguments and chatter over ignorance or""" start="00:00:49.080" video="mainVideo-literate" id="subtitle"]] [[!template text="""preference? Sure, we're wired differently. I mean, my""" start="00:00:51.600" video="mainVideo-literate" id="subtitle"]] [[!template text="""favorite programming languages put the parentheses""" start="00:00:56.720" video="mainVideo-literate" id="subtitle"]] [[!template text="""before the function name.""" start="00:00:59.560" video="mainVideo-literate" id="subtitle"]] [[!template text="""Literate programming has come a long way""" start="00:01:01.940" video="mainVideo-literate" id="subtitle"]] [[!template text="""since Knuth proposed it in the 19th century. I feel""" start="00:01:03.801" video="mainVideo-literate" id="subtitle"]] [[!template text="""it's come a long way just in the last 10 years. Obviously,""" start="00:01:08.520" video="mainVideo-literate" id="subtitle"]] [[!template text="""this interest is due to Org. I don't think I would bother if""" start="00:01:13.000" video="mainVideo-literate" id="subtitle"]] [[!template text="""all I had was Knuth's original preprocessor. But since I'm""" start="00:01:16.400" video="mainVideo-literate" id="subtitle"]] [[!template text="""talking to fellow nerds about an open source project""" start="00:01:21.360" video="mainVideo-literate" id="subtitle"]] [[!template text="""without corporate backing, let me change the title of my""" start="00:01:24.840" video="mainVideo-literate" id="subtitle"]] [[!template text="""talk and re-pitch Literate Programming in the 24th and a""" start="00:01:27.920" video="mainVideo-literate" id="subtitle"]] [[!template text="""Half Century!""" start="00:01:32.920" video="mainVideo-literate" id="subtitle"]] [[!template new="1" text="""Do I still literate?""" start="00:01:35.253" video="mainVideo-literate" id="subtitle"]] [[!template text="""People often ask if I still program that way.""" start="00:01:35.253" video="mainVideo-literate" id="subtitle"]] [[!template text="""I guess they want to know if there's any long-term benefits,""" start="00:01:36.654" video="mainVideo-literate" id="subtitle"]] [[!template text="""for many of our tools and our workflows, while initially""" start="00:01:42.760" video="mainVideo-literate" id="subtitle"]] [[!template text="""tantalizing, often don't last. But yes, when I sit down to""" start="00:01:45.920" video="mainVideo-literate" id="subtitle"]] [[!template text="""write a program, I create a file with an extension of .org.""" start="00:01:51.080" video="mainVideo-literate" id="subtitle"]] [[!template text="""I guess you can say I program literally.""" start="00:01:57.760" video="mainVideo-literate" id="subtitle"]] [[!template text="""Let me be transparent. Do I use literate programming during""" start="00:02:03.800" video="mainVideo-literate" id="subtitle"]] [[!template text="""my day job? Yes, but only for personal tools or for initial""" start="00:02:07.360" video="mainVideo-literate" id="subtitle"]] [[!template text="""investigation. At the end of the sprint, I tangle the file""" start="00:02:12.600" video="mainVideo-literate" id="subtitle"]] [[!template text="""and git commit that. My personal projects, on the other""" start="00:02:16.760" video="mainVideo-literate" id="subtitle"]] [[!template text="""hand, are Org files. Since I can't show you the code from""" start="00:02:21.080" video="mainVideo-literate" id="subtitle"]] [[!template text="""my day job, I'm afraid my example code will have a lot of""" start="00:02:25.680" video="mainVideo-literate" id="subtitle"]] [[!template text="""parentheses.""" start="00:02:27.840" video="mainVideo-literate" id="subtitle"]] [[!template text="""I'm sure you won't mind.""" start="00:02:31.160" video="mainVideo-literate" id="subtitle"]] [[!template text="""I like having my Emacs configuration in Org.""" start="00:02:33.956" video="mainVideo-literate" id="subtitle"]] [[!template text="""It's pretty bling. It has over 8,000""" start="00:02:37.357" video="mainVideo-literate" id="subtitle"]] [[!template text="""lines of code. I know, I can hear the screams and gasps over""" start="00:02:40.360" video="mainVideo-literate" id="subtitle"]] [[!template text="""the network. However, the surrounding prose in Org adds""" start="00:02:44.560" video="mainVideo-literate" id="subtitle"]] [[!template text="""10,000 lines, and those lines are non-wrapped paragraphs.""" start="00:02:49.440" video="mainVideo-literate" id="subtitle"]] [[!template text="""I mean, is that large? Sure, we've all worked on""" start="00:02:53.411" video="mainVideo-literate" id="subtitle"]] [[!template text="""larger, so I guess it's not huge. Come on, it's still""" start="00:02:58.120" video="mainVideo-literate" id="subtitle"]] [[!template text="""significant.""" start="00:03:03.640" video="mainVideo-literate" id="subtitle"]] [[!template new="1" text="""Advantages""" start="00:03:06.332" video="mainVideo-literate" id="subtitle"]] [[!template text="""Advantages? Look who I'm talking to. I'm sure""" start="00:03:06.332" video="mainVideo-literate" id="subtitle"]] [[!template text="""you know the advantages, but indulge me. I feel that one""" start="00:03:09.800" video="mainVideo-literate" id="subtitle"]] [[!template text="""advantage of literate programming, especially with large""" start="00:03:14.280" video="mainVideo-literate" id="subtitle"]] [[!template text="""code bases, is how you can organize and manage the""" start="00:03:16.800" video="mainVideo-literate" id="subtitle"]] [[!template text="""complexity. Most programming languages tame large bases""" start="00:03:20.280" video="mainVideo-literate" id="subtitle"]] [[!template text="""by putting code in separate files. While Org can too, with""" start="00:03:24.840" video="mainVideo-literate" id="subtitle"]] [[!template text="""Org, we can group related functions together under""" start="00:03:29.120" video="mainVideo-literate" id="subtitle"]] [[!template text="""expandable headlines.""" start="00:03:32.280" video="mainVideo-literate" id="subtitle"]] [[!template text="""Here's one. You can see that""" start="00:03:35.044" video="mainVideo-literate" id="subtitle"]] [[!template text="""I've got different sections grouped together.""" start="00:03:37.280" video="mainVideo-literate" id="subtitle"]] [[!template text="""In my original talk, I mentioned how I would attempt to organize""" start="00:03:40.707" video="mainVideo-literate" id="subtitle"]] [[!template text="""my thoughts before coding. I appreciate how I can look back""" start="00:03:43.760" video="mainVideo-literate" id="subtitle"]] [[!template text="""at my notes. In my Emacs configuration, I review the prose to""" start="00:03:47.840" video="mainVideo-literate" id="subtitle"]] [[!template text="""help memorize key bindings.""" start="00:03:53.600" video="mainVideo-literate" id="subtitle"]] [[!template text="""My section on getting email working with Emacs using""" start="00:03:57.800" video="mainVideo-literate" id="subtitle"]] [[!template text="""notmuch means creating small collections of scripts and""" start="00:04:01.040" video="mainVideo-literate" id="subtitle"]] [[!template text="""configuration files. I can tangle them all from one Org""" start="00:04:04.080" video="mainVideo-literate" id="subtitle"]] [[!template text="""file. I like that I can explain each part separately.""" start="00:04:08.200" video="mainVideo-literate" id="subtitle"]] [[!template text="""You just can't beat having links back to Stack Overflow or""" start="00:04:16.800" video="mainVideo-literate" id="subtitle"]] [[!template text="""that GitHub repo where you stole, I mean, became inspired to""" start="00:04:20.880" video="mainVideo-literate" id="subtitle"]] [[!template text="""write your code.""" start="00:04:25.520" video="mainVideo-literate" id="subtitle"]] [[!template new="1" text="""Disadvantages""" start="00:04:28.720" video="mainVideo-literate" id="subtitle"]] [[!template text="""Literate programming may push the boundaries of our""" start="00:04:28.720" video="mainVideo-literate" id="subtitle"]] [[!template text="""workflows and revealing some abrasion, but we aren't""" start="00:04:34.280" video="mainVideo-literate" id="subtitle"]] [[!template text="""solely working with Org. We have the flexibility of a Lisp""" start="00:04:38.120" video="mainVideo-literate" id="subtitle"]] [[!template text="""engine to file down those rough parts. You may have your""" start="00:04:41.240" video="mainVideo-literate" id="subtitle"]] [[!template text="""concerns. Perhaps you could reach out to me, and with""" start="00:04:45.120" video="mainVideo-literate" id="subtitle"]] [[!template text="""particular issues, maybe we can figure something out.""" start="00:04:48.160" video="mainVideo-literate" id="subtitle"]] [[!template text="""Here is my list of frictions, and the rest of my talk""" start="00:04:54.240" video="mainVideo-literate" id="subtitle"]] [[!template text="""demonstrates my answers and my hacks. The goal in literate""" start="00:04:57.440" video="mainVideo-literate" id="subtitle"]] [[!template text="""programming with Org is that it should not require more""" start="00:05:02.160" video="mainVideo-literate" id="subtitle"]] [[!template text="""effort than non-literate programming. For instance, I""" start="00:05:05.040" video="mainVideo-literate" id="subtitle"]] [[!template text="""shouldn't have to type much more than regular programming""" start="00:05:08.680" video="mainVideo-literate" id="subtitle"]] [[!template text="""to get my code literate. I also shouldn't have to worry about""" start="00:05:12.120" video="mainVideo-literate" id="subtitle"]] [[!template text="""the state between my Org file and the source code. I want""" start="00:05:15.720" video="mainVideo-literate" id="subtitle"]] [[!template text="""to be able to jump around my code just as easily.""" start="00:05:20.800" video="mainVideo-literate" id="subtitle"]] [[!template new="1" text="""Ease of typing""" start="00:05:24.133" video="mainVideo-literate" id="subtitle"]] [[!template text="""Let me explain more. I've created some templates using""" start="00:05:24.133" video="mainVideo-literate" id="subtitle"]] [[!template text="""yasnippet. Since I was used to the old org-tempo feature,""" start="00:05:28.655" video="mainVideo-literate" id="subtitle"]] [[!template text="""my habit has all the snippets starting with a""" start="00:05:34.680" video="mainVideo-literate" id="subtitle"]] [[!template text="""< character. I'm not sure if I should demonstrate all of them""" start="00:05:37.146" video="mainVideo-literate" id="subtitle"]] [[!template text="""as you may be doing something similar. I like to build on top""" start="00:05:40.760" video="mainVideo-literate" id="subtitle"]] [[!template text="""of characters to remind me that if I just enter a