This site is generated with a Rust program, from a directory structure that looks like this:
/pages/index.md /pages/colophon.md /pages/... /notes/<subtopic>/<note>.md /static/style.css
This structure makes it easy to update the site with a common text editor, as opposed to a web interface normally found in blog engines. There’s support for articles and updates, but it’s difficult to maintain a steady stream of substantial, write-once content.
Pages and notes are written in Markdown, to make adding emphasis, code, headings, and links easy. The Rust program uses pulldown-cmark to convert the Markdown to HTML and Askama to incorporate that HTML into templates that provide a consistent look and feel for each page.
To publish the site, I push the resulting HTML and CSS to GitHub, which Netlify makes available across the internet.
The HTML and CSS is left un-minified or compressed, so it’s easier to inspect for curious visitors.
I made a short update script to automate the process of committing the changes both to the Markdown source repository (
site-content) and HTML result repository (
#!/bin/sh set -o pipefail set -o errexit set -o nounset msg="$*" len=`echo "$msg" | wc -c | sed -E 's/^ +//'` if [ $len -gt 50 ]; then > /dev/stderr echo "error: message is $len characters" exit 1 fi if [ -z "$(git -C site-content status --porcelain)" ]; then > /dev/stderr echo error: site-content is clean exit 1 fi if [ -z "$(git -C site-out status --porcelain)" ]; then > /dev/stderr echo error: site-out is clean echo consider implementing automatic rebuild exit 1 fi git -C site-content add . git -C site-content commit -m "$msg" git -C site-out add . git -C site-out commit -m "$msg" git -C site-out push
<form class="search" action="https://www.duckduckgo.com/" method="GET"> <input name="sites" type="hidden" value="mattwidmann.net"> <input name="q" type="text"> <input type="submit" value="Search"> </form>
Updated on 12 September 2021.