Hello, sodium
New site, new stack. Notes follow.
This is the first post on the new site. It exists mostly to verify that the build pipeline produces working HTML.
Stack
- Astro 5 — static SSG. Zero framework JS shipped to the browser by default. The blog ships exactly 0 bytes of framework runtime.
- Tailwind v4 with a hand-rolled token preset. All CSS gets
inlined into
<head>, ~6 KB gzipped. - Space Grotesk + JetBrains Mono, self-hosted via
@fontsource-variable, subsetted by unicode-range. ~22 KB woff2 for the latin range. - pnpm + Turborepo monorepo. Two apps (
blog,tools), four shared packages. - Cloudflare Pages, HTTP/3 + 0-RTT, Brotli-compressed.
Cold-start FCP target: under 100 ms on 4G. The number we hit in the projection model is ~95 ms. Whether that survives contact with real users is a Phase 4 problem.
Why another rebuild
The previous incarnation was an AstroWind template stitched onto a Next.js playground. It worked, but the path from “I want to write a post” to “the post is online” had four moving parts, none of which I fully understood. Cleaning that up was overdue.
The split now:
| dir | what | adapter |
|---|---|---|
apps/blog | this site, static HTML | none |
apps/tools | utilities (forthcoming) | @astrojs/cloudflare |
Same repo, separate Pages projects, separate perf budgets.
What’s actually here
This post. That is the entire archive.
More follows when there’s something worth shipping. The bar is “I’d want to read this if someone else wrote it” — not “post more for the algorithm.” If the next post lands six months from now, that’s a feature.
Code block, for typography QA
function shouldShip(draft: {
wordCount: number;
insightDensity: number;
}): boolean {
return draft.insightDensity > 0.3 && draft.wordCount < 2_000;
}
Numbers pulled from a hat. The function isn’t real. The discipline is.
Sodium
About the name: sodium-vapor lamps are those amber streetlights from before LED took over. The mental image is one of them on a wet street at night, with warm windows nearby. The design borrows that color contrast — cold pavement, warm interiors. Don’t read more into it than that.
If you’re reading this on a feed reader, the RSS is at /rss.xml.