summaryrefslogtreecommitdiffstats
path: root/2024/talks/literate.md
blob: 0fb0a0de52158992411e28d2cf54d1668a745f9f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[[!meta title="Literate Programming for the 21st Century"]]
[[!meta copyright="Copyright © 2024 Howard Abrams"]]
[[!inline pages="internal(2024/info/literate-nav)" raw="yes"]]

<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
<!-- You can manually edit this file to update the abstract, add links, etc. --->


# Literate Programming for the 21st Century
Howard Abrams (he/him) - @howard@emacs.ch , <https://www.howardism.org>

[[!inline pages="internal(2024/info/literate-before)" raw="yes"]]

Donald Knuth’s idea of *literate programming* in the 80’s and 90’s was
interesting, but he didn’t realize what Emacs and Org can do in this
century. In this talk, I would like to go back your initial *dabblings*
with Org `src` blocks to show how you can program *literately* as quickly
as you can in any other mode.

Some of the tips and tricks include:

-   Automatically keeping your lit code sync’d
-   Easier code generation
-   Jumping to Org headers to help organize code
-   Jumping to code definitions with the xref interface

At the end of this talk, I hope to inspire you to try it again, as my
personal “go to” is *programming literately*.

I will be following the format and outline in my essay:
<https://howardism.org/Technical/Emacs/literate-writ-large.html>

About the speaker:

About ten years ago, I gave a talk I called *literate devops* and people
still ask me if I still use those techniques. For all my personal
projects, I do. Even projects that I share with others, I often *start*
programming with an Org file.

I will admit, programming within Org blocks has some burrs, but over
the years, I’ve filed them off with helper functions, snippets and
other features. Thought I would share these.



[[!inline pages="internal(2024/info/literate-after)" raw="yes"]]

[[!inline pages="internal(2024/info/literate-nav)" raw="yes"]]