Archive
22 posts · Oct 2026 – Oct 2026
2026
22 postsOct
22- First steps on a new PC: installing Node.js, npm and Git on Windows
- Deploying Docusaurus to Cloudflare Pages: the full path from local to custom domain
- Real page numbers for the blog
- Why the mobile menu hid “Blog” and “Tools”
- The security badges in the footer: why I skipped third-party seals
- The 400px ghost: hunting a mobile overflow bug
- Merging and splitting PDFs in the browser: what works, what does not
- Building a pixel-art palette with median cut
- The boundaries of SVG optimisation: what to delete, what breaks if you touch it
- Two encoders, written by hand: ICO and ZIP
- QR codes: choosing a library and two small pitfalls
- A static site on Cloudflare Pages: details that are easy to miss
- Giving the blog somewhere to keep its pictures: moving static media to Cloudflare R2
- Redoing the footer: from two footers to a three-column one
- A mobile check-up with a headless browser
- Where the attack surface of a pure front-end tool really is
- Lazy loading plus prewarming: hiding the first 1–2 second wait
- The bug that demanded a page refresh: a poorly modelled state machine
- Three pitfalls when wiring up jSquash
- Why image compression runs in the browser: Canvas vs WASM
- Adding a tools section to a static blog: decide the boundaries first
- The blog is live: from code to words