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
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
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
- Authoring Contents with
- 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-modeto tangle the literate programming projects present in the
posts/directory of this website.
- Layout and Style
- Processing HTML with
soupaultis a HTML processor, and it can be used as a static website generator. We leverage
soupaultto 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