about this site
tl;dr: how this site was built and the decisions behind it.
every personal site is a statement about what you value. this one values simplicity.
no javascript (almost)
the entire site is pre-rendered at build time. the html is static. there is no svelte runtime shipped to the browser. no hydration, no virtual dom diffing, nothing.
the only javascript is a tiny script for the table of contents — it highlights which section you’re currently reading11: this is progressive enhancement. without javascript, the TOC still renders as a list of anchor links. you just don’t get the active highlighting.. everything else is html and css.
the theme toggle
most theme toggles use javascript to read and write to localStorage. this one uses a hidden checkbox and the css :has() selector22: :has() is supported in all modern browsers since december 2023. it lets you style a parent based on its children’s state — in this case, whether the checkbox is checked..
the default theme follows your system preference via prefers-color-scheme. clicking the toggle flips it. the state doesn’t persist across page loads — that would require javascript.
typography
system fonts. no external requests, no font files to host. -apple-system on mac, Segoe UI on windows, system-ui everywhere else. fast, familiar, zero overhead.
flat urls
posts live at dapmel.com/slug instead of dapmel.com/writings/slug. shorter urls are easier to share, easier to type, easier to remember.