Colophon
This site is a few hundred lines of HTML and CSS with no framework behind it. Posts are
Markdown files in src/posts/, structured content lives in JSON under src/data/, and a
small Python script stitches the two together into static pages. The only JavaScript anywhere
on the site is about twenty inline lines that remember whether you prefer the dark or the
light theme.
I keep it this way for a boring reason: a personal site should still build in five years. Every dependency is one more thing that can rot between the times I remember this repository exists.
What a post can contain
Ordinary prose, of course, plus the usual Markdown furniture. Lists:
- Nested structure works as you would expect
- So do links and emphasis
- Inline
codegets a subtle background
Blockquotes, for when someone said it better:
The purpose of computing is insight, not numbers.
Fenced code blocks are syntax-highlighted at build time by Pygments, with separate themes for light and dark:
def kl(p, q):
return sum(pi * math.log(pi / qi) for pi, qi in zip(p, q))
Tables, kept narrow enough to read:
| Stage | Cost | Notes |
|---|---|---|
| Build | ~0.2s | Pure Python, no network |
| Deploy | one push | GitHub Pages serves the committed HTML |
Math, when a post asks for it
Setting math: true in the front matter pulls in KaTeX for that page only, so pages that
do not need it stay free of third-party requests. Inline math like $\mathcal{O}(n \log n)$
works, and so does display math:
$$ \mathcal{L}(\theta) = -\mathbb{E}{x \sim \mathcal{D}} \left[ \log p\theta(x) \right] $$
Deleting this post
Remove src/posts/2026-08-02-colophon.md and rebuild. Anything with draft: true in its
front matter is skipped, which is the gentler option while a draft is still cooking.