Tags: medium

European tour

Three events in three cities.

The imitation game

The only way to win is not to play.

Marking up help text in forms

Two accessibility alternatives.

Why do pull quotes exist on the web?

Won’t somebody think of the readers?

Exploring web technologies

From the very basics to the cutting edge.

Extensible web components

Web components are supposed to extend the web, not replace it.


A few examples of animation on the web.

Class teacher

When abstraction becomes obfuscation.

Save the dates for Indie Web Camp Brighton 2016

September 24th and 25th. Be there and be square.

Backdoor Service Workers

The tragedy of the iframe commons.

Unlabelled search fields

A look at some of the accessibility options.

Talking about hypertext

Preparing and publishing a presentation on one single HTML element.

On the side

My Clearleft colleagues are an inspiration.


You can help my friend.

Sticky headers

A few things to remember if you’re going to using position:fixed.

The Progressive Web App Dev Summit

A field report from Amsterdam.

Amsterdam Brighton Amsterdam

Bouncing between the beach and the canal.

Thank you, jQuery

The JavaScript library that led the way.

Progressive web app store

I’ve got a business proposition for you.

A wager on the web

What’s the worst that could happen?

Taking an online book offline

It’s a book. It’s a progressive web app. It’s HTML5 For Web Designers.

Regression toward being mean

I need to get better at balance.

A little progress

Some code to show a progress bar for file uploads.

Switching to HTTPS on Apache 2.4.7 on Ubuntu 14.04 on Digital Ocean

The super-sexy title is because this stuff tends to be super-specific to the server setup.

Regressive Web Apps

Killing the web to save it.

Owning my words

My website, my words.

A web for everyone

The reality of unevenly-distributed browser features isn’t a bug, it’s a feature.

Content Buddy

Making myself available for proof-reading, editing, and general content wrangling.

Indie Web Camp Düsseldorf

Two years in a row at the excellent Sipgate offices in Düsseldorf.

Conversational interfaces

A history.

Machine supplying

Book recommendations.


Pimping my home page at Indie Web Camp Nuremberg.

Accessible progressive disclosure revisited

From buttons to links.

Mistakes on a plane

In which Comic Book Guy critiques in-flight entertainment.

A brief history of the World Wide Web by web developers

The web is a tiny pony.

The web on my phone

How do you solve a problem like Safari?

Making things happen

Crazy schemes that just might work.


They’re just restin’.

Accessible progressive disclosure

Using ARIA attributes to power JavaScript functionality.

The voice of MOL

Chipmunks in space.

Moderating EnhanceConf 2016

I had the honour being Master of Ceremonies at the world’s first conference dedicated to progressive enhancement.

Design sprinting

Packing a whole lotta learning into just five days.


Trying not to compromise the sign-up flow on Huffduffer.

Independently published

I want to thank these people for sharing.

Enhance! Conf!

The first conference dedicated to progressive enhancement.

New edition

The second edition of HTML5 of Web Designers

Handling redirects with a Service Worker

A bugfix for Chrome’s errant behaviour.


A little pattern of enhancement.

Service Worker notes

Jotting down some observations.

Huffduffing for podcasters

Making your audio discoverable.

Words of welcome

Writing is interface design.


The power of art.

Hamburger, hamburger, hamburger

Rigidly defined areas of doubt and uncertainty.


Well, that escalated quickly.


Screen reading.

One day in London

To the capital and back.

Separated at death

Farewell, doppelgänger.

Homebrew header hardening

Step-by-step instructions for more secure response headers on Apache.

Small lessons, loosely learned

Softly softly, grokky JavaScript.

The Force Awakens

The inevitable opinion piece on *that* movie.

Year’s end

Marking the start of 2016.


A CSS fix for sluggish tap responses on mobile.

Pseudo and pseudon’t

Pseu-pseu-pseudo classes

Shadows and smoke

Namen sind Schall und Rauch.

Where to start?

Fallbacks and enhancements are fundamentally different things.

A year of learning

Educating Charlotte.

Cache-limiting in Service Workers …again

Trying to figure out which event to use as a trigger.

Metadata markup

So many standards to choose from.


The latest Clearleft internship project has just come to an end. It’s been truly inspiring.

Cache-limiting in Service Workers

This should work in theory. It doesn’t work in practice.

Full Meaning Ampersand

Brighton has been positively bursting with excellent events lately.

Home screen

The web is getting progressively enhanced.

My first Service Worker

Enhancing my site with the niftiest new technology.


I’m Brighton’s Craig Newmark, apparently.


Defeating the inner critic with narrative trickery.


Why is it more nerve-wracking to speak to a small group of people you know than a large group of strangers?

Syndicating to Medium

POSSE: Publish (on your) Own Site, Syndicate Elsewhere.

Mind set

Trying to see the other point of view.

Someone will read this

Haunted by a hyperlink.

Rosa and Dot

Finding Ada …right here in Brighton.

AMPed up

First impressions of Google’s RSS killer …no wait, they already killed RSS.

Web! What is it good for?

Not absolutely nothing, but not absolutely everything either.


There is a crack, a crack in everything. That’s how the light gets in.


The web is not a platform.

Twitter permissions

Don’t be sheeple, tweeple!

Iron Man and me

The story of how one of my Flickr pictures came to be used in a Hollywood movie.


Last night in San Francisco.