How to prevent user-triggered caching of offline responses from service workers.
How to use aliases in Bash scripts.
How to stash unstaged changes in Git pre-commit scripts to prevent testing against unstaged code.
Using the Web Share API to invoke native sharing.
Differentiating alt text from main article text using CSS.
How to bypass lazy loading for images stored in the application cache.
How to cache service workers so they update correctly.
Migrating to HTTPS using Let's Encrypt and Certbot.
Converting my Furigana Toggle Chrome extension to a Firefox add-on.
Showing focus outlining only when focusing via keyboard not mouse.
How to fix background SVG images in Edge.
Creating a flash briefing skill for Amazon Alexa.
How to lazy load images with the Intersection Observer API
My experience at my first conference - JSConf EU 2017
Getting started with dynamic and flexible styling using CSS Custom Properties.
Learning to make electronic music tools in the browser. Algorithmic Music.
Learning to make electronic music tools in the browser. Creating user interfaces for Web Audio API music tools with Nexus UI.
Learning to make electronic music tools in the browser. Creating a theremin with the Web Audio API.
window.matchMedia and altering event listeners based on media queries.
A collection of tips for creating a great multilingual website.
How to include Git hooks in a repository to share with other team members.
Make your search results delicious by adding some structured data breadcrumbs!
Leveraging structured data for web app SEO. Help search engines understand your app!
Creating geostationary satellite animations with the Dundee Satellite Receiving Station animation web application.
Scraping movie listings with Ruby and Nokogiri. A beginners guide to web scraping.
An introduction to me and how I became interested in software.