Site quality · May 2026
Why this site has a build pipeline
A personal site is small enough to keep honest and real enough to make sloppy work visible.
A personal website is not a distributed system. It does not need a platform team, an incident channel, or a quarterly architecture review.
That does not make it a toy.
The useful thing about a small site is that the whole system fits in your head. You can make every tradeoff visible: which fonts are worth shipping, which effects are worth their bytes, which pages are public, which pages are hidden, which scripts can touch the build, and which checks are allowed to block a deploy.
That is why this site has a real build pipeline. It is narrow enough to keep honest and real enough to expose sloppy work.
The current deployment path has a few jobs:
- Keep the page fast enough that the design never feels like an excuse.
- Keep the HTML valid after templates, Markdown, Liquid, and minification run.
- Keep the content searchable without letting hidden recruiter pages leak into the sitemap.
- Keep the CSP strict enough that inline code has to be accounted for.
- Keep the visual system coherent across home, notes, resume, hidden fit pages, and mobile breakpoints.
None of those checks are impressive alone. Together, they say something about how I like software to behave. A system should be possible to change without guessing. It should explain what it is doing. It should make the next risky move smaller.
The tradeoffs are still tradeoffs. Inline CSS helps first paint, but it means every page carries its own stylesheet. Self-hosted licensed type gives the site a less generic voice, but every face has to earn the request. A strict CSP is cleaner, but it requires the build to regenerate hashes every time inline content changes. Lighthouse is useful, but it is lab data; it cannot measure real user INP without a real interaction.
I want the site to show that kind of thinking. Not because a personal site is important infrastructure, but because the habits are portable.
The same instincts matter on larger systems: make the default path good, keep evidence close to the change, measure the user-visible parts, and leave behind something another engineer can operate.
That is the bar I am trying to make visible here: a small system, treated carefully.