Literate Devops with Emacs
Howard Abrams8 HN recommenders · 2015–2025
105K views · demo · evergreen · Uploaded 2015-09-01
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.
38:47RailsConf 2014 - All the Little Things by Sandi Metz
Confreaks
40:20"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson
Strange Loop Conference
1:03:55🚀 TDD, Where Did It All Go Wrong (Ian Cooper)
DevTernity Conference
54:20Bret Victor - Inventing on Principle
Rui Oliveira
19:10Velocity NY 2013: Richard Cook, "Resilience In Complex Adaptive Systems"
O'Reilly
1:02:26Solving Problems the Clojure Way - Rafal Dittwald
Clojure/north
52:35Debugging Under Fire: Keep your Head when Systems have Lost their Mind • Bryan Cantrill • GOTO 2017
GOTO Conferences
42:15"Performance Matters" by Emery Berger
Strange Loop Conference
11 comments from Hacker News
Emacs org-mode supports a lot of languages [1] and you can mix and match within a file. Howard Abrams literate devops is an interesting example of what org-mode code blocks can do. [2][3] Org-mode also allows embedding images or source blocks in languages like LaTeX that resolve to rendered images. [1]: [LINK] [2]: [LINK] [3]: [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] [VIDEO] [2] [LINK]
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: [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 ( [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.
All these workarounds sound like a reason to use start using tramp more (apropos, [VIDEO] / [LINK] is a pretty neat demo of combining org-babel and tramp). ----- There is also emamux, which seems to be able to copy from tmux: [LINK]
This is the main reason I want to try and learn Emacs, OrgMode, and Babel. The stuff that Howard Abrahams discusses on the below video is something I think would be highly successful in a remote environment. Documenting your workflow as you go, including commands and output, then emailing it to your team that day or uploading it to a document store/gitbook: [VIDEO]
Org-mode in Emacs. Because it enables to do literate programming. In this video [0] by Howard Abrahams you can see how to wave the instructions and the execution of them with Emacs. Another advantage is that you can mix your diagrams (in plantuml or ASCII art) with your code, in the same org-mode file. Gitub displays .org files the same way it does Markdown. [0] [VIDEO]
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 [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...
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. :) [VIDEO]
If you are interested with Literate programming, you should try Emacs. Some packages are org-mode, eev and even elisp are best for literate programming. Example [VIDEO]
managing infrastructure services Immediately reminded me of this (which I am no where near clever enough to use): [VIDEO]