Skip to the main content

Writing

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

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

    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

  2. My day at State of the Browser 2024

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

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

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

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

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

  5. Proxying an Image CDN with Cloudflare workers

    Using free Cloudflare workers to proxy an image CDN on the main origin for performance

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

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

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

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

  8. My 2023 round-up

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

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

    A post on the the Web Performance Calendar with handy tips for an site performance audit

  10. HTMHell Advent Calendar — Getting started with Web Performance

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

  11. Interop Priority Game 2024

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

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

    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

  13. Bone conduction earphones revolution — Aftershokz Aeropex review

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

  14. Simple, cheap GeoIP API using Netlify Edge functions

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

  15. Simple, cheap GeoIP API using Vercel Edge functions

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

  16. Searching for a Mastodon app for Android

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

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

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

  18. GrapheneOS as my daily-driver mobile OS

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

  19. My 2022 round-up

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

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

    My submission to a Competition and Market's Authority consultation on Mobile Browser Competition

  21. Code Splitting in Alpine.js

    Code splitting in JavaScript projects and for Alpine.js

  22. Async Alpine — Asynchronous Alpine component loading

    Async Alpine for loading Alpine.js components asynchronously and lazily

  23. SVG generative mountain ridge dividers

    Generative mountain ridge dividers using videogame terrain generation techniques, JavaScript and SVG

  24. Managing tracking consent with Cead Consent

    How to manage tracking scripts and consent easily using Cead Consent

  25. Personal site stack for alistairshepherd.uk

    The technical stack for alistairshepherd.uk including 11ty, Sass, esbuild and gulp

  26. Web Nostalgia and Lost In Translation

    Ramblings about web nostalgia, early web experiments and translating through many different languages

  27. Front End Web Development Feeds and Newsletters

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

  28. Conditionally loading a native image lazyload polyfill/library

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

  29. Conditionally loading a polyfill for :focus-visible

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

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

    'Live' colour-changing landscape using custom properties for an SVG landscape.

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

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

  32. Fixes for Koken Problems

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