This is a static webpage served from my web server. The site and its scripts are stored in
git. I wrote the static site generator myself.
When composing on my Mac, I write in
vim and preview in Marked 2. When writing on iPadOS or iOS, I write in iA Writer. Most content on this page is written in Markdown.
This site is built with my own static site generator, written in Python. It’s one script -
build.py - which generates the site and puts it in an
out directory (ignored by the site’s
.gitgnore). This build script uses a few conveniences that I wanted. Rather than a templating system, the site relies on simple
after.html files that get prepended / appended to each page. This includes the
HEAD element, header, footer, and other content that every page on the site has.
When I want to see how the site content would look on the page itself, I can run
build.py serve live to serve the page in “live reloading” mode. This fires up an http server on the local machine, and lets me read the site in a web browser. This uses Python’s great
serve live flags also inject LiveJS into the site when building it. The site is then continuously rebuilt, checking if any of the output files have changed since they were last put on disk. This lets me edit any of the site’s content and see it reflected live in the browser.
I fire off this preview in Terminal on my Mac, or using a-Shell on iPadOS / iOS.
Once the content is ready to go, I’ll do a build of the site with
build.py. Then, I’ll take the contents of the
out directory and move them to my web server. The git repo embeds a
deploy shell script that does this with
rsync for use on my Mac. On my iPad and phone, I have my web server added as a file provider using Secure ShellFish, so I just drag-and-drop the contents over in Files.