Blog
Articles about web development, design, performance, and related topics. Subscribe via RSS to keep up with new articles, or browse by topic.
- Move Google Photos to iCloud Photos With Takeout
Export a Google Photos library with Google Takeout, then upload the downloaded files to iCloud Photos.
- Make an Iframe Responsive With CSS
Keep videos, maps, and other iframes responsive with an aspect-ratio wrapper and a small amount of CSS.
- Add a "Skip to Main Content" Link
Let keyboard and screen-reader users bypass repeated navigation with a small HTML and CSS pattern.
- Google Search Operators Worth Remembering
A practical reference for narrowing Google results by phrase, site, title, URL, file type, price, and more.
- How Netlify Sites Opted Out of FLoC
The Netlify header that opted a site out of Google's FLoC trial, and why this is now historical.
- Nesting Media Queries in CSS
Combine multiple conditions by nesting CSS media queries at the root of a stylesheet.
- Practical image loading improvements for the web
Reduce image cost with lazy loading, async decoding, dimensions, responsive sources, WebP, and image CDNs.
- Scheduling Netlify builds with GitHub Actions
Trigger a Netlify build hook on a cron schedule with a small GitHub Actions workflow.
- Programming quotes worth keeping around
A small collection of sharp, funny, and occasionally uncomfortable quotes about programming.
- A simple tag cloud for Hugo
Build a small Hugo tag cloud, filter out rare tags, and exclude terms you do not want to show.
- Social sharing buttons without JavaScript
Add lightweight sharing links for social networks and email without loading third-party JavaScript.
- Installing MySQL on macOS
Install MySQL Server from the official macOS disk image and start it from System Preferences.
- Adding page metadata and Open Graph tags in Kirby
Generate canonical, description, Open Graph, and itemprop metadata from a Kirby page template.
- How to take screenshots with Chrome DevTools
Capture a full page, a selected area, or one DOM element without installing another browser extension.
- Adding JSON-LD to a Hugo site
Generate WebSite and BlogPosting structured data from Hugo templates and site configuration.
- Illustration libraries for websites and apps
A practical list of customisable, free, and commercial illustration libraries for websites and apps.
- Creating a Hugo theme from scratch
Generate a Hugo theme skeleton, understand its main folders, and add the first piece of content.
- Adding Google Tag Manager to a Hugo site
Configure a Google Tag Manager container in Hugo, add both snippets, and keep it disabled on localhost.
- Comma-separated tags in Hugo
Render a Hugo page's tags as links separated by commas, without leaving a trailing comma.
- Client-side search for a Hugo site
Build search for a Hugo site with a JSON index, Fuse.js, Mark.js, and a small search template.