If you’re considering moving to Mastodon, but not ready to give up on Twitter yet, you should check out this awesome, highly-configurable cross-posting tool.
The Best Of The Internets
Mastodon Twitter Crossposter
Why we need CSS Speech
I got really excited about aural style sheets back in the day, only to have my hopes dashed when I discovered no one supported them. Then came ReadSpeaker (and its ilk), which started to move in that direction, but the solutions are far from perfect.
I even tinkered a bit with the Speech Synthesis API to achieve something akin to a functional listening experience for this blog. Would love to go back to doing it in CSS though. I hope this happens!
PWAs in 2022
Curious to know what’s going on with Progressive Web Apps in 2022? The 2022 edition of the Web Almanac is out, with an excellent chapter on PWAs by Diego Gonzalez and Beth Pan.
Overlays Underwhelm
Excellent talk from Adrian Roselli on the problematic nature of accessibility overlays.
He’s posted a text version of the talk on his site as well.
Control
Early on in my journey as a web designer, Molly Holzschlag taught me the importance of controlling everything you can, up until the point that you realize you must relinquish control. In this piece, Jeremy Keith explores the tension around control and, ultimately, echoes Molly’s perspective:
The web is filled with uncertainties—browsers, devices, networks. You can’t possibly account for all of the possible variations. On the web, you have to relinquish some control.
How to (not) make a button
I love this piece from Tomas Pustelnik. It walks through all the work you need to do to build a fake button using a div
when you could have just used a button
.
It’s kinda the inverse of a piece I wrote for Smashing a few years back: Developing Dependency Awareness.
Will Serving Real HTML Content Make A Website Faster? Let’s Experiment!
When you’ve worked on the web for as long as I have, you see trends come and go. I’ve witnessed at least three different eras where folks began to put all their eggs in the JavaScript basket, only to realize the massive hits they were taking to performance.
In this piece for WebPageTest, Scott Jehl uses a new “experiments” feature to demonstrate how serving HTML would make a ton of popular websites much, much faster. Some of these companies learned this lesson previously (and even wrote about it) only to have thrown their own advice out the window, which is disappointing.
Serving HTML will always result in faster page loads. There is no way around that. Sending your JavaScript framework to the client and having it render the HTML adds a ton of extra steps:
- Download skeleton markup
- Download high priority JavaScript file(s) and CSS
- Load JavaScript program into memory
- Execute JavaScript
- Generate actual markup (and replace skeleton)
- Request assets referenced in markup (e.g., images, videos)
- Render page
- Load deferred assets
Compare that to the HTML-first route:
- Download markup
- Download high priority JavaScript file(s) and CSS
- Request assets referenced in markup (e.g., images, videos)
- Render page
- Load deferred assets
Sure, on subsequent navigations having JavaScript request only the bits and pieces you need is a performance win, but that first render is a beast. And you can totally load that JavaScript later, after the page is rendered.
Unconscious Biases That Get in the Way of Inclusive Design
This piece offers an excellent overview of a handful of common biases and how they can negatively impact our work.
For even more detail (and biases), I highly recommend David Dylan Thomas’ book Design for Cognitive Bias.
Better accessible names
This post offers straightforward guidance on how to ensure your interactive components are easily understood by people who rely on screen readers and other assistive technologies. And, honestly, Hidde’s authoring guidance is applicable to the main content of your site as well.
Style with Stateful, Semantic Selectors
Another great post about the combined power of ARIA & CSS to enable your designs from truly semantic markup.
This is an approach I’ve used often with complex interfaces like tabs and it works a treat.