Journal archive: 2018



2018 in numbers

The quantified site. With sparklines.

Words I wrote in 2018

Blogging the year away.

Books I read in 2018

Fiction and non-fiction, in more-or-less equal measure.

Songs I liked from 2018

Five songs.

Audio I listened to in 2018

Three podcasts from 2018 that I can recommend.

Cindy Li



This means nothing to me.


I’m on Team Firefox.

Programming CSS

A language so powerful that we have to stop ourselves from using all its features.

Prototypes and production

Don’t build prototypes with a production mindset. Don’t release prototype code into production.

Food and music

The same, but different.


November was a busy month for events.

Optimise without a face

Sprinkle some machine learning on image optimisation.

Push without notifications

Making use of the real-time nature of push notifications without the annoying notification part.

Webmentions at Indie Web Camp Berlin

Technical and ethical questions.

Service workers and videos in Safari

Diagnosing a video playback issue in Safari, thanks to a timely blog post.

Service workers and browser extensions

If you’ve got a service worker issue, it might not be a problem with your code.

An nth-letter selector in CSS

The latest installment in the long tradition of calling for this pseudo-element.


HTML. JavaScript. Why not both?

Preparing a conference talk

The four steps I took in putting together a presentation.

Service workers in Samsung Internet browser

Samsung Internet browser doesn’t yet support asynchronous `waitUntil`, but that’s okay.

A framework for web performance

Where should you be focusing your efforts when it comes to improving your site’s performance? Here’s a reusable framework for figuring it out.

Several people are writing

Anne Gibson, Alice Bartlett, Patrick Rhone, Sara Soueidan, Laura Kalbag, Brendan Dawes, Robin Rendle, Khoi Vinh, Amber Wilson, Austin Kleon, and Tim Kadlec write.

The top four web performance challenges

Counting down the charts—what will be in the number one spot?

Robustness and least power

A tale of two principles.


Yuval Noah Harari’s bestseller is a frustratingly uneven work.


Web design is a two-way street. And that’s okay.

Console methods

Debugging fetch events in service workers.

Greater expectations

Some anecdata about installation expectations for progressive web apps.


I’m using Firefox (for now).

The history of design systems at Clearleft

From pattern portfolios to Fractal.

Altering expectations

How do we let people know what the web can do?

CSS grid in Internet Explorer 11

IE11 doesn’t support CSS grid.

Links, tags, and feeds

You can filter my ramblings by subscribing to specific tags.

Twitter and Instagram progressive web apps

You have nothing to lose but two oversized native apps on your home screen.

Components and concerns

Gotta keep ‘em separated.

The trimCache function in Going Offline

An error in chapter seven.

Speaking my brains in Boston

Four talks in two days.

Name That Script! by Trent Walton

A presentation at An Event Apart Boston 2018.

Building More Expressive Products by Val Head

A presentation at An Event Apart Boston 2018.

Why Design Systems Fail by Una Kravets

A presentation at An Event Apart Boston 2018.

New tools for art direction on the web

Variable fonts + CSS grid + service workers

Praise for Going Offline

I got yer social proof right here…

Detecting image requests in service workers

It turns out that you can’t rely on the `accept` header.

Registering service workers

Pour one out for rel=”serviceworker” is a progressive web app

The Clearleft website works offline …and about time too!


Offline could be the new normal.


Thinking about the end game.


In praise of unmonetisable enthusiasms.

The Gęsiówka Story

Republishing a forgotten piece of history.


Applying the principle of least power to tools and technologies.

HTTPS + service worker + web app manifest = progressive web app

Defining the damn thing over and over again.

Unworn Pleasures

The T-shirt of the band of the scientist.

Choosing tools for scaling design

We shape our tools, and thereafter our tools shape our processes, budgets, and recruitment.

Google Duplicitous

Computer Human Interaction

Alternative analytics

Google Analytics is not the only option.

Process and culture

Process is a four letter word.

Design systems

The pattern library map is not the design system territory.

Good griddance

How CSS grid is making my life easier.


Avengers are wizards; Thanos is a prophet.

Service worker resources

Hyperlinks to help you get your site working offline.


Giving thanks.

Going Offline, available now!

A Book Available.


Three upcoming workshops on field research, web animation, and responsive web typography.


Thanks, Apple. Thapple.

That new-book smell

Going Offline.

Technical balance

Why I had two technical editors working with me on Going Offline, with opposite levels of experience.

The audience for Going Offline

A book about service workers that doesn’t assume any prior knowledge of JavaScript.

Table of Contents for Going Offline

From zero to service worker hero in nine short chapters.

2001 + 50

The fiftieth anniversary of the greatest film ever made.

Live-blogging An Event Apart Seattle

A run-down of the talks I managed to document.

Understandable excitement

Why I get more excited about new CSS features and JavaScript APIs than I do about new frameworks, libraries, or build tools.

Designing Progressive Web Apps by Jason Grigsby

A presentation at An Event Apart Seattle 2018.

Navigating Team Friction by Lara Hogan

A presentation at An Event Apart Seattle 2018.

Announcing Going Offline from A Book Apart

I’ve written a book about service workers for web designers. You can pre-order it now.

Everything You Know About Web Design Just Changed by Jen Simmons

A presentation at An Event Apart Seattle 2018.

Fit For Purpose: Making Sense of the New CSS by Eric Meyer

A presentation at An Event Apart Seattle 2018.

Graduating to Grid by Rachel Andrew

A presentation at An Event Apart Seattle 2018.

Scenario-Driven Design Systems by Yesenia Perez-Cruz

A presentation at An Event Apart Seattle 2018.

Digital Marketing Strategies for the Busy “Web Master” by Sarah Parmenter

A presentation at An Event Apart Seattle 2018.

Beyond Engagement: the Content Performance Quotient by Jeffrey Zeldman

A presentation at An Event Apart Seattle 2018.

Links from a talk

Hyperlinks for the curious.

A workshop on building for resilience

The progressive web: a day-long workshop.

Minimal viable service worker

Boosting performance with a general-purpose service worker script.

Just change it

Pull requests to remove the word “just” from documentation.

Faraway February

One month in less than one minute.

Offline itineraries with service workers

Turbo-boosting travel sites into progressive web apps.

Ends and means

The best lack all conviction, while the worst are full of passionate intensity.

Global Diversity CFP Day—Brighton edition

This Saturday, February 3rd—come one, come all!

Famous first words

Hello, world.

GDPR and Google Analytics

Do you have permission for those third-party scripts?

Design ops for design systems

Defining the damn thing.

Needs must

The tension between developer convenience and user needs.


JavaScript and the observer effect.

Analysing analytics

Ain’t no third party like a Google Analytics third party.

Words I wrote in 2017

Best of the blog.

Food I ate in 2017

Portugal, Singapore …and Brighton.