Emacs Carnival: org-babel
*The theme for the Emacs Carnival in November 2025 is: An Ode to Org Babel.
For this month's blog carnival, I would like you to celebrate the great power that Org Babel brings to Emacs. Tell us what problems you solve with literate programming and any tips and tricks you can share about how you use Org Babel.
org-babel is a very powerful and versatile tool. I use it for a few different things.
- Literate configuration of various config files.
- Making diagrams with PlantUML to display inline in projects I'm working on.
- Ad-hoc Python workbooks forsome very basic literate programming.
1. Literate configuration
You can use org-babel to maintain your config files. Rather than having source files full of comments, you have an org file full of source blocks that you 'tangle' together into the config file. You write narrative notes around the source blocks to explain why they're there.
It might not sound like much of a win, but I've found it to be a much more maintainable way of managing large config files.
As a nice side benefit, as they're org files you can easily publish them to the web as part of your usual publish process. I keep mine here in my digital garden, and you can see them here:
- My Spacemacs User Config
- My publish.el configuration
My Doom Emacs config (not yet babel-ified, but I plan to)
I've got more info on how I made them in Setting up a spacemacs literate config file and Setting up a literate publish.el with org-babel.
2. Inline diagrams with PlantUML
I use org-babel to create diagrams with PlantUML. Inline in org files. Sometimes for mindmaps, but more frequently for Gantt charts for project management at work. Occassionally some of the other UML diagrams, like sequence diagrams.
The logo of my website is also made with org-babel and PlantUML (Made myself a logo with PlantUML).
2.1. Python workbooks
Occasionally I've use org-babel for very basic literate programming with Python. Usually working through some simple figures for something where it's been handy to have a running narrative on those figures. If I'm honest, I usually end up moving to a spreadsheet as it feels quicker and more suited to my use cases. But it has been interesting to see how some of those Babel features work - like using variables across source blocks, for example.
3. Elsewhere
3.1. In my garden
Notes that link to this note (AKA backlinks).
