Balancing build time and image quality in a static pipeline
Mandatory cover images slowed every build. Trimming variant widths, rethinking formats, and caching won the time back — with measurements.
1 min read
Mandatory cover images slowed every build. Trimming variant widths, rethinking formats, and caching won the time back — with measurements.
1 min read
How to set Cache-Control for a static site: hashed assets go immutable, HTML stays short-lived with revalidation — a two-tier baseline.
1 min read
Automated axe-style checks catch maybe a third to half of real issues. Why they still earn a CI slot, and how to live with false positives.
1 min read
Building the 404 early makes broken links visible during development and doubles as the smallest possible test of your design system.
1 min read
Technical posts rarely need true footnotes. Drawing the line between what belongs in the body, what becomes a link, and what stays below.
1 min read
Our posts kept shipping with zero inline images. One note packs every case — wide, portrait, small, transparent, consecutive, in-list, two captions, two tables — to verify optimization, dimensions and dark-mode legibility.
3 min read
Dependency installation dominated our CI time, so I rebuilt the pipeline around a lockfile-keyed cache. Before-and-after numbers included.
1 min read
How to lay out URLs, translation links, and hreflang — running two languages with native i18n alone.
1 min read
My first misunderstanding of @layer: unlayered styles always win, and it pays to read your framework's layer declaration once.
1 min read
Notes on choosing Astro as the static site generator and assembling a blog from a minimal setup.
1 min read
Extracting only the Latin glyphs from a variable font for self-hosting — the pyftsubset invocation and three pitfalls worth checking.
1 min read