Featured
2026 - September
1 post2026 - August
2 posts2026 - July
1 post2026 - June
1 post2026 - May
1 post2026 - September
1 postShipping a Hugo site on Cloudflare Pages without the headache
The short path to a live Hugo site with automatic builds, HTTPS and zero cost — including the three traps that break the first deploy.
2026 - August
2 postsHugo Modules in practice: versioned themes without submodules
Git submodules solve the wrong problem. Hugo Modules treat the theme as a versioned dependency — with upgrades, rollbacks and file-by-file overrides.
A static search index that fits in 40 KB
Client-side search on a static site needs no server and no paid service. It needs an index that is honest about what goes into it.
2026 - July
1 postDark mode with no flash: what happens before first paint
The white flash when loading a page in dark mode is not a CSS bug. It is a race between the HTML parser and your JavaScript — and it is winnable.
2026 - June
1 postWriting CSS that survives the next redesign
The difference between CSS that lasts and CSS that rots is not methodology. It is how many decisions are written down exactly once.
2026 - May
1 postMeasuring Core Web Vitals for real on a static site
Lighthouse 100 on your MacBook means nothing. The three measurements that actually represent what visitors experience.