summaryrefslogtreecommitdiffstats
path: root/site/posts/cleopatra.org
diff options
context:
space:
mode:
Diffstat (limited to 'site/posts/cleopatra.org')
-rw-r--r--site/posts/cleopatra.org66
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~*]].