Blog

The Final Off-Canvas Navigation?

Eight years ago I wrote a (then) modern guide to implementing off-canvas navigation for Smashing Magazine. My original demo is still online (links in the article are broken). It’s rather quaint by today’s standards. Back in 2013 responsive design was not yet fully accepted as the norm. Unthinkable! JavaScript was needed to fix the nav […]

Relative Date Formatting in JavaScript

Did you know those behemothic JavaScript date libraries are basically obsolete? A few weeks ago I learnt how to use the Internationalization API for natural alphanumeric sorting. This week I’ve been using the DateTimeFormat and RelativeTimeFormat APIs. Like all native APIs they’re a little verbose and unintuitive, but also extremely powerful. Browser support has caught up […]

Natural Alphanumeric Sorting in JavaScript

I’m building a progressive web app (PWA, aka website) to play audiobooks. It’s a side project that is teaching me a lot. The seemingly simple features are some of the hardest to implement. Natural alphanumeric sorting is one problem that took me half a day to solve. It’s reminiscent of an issue I debugged in […]

Cloudflare Pages and Workers

I use both GitHub Pages and Netlify for static web hosting. GitHub Pages are great for project documentation. Netlify allows more control. Cloudflare Pages is a new contender to the game offering a similar build and deploy process. I have a new side project in the works. A good opportunity to try out Cloudflare Pages. The […]

CSS Focus State

One big and easy win for website accessibility is focus state. Unfortunately this is too often ignored, and worse, actively regressed. Early in my career I was guilty of: This removes the default browser style and makes keyboard navigation practically impossible. Later I would learn the error of my ways and allow the browser to do […]

Built with Deno

Things are moving fast over in Denoland. When I last checked in Deno was decidedly beta. Revisiting this month I see words like “stabilization” in the release notes. If there’s one thing a JavaScript fiend like myself revels in it’s dropping reliable and proven code for a shiny new replacement. Deno is just that; a […]

Web Browsers in Docker

Last week I wrote about my new Docker strategy for build tools. Following that I wondered if I could containerise browser testing too. Not just headless automation, but real click around, inspector tools usage. Admittedly I thought this was a silly idea from the get-go. The results, however, have surprised me. The Setup Docker containers are usually […]