Portfolio Website (v3)
This site: TOML-driven static generator plus twelve background simulations you can grab and tune.
Built
Content lives in site.toml, templates render it, GitHub Pages serves it. The background is its own engine — twelve modes with pointer interaction and a live parameter panel.
Hard parts
- Keep the sim smooth behind a frosted column.
- Honor reduced motion; persist mode and params.
- Do not steal pointer events from the page.
Learned
A portfolio is more convincing when the page itself is something you can operate.
Also
- Custom Python static generator from TOML + HTML partials
- Light/dark theme, section deep links, contact form
- Interactive background simulations with a live control panel
A site that is also a thing
This page is generated. Content lives in site.toml, templates render it, GitHub Pages serves it. Featured projects get a teaser on the homepage and a longer essay at /projects/{slug}/. I would rather maintain TOML than a CMS.
The background is a separate engine: twelve modes, pointer interaction, a live parameter panel, reduced-motion support, and persistence in localStorage. Click Background in the header.
What I keep fighting
The sim has to stay smooth behind a frosted column, honor reduced motion, and not steal pointer events from the page. Module init also has to boot without racing DOMContentLoaded — that one actually broke the particles.
A portfolio is more convincing when the page itself is something you can operate, and when the writeups are willing to say what the repo actually contains.

