
Howard Abrams
8 HN recommenders · recommended in 11 months, 2015–2025
28:36 · 105K views · Sep 1, 2015
Howard Abrams demonstrates, in an EmacsConf 2015 talk, how he uses org-mode's Babel and Tramp to configure and operate remote servers from a single document. Code blocks, their results and the explanatory text all live together.
HN people point to it as the best demonstration of literate devops, showing documentation and execution woven together in Emacs.
11 comments from Hacker News
This is the blog of Howard Abrams, who also has a great YouTube channel full of Emacs demos and tutorials. His video on literate programming for DevOps via Emacs' Org-mode was very impressive and inspiring to me. It's my favorite. :) this video
I use org-mode everyday, as well. And the org-babel literate programming environment is a game changer, and something I find new uses for all the time. Check out this literate devops video [1] But I share your sentiment for the stability issues which I think reflect problems with emacs in general. One day, you update your packages and suddenly your favorite mode does not work anymore and you have to spend 1/2 day figuring out why literally digging into the source with edebug. Because of this I take the following measures. I use melpa-stable which as the name indicates are the stable versions of emacs packages. (The problem is not all packages are in melpa-stable so you have to deal with that too.) Also, I manage my own version of org-mode cloned from the canonical org-mode repo that I update when I decide and I can back out of if there are problems. Finally, I run emacs within docker which allows me to freeze dry and rehydrate environments that are completely under my control so that I don’t encounter problems with a changing environment either. Here is my literate org-babel .emacs, if interested [2] (I don’t have the Dockerfile on github, yet, unfortunately.) [1] this video [2] [LINK]
Personally I've failed with Emacs years ago, just tried it and decide that's a heavy and horrid mess, I re-tried it few years ago when I see it in action and was at that point in time that I realize it's power. Emacs is one-tool one-job BUT the tool is just a function and functions can be combined like unix commands in pipes but in far more powerful manner and with far less overhead. Try seeing this: [LINK] or this this video the real issue when starting without a friend of video-tutorials is that Emacs defaults are barebone and really old, the juicy things come only when you discover them. The power of Emacs is not much Emacs itself but the classic desktop paradigm: anything is integrated so anything can be combined. You type some math in a mail? Why not have it rendered by LaTeX, since your system do have LaTeX support installed and why not solve the ode you are typing since you have a CAS? Why being tied on GUIs to cut&paste as the sole IPC? That's is. Is extremely powerful but so different than actual environments that most users fail to comprehend without seeing it in action...
I could go on and on about the benefits of org. And the org-Babel full fledged literate programming environment is another game changer. I used org for a scientific conference I attended recently. From one org file, I could provision a VM in the cloud and get various Docker containers running via tangling with plenty of human friendly exposition. (See tramp mode too.) I could then export that file as an extended abstract via Latex export (conforming to the conference formatting guidelines) and also produce attractive HTML (see ReadTheOrg). Also checkout this literate devops video: this video
Literate programing is used to tangle text and code. You tangle the document and the code blocks are pulled out to create a working program. But Orgmode's Babel, iPython and Wolfram's Computational Essays are literate computing, with code being executed in the document. Howard Abrams has extended the concept to create literate devops ( this video ) using orgmode babel where the code in the document is used to configure software running on local or remote servers. I use Babel as part of my daily workflow. Very cool stuff.