Playing The Connaughtman’s Rambles (jig) on mandolin:
Archive: August, 2020
125
5th | 10th | 15th | 20th | 25th | 30th | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
12am | |||||||||||||||||||||||||||||||
4am | |||||||||||||||||||||||||||||||
8am | |||||||||||||||||||||||||||||||
12pm | |||||||||||||||||||||||||||||||
4pm | |||||||||||||||||||||||||||||||
8pm |
Monday, August 31st, 2020
Reading Last Night’s Fun: In And Out Of Time With Irish Music by Ciaran Carson.
Sunday, August 30th, 2020
Playing McFadden’s Handsome Daughter (reel) on mandolin:
The land before modern APIs – Increment: APIs
This is a wonderful tale of spelunking into standards from Darius Kazemi—I had no idea that HTTP status codes have their origin in a hastily made decision in the days of ARPANET.
20 people got together at MIT in 1972 for a weekend workshop. On the second day, a handful of people in a breakout session decided it would be a good idea to standardize error messages between two services for transferring data, even though those two services had not necessarily planned to speak to one another. One thing led to another, and now 404 is synonymous with “I can’t find the thing.”
This story is exactly the kind of layering of technologies that I was getting at in the first chapter of Resilient Web Design.
HTTP status codes are largely an accident of history. The people who came up with them didn’t plan on defining a numerical namespace that would last half a century or work its way into popular culture. You see this pattern over and over in the history of technology.
mnot’s blog: RFC8890: The Internet is for End Users
RFC 8890 maybe the closest thing we’ve got to a Hippocratic oath right now.
A community that agrees to principles that are informed by shared values can use them to navigate hard decisions.
Many discussions influenced this document, both inside and outside of the IETF and IAB. In particular, Edward Snowden’s comments regarding the priority of end users at IETF 93 and the HTML5 Priority of Constituencies were both influential.
The radium craze | Eric Bailey
The radioactive properties of React.
Saturday, August 29th, 2020
Playing The Jig Of Slurs on mandolin:
Replying to a tweet from @kittensyzygy
Thank you so much—glad you enjoyed it!
Friday, August 28th, 2020
The Thing With Leading in CSS · Matthias Ott – User Experience Designer
An excellent explanation of the new leading-trim
and text-edge
properties in CSS, complete with an in-depth history of leading in typography.
(I’m very happy to finally have a permanent link to point to about this, rather than a post on Ev’s blog.)
Why you should hire a frontend developer - Technology in government
This is a really good description of the role of a front-end developer.
That’s front end, not full stack.
Playing The Providence (reel) on mandolin:
Replying to a tweet from @genmon
Great idea!
I’m using your XSLT file to style my feeds (minus the hard-coded img
):
Robin Rendle ・ A Rocket-Powered Jumbo Jet
Before the hagiographical praise for working with an iPad Pro, Robin nails the fundamental shape of the design process:
I had forgotten that there are two modes of design, just as there is in writing.
The first mode is understanding the problem, getting a ten-thousand foot view of the land. It’s getting people to acknowledge that this really is the problem we need to agree upon. This work needs to happen in a sketchbook in the form of messy, back-of-the-napkin drawings or in writing. All this helps you to form a proper argument and focus your thoughts.
The second mode of design is taking that ten-thousand foot view and zooming all the way in to the hairs on the back of the rabbit; figuring out the precise UI and components, the copywriting, the animations, the everything else. This should be done in a design tool like Figma or Sketch. And this is when we should be talking about color palettes, icons, design systems, and consistency.
The problem with almost all design work is that first phase never really happens. People don’t take that ten thousand foot view of the problem and are focusing instead on the pixels; they’re trapped by the system they know too well.
Yes, yes, yes! Spot on:
I think people get stuck in that second mode because productivity in design is often tied to “how many pages or frames did I design today?” when productivity should instead be thought of as “how did my understanding of the problem change?
Revisiting Adaptive Design, a lost design movement (Interconnected)
This sounds like seamful design:
How to enable not users but adaptors? How can people move from using a product, to understanding how it hangs together and making their own changes? How do you design products with, metaphorically, screws not nails?
Make Me Think | Jim Nielsen’s Weblog
The removal of all friction should’t be a goal. Making things easy and making things hard should be a design tool, employed to aid the end user towards their loftiest goals.
Thursday, August 27th, 2020
Playing The Snowy Path (slig jig) by Mark Kelly on bouzouki:
Autonomy Online: A Case For The IndieWeb — Smashing Magazine
A wonderful introduction to the indie web—Ana really conveys her sense of excitement!
Wednesday, August 26th, 2020
Playing Carolan’s Draught on mandolin:
Submitting a form with datalist
I’m a big fan of HTML5’s datalist
element and its elegant design. It’s a way to progressively enhance any input
element into a combobox.
You use the list
attribute on the input
element to point to the ID of the associated datalist
element.
<label for="homeworld">Your home planet</label>
<input type="text" name="homeworld" id="homeworld" list="planets">
<datalist id="planets">
<option value="Mercury">
<option value="Venus">
<option value="Earth">
<option value="Mars">
<option value="Jupiter">
<option value="Saturn">
<option value="Uranus">
<option value="Neptune">
</datalist>
It even works on input type="color"
, which is pretty cool!
The most common use case is as an autocomplete widget. That’s how I’m using it over on The Session, where the datalist
is updated via Ajax every time the input is updated.
But let’s stick with a simple example, like the list of planets above. Suppose the user types “jup” …the datalist will show “Jupiter” as an option. The user can click on that option to automatically complete their input.
It would be handy if you could automatically submit the form when the user chooses a datalist option like this.
Well, tough luck.
The datalist
element emits no events. There’s no way of telling if it has been clicked. This is something I’ve been trying to find a workaround for.
I got my hopes up when I read Amber’s excellent article about document.activeElement
. But no, the focus stays on the input when the user clicks on an option in a datalist.
So if I can’t detect whether a datalist has been used, this best I can do is try to infer it. I know it’s not exactly the same thing, and it won’t be as reliable as true detection, but here’s my logic:
- Keep track of the character count in the input element.
- Every time the input is updated in any way, check the current character count against the last character count.
- If the difference is greater than one, something interesting happened! Maybe the user pasted a value in …or maybe they used the datalist.
- Loop through each of the options in the datalist.
- If there’s an exact match with the current value of the input element, chances are the user chose that option from the datalist.
- So submit the form!
Here’s how that translates into DOM scripting code:
document.querySelectorAll('input[list]').forEach( function (formfield) {
var datalist = document.getElementById(formfield.getAttribute('list'));
var lastlength = formfield.value.length;
var checkInputValue = function (inputValue) {
if (inputValue.length - lastlength > 1) {
datalist.querySelectorAll('option').forEach( function (item) {
if (item.value === inputValue) {
formfield.form.submit();
}
});
}
lastlength = inputValue.length;
};
formfield.addEventListener('input', function () {
checkInputValue(this.value);
}, false);
});
I’ve made a gist with some added feature detection and mustard-cutting at the start. You should be able to drop it into just about any page that’s using datalist. It works even if the options in the datalist are dynamically updated, like the example on The Session.
It’s not foolproof. The inference relies on the difference between what was previously typed and what’s autocompleted to be more than one character. So in the planets example, if someone has type “Jupite” and then they choose “Jupiter” from the datalist, the form won’t automatically submit.
But still, I reckon it covers most common use cases. And like the datalist
element itself, you can consider this functionality a progressive enhancement.
Replying to a tweet from @stml
KEXP: https://kexp.org/
Tuesday, August 25th, 2020
Playing Calliope House (jig) by Dave Richardson on mandolin:
Replying to a tweet from @Cennydd
The only outlining tool that makes sense for my brain is https://kinopio.club/
It’s more like a virtual crazy wall than a virtual Dewey decimal system.
The difference between aria-label and aria-labelledby - Tink - Léonie Watson
A handy reminder from Léonie (though remember that the best solution is to avoid the problem in the first place—if you avoid using ARIA, do that).
Monday, August 24th, 2020
Playing The Maid Behind The Bar (reel) on mandolin:
Sunday, August 23rd, 2020
Playing The Humours Of Glendart (jig) on mandolin:
Saturday, August 22nd, 2020
Playing Scotch Mary (reel) on mandolin:
Played some tunes in the park.
Replying to a tweet from @hdv
On the other hand: https://adactio.com/journal/17323
Friday, August 21st, 2020
Replying to a tweet from @adactio
You could test for support like this:
var testButton = document.createElement("button");
testButton.setAttribute("type","share");
if (testButton.type != "share") {
// polyfill
}
Replying to a tweet from @petele
<button type="share" value="title,text">
?
For non-supporting browsers, it’s a regular button and needs polyfilling, no different to the situation with the JavaScript API. But if supported, no JS needed?
Playing The Miltown Jig on mandolin:
Thursday, August 20th, 2020
Service Workers | Go Make Things
Chris Ferdinandi blogs every day about the power of vanilla JavaScript. For over a week now, his daily posts have been about service workers. The cumulative result is this excellent collection of resources.
Web on the beach
It was very hot here in England last week. By late afternoon, the stuffiness indoors was too much to take.
If you can’t stand the heat, get out of the kitchen. That’s exactly what Jessica and I did. The time had come for us to avail of someone else’s kitchen. For the first time in many months, we ventured out for an evening meal. We could take advantage of the government discount scheme with the very unfortunate slogan, “eat out to help out.” (I can’t believe that no one in that meeting said something.)
Just to be clear, we wanted to dine outdoors. The numbers are looking good in Brighton right now, but we’re both still very cautious about venturing into indoor spaces, given everything we know now about COVID-19 transmission.
Fortunately for us, there’s a new spot on the seafront called Shelter Hall Raw. It’s a collective of multiple local food outlets and it has ample outdoor seating.
We found a nice table for two outside. Then we didn’t flag down a waiter.
Instead, we followed the instructions on the table. I say instructions, but it was a bit simpler than that. It was a URL: shelterhall.co.uk
(there was also a QR code next to the URL that I could’ve just pointed my camera at, but I’ve developed such a case of QR code blindness that I blanked that out initially).
Just to be clear, under the current circumstances, this is the only way to place an order at this establishment. The only (brief) interaction you’ll have with another persn is when someone brings your order.
It worked a treat.
We had frosty beverages chosen from the excellent selection of local beers. We also had fried chicken sandwiches from Lost Boys chicken, purveyors of the best wings in town.
The whole experience was a testament to what the web can do. You browse the website. You make your choice on the website. You pay on the website (you can create an account but you don’t have to).
Thinking about it, I can see why they chose the web over a native app. Online ordering is the only way to place your order at this place. Telling people “You have to go to this website” …that seems reasonable. But telling people “You have to download this app” …that’s too much friction.
It hasn’t been a great week for the web. Layoffs at Mozilla. Google taking aim at URLs. It felt good to see experience an instance of the web really shining.
And it felt really good to have that cold beer.
Playing The Pigeon On The Gate (reel) on mandolin:
Star Trek: The Motion Picture | Typeset In The Future
The latest edition in this wonderful series of science-fictional typography has some truly twisty turbolift tangents.
Wednesday, August 19th, 2020
Make Your Own Dev Tool | Amber’s Website
I love bookmarklets! I use them every day (I’m using one right now to post this link). Amber does a great job explaining what they are and how you can make one. I really like the way she frames them as your own personal dev tools!
Playing The Chicago Jig on mandolin:
radEventListener: a Tale of Client-side Framework Performance | CSS-Tricks
Excellent research by Jeremy Wagner comparing the performance impact of React, Preact, and vanilla JavaScript. The results are simultaneously shocking and entirely unsurprising.
Replying to a tweet from @HarschLanguage
’Tis a tricky enough tune!
Tuesday, August 18th, 2020
Playing The Sally Gardens (reel) on mandolin:
The Just in Case Mindset in CSS
Examples of defensive coding for CSS. This is an excellent mindset to cultivate!
Monday, August 17th, 2020
Loving every single thing about @IreAderinokun’s @AnEventApart talk!
Playing Tell Her I Am (jig) on mandolin:
Replying to a tweet from @HenriHelvetica
Thank you, Henri!
Design Principles For The Web—the links
I’m speaking today at an online edition of An Event Apart called Front-End Focus. I’ll be opening up the show with a talk called Design Principles For The Web, which ironically doesn’t have much of a front-end focus:
Designing and developing on the web can feel like a never-ending crusade against the unknown. Design principles are one way of unifying your team to better fight this battle. But as well as the design principles specific to your product or service, there are core principles underpinning the very fabric of the World Wide Web itself. Together, we’ll dive into applying these design principles to build websites that are resilient, performant, accessible, and beautiful.
That explains why I’ve been writing so much about design principles …well, that and the fact that I’m mildly obsessed with them.
To avoid technical difficulties, I’ve pre-recorded the talk. So while that’s playing, I’ll be spamming the accompanying chat window with related links. Then I’ll do a live Q&A.
Should you be interested in the links that I’ll be bombarding the attendees with, I’ve gathered them here in one place (and they’re also on the website of An Event Apart). The narrative structure of the talk might not be clear from scanning down a list of links, but there’s some good stuff here that you can dive into if you want to know what the inside of my head is like.
References
- Page Weight Matters by Chris Zacharias
- Systems, Mistakes, and the Sea by Robin Rendle
- Patterns Day videos on Vimeo
- Workplace Topology by Danielle Huntrods
- The Design Squiggle by Damien Newman
- The Double Diamond by Design Council
- Canvassing a project by Andy Thornton
- How to run a premortem workshop by Rachel McConnell
- 5 Steps To Better Research by Benjamin Parry
- Design Principles collection
- Design Principles collection by Ben Brignell
- What makes a good design principle? by Matthew Ström
- Priority of Constituencies from HTML Design Principles
- The Eponymous Laws of Tech by Dave Rupert
- Principles of Design by Sir Tim Berners-Lee
- CERN 2019 WorldWideWeb Rebuild
- Data attributes and progressive enhancement by Derek Featherstone
- Government Design Principles by Government Digital Service
- Over-engineering is under-engineering by Baldur Bjarnason
- This Web App Best Viewed By Someone Else presentation by Eric Meyer on YouTube
adactio.com
- The top four web performance challenges
- Principle
- Ubiquity and consistency
- Principles and priorities
- Putting design principles into action
Wikipedia
Mind the gap
In May 2012, Brian LeRoux, the creator of PhoneGap, wrote a post setting out the beliefs, goals and philosophy of the project.
The beliefs are the assumptions that inform everything else. Brian stated two core tenets:
- The web solved cross platform.
- All technology deprecates with time.
That second belief then informed one of the goals of the PhoneGap project:
The ultimate purpose of PhoneGap is to cease to exist.
Last week, PhoneGap succeeded in its goal:
Since the project’s beginning in 2008, the market has evolved and Progressive Web Apps (PWAs) now bring the power of native apps to web applications.
Today, we are announcing the end of development for PhoneGap.
I think Brian was spot-on with his belief that all technology deprecates with time. I also think it was very astute of him to tie the goals of PhoneGap to that belief. Heck, it’s even in the project name: PhoneGap!
I recently wrote this about Sass and clamp:
I’ve said it before and I’ll say it again, the goal of any good library should be to get so successful as to make itself redundant. That is, the ideas and functionality provided by the tool are so useful and widely adopted that the native technologies—HTML, CSS, and JavaScript—take their cue from those tools.
jQuery is the perfect example of this. jQuery is no longer needed because cross-browser DOM Scripting is now much easier …thanks to jQuery.
Successful libraries and frameworks point the way. They show what developers are yearning for, and that’s where web standards efforts can then focus. When a library or framework is no longer needed, that’s not something to mourn; it’s something to celebrate.
That’s particularly true if the library of code needs to be run by a web browser. The user pays a tax with that extra download so that the developer gets the benefit of the library. When web browsers no longer need the library in order to provide the same functionality, it’s a win for users.
In fact, if you’re providing a front-end library or framework, I believe you should be actively working towards making it obselete. Think of your project as a polyfill. If it’s solving a genuine need, then you should be looking forward to the day when your code is made redundant by web browsers.
One more thing…
I think it was great that Brian documented PhoneGap’s beliefs, goals and philosophy. This is exactly why design principles can be so useful—to clearly set out the priorities of a project, so that there’s no misunderstanding or mixed signals.
If you’re working on a project, take the time to ask yourself what assumptions and beliefs are underpinning the work. Then figure out how those beliefs influence what you prioritise.
Ultimately, the code you produce is the output generated by your priorities. And your priorities are driven by your purpose.
You can make those priorities tangible in the form of design principles.
You can make those design principles visible by publishing them.
Netlify redirects and downloads
Making the Clearleft podcast is a lot of fun. Making the website for the Clearleft podcast was also fun.
Design wise, it’s a riff on the main Clearleft site in terms of typography and general layout. On the development side, it was an opportunity to try out an exciting tech stack. The workflow goes something like this:
- Open a text editor and type out HTML and CSS.
Comparing this to other workflows I’ve used in the past, this is definitely the most productive way of working. Some stats:
- Time spent setting up build tools: 00:00
- Time spent wrangling the pipeline to do exactly what you want: 00:00
- Time spent trying to get the damn build tools to work again when you return to the project after leaving it alone for more than a few months: 00:00:00
I have some files. Some images, three font files, a few pages of HTML, one RSS feed, one style sheet, and one minimal service worker script. I don’t need a web server to do anything more than serve up those files. No need for any dynamic server-side processing.
I guess this is JAMstack. Though, given that the J stands for JavaScript, the A stands for APIs, and I’m not using either, technically it’s Mstack.
Netlify suits my hosting needs nicely. It also provides the added benefit that, should I need to update my CSS, I don’t need to add a query string or anything to the link
elements in the HTML that point to the style sheet: Netlify does cache invalidation for you!
The mp3 files of the actual podcast episodes are stored on S3. I link to those mp3 files from enclosure
elements in the RSS feed, which is what makes it a podcast. I also point to the mp3 files from audio
elements on the individual episode pages—just above the transcript of each episode. Here’s the page for the most recent episode.
I also want people to be able to download the mp3 file directly if they want (or if they want to huffduff an episode). So I provide a link to the mp3 file with a good ol’-fashioned a
element with an href
attribute.
I throw in one more attribute on that link. The download
attribute tells the browser that the URL in the href
attribute should be downloaded instead of visited. If you give a value for the download
attribute, it will over-ride the file name:
<a href="/files/ugly-file-name.xyz" download="nice-file-name.xyz">download</a>
Or you can use it as a Boolean attribute without any value if you’re happy with the file name:
<a href="/files/nice-file-name.xyz" download>download</a>
There’s one catch though. The download
attribute only works for files on the same origin. That’s an issue for me. My site is podcast.clearleft.com
but my audio files are hosted on clearleft-audio.s3.amazonaws.com
—the download
attribute will be ignored and the mp3 files will play in the browser instead of downloading.
Trys pointed me to the solution. It turns out that Netlify can do some server-side processing. It can do redirects.
I added a file called _redirects
to the root of my project. It contains one line:
/download/* https://clearleft-audio.s3.amazonaws.com/podcast/:splat 200
That says that any URLs beginning with /download/
should redirect to clearleft-audio.s3.amazonaws.com/podcast/
. Everything after the closing slash is captured with that wild card asterisk. That’s then passed along to the redirect URL as :splat
. That’s a new one on me. I hadn’t come across that terminology, but as someone who can never remember the syntax of regular expressions, it works for me.
Oh, and the 200
at the end is the status code: okay.
Now I can use this /download/
path in my link:
<a href="/download/season01episode06.mp3" download>Download mp3</a>
Because this URL on the same origin, the download
attribute works just fine.
Sunday, August 16th, 2020
Replying to a tweet from @genmon
Darmok and Jalad at Tanagra. Shaka, when the walls fell.
Playing Martin Wynne’s (reel) on mandolin:
Reading Agency by William Gibson.

Web Technologies and Syntax | Jim Nielsen’s Weblog
Syntactic sugar can’t help you if you don’t understand how things work under the hood. Optional chaining in JavaScript and !important
in CSS are ways of solving your immediate problem …but unless you know what you’re doing, they’re probably going to create new problems.
Solid Start
A four-point checklist for inclusive design:
Are you a person that makes digital things for other people? Awesome—because this page is all about making things for people. There are four ways you can improve your creation for everybody. All four are testable, fixable and they improve usability for everybody.
The Clearleft podcast and the decline of design · Paul Robert Lloyd
Now this is the kind of response I was hoping to stir up with the first season of the Clearleft podcast!
With echos of design’s subjugation reverberating across all six episodes, this first season inadvertently told the story of how my profession has been captured by a desire to serve business interests above all others, while being disarmed by its tendency for introspection and need to be recognised.
Can digital design redeem itself? I hope so. Maybe in the next season of the Clearleft podcast, we’ll find out how.
2020: an isolation odyssey on Vimeo
What a brilliant homage! And what a spot-on pop-cultural reference for The Situation.
2020: an isolation odyssey is a reenactment of the iconic finale of 2001: A Space Odyssey (Stanley Kubrick, 1968). Restaged in the context of home quarantine, the journey through time adapts to the mundane dramas of self-isolation–poking fun at the navel-gazing saga of life alone and indoors.
Saturday, August 15th, 2020
Playing The Brosna (slide) on mandolin:
I’ve recorded a tune a day for 150 days straight:
https://adactio.com/notes/tunes
It’s too late to stop now.
Replying to a tweet from @chrislintott
Not just cricket:
Friday, August 14th, 2020
Playing Sporting Molly (reel) on mandolin:
About Feeds | Getting Started guide to web feeds/RSS
Matt made this website to explain RSS to people who are as-ye unfamilar with it.
Marxian Alienation And Web Development: HeydonWorks
As a web designer or developer burnout comes calling when you try to do good work, but you’re not allowed.
- You want to make the app more performant; your boss wants to fill it full of third party trackers
- You want to make the app more accessible; your boss wants you to focus on the ‘able market’ instead
- You want to word the app more clearly; your boss wants to trick users with misleading language
If you are a good developer, and a good person, asked to do shit work, you will burn out.
Thursday, August 13th, 2020
Beach BBQ from https://www.humbleplates.co.uk/woodandcoal 🍗 🥩
Playing The Tenpenny Bit (jig) on mandolin:
Replying to a tweet from @estark37
Thanks for that, Emily—much appreciated!
Replying to a post on remysharp.com
💔
Season one of the Clearleft podcast
The Clearleft Podcast has finished its inaugural season.
I have to say, I’m pretty darned pleased with the results. It was equal parts fun and hard work.
Episode One
Design Systems. This was a deliberately brief episode that just skims the surface of all that design systems have to offer. It is almost certainly a theme that I’ll revisit in a later episode, or even a whole season.
The main goal of this episode was to get some answers to the questions:
- What is a design system exactly? and
- What’s a design system good for?
I’m not sure if I got answers or just more questions, but that’s no bad thing.
Episode Two
Service Design. This is the classic topic for this season—an investigation into a phrase that you’ve almost certainly heard of, but might not understand completely. Or maybe that’s just me. In any case, I think that coming at this topic from a viewpoint of relative ignorance is quite a benefit: I have no fear of looking stupid for asking basic questions.
Episode Three
Wildlife Photographer Of The Year. A case study. This one was a lot of fun to put together.
It also really drove home to just how talented and hard-working my colleagues at Clearleft are. I just kept thinking, “Damn! This is some great work!”
Episode Four
Design Ops. Again, a classic example of me asking the dumb questions. What is this “design ops” thing I’ve heard of? Where’d it come from?
My favourite bit of feedback was “Thanks to the podcast, I now know what DesignOps is. I now also hate DesignOps”
I couldn’t resist upping the ante into a bit of a meta-discussion about whether we benefit or not from the introduction of new phrases like this into our work.
Episode Five
Design Maturity. This could’ve been quite a dry topic but I think that Aarron made it really engaging. Maybe the samples from Bladerunner and Thunderbirds helped too.
This episode finished with a call to action …with the wrong URL. Doh! It should’ve been surveymonkey.co.uk/r/designmaturity
Episode Six
Design Sprints. I like how the structure of this one turned out. I felt like we tackled quite a few angles in less than 25 minutes.
That’s a good one to wrap up this season, I reckon.
If you’re interested in the behind-the-scenes work that went into each episode, I’ve been blogging about each one:
- Design Systems
- Service Design
- Wildlife Photographer Of The Year
- Design Ops
- Design Maturity
- Design Sprints
I’m already excited about doing a second season …though I’m going to enjoy a little break from podcasting for a little bit.
As I say at the end of most episodes, if you’ve got any feedback to offer on the podcast, send me an email at jeremy@clearleft.com
And if you’ve enjoyed the Clearleft podcast—or a particular episode—please share it far and wide.
Гибкий веб-дизайн
Well, this is just wonderful! Students from Moscow Coding School are translating Resilient Web Design into Russian. Three chapters done so far!
This is literally the reason why I licensed the book with a Creative Commons Attribution‐ShareAlike license.
Replying to a tweet from @hsablonniere
For what it’s worth (probably very, very little), I’ve submitted a bug report. I hope that others who support Jake’s proposal will do the same:
https://bugs.chromium.org/p/chromium/issues/detail?id=1115890
Replying to a tweet from @stefanisg
It disgusts me.
BetrayURL
Back in February, I wrote about an excellent proposal by Jake for how browsers could display URLs in a safer way. Crucially, this involved highlighting the important part of the URL, but didn’t involve hiding any part. It’s a really elegant solution.
Turns out it was a Trojan horse. Chrome are now running an experiment where they will do the exact opposite: they will hide parts of the URL instead of highlighting the important part.
You can change this behaviour if you’re in the less than 1% of people who ever change default settings in browsers.
I’m really disappointed to see that Jake’s proposal isn’t going to be implemented. It was a much, much better solution.
No doubt I will hear rejoinders that the “solution” that Chrome is experimenting with is pretty similar to what Jake proposed. Nothing could be further from the truth. Jake’s solution empowered users with knowledge without taking anything away. What Chrome will be doing is the opposite of that, infantalising users and making decisions for them “for their own good.”
Seeing a complete URL is going to become a power-user feature, like View Source or user style sheets.
I’m really sad about that because, as Jake’s proposal demonstrates, it doesn’t have to be that way.
Replying to a tweet from @jaffathecake
I am really, really disappointed by the back-tracking here.
I thought your proposal was brilliant because it didn’t involve hiding anything.
Hiding by default?
Disgusting.
Wednesday, August 12th, 2020
Playing Boil The Breakfast Early (reel) on mandolin:
Project Orbital Ring
An Orbital Ring System as an alternative to a space elevator.
Representing nothing short of the most ambitious project in the history of space exploration and exploitation, the Orbital Ring System is more or less what you would imagine it to be, a gargantuan metal ring high above the Earth, spanning the length of its 40,000 kilometer-long diameter.
Design sprints on the Clearleft podcast
The sixth episode of the Clearleft podcast is now live: design sprints!
It comes in at just under 24 minutes, which feels just about right to me. Once again, it’s a dive into one topic that asks “What is this?”, “What does this mean?”, and “Where did this come from?”
I could’ve invited just about any of the practitioners at Clearleft to join me on this one, but I setttled on Chris, who’s always erudite and sharp.
I also asked ex-Clearleftie Jerlyn to have a chat. You’ll notice that’s been a bit of theme on the Clearleft podcast; asking people who used to work at Clearleft to share their thoughts. I’d quite like to do at least an episode—maybe even a whole season—featuring ex-Clearlefties exclusively. So many great people have worked at the agency of the years, Jerlyn being a prime example.
I’d also like to do an episode some time with the regular contractors we’ve worked with at Clearleft. On this episode, I asked the super-smart Tom Prior to join me.
I recorded those three chats over the past couple of weeks. And it was kind of funny how there was, of course, a looming presence over the topic of design sprints: Jake Knapp. I had sent him an email too but I got an auto-responder saying that he was super busy and would take a while to respond. So I kind of mentally wrote it off.
I spent last week assembling and editing the podcast with the excellent contributions from Jerlyn, Chris, and Tom. But it did feel a bit like Waiting For Godot the way that Jake’s book was being constantly referenced.
Then, on the weekend, Godot showed up.
Jake said he’d have time for a chat on Wednesday. Aargh! That’s the release date for the podcast! I don’t suppose Monday would work?
Very graciously, Jake agreed to a Monday chat (at an ungodly early hour in his time zone). I got an excellent half hour of material straight from the horse’s mouth—a very excitable and fast-talking horse, too.
That left me with just a day to work the material into the episode! I felt like a journalist banging on the keyboard at midnight, ready to run into the printing room shouting “Stop the press!” …although I’m sure the truth is that nobody but me would notice if an episode were released a little late.
Anyway, it all got done in the end and I think it turned out pretty great!
Have a listen for yourself and see what you make of it.
This was the final episode of the first season. I’ll now take a little break from podcasting as I plot and plan for the next season. Watch this space! …and, y’know, subscribe to the podcast.
Episode six of the Clearleft podcast is out—the final one of the season!
https://podcast.clearleft.com/season01/episode06/
It’s all about design sprints, featuring Jerlyn Jareunpoon-Phillips, @ChrisHow, @TomPrior and special guest @JakeK.
Tuesday, August 11th, 2020
Arecibo. 😢
Walking along the beach at dusk.

Checked in at Shelter Hall Raw. Having a beer on the beach — with Jessica
Playing Tripping Up The Stairs (jig) on mandolin:
Monday, August 10th, 2020
Hanging out with the cat.
I don’t have a cat.
The cat doesn’t know that.
Whoever is plastering educational posters around the neighbourhood …I approve!
(Previous specimens included the periodic table and a solar system chart.)
Playing Queen’s (hornpipe) on mandolin:
Influence
Hidde gave a great talk recently called On the origin of cascades (by means of natural selectors):
It’s been 25 years since the first people proposed a language to style the web. Since the late nineties, CSS lived through years of platform evolution.
It’s a lovely history lesson that reminded me of that great post by Zach Bloom a while back called The Languages Which Almost Became CSS.
The TL;DR timeline of CSS goes something like this:
- June 1993: Rob Raisch proposes some ideas for stylesheets in HTML on the
www-talk
mailing list. - October 1993: Pei Wei shares his ideas for a stylesheet language, also on the
www-talk
mailing list. - October 1994: Håkon Wium Lie publishes Cascading HTML style sheets — a proposal.
- March 1995: Bert Bos publishes his Stream-based Style sheet Proposal.
Håkon and Bert joined forces and that’s what led to the Cascading Style Sheet language we use today.
Hidde looks at how the concept of the cascade evolved from those early days. But there’s another idea in Håkon’s proposal that fascinates me:
While the author (or publisher) often wants to give the documents a distinct look and feel, the user will set preferences to make all documents appear more similar. Designing a style sheet notation that fill both groups’ needs is a challenge.
The proposed solution is referred to as “influence”.
The user supplies the initial sheet which may request total control of the presentation, but — more likely — hands most of the influence over to the style sheets referenced in the incoming document.
So an author could try demanding that their lovely styles are to be implemented without question by specifying an influence of 100%. The proposed syntax looked like this:
h1.font.size = 24pt 100%
More reasonably, the author could specify, say, 40% influence:
h2.font.size = 20pt 40%
Here, the requested influence is reduced to 40%. If a style sheet later in the cascade also requests influence over h2.font.size, up to 60% can be granted. When the document is rendered, a weighted average of the two requests is calculated, and the final font size is determined.
Okay, that sounds pretty convoluted but then again, so is specificity.
This idea of influence in CSS reminds me of Cap’s post about The Sliding Scale of Giving a Fuck:
Hold on a second. I’m like a two-out-of-ten on this. How strongly do you feel?
I’m probably a six-out-of-ten, I replied after a couple moments of consideration.
Cool, then let’s do it your way.
In the end, the concept of influence in CSS died out, but user style sheets survived …for a while. Now they too are as dead as a dodo. Most people today aren’t aware that browsers used to provide a mechanism for applying your own visual preferences for browsing the web (kind of like Neopets or MySpace but for literally every single web page …just think of how empowering that was!).
Even if you don’t mourn the death of user style sheets—you can dismiss them as a power-user feature—I think it’s such a shame that the concept of shared influence has fallen by the wayside. Web design today is dictatorial. Designers and developers issue their ultimata in the form of CSS, even though technically every line of CSS you write is a suggestion to a web browser—not a demand.
I wish that web design were more of a two-way street, more of a conversation between designer and end user.
There are occassional glimpses of this mindset. Like I said when I added a dark mode to my website:
Y’know, when I first heard about Apple adding dark mode to their OS—and also to CSS—I thought, “Oh, great, Apple are making shit up again!” But then I realised that, like user style sheets, this is one more reminder to designers and developers that they don’t get the last word—users do.

I can’t wait to see @IreAderinokun’s talk at An Event Apart next Monday, August 17th!
https://aneventapart.com/event/online-0820
I get to sneak in for free ’cause I’m speaking, but you can get a $50 discount with the code AEAJER.
Sunday, August 9th, 2020
Playing Dusty Windowsills (jig) by John Harling on bouzouki:
Dream speak
I had a double-whammy of a stress dream during the week.
I dreamt I was at a conference where I was supposed to be speaking, but I wasn’t prepared, and I wasn’t where I was supposed to be when I was supposed to be there. Worse, my band were supposed to be playing a gig on the other side of town at the same time. Not only was I panicking about getting myself and my musical equipment to the venue on time, I was also freaking out because I couldn’t remember any of the songs.
You don’t have to be Sigmund freaking Freud to figure out the meanings behind these kinds of dreams. But usually these kind of stress dreams are triggered by some upcoming event like, say, oh, I don’t know, speaking at a conference or playing a gig.
I felt really resentful when I woke up from this dream in a panic in the middle of the night. Instead of being a topical nightmare, I basically had the equivalent of one of those dreams where you’re back at school and it’s the day of the exam and you haven’t prepared. But! When, as an adult, you awake from that dream, you have that glorious moment of remembering “Wait! I’m not in school anymore! Hallelujah!” Whereas with my double-booked stress dream, I got all the stress of the nightmare, plus the waking realisation that “Ah, shit. There are no more conferences. Or gigs.”
I miss them.
Mind you, there is talk of re-entering the practice room at some point in the near future. Playing gigs is still a long way off, but at least I could play music with other people.
Actually, I got to play music with other people this weekend. The music wasn’t Salter Cane, it was traditional Irish music. We gathered in a park, and played together while still keeping our distance. Jessica has written about it in her latest journal entry:
It wasn’t quite a session, but it was the next best thing, and it was certainly the best we’re going to get for some time. And next week, weather permitting, we’ll go back and do it again. The cautious return of something vaguely resembling “normality”, buoying us through the hot days of a very strange summer.
No chance of travelling to speak at a conference though. On the plus side, my carbon footprint has never been lighter.
Online conferences continue. They’re not the same, but they can still be really worthwhile in their own way.
I’ll be speaking at An Event Apart: Front-end Focus on Monday, August 17th (and I’m very excited to see Ire’s talk). I’ll be banging on about design principles for the web:
Designing and developing on the web can feel like a never-ending crusade against the unknown. Design principles are one way of unifying your team to better fight this battle. But as well as the design principles specific to your product or service, there are core principles underpinning the very fabric of the World Wide Web itself. Together, we’ll dive into applying these design principles to build websites that are resilient, performant, accessible, and beautiful.
Tickets are $350 but I can get you a discount. Use the code AEAJER to get $50 off.
I wonder if I’ll have online-appropriate stress dreams in the next week? “My internet is down!”, “I got the date and time wrong!”, “I’m not wearing any trousers!”
Actually, that’s pretty much just my waking life these days.
If I got made king of web browsers, here’s what I’d do (Interconnected)
I guess, because browser-makers tend to be engineers so they do engineering-type things like making the browser an app-delivery platform able to run compiled code. Or fight meaningless user experience battles like hiding the URL, or hiding View Source – both acts that don’t really help early users that much, but definitely impede the user path from being a consumer to being a fully-fledged participant/maker.
Beyond Smart Rocks
Claire L. Evans on computational slime molds and other forms of unconvential computing that look beyond silicon:
In moments of technological frustration, it helps to remember that a computer is basically a rock. That is its fundamental witchcraft, or ours: for all its processing power, the device that runs your life is just a complex arrangement of minerals animated by electricity and language. Smart rocks.
Connections
Fourteen years ago, I gave a talk at the Reboot conference in Copenhagen. It was called In Praise of the Hyperlink. For the most part, it was a gushing love letter to hypertext, but it also included this observation:
For a conspiracy theorist, there can be no better tool than a piece of technology that allows you to arbitrarily connect information. That tool now exists. It’s called the World Wide Web and it was invented by Sir Tim Berners-Lee.
You know those “crazy walls” that are such a common trope in TV shows and movies? The detectives enter the lair of the unhinged villain and discover an overwhelming wall that’s like looking at the inside of that person’s head. It’s not the stuff itself that’s unnerving; it’s the red thread that connects the stuff.
Red thread. Blue hyperlinks.
When I spoke about the World Wide Web, hypertext, apophenia, and conspiracy theorists back in 2006, conspiracy theories could still be considered mostly harmless. It was the domain of Dan Brown potboilers and UFO enthusiasts with posters on their walls declaring “I Want To Believe”. But even back then, 911 truthers were demonstrating a darker side to the fun and games.
There’s always been a gamification angle to conspiracy theories. Players are rewarded with the same dopamine hits for “doing the research” and connecting unrelated topics. Now that’s been weaponised into QAnon.
In his newsletter, Dan Hon wrote QAnon looks like an alternate reality game. You remember ARGs? The kind of designed experience where people had to cooperate in order to solve the puzzle.
Being a part of QAnon involves doing a lot of independent research. You can imagine the onboarding experience in terms of being exposed to some new phrases, Googling those phrases (which are specifically coded enough to lead to certain websites, and certain information). Finding something out, doing that independent research will give you a dopamine hit. You’ve discovered something, all by yourself. You’ve achieved something. You get to tell your friends about what you’ve discovered because now you know a secret that other people don’t. You’ve done something smart.
We saw this in the games we designed. Players love to be the first person to do something. They love even more to tell everyone else about it. It’s like Crossfit.
Dan’s brother Adrian also wrote about this connection: What ARGs Can Teach Us About QAnon:
There is a vast amount of information online, and sometimes it is possible to solve “mysteries”, which makes it hard to criticise people for trying, especially when it comes to stopping perceived injustices. But it’s the sheer volume of information online that makes it so easy and so tempting and so fun to draw spurious connections.
This is something that Molly Sauter has been studying for years now, like in her essay The Apophenic Machine:
Humans are storytellers, pattern-spotters, metaphor-makers. When these instincts run away with us, when we impose patterns or relationships on otherwise unrelated things, we call it apophenia. When we create these connections online, we call it the internet, the web circling back to itself again and again. The internet is an apophenic machine.
I remember interviewing Lauren Beukes back in 2012 about her forthcoming book about a time-travelling serial killer:
Me: And you’ve written a time-travel book that’s set entirely in the past.
Lauren: Yes. The book ends in 1993 and that’s because I did not want to have to deal with Kirby the heroine getting some access to CCTV cameras and uploading the footage to 4chan and having them solve the mystery in four minutes flat.
By the way, I noticed something interesting about the methodology behind conspiracy theories—particularly the open-ended never-ending miasma of something like QAnon. It’s no surprise that the methodology is basically an inversion of the scientific method. It’s the Texas sharpshooter fallacy writ large. Well, you know the way that I’m always going on about design principles and they way that good design principles should be reversible? Conspiracy theories take universal principles and invert them. Take Occam’s razor:
Do not multiply entities without necessity.
That’s what they want you to think! Wake up, sheeple! The success of something like QAnon—or a well-designed ARG—depends on a mindset that rigorously inverts Occam’s razor:
Multiply entities without necessity!
That’s always been the logic of conspiracy theories from faked moon landings to crop circles. I remember well when the circlemakers came clean and showed exactly how they had been making their beautiful art. Conspiracy theorists—just like cultists—don’t pack up and go home in the face of evidence. They double down. There was something almost pitiable about the way the crop circle UFO crowd were bending over backwards to reject proof and instead apply the inversion of Occam’s razor to come up with even more outlandish explanations to encompass the circlemakers’ confession.
Anyway, I recommend reading what Dan and Adrian have written about the shared psychology of QAnon and Alternate Reality Games, not least because they also suggest some potential course corrections.
I think the best way to fight QAnon, at its roots, is with a robust social safety net program. This not-a-game is being played out of fear, out of a lack of safety, and it’s meeting peoples’ needs in a collectively, societally destructive way.
I want to add one more red thread to this crazy wall. There’s a book about conspiracy theories that has become more and more relevant over time. It’s also wonderfully entertaining. Here’s my recommendation from that Reboot presentation in 2006:
For a real hot-tub of conspiracy theory pleasure, nothing beats Foucault’s Pendulum by Umberto Eco.
…luck rewarded us, because, wanting connections, we found connections — always, everywhere, and between everything. The world exploded into a whirling network of kinships, where everything pointed to everything else, everything explained everything else…
Chapter 1: Birth | CSS-Tricks
This is wonderful! A whole series on the history of the web from Jay Hoffman, the creator of the similarly-themed newsletter and timeline.
This first chapter is right up my alley, looking at the origins of hypertext, the internet, and the World Wide Web.
Saturday, August 8th, 2020
Playing The Sweat House (reel) on mandolin:
Played some tunes in the park today.
Friday, August 7th, 2020
Playing The Road To Lisdoonvarna (slide) on mandolin:
Rainbow spacecraft and how humanity might end (Interconnected)
I too am a member of The British Interplanetary Society and I too recommend it.
(Hey Matt, if you really want to go down the rabbit hole of solar sails, be sure to subscribe to the RSS feed of Centauri Dreams—Paul Gilster is big into solar sails!)
Thursday, August 6th, 2020
Reading How to Argue With a Racist: History, Science, Race and Reality by Adam Rutherford.

Playing Tie The Bonnet (reel) on mandolin:
Replying to a tweet from @hdv
It’s the classic metacrap problem: invisible metadata rots.
https://people.well.com/user/doctorow/metacrap.htm
It’s one of the reasons why microformats always favoured marking up existing, visible (user-facing) data.
Replying to a tweet from @yatil
This is an interesting development though:
https://blog.chromium.org/2020/07/using-chrome-to-generate-more.html
HTML -> accessible PDF as an archival workflow?
Strolling along the seafront with the Clearleft crew.
Did anyone spot the, um, deliberate mistake at the end of this week’s episode of the Clearleft podcast? Where I sent you to the wrong link for the design maturity survey?
It should be https://www.surveymonkey.co.uk/r/designmaturity
Wednesday, August 5th, 2020
Replying to a tweet from @jina
No rush! You can take as long as you like.
(As you know, I am no stranger to playing the long game. 🙂)
Playing Pull Out The Knife And Stick It Again (jig) on mandolin:
In a Land Before Dev Tools | Amber’s Website
A great little history lesson from Amber—ah, Firebug!
Replying to a tweet from @ThainBBdL
Whoops! Thanks for spotting that—should be fixed now.
Replying to a tweet from @linushoremans
Nice! (and thank you!)
Replying to a tweet from @meyerweb
When I was a kid, I thought the word “character” started with a “chuh” sound (’cause, y’know that is how it’s spelled).
I also pronounced the “b” in the “subtle” …which wasn’t.
Reading a lot just leads to embarrassment.
Replying to a tweet from @robweychert
Smooth!
(like butter)
The Resiliency of the Internet | Jim Nielsen’s Weblog
An ode to the network architecture of the internet:
I believe the DNA of resiliency built into the network manifests itself in the building blocks of what’s transmitted over the network. The next time somebody calls HTML or CSS dumb, think about that line again:
That simplicity, almost an intentional brainlessness…is a key to its adaptability.
It’s not a bug. It’s a feature.
Yes! I wish more web developers would take cues from the very medium they’re building atop of.
Kissa. Book. Launch. — Roden Explorers Archive
Own. Your. Nook. There’s power in owning your nook of the ‘net — your domain name, your design, your archives — and it’s easier than ever to do so, and run a crowdfunding campaign at the same time.
Design maturity on the Clearleft podcast
The latest episode of the Clearleft podcast is zipping through the RSS tubes towards your podcast-playing software of choice. This is episode five, the penultimate episode of this first season.
This time the topic is design maturity. Like the episode on design ops, this feels like a hefty topic where the word “scale” will inevitably come up.
I talked to my fellow Clearlefties Maite and Andy about their work on last year’s design effectiveness report. But to get the big-scale picture, I called up Aarron over at Invision.
What a great guest! I already had plans to get Aarron on the podcast to talk about his book, Designing For Emotion—possibly a topic for next season. But for the current episode, we didn’t even mention it. It was design maturity all the way.
I had a lot of fun editing the episode together. I decided to intersperse some samples. If you’re familiar with Bladerunner and Thunderbirds, you’ll recognise the audio.
The whole thing comes out at a nice 24 minutes in length.
Have a listen and see what you make of it.
There’s a new episode of the Clearleft podcast!
https://podcast.clearleft.com/season01/episode05/
It’s about design maturity and I have questions: morphology, longevity, incept dates…
(Thanks to @aarron for agreeing to a grilling)
Tuesday, August 4th, 2020
Playing Maud Millar (reel) on mandolin:
Monday, August 3rd, 2020
Replying to a tweet from @harrybr
Yes.
I refuse on principle to use an ISP that does any traffic shaping.
Playing Tom Mhick’s (polka) on mandolin:
Gave blood today.
“Nice veins!” I was told. I always get complimented on my veins and it always pleases me inordinately.
The People’s Space Odyssey: 2010: The Year We Make Contact
This is an epic deep dive into the 1984 sequel to 2001: A Space Odyssey.
For all its flaws, I have a soft spot for this film (and book).
Sunday, August 2nd, 2020
Playing The Monaghan Jig on mandolin:

Checked in at The Hartington. Sunday roast — with Jessica
Replying to a tweet from @aerotwist
Seeing as Safari shows all the computed properties correctly, I’m guessing it was something that was introduced after the Webkit/Blink fork?
But weirdly, Firefox is showing the same behaviour as Chrome.
Replying to a tweet from @simevidas
But all off the border-
properties are specified in long hand. Neither Firefox nor Chrome shows their computed values in dev tools.
Saturday, August 1st, 2020
Playing The Morning Dew (reel) on mandolin:
Seeing a spitfire fly over the neighbourhood rooftops of Brighton felt like something from a Christopher Priest book—a machine of The Adjacent breaking into the world of today.
Wow! Seeing a spitfire in flight is quite something! What a beauty!
The amazing power of service workers | Go Make Things
So, why would you want to use a service worker? Here are some cool things you can do with it.
Chris lists some of the ways a service worker can enhance user experience.
The things of everyday design || Matthew Ström: designer & developer
The evolution of affordances on the web:
The URL for a page goes at the top. Text appears in a vertically scrolling column. A dropdown menu has a downward-pointing triangle next to it. Your mouse cursor is a slanted triangle with a tail, and when you hover over a link it looks like Mickey Mouse’s glove.
Most of these affordances don’t have any relationship to the physical characteristics of the interaction they mediate. But remove them from a website, application, or interface, and users get disoriented, frustrated, and unproductive.
this vs that - What is the difference between ___ and ___ in the front-end development?
A handy reference for explaining the differences between confusingly similar bits of HTML, CSS, and JavaScript.