About this site

This is where I put some personal opinions and projects. I created this site because I love the old web full of personal expression and quirky design.

The tech stack

Earlier versions of this site were created using Org mode. Although I find Org to be vastly more ergonomic than Markdown, I switched to Hakyll+Pandoc for the following reasons:

I created the template by modifying the default Hakyll template, and created a small CSS file that I am growing slowly. There were a few deliberate criteria I have when creating the final template:

For math content, I use Pandoc’s MathJax export. To keep with the criteria above, I include the MathJax library only if the path has math in it. I detect this like so in Hakyll:

baseCtx :: Context String
baseCtx =
    boolField "hasMath" hasMath `mappend`
    defaultContext
  where
    hasMath item = "<span class=\"math" `isInfixOf` itemBody item

Technically, this is pretty hacky: it would not have any false positives but it could technically have false negatives if the MathJax output of Pandoc changes (e.g. emitting class="inline math" rather than class="math inline").

And, I use the following in the templates:

$if(hasMath)$
<script id="MathJax-script" async src="..."></script>
$endif$

To build the website, I have a publishing script that looks like:

#!/usr/bin/env zsh

REMOTE_DIR=deliberately hidden
SITE_DIR=_site

set -euo pipefail

stack run site clean
stack run site build
./compress-files.sh
cd $SITE_DIR
rsync -e ssh -avz . $REMOTE_DIR

All compress-files.sh does is running gzip:

#!/usr/bin/env zsh

set -eu -o pipefail

SITE_DIR=_site/

for extension in html css
do
    find $SITE_DIR -type f -name '*.'"$extension" | xargs gzip --keep --best --force
done

Hosting

Since October 2020, I use NearlyFreeSpeech.NET for all my hosting needs. I generally appreciate their “no nonsense” approach as a hosting provider: I am appreciative of their stance on their customers’ freedom of speech and privacy.

Before then, I hosted the site via Amazon S3 + Route 53 but I did not like the overall complexity of Amazon, and I wanted to move to a hosting provider that aligns better with my values.

No AI

created by a human, not by ai Everything on this website is made by a human without using any generative AI tools. Creative AI-generated content is hollow and an uncanny version of what is created by humans, and it definitely deserves the epithet “slop.”