Dead Key
08/24/2026

Hello from Jenny

Series: Notes on Tools

tags: meta

This site is built by jenny, a static blog generator written in bash, sed and awk. No node_modules, no build server, no framework — a handful of shell scripts and heredoc templates.

Why bother

Most static site generators solve a problem this site does not have. There is no client-side routing here, no hydration, no islands. There is markdown on disk and HTML on a CDN.

The whole pipeline is:

That is it. The build for this page takes well under a second.

What the parser handles

The vendored parser is md2html.awk, about 500 lines of awk. It covers the MultiMarkdown subset this blog actually uses:

Feature Supported Notes
Fenced code yes with a language class
Tables yes including alignment
Footnotes yes numbered, with back-links
Citations yes [#id] with optional locator
Reference links yes all three forms
Metadata blocks yes preserved, hidden by default

Inline formatting works as expected: emphasis, strong, code, and escaping that leaves node_modules and snake_case alone.

Trying it

make sym-install PREFIX=$HOME/.local
mkdir blog && cd blog
jenny init
jenny

Four commands and you have a blog1. The generated .blogrc is a shell script, so configuring it is just setting variables.

Simple things should be simple, complex things should be possible.

What is here

Not much yet. That is the point of a placeholder — though this one at least exercises every feature the parser claims to support2.