diff options
Diffstat (limited to 'site/posts/cleopatra.org')
-rw-r--r-- | site/posts/cleopatra.org | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/site/posts/cleopatra.org b/site/posts/cleopatra.org new file mode 100644 index 0000000..6081708 --- /dev/null +++ b/site/posts/cleopatra.org @@ -0,0 +1,66 @@ +#+TITLE: An Unfinished Series on How This Static Website Used to be Generated + +#+SERIES: ./meta.html +#+SERIES_PREV: ./Thanks.html + +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: [[http://www.literateprogramming.com/][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, [[https://cleopatra.soap.coffee][I ended up rewriting it]] to overcome the specific +issues posed by its initial design[fn::For 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. + +Now, I don’t use *~cleopatra~* anymore. Literate programming is a fun +paradigm, but I never took the time to actually document in depth most +of the bits on how this website is built. So I took the various +scripts extracted by *~cleopatra~*, and recreated a straightforward +~makefile~ file on top of it. The nice thing is, it now takes way less +time to build! + +Anyway, coming back to this series, it is just the very reason why I +started using *~cleopatra~* in the first place: the generation +processes I was using to generate this website, written as literate +programs. If you are curious, you can have a look. + +- [[./cleopatra/dependencies.org][Installing Dependencies]] :: + +- [[file:cleopatra/coq.org][Authoring Contents with Coq ~(TODO)~]] :: + +- [[./cleopatra/org.org][Authoring Contents with ~org-mode~ ~(TODO)~]] :: + +- [[./cleopatra/literate-programming.org][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. + +- [[./cleopatra/theme.org][Layout and Style]] :: + +- [[./cleopatra/soupault.org][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 +[[./posts/CleopatraV1.html][the first implementaiton of *~cleopatra~*]]. |