June 6, 2019
After letting it sit there for a while, I figured that it’s time to brush up my website from the odd setup that I had on there. Namely, the old tech stack was:
If you think about it, three of the four components here are not really needed, given that the site is purely static. Therefore, it was time to check out static site generators.
I’ve tried out Hugo, but after a collection of problems, I figured I
might as well make my own. After all, pandoc exists and I’ve never had any
issues with it. make
is used for building the website. My
Makefile knowledge is near zero but this is a good opportunity to learn
it.
The Makefile used to build this website:
PANDOC := pandoc
BASES := include/style.html
content: public/index.html public/blog/a-new-blog-using-pandoc-and-make.html
# `public/` is not checked into git, this is used
# to make sure it is always present before running
# pandoc on a clean checkout or after removing `public`.
public public/blog:
mkdir public
mkdir public/blog
public/%.html: content/%.md public public/blog $(BASES)
$(BASES) $< | $(PANDOC) -s -o [email protected] cat
The nice thing here is that it only rebuilds what it needs to rebuild
when it needs to rebuild. For instance, updating this post and calling
:make
in vim only results in make running
pandoc
for this single file. Updating
include/style.html
, as another example, will rebuild all
posts.
Of course, this isn’t a complete solution to all the problems that static site generators aim to solve. For instance, the blog post table of contents in the index page is currently being updated manually.
Some of the CSS is also taken from here, which looks a lot better than the weird CSS I wrote for the old website.
The next steps are deploying it via Ansible and linking to content by hash (an idea of Joe Armstrong).