A Series on Generating this Static Website

At some point, I felt like the whole process of generating this website was interesting enough so that it would deserve a write-up of its own, but the risk was that such a piece of text would quickly become out-dated. This is reminescent of documenting any software project, and I was aware at that time of a dedicated paradigm to prevent these kind of issues: literate programming.

I spent quite some time turning my custom toolchain into a literate program, so that its actual code source would actually be the write-ups I wanted to add to my website. This was an interesting challenge, since it meant cleopatra would have to generate itself before it could build my website. In other words, cleopatra achieves the bootstsrapping challenge!

I really enjoyed this first experiment with literate programming, and I started using cleopatra for other projects of mine where literate programming felt like an interesting choice. In doing so, it quickly became clear cleopatra was cumbersome to set-up for a new project. At the end, I ended up rewriting it to overcome the specific issues posed by its initial designFor the record, this second version is also implemented using literate programming, and if I was first using the first version to build it, I quickly “made the bootstrap jump.”. But the so-called generation processes I had written for cleopatra the first basically “just worked” with cleopatra the second.

So, coming back to this series, it is just the very reason why I started using cleopatra in the first place: the generation processes used by this website, written as literate programs.

Installing Dependencies
Authoring Contents with Coq (TODO)
Authoring Contents with org-mode (TODO)
Literate Programming Projects
Literate programming is an interesting exercice, and it is particularly well-suited for blog posts, since at the very least it provides the tool to enforce the code presented to readers is correct. We use Emacs and org-mode to tangle the literate programming projects present in the posts/ directory of this website.
Layout and Style
Processing HTML with soupault
soupault is a HTML processor, and it can be used as a static website generator. We leverage soupault to provide a unified look and feel to a website generated with diverse tools.

Appendix: In case you are curious, you can have a look at the first implementaiton of cleopatra.