Writing

Although I don't get the chance to write often, I do so occasionally and post it here!

  1. 16 months with Loop Switch 2 earplugs

25th March 2026 My thoughts on the Loop Switch 2, the adjustable model of the hyped-up earplugs company. Here are my thoughts using them over the past 18 months!

  1. Simple website analytics with Goatcounter

24th March 2026 Using Goatcounter as a simple web analytics tool that is good for privacy, low in cost, lightweight, and simple. This is how I got on with it!

  1. I displayed an open graph image and had to pay how much?!

22nd July 2025 A media company demanded a license fee for an Open Graph image used on my twitter archive. I gave in and paid it, but what does that mean for open graph images and copyright?

  1. Device notifications via HTTP with ntfy

13th May 2025 ntfy is a super handy service that makes it easy to send notifications to a device via HTTP requests

  1. The Blog Questions Challenge

12th March 2025 Some answers to the Blog Questions Challenge — about my experience blogging here and in the past

  1. HTMHell Advent Calendar — Preloading fonts for web performance with link rel="preload"

25th December 2024 A post on the the HTMHell Advent Calendar about how to use rel="preload" to improve font-loading performance!

  1. My anti-overlay client letter

6th November 2024 I really dislike accessibility overlays and am often asked about my thoughts or to implement one. This is my email response when that discussion gets serious.

  1. Spring and Summer 2024 — Life, links and lmedia

22nd September 2024 A summary of my past few months, including what I've been up to; blog posts I've written and enjoyed reading; and media I've been enjoying

  1. My day at State of the Browser 2024

19th September 2024 I attended State of the Browser 2024 in London, which had some exceptional talks. These are my thoughts from the day.

  1. Selling a small front-end web project — what I learned

16th September 2024 In mid-2024 I sold a small unmonetised web project of mine called My Top for Spotify. This is my experience of the sale and what I learned!

  1. My response to UK CMA's potential remedies for mobile browser competition

24th August 2024 My submission to a the potential remedies proposed by the UK Competition and Market's Authority consultation on Mobile Browser Competition

  1. Proxying an Image CDN with Cloudflare workers

3rd August 2024 Using free Cloudflare workers to proxy an image CDN on the main origin for performance

  1. JS library compilation to browser, esm and cjs using esbuild

19th July 2024 My setup using esbuild to compile a Javascript library for browser use, ES Module import and CommonJS require

  1. Simple, fast build tooling with live reload for a non-framework website

14th July 2024 A nice modern bundling set up that can be used with CMS sites like WordPress without a framework. Uses Parcel and livereload

  1. My 2023 round-up

24th January 2024 My belated round-up of 2023, including conferences, work, arts and crafts, personal life and media!

  1. Web Performance Calendar — Ten optimisation tips for an initial web performance audit

14th December 2023 A post on the the Web Performance Calendar with handy tips for an site performance audit

  1. HTMHell Advent Calendar — Getting started with Web Performance

14th December 2023 A post on the the HTMHell Advent Calendar about how to get started with web performance including some tips!

  1. Interop Priority Game 2024

17th November 2023 Prioritising the proposals for the Interop Project 2024 as I'd like, prompted by Brian Kardell's "Let's Play a Game"

  1. Alternative text for "I'm a Luddite (and So Can You!)"

2nd August 2023 Alternative text for the web comic from Tom Humberstone about a history of the Luddites and how you can and should also be a Luddite

  1. Bone conduction earphones revolution — Aftershokz Aeropex review

30th July 2023 The bone conduction earphones from Aftershokz blew my mind and are the best earphones I've ever used! Reviewed 9/10.

  1. Simple, cheap GeoIP API using Netlify Edge functions

1st May 2023 How you can use Netlify to set up your own GeoIP API service with no rate limits, payment plans or tracking!

  1. Simple, cheap GeoIP API using Vercel Edge functions

30th April 2023 How you can use Vercel to set up your own GeoIP API service with no rate limits, payment plans or tracking!

  1. Searching for a Mastodon app for Android

26th March 2023 There are plenty Android apps to access Mastodon and the Fediverse, which one works best for me?

  1. Displaying Hillwalking routes on the web with GPX files and Leaflet

23rd January 2023 Display GPX route files from a GPS tracker on the web using Javascript, Leaflet and an Outdoors Tilelayer

  1. GrapheneOS as my daily-driver mobile OS

15th January 2023 My experience running GrapheneOS on a Google Pixel 6 over the past few months as my daily-driver phone OS

  1. My 2022 round-up

30th December 2022 Happy new year! This is a round-up of my 2022, including conferences, work, personal life and media!

  1. My comments to Competition and Markets Authority on mobile browser competition

18th July 2022 My submission to a Competition and Market's Authority consultation on Mobile Browser Competition

  1. Code Splitting in Alpine.js

30th May 2022 Code splitting in JavaScript projects and for Alpine.js

  1. Async Alpine — Asynchronous Alpine component loading

30th May 2022 Async Alpine for loading Alpine.js components asynchronously and lazily

  1. SVG generative mountain ridge dividers

21st April 2022 Generative mountain ridge dividers using videogame terrain generation techniques, JavaScript and SVG

  1. Managing tracking consent with Cead Consent

10th April 2022 How to manage tracking scripts and consent easily using Cead Consent

  1. Personal site stack for alistairshepherd.uk

23rd December 2021 The technical stack for alistairshepherd.uk including 11ty, Sass, esbuild and gulp

  1. Web Nostalgia and Lost In Translation

30th August 2021 Ramblings about web nostalgia, early web experiments and translating through many different languages

  1. Front End Web Development Feeds and Newsletters

15th July 2021 Blogs, articles and newsletters I follow to keep up-to-date with Frontend web development.

  1. Conditionally loading a native image lazyload polyfill/library

11th June 2021 How you can feature detect native image lazyloading support and load a JS library if not.

  1. Conditionally loading a polyfill for :focus-visible

21st May 2021 Helpful snippet to load the polyfill for CSS pseudo class :focus-visible conditionally.

  1. SVG Landscape with live colour theming - new site part 2

17th February 2021 'Live' colour-changing landscape using custom properties for an SVG landscape.

  1. Making a Parallax SVG Landscape - new site part 1

29th January 2021 How I made the parallax SVG landscape in the header of my website. First of a series of two.

  1. Fixes for Koken Problems

17th September 2020 Koken is an old CMS for photographers I've worked with, these are some fixes for those still using it.