About

A little context.

I'm Jacob Mastel — an engineer who is happiest with a terminal open and a camera within reach.

What I do

By day I work on software. By night (and on weekends, and on any road trip that passes something worth photographing) I shoot landscapes and cityscapes.

How this site works

This used to run on Grav. It was a fine CMS, but over time I'd migrated every feature I actually used — comments, forms, galleries — into dedicated, self-hosted open-source apps. What was left was a blog and some photos being served by a lot of machinery I no longer needed. So I tore it down to what it really is: Markdown files and a template, compiled to static HTML.

The stack is deliberately boring, which is the point — it should still build and run in ten years:

Hosting is a single nginx container serving static files off my NAS. There's no application runtime in production — no Python, no PHP, no database to patch. Publishing is a git push: a post-receive hook on the NAS re-renders the pages (about a second) straight into the running container's mounted directory, so a new post never rebuilds a Docker image or restarts the server.

flowchart LR W["Write Markdown"] --> G["git push"] G --> H["post-receive hook"] H --> P["Pelican build"] P --> O["Static HTML"] O --> N["nginx container"] N --> V["You, reading this"]

If that's your kind of thing, the details show up over on the blog.

Elsewhere

Find me on the links in the footer, or say hello by email.