2020 in numbers
Numbers and sparklines.
Numbers and sparklines.
Fiction and non-fiction, rated and reviewed.
Blogging through a very strange year.
Styling sheet music …and then unstyling it.
Fixing a heisenbug with silence.
The sound of worlds colliding.
I have been elected to the AMP advisory committee. My reign of terror begins!
The terminology of applying CSS.
Do websites need to sound the same in every screen reader?
The greatest trick the devil ever pulled was convincing the world that behavioural advertising is more effective than contextual advertising.
Breaking the web for security.
Wishing for Cold War Space Race dramas from the Russian perspective.
Caches are for copies.
Apple’s policy of locking browser updates to operating system updates is bad for the web and bad for the planet.
An exception to my general rule that ARIA attributes should be added with JavaScript.
Manually machine tagging books as a kind of mindless meditation.
Trying to understand why people think they need to make single page apps.
Apply your ARIA attributes with JavaScript and then use them as hooks in your CSS.
Abstracting common interaction patterns as a starting point for accessible components.
Pushing for a share button type—the story so far…
Treat every browser feature like an experimental feature.
A defensive enhancement to avoid losing everything you just typed into a textarea.
Narrated by yours truly.
After fifteen years, it’s time to commit.
It’s not because it’s declarative—it’s because it’s robust.
A tune a day, every day, for 200 days.
For some reason, Google Fonts only provides .ttf files if you’re self-hosting. I don’t know why.
An interface pattern for Ajax interactions that’s borrowed from video games.
When it comes to web performance, there are technical issues and then there are human issues.
As mobile and desktop operating systems converge, Apple’s hypocritical browser policy becomes clearer and clearer.
A brain-dumping tool that matches my process.
Kicking the tyres on a declarative Web Share API.
button type=”share”
A spoiler-filled look at the new Christopher Nolan film.
It can autocomplete, but how do you get it to autosubmit?
Dining out safely, thanks to the World Wide Web.
Hyperlinks to accompany a talk.
If you’re making a library or framework, treat it like a polyfill.
How to use HTML’s `download` attribute even if you’re storing your files on S3.
That’s a wrap!
You can kiss URLs goodbye after all.
The final episode of season one came right down to the wire.
An interesting idea from the birth of CSS.
My subconscious is an asshole.
A book recommendation via conspiracies, games, pattern-matching, hypertext and apophenia.
The penultimate episode of this season has seen things you people wouldn’t believe.
The fourth episode gets meta about the semantics of semantics.
The third episode is a case study—and what a case study!
Hey! Been tryin’ to meet you.
The second episode uses conference talks as raw material.
Making the moral argument.
There are observational principles, and there are imperative principles. Let’s put them together.
Different browser vendors have different priorities.
The first episode is here! Please be gentle with me.
Don’t touch that DOM.
Subscribe today—the first episode drops this week.
I’ve made a /feeds URL.
Reversing entropy.
Adding another theme to my stylesheet switcher.
Life, but not as we know it.
💯 🎶 🎉
Lost in translation.
This behaviour surprised me (at first).
Black lives matter.
Combining custom properties, hsl(), and calc() to get cascading button styles.
A2 _B2-_BAG A2 (3zGF C2
Brittleness is the opposite of resilience. But they both share something in common.
A moment in time seven decades ago.
Worst buddy movie ever.
Happy tenth birthday to A Book Apart and HTML5 For Web Designers!
A run-down of what I’ve been watching during The Situation
The web browser is your mutual friend.
The viewing order for a Star Wars movie marathon
Using design principles to embody your priorities.
Marking up the books you’re reading for aggregation and visualisation.
Minimum viable television and minimum viable websites.
A problem shared is a problem halved. And the web has a big problem with awful overlays.
Questions and answers from the opening talk of an online conference.
Four audio outings.
Figuring out how Safari on iOS uses the Web Share API.
How the pipes of the web have been closed off.
I was on a different kind of podcast.
Take some time out to listen to this story of self isolation. It’s not like you’ve got anywhere to be, right?
William Gibson, Arthur C.Clarke, Daniel Dafoe, Stephen King, Emily St. John Mandel, John Wyndham, Martin Cruz-Smith, Marina Koren and H.G. Wells.
Kiss your service workers goodbye on iOS.
Embedding YouTube videos without sacrificing performance.
Tinkering with your website can be a fun distraction.
Think global, act local. In fact, just stay at home.
The meaning of life.
I am, unsurprisingly, working from home.
Postel’s port numbers.
You don’t need Chrome to run Lighthouse.
A weekend of food and music to celebrate my birthday.
Reviewing the forthcoming memoir.
Security or access: choose one.
Measuring performance is important. Communicating the story of performance is equally important.
Why do I like fluid responsive typography? Let me count the ways…
Jake’s got an idea for improving the security of displaying URLs in browsers.
Progressive enhancement. I do not think it means what you think it means.
Design systems are neither good nor bad (nor are they neutral).
Some potential reading material for 2020.
Taking a tour.
Citing Frank Chimero, Debbie Chachra, and Lisa O’Neill.
There’s a common pattern here.
One way of looking at the new browser landscape.
Saturday, March 14th and Sunday, March 15th.
Browsers are still trying to figure out how to highlight progressive web apps.
What would the repercussions be if browsers were to tweak some of their default behaviours?
My spoilertastic thoughts on the final film in the Skywalker saga.
A quick look back at the year just gone.