Literate Programming

A quick note about my use of Literate Programming

My blog is generated using a static site generator called Hugo. Hugo naively supports both Markdown and Org-Mode format, so naturally I have chosen to compose my blog posts in emacs Org-Mode. Org-mode is similar to Markdown in the sense that it uses a simple plain text markup syntax for formatting documents. However, Org-Mode has far more features than Markdown and has fantastic literate programming support via Org-Babel. Every time you see a block of code, or even shell commands, I did not copy and paste them from an editor or terminal. Instead, I actually write both code and shell commands in source blocks embedded in the blog post itself. Org-Babel, a minor mode for emacs, makes this all possible. Sometimes, when I write shell commands, you will notice that I filter the output through a grep regular expression. I do this to strip out any unwanted lines so that the output shows only what I am discussing. If you are following a long you do not need to use the additional regex. If the regex is being used for something other than filtering the output then I will let you know.

But you are not using native Org support

Sadly it is true, I am not. Org-mode native support is made possible by the Go Org to HTML parser named goorgeous. However, the last commit to the goorgeous project at the time of this writing was Nov 26, 2017. I am concerned that goorgeous is not being actively developed or maintained. For this reason I stitched to ox-hugo, an Org exporter back-end for Hugo. Ox-hugo’s last commit was 21 hours ago. I have spoken with the author (Kaushal Modi) a couple of times now and he is very active in the hugo community. I am confident that ox-org will be well maintained for quite some time.