Eric Eggert (@yatil) on web accessibility and more. https://yatil.net/blog Wed, 20 Aug 2025 15:50:29 +0200 These are the blog articles from yatil.net, the website of Web Accessibility Expert Eric Eggert. About “best practices” https://yatil.net/blog/about-best-practices https://yatil.net/blog/about-best-practices Wed, 20 Aug 2025 16:00:00 +0200 Craig Abbott wrote about the term “best practice” today. Thanks to posting his thoughts on Mastodon, I had time to kick my brain into gear and think about the topic myself.

The first thing I noticed when reading his piece is that how he experienced the term is different from how I have. Which means we’re off to a good start. 😃

Like most things, the term [best practice] started off with good intentions. A way to suggest fixes for things which are definitely accessibility barriers, but don't technically fail the Web Content Accessibility Guidelines (WCAG), or whatever standard you're auditing against.
Craig Abbott, "Best practice" is just your opinion

This is not how I have ever seen the term “best practice” used, and I would be as upset as Craig if I did see it used this way.

You cannot fail websites and apps because they don’t meet your personal “best practice”. Best practices to me are techniques that meet the current level of technology and understanding. These techniques are used to meet WCAG success criteria. Most best practices will exceed WCAG.

Let’s look at this concrete code sample:

<span>Your Email:</span>
<input type="email">

This fails several WCAG success criteria, but the most obvious is that the <input> element has no accessible name[^ A 4.1.2 Name, Role, Value violation.], so let’s focus on that.

A technique to make sure that the <input> element has an accessible name is to add an aria-label attribute:

<span>Your Email:</span>
<input aria-label="Your Email:" type="email">

That meets the success criterion, but it is not what I would generally recommend because it has some drawbacks:

  • aria-label is often not translated when using in-browser translation.
  • The value of aria-label can easily be overlooked when copying and pasting code to generate new, similar interfaces. That’s a future accessibility risk.
  • In some screen reader/browser combinations, the aria-label will be announced in the browser language, not in the website language.
  • The visual label cannot be clicked to activate the text field.

If I came across code like the example, I would not fail it against the WCAG success criterion, because there is an accessible name[^I might fail it for other reasons and against other SCs.].

Another way to do it is to use aria-labelledby instead:

<span id="emailLabel">Your Email:</span>
<input aria-labelledby="emailLabel" type="email">

This also meets the success criterion. But it also has drawbacks, but arguably fewer:

  • The value of aria-labelledby can easily be overlooked when copying and pasting code to generate new, similar interfaces. That’s a future accessibility risk.
  • In some screen reader/browser combinations, the aria-labelledby may be announced in the browser language, not in the website language.
  • The visual label cannot be clicked to activate the text field.

Lastly, another way is to use the HTML <label> element instead of ARIA:

<label for="emailInput">Your Email:</label>
<input id="emailInput" type="email">

While this solution is still susceptible to copy and paste errors, you can now click on the label to set the focus into the text field, and the label’s text is always read in the page’s language.

So, what’s the best practice?

For me, I would always recommend using the <label> element. So if I find an element without an accessible name, this is my go-to technique. It’s my “best practice” because I think it has the least downsides and is usually not that difficult to implement.

That said, I do not always recommend it. Every so often the component is not relevant enough or the page is unlikely to be translated, so using a band-aid aria-label is good enough.

Frequently I will mention both: The quick fix and my “best practice”.

This gives designers and developers options. Some might find the “best practice” easier to implement, while others will only look at the quick fix.

Recommending best practices is always a double-edged sword: sometimes it can distract and lead to inaction, so the goal is to use them only when they make a noticeable difference for users in the context.

What about non-WCAG accessibility issues?

It happens. The site uses a technique that we think is so bad that it doesn’t meet our high standards.

If you are in accessibility, this should happen every time you do a review. Your standards need to be high to make the differentiation between something that does not meet the minimum requirement and something that just about does.

Grading on a scale from “oops all <div>s” to “this is the most beautiful code I could have written” is important to make the distinction where the line goes.

When an implementation reaches the minimum, but you’re still unhappy with the result, you can add a “Recommendation”. Make clear that it is not a failure but an opportunity for improvement. Ensure that fixing WCAG failures is prioritized over recommendations.

Conclusion

Defining what is the best technique to recommend in a situation is an essential skill for fixing accessibility, a skill that can only be trained by using different techniques and learning about their advantages and disadvantages.

]]>
Avoiding the word “help” https://yatil.net/blog/avoiding-the-word-help https://yatil.net/blog/avoiding-the-word-help Fri, 08 Aug 2025 08:40:00 +0200 I frequently see the word “help” used in accessibility, and I don’t like it. This is certainly a personal gripe, but I want to share my thinking behind avoiding it.

First, where there is “help”, there is “helplessness”. Using the word “help” in the accessibility context implies that disabled people need help from (usually non-disabled) people to accomplish things. While that is sometimes the case, often the same people who “help” are the ones that create accessibility barriers in the first place. You don’t help if you drag a wheelchair and its user up a staircase that you built instead of an elevator. That’s not helping. It’s damage limitation at best. It sounds like we’re doing charity work, but we’re providing concrete technical (and design, and structural) feedback that has societal impact.

Second, typically it is imprecise. Sure, adding an alternative text to an image “helps” screen reader users in the sense that it’s finally accessible. (See point 1.) But I sometimes see sentences like, “Adding an alternative text helps screen readers to convey the image content to their users.”

To me that feels like, “The screen reader would figure it out eventually. It just needs a little help from us!” This is, of course, not what happens. If there is no information, the screen reader cannot convey it.

I often use “enable” or “ensure” instead of the squishy “help” where I can. “Adding alternative text ensures that the content of the image is conveyed to screen reader users.” Or: “Formatting the bold text as headings instead enables users to navigate between headings and use them as reference points for orientation.”

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

]]>
Deutschland: Berichte belegen blamable Bilanz bei digitaler Barrierefreiheit https://yatil.net/blog/barrieren-gutachten https://yatil.net/blog/barrieren-gutachten Sun, 15 Jun 2025 14:15:00 +0200 Auf der Seite barrieren-gutachten.de hat die wundervolle Casey Kreer Gutachten zum Stand der Barrierefreiheit in Deutschland erstmals übersichtlich aufgelistet. Die Übersicht enthält 188 Gutachten, von denen 187 zur Bewertung „nicht bestanden“ kommen. Nur ein Gutachten hat das Ergebnis „im Wesentlichen bestanden“.

Die Gutachten stammen aus den Jahren 2022 bis 2024 und wurden alle über das Frag-den-Staat-Portal aufgrund des Informationsfreiheitsgesetzes veröffentlicht. Sie zeigen vor allem eines: Obwohl öffentliche Websites und Apps teilweise seit 2002 (also fast ein viertel Jahrhundert) barrierefrei sein müssen, hapert es überall gewaltig an der Umsetzung. Gutachten werden angefertigt, die gefundenen Fehler aber nicht behoben.

Das ist leider ein Zustand, den ich nur allzu gut kenne. Selbst wenn nachgebessert wird, dann nur in Form von Schnellschüssen statt durch ein nachhaltiges barrierefreies Design. Barrierefreiheit verkommt dann zu Insellösungen, die bei neuen Features oder Projekten vergessen werden. Das kostet Steuerzahler viel Geld, das besser in langfristig nachhaltige Seiten und Apps gesteckt werden sollte.

Mehr Informationen zum Portal bei Steady, wo man Caseys bye, bye Barrieren-Projekt auch finanziell unterstützen kann.

(Offenlegung: Ich unterstütze das Projekt seit Februar 2024.)

]]>
So, you screwed up your EAA compliance. What now? https://yatil.net/blog/so-you-screwed-up-your-eaa-compliance-what-now https://yatil.net/blog/so-you-screwed-up-your-eaa-compliance-what-now Sun, 08 Jun 2025 17:15:00 +0200 The deadline of the European Accessibility Act (EAA) is near (June 28 is just 20 days away as I write this), and you just realized that your website or apps will not meet the requirements by then. Maybe you have just heard of it for the first time, or you might have tried to meet the requirements, but you’re not there yet.

If you have believed that there is an additional transition period, that is not true. The transition period basically started when the EAA got approved by the European Parliament in April 2019. All EU countries were then required to ensure that the directive is implemented in their laws by June 28, 2022, to be in effect from June 28, 2025.

(Note: Because I have little insight into products covered by the EAA, I will focus on the services, which is the EAA language for websites, online shops, and applications.)

Table of Contents

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Who needs to fulfill the EAA requirements?

You are under the EAA legislation for services when your audience is in the EU[^and other countries that adapt the same legislation, like Norway] and is customers (instead of businesses). In addition, you are exempt if you are a “microenterprise”, meaning “an enterprise which employs fewer than 10 persons and which has an annual turnover not exceeding EUR 2 million or an annual balance sheet total not exceeding EUR 2 million”.

If you are a microenterprise, try to make your content more accessible anyway. Larger firms will have an advantage over you eventually, as accessible services are often preferred by customers, due to better usability and customization options.

Don’t panic

If you have not met the requirements and are required to do so, you have opened up yourself for potential punishment by the marketing surveillance agencies in the different EU countries you have customers in. There is no way around it: this is serious.

While the fines can be very high (for example, up to EUR 100.000 in Germany), the regulation allows for fixes before a company is sanctioned. This is especially important for first-time violators. The EAA also encourages agencies to support SMEs (“small and medium enterprises” up to EUR 50 million annual turnover) to meet the requirements and not overburden them.

Get support

Unless you have worked on accessibility for a long time, and you know what you are doing, it is highly unlikely that you have the knowledge in-house. To be honest, if you are reading this, you certainly don’t have the knowledge in-house.

This is OK. Before you contact someone and sign a potentially expensive contract, here are some fundamental facts about accessibility you need to understand to make a good decision:

  • Accessibility is a process. It’s not a one-time fix or something you can only think about after you have deployed a new feature.
  • There are no shortcuts. An accessibility widget or a one-line JavaScript will not make this go away.
  • Experience over certification. Many new accessibility professionals have a certificate by the International Association of Accessibility Professionals (IAAP), but understand that these certifications cover fairly fundamental knowledge. In case you’re unsure, ask any professional, certificate or not, what their experience is, especially with projects similar to yours. Understand that Non-Disclosure Agreements (NDAs) might often prevent them from naming specific clients.

The basis of compliance is the EN 301 549 European norm, which includes the Web Content Accessibility Guidelines (WCAG) 2.1 AA. While it is currently not required, looking at WCAG 2.2 AA makes sense to avoid another round of accessibility fixes later. It expands WCAG 2.1 a little, and most sites should meet the new success criteria.

Many accessibility companies will start with an assessment of your service and how well it meets the requirements outlined in EN 301 549. That’s a good start, but without organizational commitment and internal processes, you risk getting into a “develop inaccessible functionality → test → fix functionality” treadmill. We see in many clients that they are fixing some existing functionality while expanding their services with inaccessible functionality at the same time.

You need to avoid this vicious cycle to make your case that you take accessibility serious.

What to do

You have to prove that you are willing to make your service as accessible as possible as quickly as possible. That might help to avoid or reduce fines.

  • Commit to releasing only features that are reviewed and tested for accessibility. This will ensure that you do not build up more accessibility debt.
  • Fix existing accessibility issues. Plan to test functionality in your service for accessibility step by step and resolve issues or rebuild functionality with accessibility in mind.
  • Often re-thinking a feature with accessibility in mind and rebuilding it will be quicker and cheaper than patching accessibility gaps.
  • Scope well: Concentrate on the main avenues users use on your site or app first. If you provide an online shopping experience, prioritize the purchase flow over blog posts or other functionality.

A good accessibility coach will guide you through this and help you prioritize what is important, and will also support you with an important additional step of the process:

Documentation

The European Accessibility Act comes with some bureaucracy which requires you to provide accessibility information to users. In most countries this seems to be an on-demand feature, however in some European countries, this takes the form of a public page on your website or inside your app, an Accessibility Statement.

I strongly recommend a public accessibility statement for all sites and applications. Make sure it’s written to inform people with disabilities about the accessibility of your service. If your service is largely inaccessible, communicate goals for making parts of the experience accessible and document when you meet these goals continuously.

You are also required to report accessibility issues with the market surveillance agency when you learn about them. One would assume that those agencies have websites, forms, and procedures ready to review those reports, but it looks like some of them will only be up to speed later this year. While that might allow you a little more time to bring your website or app in order, you should document when you report what to the agency. Overall, it’s your responsibility to demonstrate that you try to conform as best as you can.

Slow, but steady

When you make promises, ensure that you can keep them. Promising too much and then delaying will not only make market surveillance agencies uneasy, but users will also stop trusting you. Plan to take small steps, especially in the beginning. You, designers, and developers need to learn the basics of accessibility first before diving in. Making costly mistakes is easy, especially if the interactions that need fixing are complex.

Think about simplifying your user interface. Consider if a complex interaction pattern is worth putting time in when a simpler form is sufficient. Again, professional help can guide you through the process.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

]]>
Tag, you’re it https://yatil.net/blog/tag-you-re-it https://yatil.net/blog/tag-you-re-it Mon, 21 Apr 2025 12:30:00 +0200 Steve Faulkner tagged me in this chain letter/interview style post, and I foolishly agreed in advance to respond. So here we are 😂

Why did you start blogging in the first place?

When I started blogging two decades ago it was just to share thoughts and interesting posts. I had websites before, but being able to react very immediately to things was intriguing.

What platform are you using to manage your blog and why did you choose it?

I use Kirby, because it is file-based and allows me to use the HTML and CSS that I want to. It is incredibly versatile and I like how it lets you create your own building blocks and site templates from scratch.

Have you blogged on other platforms before?

I used to blog on Textpattern for many, many years, including when I ran Snookerblog. I loved it, but moved to Wordpress in 2014 for its IndieWeb integration. It was a terrible choice for me, and switched to Kirby not soon after. (I just remembered that I ran Jekyll and 11ty for a bit, and blogs with build steps are just not for me.)

How do you write your posts? For example, in a local editing tool, or in a panel / dashboard that’s part of your blog?

It really depends on how serious the article or post is. If it is longer form, I tend to grab iA Writer or Ulysses for structure and then move it over to the Kirby panel. But for posts like this one, I just write it in the Kirby panel. It’s great on desktop and acceptable on iPad and iPhone.

When do you feel most inspired to write?

I rarely do feel inspired to write these days. My “day job” involves a fair bit of writing, so doing additional writing feels like even more work. That said, I get motivated when I figure out new ways to explain something and occasionally when I’m angry.

Do you publish immediately after writing, or do you let it simmer a bit as a draft?

I have plenty of drafts, they rarely get published. Usually, I discover that I have already written the article or the act of writing it down reveals that the topic was not worth writing about at all. I use my blog as a way to rubber-duck ideas. If I like an article and I have the feeling it is reasonably well written, it goes live immediately.

What are you generally interested in writing about?

Mostly about web accessibility, including the societal and educational problems that lead us to create inaccessible software and products.

Who are you writing for?

I don’t write for anyone in particular, but my articles skew technical, and so it’s probably mostly developers. And of course for my supporters on Steady:

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

What’s your favorite post on your blog?

My recent post about WCAG 1.4.11 Non-Text Contrast is probably my favorite because I researched it really well and made numerous examples.

Any future plans for your blog? Maybe a redesign, a move to another platform, or adding a new feature?

I would love to redesign the blog, but I don’t really have time/energy at the moment. Plus, I’m reasonably happy with the look. I would like to restart taking comments eventually. There are always things that could be done differently.

Tag ’em

I‘ll try not to put to-do items on other people’s lists, so if you want to take these question and answer them, please do! And if not, I leave you with a Doctor Who quote:

The blossomiest blossom.
That’s the only sad thing.
I want to know what happens next.
Right then, Doctor-whoever-I’m-about-to-be.
Tag. You’re it.
13th Doctor as played by Jodie Whittaker
]]>
WAI A Day: A week https://yatil.net/blog/wai-a-day-a-week https://yatil.net/blog/wai-a-day-a-week Sat, 15 Mar 2025 16:55:00 +0100 Last weekend, I launched WAI A Day, the daily random WAI resource fun and information.

I added some things: A web page lists the URLs now together with the dates they have been picked for. This meant I had to give the page a history of all previously generated URLs. In the first version of the page, it only served as a random generator of a WAI URL and also, basically, only as an API – returning just the URL as a text string. So every time I accessed the URL, the response was different.

To change the design, I now save every URL into a JSON file, together with the date as a key. This allows me to check if a key is present for the current day and return that URL, or generate a URL if it is not. The first time the wai-a-day.yatil.net domain is accessed every day, the randomizer picks a URL and saves it to the JSON file.

I have used this way of a key/value storage quite often, and it is quick and just works. There are probably quicker ways to do the lookup that does not require as much reading from disk, but to be honest, I cross that bridge when I get to it after the JSON files gets many, many megabytes large.

What I don’t like is the monotony that the repeated generic social media previews on the WAI A Day Mastodon account bring. Sure, this might not be a big deal in the grand scheme of things, but because I only have the URLs and I cannot produce more meaningful content for the toots posts, the social media previews are distracting. I wonder if I could parse the social graph texts myself and return a more meaningful, generated image – like I do for this blog – and embed this as an image in the post. But then that would not be clickable to the resource.

Proxying all links through the WAI A Day site was a consideration, but cool URIs don’t change. While I have no problem with the WAI A Day page going away, I’d like all fragments of its existence to work independently with the original URLs.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

The feedback from the community has been great, 65 followers on Mastodon and 20 on (reluctantly) Bluesky is not a huge number, but it’s a start. I wonder if I can use the data elsewhere, too. Would a Slack integration be useful? (Boo! Walled gardens!)

I want to highlight that the randomizer did a good job picking interesting pages in the first seven days (and I did a good job narrowing the options down for it):

I hope the radomizer keeps picking this well. Don’t forget that you can support this and all my other indy projects on Steady. Or subscribe to the newsletter.

]]>
WAI A Day https://yatil.net/blog/wai-a-day https://yatil.net/blog/wai-a-day Sat, 08 Mar 2025 22:00:00 +0100 When I worked for W3C’s Web Accessibility Initiative, we often discussed ways to spread the good word of our resources better. One idea that I was always fond of was to showcase the deep library of resources with a social media feed that would promote random resources regularly.

My grandiose idea would have been with custom promotional text that summarizes the resource and maybe give some more context.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Suffice to say, we never followed through for a few different reasons. The priorities just didn’t align. It happens, but I still liked the idea. So just five years after leaving W3C, I created my own low-effort version of the idea.

It’s called WAI A Day, and it highlights a WAI resource every day.

Where to follow?

You can follow the Mastodon account @WAI_A_Day@yatil.social and the account will post a random WAI resource every day at 17:00 Central European Time.

There is also a Bluesky mirror, but if you can, use the open social network Mastodon instead.

Caveats

The list of URLs that the script choses from is filtered from the sitemap.xml file of the WAI sub site. I wasn’t happy with some of the URLs that are in there, so I decided to filter out some URLs, mainly:

  • Translations (the account only posts English resources for now)
  • News (they are often outdated and not suitable for this kind of account)
  • Tests for ARIA features
  • Example pages
  • Some sub-pages that I did not feel were useful to be featured out of context

I just auto-post the URLs and the social media preview of Mastodon does the rest. Unfortunately, some of those previews are more useful and others are less useful.

In addition, that list does not contain any specifications or any Understanding documents of W3C. I hope to add them to the list at a later date, but I could also see those documents overwhelm the other resources.

Code

The code for inspection and the created URL list can be inspected on my Codeberg profile.

Thanks

My deepest thanks go to my supporters on Steady who allow me to invest time into projects like this.

]]>
Values https://yatil.net/blog/values https://yatil.net/blog/values Sun, 02 Mar 2025 15:00:00 +0100 Normally, I reserve these more introspective texts for my newsletter, which I send out occasionally. But this time, I want to make sure I document this particular struggle on my website, too.

This is a difficult text to write and as I start, I realize that I don’t know where this is going, so please excuse me if it is even more meandering than usual.

Let’s talk about the disconnect within the accessibility scene/industry/community[^ Oh, more disconnects!] and about the stampede of elephants in the room. Last week, Deque used their free axe-con marketing event[^ There are genuinely great talks featured, and it is a great resource to the community, but the company wouldn’t do it if they would not expect publicity from it – which is a fair deal.] to announce the vision of getting to 100% automated accessibility (by volume) across all disciplines within the next 10 years. This would be possible with “AI”.

The backlash during the keynote was swift and forceful. I’m not sure how this was not anticipated. Axe-con is still a conference considered part of the accessibility community, so the message to replace genuine human testing and evaluation with “AI” could never land with that audience. But it also wasn’t made for that audience[^ Sorry, but if your script says, “Your work isn’t just following the AI revolution, it is enabling it.” that’s just another way of saying “We will take your work and productize it and sell it.”].

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

I don’t want to replicate the slide, but there is a slide that shows 2024 as 57% of automation, and 2025 as 100% automation, despite saying later that that’s somehow a 10-year vision. The presenter also says to get to 100% “or as close so it doesn’t really matter”, and that is an interesting phrase.

Because accessibility happens in these margins. “These few users and use cases don’t matter” is something I still hear occasionally. Recently, a fairly large online shop has introduced screen reader detection in their app to see if screen reader users are actually using their app – which is not very screen reader friendly. These tactics are used to reduce the need to make technology accessible.

The reality is: These percentages, hundredths of percentages, that is what web accessibility people should care about. This is where it matters. Promising 100% coverage or close to it, siphoning funds off real accessibility changes, will lock out people quickly.

And then there is the other side of the coin of being a consultant for accessibility. It’s not (just) about crossing t’s and dotting i’s to ensure conformance, it is about teaching designers, developers, project managers, and beyond the importance of accessibility and how to use it to make more inclusive and less ableist decisions that lead to better outcomes.

We know that “AI” impacts critical thinking negatively. This is an inherent threat to accessibility in particular but also to human society eventually. Mindlessly copying and paste corrections from an “AI” might make you feel more productive, but what starts as automation in one section (for testers in the case of accessibility testing aided with “AI”) becomes worse productivity somewhere else. For example, designers that don’t understand how to create accessible color pallets need to re-do them over and over again because “AI says no”, but they might not understand why. The same goes for programmers who will correct their code and never learn to do it correctly. If the “AI” is broken, or the problem is new, they don’t know how to deal with it. And sometimes the “AI” might just generate nonsense[^ “hallucination”] and the critical thinking of determining if it is right or wrong is absent.

I think the misstep in tone in any presentation, especially with “AI”, is to not acknowledge the threats that concern disabled people and the community that supports them. Dismantling the state apparatus in the US that has historically ensured that disabled people get their rights, the thread of war, massive cuts to health care, the attempts to treat disabled people as second-class people.

Not acknowledging these changes and then framing the European Accessibility Act (EAA) as an excellent business opportunity that will need more people to work on accessibility just shows how far apart the values of some accessibility companies are in comparison to the people they work with. Also, I’ve seen a fair share of people on LinkedIn who have moved on from Deque over the last year, maybe the need for “AI” would be lessened if those employees were kept?

As you might have noticed, I don’t mention the names of the presenters of the Deque session because while I think they believe what they say, their objectives, their values are company objectives and values. As a company, it is a straightforward thought to say “clients/stakeholders/investors want to hear about AI, let’s talk about AI”.

But in accessibility that does not work. I, personally, believe that it works nowhere. And even if “AI” was working and universally fixing ableist outcomes of human processes to be technically accessible, my values tell me that we only put icing on an ableist mud cake.

It might quack like a cake, walk like a cake, and look like a cake, but it’s still muddy underneath it. It also would make accessibility something with a price tag, something that can be saved if politics is not defending accessibility – like what happens in the US right now. A developer who has learned to produce good, accessible code will write it whether it is mandated or not. When you switch off an “AI Agent”, you’re left with nothing permanent and/or a decrease in accessibility in the future.

There is no magic wand to make accessibility happen, other than hiring disabled people and include them in every step, in every decision. You want “100% AI accessibility”, try the Accessibility Intelligence of actual disabled people.

There are use cases where “AI” tools can actually be helpful. In real-world situations where there is no description available, a picture description can help with orientation or finding things. When there is no alternative text provided, users can use it themselves to identify the photo. Then at least they are aware of possible mistakes. Providing transcripts in situations where there is no time or budget to have them done professionally[^ Apparently Deque thinks automated live transcriptions are good enough for an accessibility conference, and I vehemently disagree. The transcripts are barely understandable. They also sometimes transcribe “Deque” as “TC”. The captions appear to be much better.] can be a stopgap.

My values are people-based, are community-based, are society-based. I think when we learn from each other’s experiences, we will grow as humanity, and we will grow our humanity. I know that it doesn’t look like this at the moment, but no societal growth spurt happens without backlash or setbacks.

Accessibility is difficult, working in an ableist society is difficult. Realizing that ableism runs wide in the accessibility community hurts[^ Explicit props to Deque for making this a COVID/Influenza competent experience by holding it online. I also think this conference is much more accessible cognitively because you can watch the videos on your own time and from the comfort of your own home. Most conferences, accessibility or otherwise, have given up these crucial aspects of accessibility]. This is a chance to think about our own values and how we apply them to our jobs. For me, supporting people to experience all their human rights equally is a fundamental value. Not only that, but I think inaccessibility violates people’s dignity.

I, and probably everyone in the accessibility industry, could be in a better paying, less stressful, less occasionally antagonistic role with our skill set. Really good accessibility professionals (and yes, I butter my own bread here – deal with it) have skills that translate into all different situations because that’s what you need to be good at your job. You need to be a designer, a developer, a manager, a teacher, a decider, a reader of specifications, a shoulder to lean on, a resilient punching bag at times. Accessibility is a holistic discipline, so to be a specialist here, you also have to be a generalist in most other disciplines and a specialist in some.

It’s a tough gig, and we’re squeezed between our own goals and the compromises we have to agree to daily.

The reality is that most of us have so high values that we are bound to fail in an ableist society. “AI” won’t change that. What it will do, similarly to Overlays, is that it devalues accessibility work by decoupling it from the actual humans needed to do the work and from the actual humans who need the work to be done. (Especially in accessibility, there’s significant overlap between those groups.) We accept that the platonic ideal of accessibility is unreachable in this ableist society, but it doesn’t stop us to push the Overton window into a more accessible place. That acceptance is mostly self-protection and self-preservation. Without it, we would have a binary choice of giving up or pushing for perfection, but that’s just not how the world works. I know that this difference between what we want to do and what we can do is a huge burden, especially for people who are new to this, and there are few support structures in place to help to deal with this stress.

Telling people that accessibility “so close to 100% in a way that it doesn’t matter” is possible with “AI” is a gut punch. It undermines the expertise and the versatility of the profession. It makes accessibility a technological problem, but it is a human problem.

How do we know? “Accessibility will be solved by technology in 10 years” is progressing in the same rate as is “AI” in general and fusion power. It’s always around the corner. And then it never is.

What this causes is deferral and loss of knowledge. We already have a significant gap between juniors and seniors and no clear paths how people can train up to be better equipped with testing and fixing accessibility. That’s the challenge we already have and by declaring accessibility a “100%” solved problem, we’re losing the interest from new juniors in the field and devalue the knowledge of us who do this for a long time.

Do I think that I, someone who does this for over 15 years of in-depth experience, should not do the chores of writing up simple alternative text issues? Sure! But I also know that this is a great way to get started for people new to it and then step-by-step broaden their experience. In addition, what I write up for clients does not matter that much, but how I write it up, how I inspire them, how I engage them to address issues. Communicate where the main blockers for disabled people are, and ensuring that they don’t focus on small issues that are not that important in context.

The reality is that my values, my goals for my job are different from those of big accessibility companies. For a company, dependence is important. That creates long-lasting clients, and that brings in the money. While I want and need to pay my bills, earning money is not my goal because there will always be enough work for me. I look forward to – and fondly back on – every instance where clients told me that they now have accessibility under control. Just this year, a long-term client project halved their hours with me, not because the coaching wasn’t useful, but because they have now more knowledge and understanding and don’t need to rely on me as much. This is wonderful.

Overall, it’s totally fine to have different values and different goals. The disconnect exists when you try to convince me that your values are also my values. They are not.

Some interesting axe-con talks

Here are some axe-con talks that caught my eyes and that you should check out[^ You can make your own decision on what the choices say about my current state 😬]. I did not watch any of them before I wrote above because I could not make time for it yet.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

]]>
Two different kinds of “focusable” UI elements https://yatil.net/blog/focusable-ui-elements https://yatil.net/blog/focusable-ui-elements Sun, 10 Nov 2024 15:20:00 +0100 In accessibility, “focusable” UI elements are represented by two separate yet equally important concepts: the elements who can be focused sequentially and those who can only receive focus programmatically. These are their stories. Dun-Dun

While working for a client the other day, I found that Polypane[^ Affiliate link.], which is excellent in locating accessibility issues, showed elements with tabindex="-1" as focusable in the Focus Order section of the Outline tool.

I contacted Kilian to see why that was happening, and he pointed me to the Accessibility Tree, which showed the element as focusable, too.

This is where I understood that there was a mix-up between two concepts: Sequentially focusable and programmatically focusable elements. The former are elements that can be reached with the tab key. Mixing these concepts is easy, as we use “focusable” because it is short and because the concepts are somewhat related. But for accessibility testing and understanding why we see certain behavior, understanding the difference is important.

What are sequentially focusable elements?

For elements without a tabindex attribute, the HTML spec has the following list of sequentially focusable elements:

  • a elements that have an href attribute
  • button elements
  • input elements whose type attribute are not in the Hidden state
  • select elements
  • textarea elements
  • summary elements that are the first summary element child of a details element
  • Elements with a draggable attribute set, if that would enable the user agent to allow the user to begin drag operations for those elements without the use of a pointing device
  • Editing hosts
  • Navigable containers

In addition, elements with a tabindex attribute of 0 are also part of the sequentially focusable elements.

Elements with a positive tabindex attribute are also part of the sequentially focusable elements, but reorder the sequence[^ Note that positive tabindex values are always sorted to the top of the sequence. If three links anywhere on the page have the tabindex values of 7, 42, and 147 respectively, they would be sorted to the top of the sequence as first, second, and third item in the sequence.]. There are almost no circumstances that warrant positive tabindex values[^ In my opinion, positive tabindex values cause more harm than benefit, HTML should deprecate them and treat them like tabindex="0"].

Note: On macOS/Safari the tab-focusable elements are different from on other operating systems due to historical reasons. To test with a comparable experience, follow Browser keyboard navigation in macOS.

What are programmatically focusable elements?

Programmatically focusable elements not (only) receive the focus when the user presses the tab key, but can (in addition or exclusively) receive the focus through JavaScript’s focus() function or because a fragment identifier points at the element with a corresponding id.

All sequentially focusable elements can also receive the focus programmatically. In addition, a negative integer[^ While any negative integer is allowed, in practice -1 is usually the go-to value as other negative integer values have no different functionality.] value for the tabindex attribute makes an element a programmatically focusable area but does not add the element to the sequentially focusable elements.

Programmatically focusable elements are useful when you need to direct users to a specific place in a website or app, especially after actions. A table of content might want to set the focus on the heading (a non-sequentially-focusable element) when using a skip link. Adding a negative tabindex to the heading makes it possible.

While programmatically focused, the focused element is treated as being the focus sequence as if its tabindex value was 0. It’s inserted in the sequence and tab will go to the next item in the sequence.

In addition, negative tabindex values also remove sequentially focusable elements from the sequence!

A link with a negative tabindex cannot be reached with the tab key, but most assistive technologies work around it. Screen readers, for example, can set “screen reader focus”[^ And you really thought we had only two things that we call focus here? Oh, sweet summer child!] to such a link when using arrow key navigation.

Some UI elements like tabs can use negative tabindex and programmatically assigned focus to control the interaction.

Demo

Here’s a demo with different permutations of elements and tabindex values:

]]>
My grief with “In Brief” https://yatil.net/blog/my-grief-with-in-brief https://yatil.net/blog/my-grief-with-in-brief Sun, 08 Sep 2024 11:00:00 +0200 Just to preemptively state it: I appreciate what the Accessibility Guidelines Working Group (AGWG) is trying to do with the “In Brief” sections in WCAG’s Understanding documents. My criticism is about the execution of the information. In addition, this is not a plea to change it. I think the WG is very set on its approach and I learned it’s almost impossible to make it reconsider, so I don’t even want to bother trying. This is mostly documentation for myself.

Table of Contents

What are “In Brief” sections?

“In Brief” sections are information that has been added to every single WCAG Success Criterion Understanding page. They contain three bits of information: The goal of the success criterion, what to do to reach that goal, and why it is important to not violate the success criterion. Take for example the “In Brief” section for SC 1.3.1 Info and Relationships. First, the full Success Criterion as a reminder:

Success Criterion 1.3.1 Info and Relationships (Understanding)

(Level A)

Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.

And here is the “In Brief” section from the Understanding document[^ In contrast to the actual understanding document, I use an unordered list instead of a description list.]:

  • Goal: Information about content structure is available to more people.
  • What to do: Use code to reinforce relationships and information conveyed through presentation.
  • Why it's important: People can adapt the presentation to suit their needs while preserving the original meaning.

What is the goal of the “In Brief” sections?

The goal is to give people who are new to WCAG an easier to understand way to know what a Success Criterion is about. I think that is a great goal. The second goal stated in Shawn Lawton Henry’s comment on GitHub is to focus on disabled people’s experiences instead of (purely) conformance.

I think those are great goals.

Why I don’t like the current implementation of “In Brief” sections

I have multiple problems with the “In Brief” section as they are currently implemented. I hope some of them can be addressed, but I don’t hold my breath.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

1. Position/Design

For some time now, the “In Brief” sections are displayed between the Success Criterion title (and page heading) and the actual text of the success criterion (and non-normative notes quoted from WCAG).

In the WCAG 2.1 version[^ Please ask the AGWG about the existing of different explainer documents for normative requirements which have exactly the same wording.] of the Understanding documents, the “In Brief” section was only added to a few SCs. It was put underneath the Success Criterion boxes, and at least on desktop browsers, it was clear that the first part of the page was the Success Criterion and then the explanation followed.

I always thought that the visual distinction was a bit confusing, but at least it felt clear to me that the top had the success criterion and the bottom explains it.

Side note: While the pages always included the normative terms from the WCAG glossary, a reader might not identify them as such. They have also been renamed to “Key Terms” and collapsed as a section, further de-emphasizing their importance.

With WCAG 2.2, the “In Brief” sections were initially kept underneath the success criteria. But then got promoted to the most prominent place on the page, directly underneath the main heading.

The technically normative Success Criterion name is now followed by non-normative text, followed by the SC box (which contains the normative text of the SC and quotes non-normative notes), followed by explanatory text until the “Key Terms” expand/collapse which content itself is quoted normative content.

I’ve visualized the normative/non-normative balance in the following screenshot:

Compare this to a screenshot with the “In Brief” and “Success Criterion (SC)” box switched:

Now there are only two boxes: The heading and the two paragraphs and list of the success criterion are in a red box, then non-normative content starts.
Alternative order

I would even argue to integrate the heading and the SC text even better, getting rid of the SC box and maybe letting go of the notes altogether, since they are basically mini-understandings inside the specification.

Now, this would not be a big deal, if it was just a little more confusing to me, but there are reports of other people finding the Understanding documents harder to use. I have been quoted “In Brief” information as if it were normative text by clients. I opened an issue in June, and another one was opened in July.

One seemingly helpful suggestion was to link to the Success Criterion box directly (Example) by adding #success-criterion to the URLs that I share. But that hides the name of the Success Criterion and its number[^ Why are the numbers so small, btw?] and is disorienting. It also removes the branding from the link which is important to say “See, I’m not guessing, there is official information about this.” and helps with credibility.

2. Content/Information

Let’s talk about the actual content of the “In Brief” sections. Let me re-quote the 1.3.1 Info and Relationships one for you:

  • Goal: Information about content structure is available to more people.
  • What to do: Use code to reinforce relationships and information conveyed through presentation.
  • Why it's important: People can adapt the presentation to suit their needs while preserving the original meaning.

I picked this SC basically at random. This is not a good explanation of why 1.3.1 Info and Relationships is important at all, or how to do it. It uses jargon language that is also vague. It also does not cover the whole SC.

And this is a pretty easy to explain success criterion:

Information that is clear for people who can see the screen must be either available in text or in (HTML) code to allow assistive technologies to read this information. It also allows for adaption of the information to user’s needs. A heading must not only look like a heading, but be marked up like one. Screen reader users can then navigate from heading to heading, low vision users might decide to increase the size of headings or use specific colors to make headings easier to find.

Is this longer than the “In Brief” section? Yes, but it is also clearer for anyone reading it. Not only does it help to use full sentences, it also uses concrete examples and little jargon. This can be word-smithed for sure, it’s literally a first draft.

I also think that the goal of putting the focus on disabled people’s lived experiences is not really met with the “In Brief” as it is. 1.3.1 above talks about “more people” and that “people can adapt”. Disabilities are not even mentioned in many “In Brief” sections. Sometimes assistive technologies are used in the abstract without concrete use cases. SC 1.3.4 Orientation (AA)’s “In Brief” does a good job with its “Why it’s important” sentence: “Wheelchair users and others may have devices mounted in a fixed orientation.” Expand it to “Wheelchair users and others may have devices mounted in a fixed position, so allow that your content can be viewed in both, portrait and landscape orientation.”

3. Audience

And that brings me to the third point: What is the audience of the Understanding documents? For years, the audience was people who had the need to distinguish between pass and fail states. But they also helped clients to understand why we would fail something.

Having the SC and then supporting it with examples and different fail/pass cases is incredibly useful. It was never the most clear and best tool for the job, but it worked. Practitioners included links to it in audit reports and clients found it useful.

Since the change to “In Brief”-first listing, I had colleagues and clients confused. People share user styles to hide the section.

The Understanding documents try to be all things to all people, but they must be concise and helpful for conformance.

What to do?

Having an overview for users who are new to WCAG without all the baggage of the Understanding documents is a great idea. And it already exists somewhat in the What's New in WCAG 2.1 and What's New in WCAG 2.2 resources, which are specifically created for people new to WCAG. (Here I also prefer the WCAG 2.1 approach of showing the Success Criteria first and then explaining it.)

In any case, WCAG 2 and its Understanding documents are not the right place to start – How People with Disabilities Use the Web is a great resource to understand why accessibility is so multi-faceted. It’s a much better start. And yes, integrating these resources in the Understanding, or at least linking to them, is useful for many people.

I’m all for making the Understanding documents easier to understand, but adding more content is not the best way to go about. Every Understanding page has an intent section that already does a good job of explaining what the SC does:

The intent of this Success Criterion is to ensure that information and relationships that are implied by visual or auditory formatting are preserved when the presentation format changes. For example, the presentation format changes when the content is read by a screen reader or when a user style sheet is substituted for the style sheet provided by the author.

I think it’s clear that some de-jargoning and using simpler sentence structure would meet the goal of making the Understanding pages easier to understand without sacrificing their utility.

I think explaining WCAG success criteria in brief is not a good proposition in the first place. The Success Criteria are of varying complexity, but they all deserve that interested people read and analyze them. Sure, the approach to actually explaining WCAG SCs in detail (like I did for 1.4.11 Non-Text Contrast (User Interface Components) recently) will take them more time, but they also will have understood more of the nuance of the SC. There I start with rewriting the relevant part of the SC into more prose and then analyzing every part of the wording. This matters because it helps to form an understanding of how WCAG works.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Other examples

SC1.2.2 Captions (Prerecorded)

Several days ago, I posted my problems with the “In Brief” of SC 1.2.2 Captions (Prerecorded) (A) on Mastodon. It reads:

  • Goal: Videos can be played with captions.
  • What to do: Provide synchronized text for audio content in existing videos.
  • Why it's important: People who are deaf or hard of hearing can understand audio in videos.

Here, I especially don’t like that it says, “People who are deaf or hard of hearing can understand audio in videos.” The whole SC is about an alternative for the audio in videos. It is about making information in the audio of videos perceivable[^ In my experience, mixing perceivable and understandable when explaining WCAG concepts can lead to confusion, too. I try my best to use “perceivable” when explaining SCs/issues in the Perceivable principle, and reserve “understand” for the Understanding principle.] for d/Deaf and hard of hearing individuals.

In addition, “synchronized text” is more jargon than captions or subtitles. I can understand that you don’t want to repeat “captions” in all three sentences. But the uniformity of the advice is a self-afflicted constraint. “Videos can be played with captions” sounds a little like a technical problem, however, providing captions for media needs planning, some design decisions, and the infrastructure to make it work.

SC 2.5.8 Target Size (Minimum) and 2.5.5 Target Size (Enhanced)

For SC 2.5.8 Target Size (Minimum) (AA), the “In Brief” section reads (as pointed out on Mastodon, too):

  • Goal: Make controls easier to activate.
  • What to do: Ensure targets meet a minimum size or have sufficient spacing around them.
  • Why it's important: Some people with physical impairments cannot click small buttons that are close together.

For SC 2.5.5 Target Size (Enhanced) (AAA), the “In Brief” section reads:

  • Goal: Controls can be operated more easily, especially on touch screens.
  • What to do: Make custom targets at least 44 by 44 pixels.
  • Why it's important: Some people cannot tap small objects.

Again it uses jargon, “targets”, “minimum size”, “sufficient spacing”. The enhanced even says it applies to “custom targets”, something that is not defined or explained anywhere. And instead of naming disabilities that are concrete, it’s “some peopled” again. People with hand tremors or spasms are good examples of people who depend on large targets, whether they click or tap.

Minimum even names an exception as part of the “In Brief” which I’m not a fan of. Exceptions are compromises, not part of the guidance that I would expect on such an intro-level.

Updates

  • September 8th, 2024: Added second other example.
]]>
WCAG’s A and AA distinction is mostly academic https://yatil.net/blog/wcags-a-and-aa-distinction-is-mostly-academic https://yatil.net/blog/wcags-a-and-aa-distinction-is-mostly-academic Sat, 24 Aug 2024 18:20:00 +0200 On Mastodon, Steve Faulkner shared a link to a GitHub discussion around the A, AA, and AAA levels of WCAG (Web Content Accessibility Guidelines). In it, the question is asked what makes a Success Criterion (SC) A, AA, or AAA. Basically, the question is what criteria are used to decide the level for any specific Criterion.

The “Understanding Levels of Conformance” section in the Understanding documents explains which considerations contributed to the decision for each criterion (paraphrased):

  • Is this SC essential for access overall?
  • Can the SC be achieved by all websites and apps?
  • How easy is it to learn or address the issues that this SC uncovers?
  • Will meeting the SC require changes to the design or functionality of the site or app?
  • Is it possible to work around requirements?

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Importantly, not all criteria apply to all Success Criteria. But here are some examples:

  • 2.1.1 Keyboard is Level A despite the effort it can take to implement keyboard navigation and the occasional impact on design and functionality because keyboard access is absolutely fundamental for accessibility. There are very limited workarounds when keyboard access is unavailable.
  • 1.4.5 Images of Text is Level AA because it can change the design, it can sometimes be difficult to change from an textual image to “real text”, depending on the tools used, and text alternatives (and more recently OCR) can be valid workarounds.
  • 1.2.6 Sign Language (Prerecorded) is Level AAA because recording and embedding sign language information can be a significant effort and is probably unrealistic for many websites (for example news sites that are frequently updated). Most sign language users can also perceive written information.

While this is easy enough to do when creating the SCs, the levels lose their usefulness when clients try to use them as signifiers of what is more important. Because the reality is: everything on the level you want to conform to is equally critical.

The Levels are also the result of a political discussion during the creation of WCAG, there is some amount of back and forth that happens when new SCs are introduced, and the group needs to come to a consensus. A W3C member might feel strongly that an SC is so difficult to implement that it should be Level AAA. The group has only two options: Try to change the SC until the member agrees to move it to a lower level, or accept the AAA designation.

In practice, it makes almost no difference for disabled people in which order issues are fixed, with the following exception:

Non-interference SCs are four SCs that are listed in WCAG that create barriers so significant, that they affect the ability to use the page overall. Those SCs are (order as in WCAG):

So, if anything, failures concerning those SCs should have preference over others. As for the A/AA distinction, it’s mostly academic: Most would agree that conforming only to Level A is not good enough to ensure that most disabled users have basic access. Level AA (which means meeting all Level A and AA criteria) is widely considered the absolute baseline. And that includes laws and policies around the world.

In my final talk, “Web Accessibility is broken. It’s time to fix it.”, I proposed gentle WCAG reform (instead of the W3CAG revolution). Video here. My suggestions included combining the A and AA Levels.

AAA Level SCs should be checked if they are more achievable today than when they were introduced and either imported into the standard (making them A/AA) or exported into modules that individual websites could then choose to conform to.

For the above-mentioned Sign Language Success Criterion, websites would conform to WCAG 2.5+Sign Language. The modules could be listed in the accessibility statement of the site, and users who need the information would know better which features they could expect.

This approach would also allow getting rid of some redundant success criteria: 1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A) requires a audio description or a transcript with described audio, while 1.2.5 Audio Description (Prerecorded) (Level AA) requires audio description, essentially removing the option to use a descriptive transcript instead.

Similarly, another contested issue could be simplified: 3.3.2 Labels or Instructions (Level A) technically only requires that labels need to be present, 2.4.6 Headings and Labels (Level AA) requires that the labels are also actually descriptive. In practice, because most conformance is aiming at Level AA anyway, labels need to be descriptive[^ And yes, it’s a good question if the distinction of these two SCs is really useful…].

In my trainings, I only teach levels as conformance levels and not really elaborate on individual SCs Level rating. When I point out what the Conformance Levels do, my short, easy to learn explanation is:

  • A: Removes many barriers for many disabled people.
  • AA: Removes most barriers for most disabled people.
  • AAA: Removes additional barriers.

It’s not the most clear and comprehensive way to phrase it. But it gives student’s enough to not worry about individual levels. It also helps explain why A conformance is not enough, and AA conformance does not mean that your website/app is “accessible”.

]]>
The infuriating inefficiency of accessibility audits https://yatil.net/blog/the-infuriating-inefficiency-of-accessibility-audits https://yatil.net/blog/the-infuriating-inefficiency-of-accessibility-audits Sat, 27 Jul 2024 16:40:00 +0200 Accessibility audits are the bread and butter of every accessibility consultancy. It’s an easy to package product that clients have learned to ask for and buy. They have expectations on the deliverables and the form of an audit. Audits are usually also thorough, following established international guidelines (usually the Web Content Accessibility Guidelines).

Note: I think this article applies to all kinds of accessibility audits, whether they are called “review” or “check” or “audit”.

Table of Contents

What’s this all about?

Audit reports can be very long with dozens of issues and how to solve them. They include simple failures like missing alternative texts or single unreachable buttons, as well as more fundamental issues like a color scheme that produces low-contrast text or UI elements that are difficult to make accessible.

An example of the latter is what I call “overloading UI elements”: Modern search fields that you see at the top of many websites, especially in e-commerce, are often overloaded. They look like a simple search field, but in reality are a button that opens a dialog with promotions and once you start typing it works like a suggestion combo box. Three UI elements looking like one different UI element.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

The cost of fixing (accessibility) bugs

In 2002, the U.S. Department of Commerce’s National Institute of Standards and Technology (NIST) published a report called “The Economic Impacts of Inadequate Infrastructure for Software Testing”[^ Find a PDF version of the report linked on the NIST website (probably not an “accessible” PDF).]. This NIST report looked into where testing would be most efficient to find and correct bugs during a software life cycle.

The findings and methodology of the report are interesting, and I would recommend taking a look at it. Table 5-1 is very illustrative of the problems of correcting errors late in development:

Table 5-1. Relative Cost to Repair Defects When Found at Different Stages of Software Development (Example Only)
X is a normalized unit of cost and can be expressed terms of person-hours, dollars, etc.
Requirements Gathering and Analysis/ Architectural Design Coding/Unit Test Integration and Component/RAISE System Test Early Customer Feedback/Beta Test Programs Post-product Release
1X 5X 10X 15X 30X

Accessibility audits almost always happen after launch, as an afterthought. That means that errors that could have been found in the requirement analysis are 30 times harder to fix[^ Note that this is a “counterfactual” or hypothetical example. The report goes into detail to show that different companies in different circumstances have different factors here. The main point is that fixing any bug post-launch will be more costly than avoiding or fixing it beforehand.]. This makes accessibility audits seem very inefficient.

To address this, accessibility people recommend shifting testing to the left. Every accessibility issue that is discovered early pays off many, many times. Even more so if you avoid the issue outright. This is what table 5-2 from the report demonstrates:

Table 5-2. Preliminary Estimates of Relative Cost Factors of Correcting Errors as a Function of Where Errors Are Introduced and Found (Example Only)
Where Errors are Introduced Where Errors are Found
Requirements Gathering and Analysis/ Architectural Design Coding/Unit Test Integration and Component/ RAISE System Test Early Customer Feedback/ Beta Test Programs Post-product Release
Requirements Gathering and Analysis/ Architectural Design 1.0 5.0 10.0 15.0 30.0
Coding/Unit Test 1.0 10.0 20.0 30.0
Integration and Component/ RAISE System Test 1.0 10.0 20.0

Now, of course, some teams are quicker remediating issues later in the life cycle, but other teams are not. Every team has to find that balance for themselves. My observation is that most teams go from “let’s fix the errors in this report” to “this is tedious, how can we avoid making mistakes in the first place?” really quickly.

Avoiding accessibility bugs in the first place

One of the frequent questions clients ask me is: “How would you address this issue?” In many instances, my response is that I would not have created this UI component/interaction/design in such an inaccessible way in the first place.

With the knowledge of the guidelines of accessibility in mind, a lot of the issues can be avoided by the decision to implement simpler, easier to code and test designs. That does not mean making designs and interactions less appealing, but taking the route of least resistance.

Some examples:

  • Before the <dialog> element was widely available, instead of using custom-made and therefore complex and error-prone dialogs, I often opted for simpler solutions, like expandable sections on the page.
  • Instead of hand-coding a custom select box for styling, I would be content with changing the appearance of a native one.
  • Instead of dynamic error messages for forms, I’d let people submit the form and design the error messaging really well – with an overview list, the number of errors in the title, and links to the specific erroneous fields.

I understand that not everyone is in the position to make these decisions, to trade fidelity for speed. But it feels that in a glossy Figma-driven world, many are not aware of easier options.

It’s essential that web designers and developers learn how to create simple, straight-forward experiences that are not always fancy. The goal is not to make websites boring – a common misconception about accessible websites – but allow time to do the important, complicated interactions right.

Audit reports are often long and complicated

One of the most challenging tasks as an auditor is to communicate errors and fixes efficiently. I have made reviews that fit on a couple of pages and also in-depth audits of many web pages that spanned hundreds of report pages.

The reality is that the usefulness of an audit report is getting worse and worse after maybe the first dozen tested pages. What’s wrong there is wrong everywhere. These days, I test fewer and fewer pages if I can help it. This keeps audit reports shortish and also allows for easier remediation by clients.

I generally include:

  • Essential and typical workflows: This could be “buying a thing in the shop and checking out” or “creating an account and interacting in a chat interface”, for example.
  • Important pages: Pages where people land on from external sources, including the home page, legal information, accessibility information, contact forms.

I make clear that all issues are only examples and that I trust that the developers know their code best and find other instances. I usually also include consulting hours to work through open questions over time.

Keeping error descriptions brief and clear is also important. Most clients are uninterested in why something is broken, their goal is to fix it. Nevertheless, this is a great place to add some education into a report. Refer to the interactions of disabled people that are disturbed by the error and why it is important in one sentence or two.

Then give the most comprehensive solution that you can. It’s OK if that is “Change this implementation to follow this blog post[^ Who are we kidding, it’s 99% a link to Adrian Roselli’s excellent blog!]”. Or just a snippet of code. Make fixing errors not intimidating.

Remember that most designers and developers getting these reports are new to accessibility. That’s also the reason you have to explain the same concepts over and over again. Most web developers were not even in their teens when you taught alternative text in 1999.

Of course, these indirections lead to a heightened effort for accessibility: Auditors have to get access, understand the site, structure and conduct their testing, putting the results in an easy-to-understand document, and hand it over to explain to designers and engineers. And those people then have to translate it back for their needs.

Why not fix it for them?

Remediation as a service can certainly work in projects where no development team exists that regularly deploys updates. Smaller online shops come to mind. Sometimes embedding accessibility into larger organizations also helps to quicker translate the needs to fix accessibility internally.

But for the small project, a theme update or a new plugin can make the site inaccessible again. With larger projects, the risk is that people rely on the accessibility person’s expertise and not enough knowledge transfer happens to make accessibility stick.

In addition, the people working on the code already know it best. If they are not burdened by processes, they can often make fixes remarkably quick themselves.

There is no one-size-fits-all situation here. The approach that seems to work best for the teams I work with is a good review with details and then regular consulting check-ins to help them along the way. I have seen many teams getting self-sufficient really fast, learning along the way.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

What you can do to expedite audits

Attempt to fix the basic accessibility issues. While automation will not fix all your accessibility issues[^ and neither will “AI”], a good number of technical errors fall into very easily detectable categories. Getting these top issues fixed will make a real difference to people. Think about hiring an accessibility person for a few hours to talk you through the results of your automated testing and suggest fixes. This can also help to guide you to the right path when your ideas are wrong or overly complicated.

Going through this process also helps to define what an audit might entail and makes good sample decisions easier.

It’s also important to not be minimalist when fixing issues. Don’t discuss what the minimum is that you need to do to just pass WCAG. When we recommend a best practice solution, implement it along the guidance. It’s easy to split hairs whether a Success Criterion is really failed or not, but that energy is often spent better elsewhere. The same goes for auditors as well. Try not to be overly pedantic, and be patient and compassionate when reporting issues. It helps nobody to be antagonistic. Resolving high-impact issues is more valuable than the long tail of little technical infractions.

]]>
In detail: 1.4.11 Non-Text Contrast (User Interface Components) https://yatil.net/blog/non-text-contrast-in-detail-ui-components https://yatil.net/blog/non-text-contrast-in-detail-ui-components Sun, 23 Jun 2024 19:30:00 +0200 The Web Content Accessibility Guideline’s (WCAG) Success Criterion 1.4.11 Non-Text Contrast is one of the harder to understand requirements. Here’s a deep-dive into the details of it, including practical examples, concerning only its “User Interface Components” section.

Because, of course, this SC has multiple sections:

1.4.11 Non-Text Contrast (Understanding)

(Level AA)

The visual presentation of the following have a contrast ratio of at least 3:1 against adjacent color(s):

  • User Interface Components: Visual information required to identify user interface components and states, except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author;

  • Graphical Objects: Parts of graphics required to understand the content, except when a particular presentation of graphics is essential to the information being conveyed.

Rewriting this Success Criterion for UI components only could look like this:

Visual information required to identify user interface components and states must have a contrast ratio of at least 3:1 against adjacent color(s), except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

A practical example

Oliver Schöndorfer, who runs Pimp My Type and its associated YouTube channel, posted the following image to LinkedIn recently, accompanied by the question:

Does this pass WCAG 2.2 color contrast, dear #A11Y and UI design folks? I’m relating to Success Criterion 1.4.11.
A mock-up of a login form, with a “Your email” and password fields, the inside of the form fields is white, the outside cream colored. The fields also have a light grey border. Both form fields have a placeholder text of “Email” (!sic). The contrast between the background colors and the border is highlighted: 2.87:1 between the outside color and the border, 3.41:1 between the border and the white form field background color. The form also has a continue button and create account and forgot password links.
Oliver’s illustration

The question is (in my words): If a UI component has a border and the contrast is at least 3:1 against only one side of the border, does the UI element still meet WCAG SC 1.4.11 Non-Text Contrast?

To be able to demonstrate how to apply the success criterion, I have recreated the form in HTML and CSS (Codepen):

See the Pen Login by Eric Eggert (@yatil) on CodePen.

I tried to stay true to the original without being pixel perfect. I also had to guesstimate the colors from the compressed social media JPG. In the end, I decided to use the following colors:

With this groundwork done, we can dive into seeing if the form fields meet the minimum contrast requirements of WCAG. Notice how we don’t even look at the question Oliver posed for quite some time, as we first need to look into the possibility that this Success Criterion doesn’t even apply:

Does it meet exceptions?

The first step of seeing if a Success Criterion even needs to be looked at is to check exceptions. If the UI component (in this case) is covered by an exception, it’s an automatic pass, and we don’t need to think about it further. Let’s remind ourselves what the exceptions are in this case:

…, except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author.

Inactive component?

The graphic does not provide us any information about the interactivity of the input fields. It’s unclear if they are “inactive”, but I think for the question to make most sense, we can assume that this is an active login form. This exception does not apply.

As a reminder: Inactive components in HTML are inputs that have the disabled attribute or are made to work like a native component that has it – no mouse or keyboard or other interaction, and no inclusion in the accessibility tree.

User agent component?

This exception is very narrow, and its goal is to cover UI components where developers have no influence over the rendering (let’s say a native file or color picker). Sometimes developers can also take standard components to prototype, or for quick development of unexpected functionality. However, once you modify the UI element in any way, you’re on the hook for the proper color contrast, this includes changing the color of the text.

In our case, this exception also does not apply, as the input forms are designed (colors, borders, rounded corners).

What visual information is required?

That leaves us with the rest of the requirement:

Visual information required to identify user interface components and states must have a contrast ratio of at least 3:1 against adjacent color(s), …

The question that we have to ask ourselves is: Is the border visual information required in the context it is in? In most ordinary forms, I would say that this is the case. Where to click and see where form fields are is essential to filling out the form. Forms are usually not universally designed: Sometimes an associated field is below its label, sometimes next to it, and occasionally the form field is above the label.

But this is a very specific form: A login form. And it is in a dialog. As Patrick H. Lauke wrote in a LinkedIn comment (slightly edited for clarity):

Even if there was no contrast between the border and the inner and outer colour, it would arguably pass because the placeholder text there gives a hint that there’s an input field. So there’s no hard need for the border to identify/perceive the presence of the field.

To demonstrate this, I’ve removed all color from the login form:

See the Pen Login no colors and lines by Eric Eggert (@yatil) on CodePen.

Without the border, the placeholders together with the labels and the positioning act as the visual information to identify the form fields. The border isn’t even needed, so we would determine that this passes the Success Criterion. This is why the context is critical, and also why it is so tough to automate accessibility.

Just to be clear: Passing WCAG does not mean that it is a good design. It just means that you did meet the lowest bar.

Removing the placeholder text

In accessibility, we generally argue against placeholder texts, as demonstrated by this placeholder text research by the Low Vision Accessibility Taskforce of W3C. And while placeholders have the most impact when they are replacing labels, in this instance they are completely redundant to the email and password labels.

If we remove the placeholder, it becomes much less clear where to click. Yes, the most likely position of the form fields is underneath the labels, but that would be a pure guess, and guesswork like this means that the visual information required to identify the UI component is missing.

So this is when Oliver’s question becomes relevant! We’ve identified that the borders are indeed the “visual information required to identify” the UI component if there are no placeholders. With colors and borders added back in, it looks like this:

Next step! The requirement says that the UI component must have a contrast ratio of at least 3:1 against adjacent color(s).

One misunderstanding that I have seen in the LinkedIn comment underneath Oliver’s post was the assertion that the border must have a minimum 3:1 contrast ratio against both, the background of the input field and the background of the dialog. If that was the case, this would fail because we (deliberately) picked one color that is less than 3:1.

But this is not what WCAG requires (as the bare minimum) here. The border is not the UI component, the input field is, so this is about colors adjacent to the input field. Because WCAG is written in a way that works for all technologies, it does not care about where the CSS for the border is actually applied to:

An <input> element with a border would be judged the same as a border-less <input> element with a <span> around it, where the border CSS is applied to the <span>. It’s always about how the complete control is perceived by a user.

To be conforming, we look for a 3:1 contrast edge. That edge is there between the background of the input field and the border.

The easiest way to verify that it’s a sufficient edge is to “level out” non-conforming colors. The dialog background color and the border color could be the same color (with a contrast of 3:1 to the input field background) as far as we’re concerned, it would not change how we determine conformance. Colors with less than the minimum contrast are always insufficient, no matter if that contrast is 1:1 (same colors) or 2.99:1 (different colors).

So with the dialog background color being the same as the border color, we get this outcome:

See the Pen Login, dialog background is border color by Eric Eggert (@yatil) on CodePen.

Because the input fields are easy to recognize here, we can be sure that they conform to WCAG. (Yes, in this demonstration, the contrast of the text does not meet the contrast ratio, but this is irrelevant for finding out the impact of the border.)

Why does it say adjacent color(s)?

Depending on your use case, you might have several adjacent colors instead of one. Imagine the input fields had a background gradient for some reason. Some adjacent colors would be insufficient. This can make the determination if a user interface component meets WCAG much more complicated. (And you thought this was already a long article!)

In that case, you would mostly do the same as above but for every color change: If the color change is insufficient, you disregard it and “level it out”. Then you look at the resulting shape: Would it be possible to recognize the user interface element? Then it passes.

Is this good design?

WCAG does not define what good design is. Its goal is to have Principles and Guidelines that guide you towards an accessible result. The Success Criteria are guardrails that make sure you’re not completely on the wrong track. (See: WCAG 2: Guidelines and Guardrails)

In most cases, doing the bare minimum is not making it particularly easy for your users to interact with your content. It only ensures that people with disabilities are not entirely shut out. I would recommend always using a more contrasting color for the border, and also suggest using a 2 pixel wide border:

See the Pen Login improved by Eric Eggert (@yatil) on CodePen.

Some additional considerations

If you can, optimize the design before implementation. That includes the positioning of the links for creating an account and requesting a new password. In the design above, they are underneath the “Continue” button, which means some users that navigate through the page linearly with the keyboard or screen readers don’t encounter them until after the form has already effectively ended with the “Continue” button.

To make these links easy to discover, I put a link next to the login heading that says, “or register”. The “Forgot password?” link is put directly after the password field. In addition, I reinstated the underlines on the links and used CSS text-underline-offset to allow for a little more breathing room between the link text and the underline.

See the Pen Login optimized by Eric Eggert (@yatil) on CodePen.

Avoid putting form related information after the submit button of a form, common instances where this happens are coupon code fields or terms and condition checkboxes. All information to complete a form must be available before submitting it.

]]>
“AI” won’t solve accessibility https://yatil.net/blog/ai-wont-solve-accessibility https://yatil.net/blog/ai-wont-solve-accessibility Fri, 05 Apr 2024 14:30:00 +0200 In our tech-focused society, there is this ever present notion that “accessibility will be solved by some technology”. But it won’t. Making things accessible is a fundamentally human challenge that needs human solutions in human contexts. I wrote about automated testing before.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

And because the current technology en vogue is “AI”, currently some people float “AI” as the way to make accessibility happen, and not just “improve some aspects” or “help some users to get to better information”, but in the sense of “nobody will need to know anything about accessibility, as AI will make it irrelevant”.

This is a dangerous proposal. In her book Against Technoableism, Ashley Shew outlines how accessibility “solutions” are often forced onto disabled people by nondisabled people who do not share the experience and think that they know better.[^ Disclaimer: While I have a history of being disabled (child-age asthma), I would not consider me currently disabled as it was only a temporary disability.]

A few weeks ago, Jacob Nielsen formulated the following idea in his ill-advised column:

I foresee a much more radical approach to generative UI to emerge shortly — maybe in 5 years or so. In this second-generation generative UI, the user interface is generated afresh every time the user accesses the app. Most important, this means that different users will get drastically different designs. [… F]reshly generated UIs also mean that the experience will adapt to the user as he or she learns more about the system. For example, a more simplified experience can be shown to beginners, and advanced features surfaced for expert users.

And now Gregg Vanderheiden writes along the same lines on the Accessibility Guidelines Working Group[^ The Accessibility Guidelines Working Group (AG WG) is the place that develops all W3C Accessibility Guidelines that are not ARIA related. It’s the successor/renaming of the original Web Content Accessibility Guidelines Working Group or short WCAG WG.] mailing list, the group he formerly chaired:

You [Patrick H. Lauke] asked — when does it end?

wow — I hope it ends with us not having to do anything (or almost nothing) with regard to accessibility regulations for ICT because each individual gets information and interface presented to them that is optimized for them as an individual !

This is a dangerous and impractical idea for many reasons, including:

  • Consistent user interfaces are easy to use and remember. User interfaces that change shape or hierarchy when the user interacts with them will make them harder to use.
  • User Interfaces are designed with intention[^ at least they should be], they are to guide users to a specific outcome. An “AI” cannot know a certain intention, it might come up with interfaces that are harder to use.
  • How dynamic would those adaptions be? Would a website look different when I get there with a migraine? And if so, will the generated UI that I need to learn be better for me, or would I be done with my task before I had even learned the UI?
  • What would be the parameters to adapt the UI? Where would the “AI” get the information about the website? Directly from the database? From a general purpose UI?
  • How would an “AI” make sure that a website is inclusive? How would it prevent to leave screen reader users with a text-only version, excluding screen reader users with sight from imagery?
  • How would the “AI” know what the user needs? Does this put an unnecessary burden on the user to communicate needs in detail and accurately to get a usable result? Is that not shifting the burden for accessibility from paid professionals to disabled people?
  • What about cognitive disabilities? How does an “AI” ensure they do not continue infantilizing people with cognitive disabilities and keeping vital information from them? This already happens today because humans make assumptions about others. That’s why I think it’s essential that the original, unchanged content is always available to everyone.
  • Also, I do not see a world where companies are willing to give one of their main marketing avenues in the hand of “AIs”.

Hidde wrote in detail about the “generateability” of UI.

Now, Gregg might be thinking about user-side “AI” to make those changes. And I think enhancing user preferences, especially in mainstream browsers, makes a lot of sense. I even helped to start a W3C Community Group about that a few years ago[^ That was before I realized how bad my burnout from W3C work was, so I had to stop.].

But none of that is “Generative UI”. It is a base UI, which must still be accessible and then adapting it to user’s needs. And yeah, currently, we need to write custom CSS to do this, or go through browser and operating system settings to select the options we need.

This can surely be automated: “I want my websites to display text at least 12px and fill the available viewport. Display them in an off-black background color with pinkish-white text color.” Taking an LLM and interpreting that into a custom style sheet or operating system settings makes a lot of sense to me to lower the barrier of entry for these settings.

The simple fact is that we already have all the technology to make wide-spread accessibility a reality. Today. We have guidelines that, while not covering 100% of the disability spectrum, cover a lot of the user needs. User needs that fundamentally do not change.

Will we have some “AI” technology breakthrough at some point? Maybe. But do we really want to squander “AI” technology on simple things that are essentials? Like having “AI” figure out the text on a button or the alternative text of the 1000th edit pencil icon? Is that a good use of our resources? Especially with the incredible amount of energy these models currently use.

I wished I were surprised that people who used to be leaders during the web revolution cling now to the next thing[^ I’m especially not surprised that Vanderheiden is an AI fan, he planned to sit on a panel with Overlay vendors until the panel got cancelled because contrary to claims in the conference’s program, it was not IAAP sanctioned.]. It’s challenging to stay relevant. But there isn’t even experimental evidence that the “generative UI” works, let alone that it will be production ready any time soon. “Generative UI” is nice speculative fiction, but it is that. A guess of the future.

Tech “leaders” promised self-driving cars “next year” for a long time. Disabled people are often used in their marketing. Finally freeing them from the need to stay at home. But the reality is that better infrastructure, mostly through public transport and safe to use pedestrianized areas (with car access for those who need it) already would solve for a lot of the need. Would self-driving cars still be an improvement or even essential for some? Sure. But they do not (meaningfully for everyone) exist.

So let’s improve what we have, and make the world and the web better now, instead of waiting for lofty technologies that may never come.

]]>
Be anti-ableist https://yatil.net/blog/be-anti-ableist https://yatil.net/blog/be-anti-ableist Fri, 05 Apr 2024 14:15:00 +0200 In the last couple of weeks, I had some encounters that made me think about the state of ableism. Turns out that despite a lot of slow but meaningful progress, the world overall is still pretty much ableist.

This is not news for anyone who is disabled, of course, and it shouldn’t be for anyone who works in the field of accessibility.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

In fact, cultural ableism is often the greatest obstacle to overcome – for some disabled people, quite literally. Ableism during an accessibility project can manifest in different ways, the most common are probably:

  • Limited budget because accessibility is not considered that important.
  • Undereducated project managers, designers, and developers because other topics are always more critical to get trained on.
  • Endless discussions on what and how to implement accessibility because investing time into discussions seems more important than just doing the thing.

I think most people involved in accessibility are doing it in good faith. I think they want to change and improve and make their product better. But they are held back either by the climate of ableism or by their own internalized bias.

That’s, of course, not an excuse, but if we intend to dismantle ableism, we need to acknowledge it and its mechanism.

Accessibility doesn’t just happen in an ableist world

Often, when starting projects, clients have the expectation that they have done a good job with accessibility. But when you ask them about their quality assurance process or how they have ensured that their code is accessible, they regularly draw a blank.

The expectation is that accessibility comes automatically with a certain framework, or that smart programmers and designers will naturally come up with accessible solutions.

Sometimes, the answer is “we agreed to produce accessible code” and then you find misguided techniques in the code because the developers were asked to just learn on the job.

But accessibility doesn’t just happen in an ableist world. The mechanisms and automatisms are not tuned to produce accessible content, code, or designs. As a designer, developer, project manager, and really in any role, you have to focus on accessibility and do it intentionally. Every day of the week. Because it will not happen automatically.

You must be anti-ableist.

I see ableism in line with racism and fascism in that there is no neutral position on these topics. If you are neutral on racism, you will live in a racist society. If you are neutral on fascism, you will live in a fascist society. Only if you are anti-ableist, investigating your biases and practices, as well as seeing ableism in the world around you, you can succeed. Otherwise, the inertia of an ableist world will make your work ableist and therefor inaccessible.

]]>
Access by a thousand curb cuts https://yatil.net/blog/access-by-a-thousand-curb-cuts https://yatil.net/blog/access-by-a-thousand-curb-cuts Sat, 09 Mar 2024 10:15:00 +0100 Accessibility, especially on the web but also elsewhere, is a complicated combination of people with different roles working together. At any point during the creation of a web page, a blog post, its design, sourcing of images, or writing, issues can creep in.

As accessibility people, we often look at the end product and say “this is not accessible” (often meaning “this does not meet the minimum standards set out by WCAG”). And yes, it is always difficult to make everything 100% correct. Nobody’s perfect, and we have to make sure that perfect is not standing in the way of progress.[^ Hi Meryl.]

People love to claim that “accessibility failed”[^ No, I won't link to the Jakob Nielsen piece, but instead leave this Mastodon post/thread by Adrian Roselli which lists all the rebuttals.] but Léonie Watson describes plenty of interactions that would not have been possible a couple of decades ago. These advantages did not all arrive at once. It’s step by step improving accessibility.

The same goes for making the physical world more accessible: Curb cuts are essential for people using mobility devices, be that wheelchairs or walkers, to get around efficiently. Of course, you might say, we should have started with curb cuts earlier, and we should have accelerated the implementation of curb cuts. And I agree in principle. But there are always other constraints, in this case (and many others), it’s all about the money. Still, there is no denying that cities are more accessible due to the curb cuts.

For accessibility, we like to look to the WebAIM Million survey report. It says, “96.3% of home pages had detected WCAG 2 failures!” This sounds like a lot, but it is also like asking, “How many cities have all their curbs cut?” I’m pretty sure that percentage is lower than that of accessible home pages.

This is where the binary pass/fail of WCAG as a whole can’t convey the nuance that is needed in the conversation. Let’s look at the top 6 issues and see if we can see a positive or negative trend (change in percentage points):

  • Low contrast text
    • 2019: 85.3%
    • 2023: 83.6%
    • Change: –1.7%
  • Missing alternative text
    • 2019: 68%
    • 2023: 58.2%
    • Change: –9.8%
  • Empty links
    • 2019: 58.1%
    • 2023: 50.1%
    • Change: –8%
  • Missing form input labels
    • 2019: 52.8%
    • 2023: 45.9%
    • Change: –6.9%
  • Empty buttons
    • 2019: 25%
    • 2023: 27.5%
    • Change: +2.5%
  • Missing document language
    • 2019: 33.1%
    • 2023: 18.6%
    • Change: -14.5%

These are genuinely great numbers in terms of progress, especially as these issues make it impossible for some to not use affected websites at all. And even then, this says nothing about the severity of the issues because where they can have a major impact on the accessibility of a page: If links in the main navigation are empty, the impact is much higher than when social media links in the footer are empty.

Sweeping statements that accessibility “has failed” are often misguided. Improving 10 percentage points of accessibility errors in a category in four years is good. It’s trending in the right direction. Of course, there are still a lot of issues, but that is to be expected. I’m excited to see the details of the 2025 survey. (But really, developers, we have to talk about empty links and buttons, you can do better!)

That is also only the technical side of things: There are laws, like the European Accessibility Act, that are coming in effect which hopefully accelerate the adoption of good practices. I work with several high-profile clients, and there is a lot of work happening behind the scenes to make the deadline. Try a website or online shop that was inaccessible to you a year ago, it might have improved in the meantime.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

And some of the machine learning also improves steadily. That podcasts now come with transcripts by default when using Apple Podcasts is a great change (even if they won’t be perfect in many circumstances). But I think even more important is that podcasters who can provide their own, better, transcripts, now have a documented way to do so that could show up in other podcatchers as well.

It’s not all doom and gloom as it might seem (although it is always totally OK to feel that way) and we have to acknowledge the progress we make every day.

]]>
It’s the hope that kills you https://yatil.net/blog/hope-kills-you https://yatil.net/blog/hope-kills-you Sat, 03 Feb 2024 10:45:00 +0100 I place the start of my career in accessibility to some time in 2008. Sure, I had done accessibility stuff before then, but I always saw me as a front-end developer with an interest in accessibility, not an outright person whose main focus was accessibility. I chose this profession because I believe in a web for all, a discrimination-free environment where everyone can be themselves, unburdened from the constraints of the physical world.

Of course, I knew that getting there would be a struggle. Too many people don’t care about disabled people until they experience disability themselves. But I hoped it would get easier over time. Technology advances, browsers got better, we front-end devs got many more tools to make websites beautiful and accessible.

I joined W3C/WAI in 2013 because I imagined I could change the world there. A little. Your work has a much better impact when you conduct it at such a pivotal place in our community. For the first few years I had a blast and contributed to wonderful projects, like the Web Accessibility Tutorials, the WCAG Quick Reference update for WCAG 2.1, and the redesign of the WAI website. Despite the frustration around the bureaucracy, the impact was worth it. The accessibility tutorials alone got many millions of hits during the years, and I still get appreciation for the Quickref when I mention my involvement in it. That said, I never felt that I had done enough.

The WebAIM million in aggregate only shows an improvement of 1.5% of home pages where no WCAG error can be automatically found between 2019 and 2023. While that sounds like almost no progress, 15,000 home pages have been fixed over that time. That’s not shabby at all!

And if you go even deeper into the data, there is even more hope to be found. Missing alternative texts: down 9.8%. Empty links: down 8%. Missing form input labels: down 6.9%. Missing document language: down 14.5%.[^ These are absolute percent differences.]

This is great progress. The WebAIM million shows us that it is difficult to make websites 100% compliant, but it also shows us that progress is made. We have to see that progress for what it is – good trends in the right directions.

I have seen the main WebAIM million number (“96.3% of home pages had detected WCAG 2 failures!”[^ That’s literally the quote from the WebAIM website, including the exclamation mark.]) quoted in relation to the need of overlays to make accessibility work.

For those who are not aware, accessibility person Mike Paciello has joined AudioEye, a company that is, among other things, known for using SLAPP suits to silence critical professionals. And where we had a fairly unified front against overlay technologies, some accessibility leaders started to schmooze up to them: “Maybe Mike can turn the ship around!” – “This is perhaps a sign of them changing!”

I don’t see this happening. There hasn’t been a public apology for the deceptive marketing, there has been no moves that inspire trust that this happens. Fool me once, shame on me. Sue acclaimed professionals, shame on you.

But it shows that the old marketing trick, to find a popular testimonial in the community you want to market to, works.

The fact is: Apart for determining if a website meets WCAG 2.2 AA, for example, meeting WCAG 2.2 AA is not that important. Removing the barriers that prevent people from using a site is much more critical. Some bad color contrast in the footer? Almost irrelevant. Social media icons without alternative text? Annoying but hardly preventing users from reading the actual site.

Seeing people aligning themselves with a person they trust and have trusted over the years is understandable. So is having the hope that they can turn the ship around. I understand that.

I understand that because I imagined being able to have a bigger impact at WAI. I hoped that we could be more agile, provide developers with better, more frequently updated information. I hoped to have an impact that made it more effective. And while I think I did a little, at the end that hope burned me out. Expecting a single person to fix an organization or company will eventually lead to disappointment.

The truth is that I’m still burned out from this experience. And I think it’s common among accessibility professionals. We believe in a better world, we believe in a world that is accessible by default. Most of us believe in a world where we don’t need automatic tools that fix issues that could have been easily prevented in the first place. And most of us believe that real accessibility is also much more than just fixing programming errors.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

I still have hope in the community, in the honest community, that wants to make the world a better place. In those who think teaching people how to make better decisions when creating websites is more important than giving them an half-assed way to paint over the cracks.

But I have lost hope in so many people I’ve considered accessibility leaders over the years. It used to be that my biggest criticism was that they were too timid to actually tackle the issues at hand. And I think that this contributed to the situation we are in now. Where even people who should know better try to find the magic wand that solves accessibility.

To be honest, I struggle with where to go from here. With more money, the industry has become incredibly toxic, far from the collaborative environment I experienced 15 years ago. If there is a quick buck to be made, it is made, often to the disadvantage of disabled people. I’m sad that this is happening because I had hoped that we would be better than that. Maybe we can turn it around.

]]>
The Year of Focus on Focus https://yatil.net/blog/year-of-focus-on-focus https://yatil.net/blog/year-of-focus-on-focus Fri, 05 Jan 2024 18:00:00 +0100 After the yearly theme of 2022 spilled over into 2023, it’s time for a new theme for 2024: “The Year of Focus on Focus”.

(See the previous post for some context on yearly themes.)

The Year of Intent in 2022 worked out very well. I felt better and more intentional. Unfortunately, it lost all its power over 2023. Extending the theme this way was unintentional, which basically set the whole year up for failure from a yearly theme/north star perspective. I never really caught up with anything over 2023 and always felt behind.

The Year of Focus on Focus continues a little from what I have subconsciously done in 2023: I drastically reduced my commitments and took breaks instead. Saying “no” to some things gave me space for saying “yes” to other things. And I want to continue that.

But Focus on Focus is also a promise to make changes that benefit being focused. I felt spread thin, stressed, and tired at the end of 2023, and the break hasn’t really helped, unfortunately. Focusing on the focus is the attempt to get the rhythm back, to create the space to be sustainably productive. I hope that that works out.

]]>
Level Access crosses the line; buys accessibility overlay company https://yatil.net/blog/level-access-userway https://yatil.net/blog/level-access-userway Tue, 02 Jan 2024 16:00:00 +0100 In a stunning press release, Level Access has revealed that it plans to buy accessibility overlay company UserWay for about $99 Million. For those who are unaware, accessibility overlays are JavaScripts that claim to fix accessibility issues automagically. They claim to use “AI” to analyze the site and then apply accessibility fixes on the fly while the user is using the website.

Of course, it is common knowledge that automated tools for finding accessibility issues can only find a limited number of issues (probably about 30–50%). Fixing issues needs additional context and care. I assume that is one of the reasons why the overlay providers themselves have started to add manual audits and remediation to their portfolio, including UserWay.

This is not a distraction for Level Access CEO Timothy Springer, who writes in a long piece on LinkedIn the following paragraphs:

The chief criticism of accessibility overlays relates to marketing claims.

This is not true. If you look at the Overlay Fact Sheet, none of the outlined problems have to do with the marketing. These are all criticisms based on the merits of these “solutions”:

  1. Overlay widgets are unnecessary and are poorly placed in the technology stack.
  2. While some automated repair is possible, customers should be discouraged from using an overlay as a long-term solution.
  3. While the use of an overlay may improve compliance with a handful of provisions in major accessibility standards, full compliance cannot be achieved with an overlay.
  4. Adding an overlay to your site may run counter to end users' preference for privacy and may create risk of noncompliance with GDPR, UK GDPR, CCPA, et al.

Yes, the advertisements are problematic, including UserWay claiming which says:

Our Widget has quickly become the world's leading accessibility plugin and compliance solution, now installed on millions of websites worldwide.

The leading compliance solution is to comply with accessibility law, not installing a widget. The easiest way to integrate accessibility into projects is by thinking about it from the beginning.

(According to UserWay’s 2023 financial report, they also have 6800 paying customers, I guess there are millions of websites out there using it for free?)

Back to Timothy Springers post:

The technology of overlays works. Truth is it actually works very well and does so at scale. In that, it can positively impact the accessibility of millions of sites. The marketing claims, the effective use of that technology as part of an accessibility journey, are what needs work.

It does not.

I linked to the technology criticism above. This is technology that cannot work well enough to cross the threshold from uncanny valley accessibility to real accessibility. Because in the end, this is about humans and how they interact with the web.

The reality, as I see it, is that overlays do very limited things ok, but also miss things that would take less than a minute for a developer to fix.

I recorded a 50-minute walkthrough of the Beyond Meat website, which is advertised on UserWay’s website, using the overlay. In the end, my conclusion was that the website is not substantially better with the overlay compared to without the overlay.

Indeed, when I tried to stop the animation using the overlay (the website does not respect my “do not autoplay preference”), the overlay made the animation flicker rapidly. It was worse than without the overlay.[^ Update January 28, 2024: This behavior seems to have stopped at some point during the last month. I guess a fix was implemented (which is good), but I have not seen any communication about this.]

Setting the anti-seizure setting while the animation was playing triggered a potentially seizure-triggering flicker effect.

Now, Timothy Springer claims that users won’t need to use the functionality in the widget anymore in the future:

Some accessibility overlays require a user to click to activate its automated remediation. For us, automated remediation must be active and always on for every user. Every user should get the same, accessible experience.

This is table stakes. But if the website only works on the client side and shares cookies with a third-party domain, a disabled user who would need automated remediation would be forced to accept that. With all the security and privacy implications that using a third-party script brings with it.

Is that an equal experience?

Even if your code runs automatically, a pause button for the animation would need to be provided. And if users use them, and it works badly, then that’s bad luck.

Or, as Timothy Springer says (emphasis his):

Automated remediation and browser-based tools should never interfere with user installed AT. If they do, we will treat this like all engineering issues and address the issue. And, browser-based assistive tools will always be optional.

“We put it in our backlog” is not a suitable way of implementing things. This puts the burden on disabled people to find and report errors and wait for remediation before they might be able to use a site efficiently.

And that is the process we have today in accessibility. But with an overlay, you are not relying on your staff or site builder to fix an issue, you put that into the hands of a third party. A party which can also introduce accessibility bugs at any time (for which the site owner might be liable).

Timothy Springer again:

What gets missed in that, though, is that there are millions of websites whose owners have neither the funds nor technical depth to develop a comprehensive digital accessibility program. Cost is the biggest barrier for these firms. Level Access can either provide a principled, compelling, cost-effective solution they can say “yes” to today, and get started on accessibility, or keep doing little for these firms. If we’re smart about it, that starting point will materially improve the accessibility of these sites today. Now.

While cost certainly plays a role, a widget which at best does little and at worst provides barriers is not “cost-effective”. Quite the opposite. I understand that a company that throws around 99 Million Dollars for an overlay company finds it difficult to do small-scale accessibility.

But that is OK.

The small website widget costs $490/year at UserWay. This can easily pay a developer to go through templates and remove accessibility blockers. Or it can help pay someone to test and recommend an accessible theme for the shop. Those are permanent fixes that will bring you much further than paying for a widget which will have no long-lasting impact.

Accessibility is not expensive, inaccessibility is. And not because you might be sued, lawsuits are still incredibly uncommon, considering how inaccessible the web is. But because you show your customers that you don’t value them if they have a disability.

Investing in permanent change might look slow in the beginning, but always pays off over the long run.

And that brings me to one of the highest impacts of overlay companies on the accessibility community: It drains the money out of smaller assignments which are essential to training up new accessibility people. Sure, as a company you won’t make a massive profit off a $1000 review, but if one of your juniors can use it as an exercise under supervision, it is a wonderful learning opportunity.

There is a lot of discussion that we need automated tools because there are so few accessibility professionals, but imagine Level Access had paid 99 Million Dollars to train their employees or subsidize companies who cannot pay for it. Would that not be a more sound investment in accessibility?

But let's not lose sight of why this is happening: Profit. It’s an already gigantic company that wants to profit from all parts of accessibility. Even from those who are getting tricked into thinking that there is an imminent risk of getting sued and sold a placebo.

Even then, even if you believe there is and should be a market for overlays, then… they already exist. There is nothing here that fundamentally changes them through this purchase in that regard. There are plenty of overlay companies that are already providing this service. Why would you want to be part of it?

The UserWay CEO will be “President of Level Access” in the future, and the UserWay company will continue to operate. It feels hard to believe that the marketing and focus of a company will change, especially if so much money has changed hands. The promises Timothy Springer makes hint to changing UserWay, which leaves the question: why buy them instead of building something better?

Equality now is better than equality later

Accessibility is not a profit business. Sure, it can pay well for people who have expertise, but ultimately, it is a craft that is limited. Yes, some tooling can make aspects easier. Definitely, you can lint and autotest the hell out of your code. But eventually, the only thing that really makes your product accessible and inclusive is thinking about the inclusive experience constantly. Not as an afterthought, not as a bolt-on, not as something extra.

Companies need to decide if they fall for the uncanny accessibility of overlays or start the learning process with a trustworthy non-overlay provider. Starting now, even with little investment, can be the start of building an accessibility understanding that will be beneficial for a long time.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

]]>
2023 https://yatil.net/blog/2023 https://yatil.net/blog/2023 Sun, 31 Dec 2023 10:30:00 +0100 I’m not a good “retro” person. I always want to move on to the next thing. But reflecting over the past achievements is a good habit, so let’s do it.

This year was very different from last year. I did not bike a single kilometer, which feels super bad, and if I have one personal goal for 2024, it’s getting back on the bike again. That said, we did rent a car to find hiking trails and hiked quite a bit during the summer. So not all is lost.

I also built many more Lego sets, so many in fact that this is getting a space concern. That said, they help me to keep my nerves down.

I started reading Dan Moren’s All Souls Lost book. (It came too late for the summer holidays, and I haven’t gotten into the habit of reading over Christmas.)

TV is still one of my main hobbies, and there is so much good stuff. Not only got four Doctor Who specials released, which are all excellent. (BBC/Disney+) I did enjoy the continuations of For All Mankind, Foundation, and Slow Horses. Shrinking is extremely well-made, too (all Apple TV+). Loki Season 2 was exquisite, while Secret Invasion existed. I enjoyed watching through Star Wars Rebels and then Ahsoka (all Disney+). Good Omens continued in a surprising and fun and tragic way (Amazon Prime). So much good TV.

Formula E season 9 was spectacular, and I cannot underline enough how much fun that series is. The behind-the-scenes dramatization of the season (Aka FE’s Drive to Survive) called Formula E: Unplugged will be published on January 2, with the first race of the season on January 13.

I also fell into a Home Assistant rabbit hole. After running a Homebridge for several years, this is a huge upgrade and wow can smart home stuff be easy and powerful. Having everything in one app that can be highly customized is empowering.

This blog and beyond

Including this post and with three posts that I imported from my retiring microblog, I have published 16 blog posts. That’s not bad.

I also started to take my newsletter more serious and sent out four of them. I try to make them more personal but also look at the industry of accessibility, trying to improve it. In the last one, I wrote about my thoughts on the European Accessibility Act and how prepared we are to support all businesses who will need help.

I also created a bot in April that collects interesting links on the web regarding accessibility and then publishes them on Mastodon. You can follow @links@yatil.social or see the Raindrop.io collection. It even has an RSS feed!

What else?

The loss of community continues, I did not have one speaking engagement in 2023, which was my own decision due to the risks of travel during a pandemic. I also stopped teaching at FH Joanneum due to the requirement of teaching at least one day in-person, but also because the teaching days shifted to the autumn. There is too much work to do in autumn for that additional commitment.

Apart from that, work was great but stressful. I did a lot of strategic and coaching work. And I feel that I’m more effective doing this than doing audits. So this is something for 2024 Eric to figure out. Especially how to deliver work that meets my high expectations for myself while also not completely draining myself.

Of course, the world situations hang like a dark cloud over everything. A largely ignored health crisis, wars, right-wing extremism, the climate emergency. I hope we can finally address the issues head-on and come out on the other end. I’m not super optimistic, but I have hope.

That’s it. I wish you a great year 2024 personally, but also globally.

]]>
WCAG 2: Guidelines and Guardrails https://yatil.net/blog/wcag-2-guidelines-and-guardrails https://yatil.net/blog/wcag-2-guidelines-and-guardrails Fri, 29 Dec 2023 10:30:00 +0100 The name “Web Content Accessibility Guidelines” (WCAG) has always been a source of misunderstanding and contention. “Guidelines” implies that this document only guides you, gives you hints on how to make web content accessible.

But that is only half of WCAG. The other half are “Guardrails” that prevent you from producing wholly inaccessible material.

Guidelines

The guidelines consist mostly of the Principles and Guidelines (oh!) of WCAG. There are four Principles that have in summary 13 Guidelines. Those are the first two numbers of the Success Criterion number (which are, spoilers, the Guardrails): 1.1.1 Non-Text Content refers to Principle 1, Guideline 1, Success Criterion 1.

As we often focus on Success Criteria, the context of the Principles and Guidelines is missed. They can guide us to good, accessible solutions already. When people say “go beyond WCAG” they typically mean “follow best practice principles & guidelines” which are also in WCAG.

Look at the excellent WCAG 2 at a Glance document by W3C/WAI, and you’ll notice that nothing limits you to making the most accessible decision at any point.

“Go beyond WCAG” is a mischaracterization of what WCAG is. What people mean is “stay away from the Guardrails in WCAG”.

Guardrails

If you think of guidelines in the real world, you probably think of the guiding lines that you see on streets and that keep traffic separated into different lanes. Generally, you follow them, but every so often, you cross them to overtake or to make a turn. That is OK. The lines are there to guide you.

On the other hand, you have guardrails that you want to stay away from. These are the absolute limits of what you can do without getting into an accident. If you are a careful driver, you should never be very near those guardrails.

That is what the Success Criteria in WCAG 2 are. They tell you where the street ends, and you crash into a barrier. That’s why it’s so important that these are specific. A text contrast is insufficient if you are below 4.5:1 contrast.

The guideline “Make it easier for users to see and hear content” has its guardrail at a minimum 4.5:1 contrast, allowing text to be scaled to at least 200%, and that content on hover and focus stays visible.

Conclusion

It’s a myth that WCAG constricts the level of accessibility. It’s quite the opposite. I sometimes think WCAG should be two standards: The guidelines that give web designers and developers information on what to look out for, and “testing rules” for verifying that the guidelines are followed.

Unfortunately, in practice, most people learn of the guideline part of WCAG only after being confronted with the guardrails part. The tragic situation is that people would crash into guardrails less if we taught them the Guidelines first.

As it is right now, we are only a tow truck that pulls the wreckage out from the guardrails and positions it just next to them. Which means that the projects keep scraping along, sparks flying, until they break down again.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

]]>
It depends, indeed. https://yatil.net/blog/it-depends-indeed https://yatil.net/blog/it-depends-indeed Fri, 08 Dec 2023 13:00:00 +0100 My friend Nicolas Steenhout has published an article about the impossibility of specificity in accessibility recommendations.

It is excellent, and I strongly recommend reading it before continuing here.

The reason we often cannot be super specific has its roots in three areas:

  • The web is a complex environment. Anything can be done in hundreds of different ways, depending on the underlying technologies, frameworks, and sometimes business constraints. Recommending the one straightforward HTML/CSS/sprinkle of JavaScript/server-side solution might be a specific answer, but not necessarily a good answer for the circumstances the page is in.
  • Disabled people are not uniform. They have different needs depending on their disabilities but also based on their individual preferences. That’s why we, for example, argue to leave content interpretation to screen readers as much as possible instead of dictating how something is said. That also means, as Nic mentions in his article, that there are many, many combinations of tools that users use. And even if they use the same tools, the settings can be quite different.
  • Technology is inaccessible, so making something accessible is more complicated than it should be. I researched combo boxes and selects for a client yesterday and saw <select>, <selectlist> and handmade ARIA combo boxes. Which of those you use, depends on your need. <select> is simple and covers many areas, <selectlist> will cover more functionality and finally allow us to style options (at the expense of not being supported in a shipping browser to date), so the complicated ARIA combo box it is. It is not something I want to recommend, but it depends on the need of the client to what solution is suitable.

Expectation management

Nic mentions that some client teams see this as bait-and-switch. We tell them there are clear, internationally agreed standards for testing accessibility, so they expect that for every issue there is a technique to meet the success criterion. Indeed, the W3C does provide a list of techniques to meet success criteria. And look at that, there are many ways to meet these criteria.

A two-sided expectation management needs to happen. First, clients need to be aware what their goals for accessibility are. Nic has a good, IMHO, bad example in his post:

We must meet WCAG 2.2. AA, and we must make sure what we build works well in NVDA with Chrome, VoiceOver with Safari on both MacOS and iOS, and TalkBack on Android

What does “works well” mean? How well? Perfectly? What are the differences that are allowed?

I love making things easy to use for everyone as well. But that often makes the goal not a line, but a zone. Nobody knows if what they are doing is enough to meet the expectations, frequently their own expectations.

Concentrate on what is important and testable, so WCAG 2.2. There will still be enough wiggle room, but it is a goal you can work towards. It’s a minimum, but you can achieve more from a strong foundation.

And then you can move on and say, “OK, now let's make a list of screen reader interactions that we are unhappy with in the following screen readers and ask our users what they expect.” This gives you a list to work through and check off. Real concrete progress instead of mushy goals.

The other expectation that needs to be managed is especially critical when interacting with developers and designers. As outlined above, nothing is set in stone and frequently there are no simple good answers that work for you. You also might not have learned any of that “accessibility stuff” and now you’re responsible. We’re here to help. Tell us what you’re struggling with, and we can make sure to better explain and be more concrete for your individual situation.

Occasionally, the best way to help developers with their accessibility problem is to talk to project managers or designers and change the process to be easier to implement.

We’re partners in making a product accessible, and when we say “it depends”, we don’t mean “it is impossible to know”, but “let’s figure out how we can fix this most efficient, together”.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

]]>
Exclusive accordions exclude https://yatil.net/blog/exclusive-accordions https://yatil.net/blog/exclusive-accordions Thu, 16 Nov 2023 00:00:00 +0100 You might not have noticed it, mainly because it was so quick, but a new HTML functionality is due to arrive in Chromium and WebKit browsers: Exclusive Accordions.[^ Yes, from starting the explainer, which has no serious exploration of the accessibility impact, to almost shipping in browsers in less than 9 months. Move fast, break things for disabled people.] [^ This has shipped in the following browsers:
Chrome 120 (Release date: 2023-12-05), Edge 120 (2023-12-07), Firefox 130 (2024-09-03), Opera 106 (2023-12-19), and Safari 17.2 (2023-12-11). No browser mitigates the risks outlined in this article.]

What are exclusive accordions?

Accordions are a series of expand/collapse (aka disclosure) widgets. Usually they start collapsed, and you can open each section one by one. Exclusive accordions close any previously opened section automatically when a new one opens. It means only one section of the accordion can be open at once.

A new proposal now wants to make the existing <details> element into an accordion by grouping them when adding a name attribute to it. Such an element's open state would then automatically be false (hiding the content) when another element’s open state is set to true, if those two <details> have the same name attribute value.

What are the accessibility challenges with exclusive accordions?

There are some accessibility challenges with all types of accordions, but most of them are even worse when only one accordion section can be open at a time. Here are a few examples:

  • Higher cognitive load as users are unable to compare information between two sections, the accordion resetting on page reload, added difficulty in scanning and getting a general overview of the information provided.
  • More complicated interaction for keyboard users who need to navigate maybe multiple times through multiple expand/collapse button to extend one section, then navigate to the next section and open that, then to the next to open that. Comparing between two section of an exclusive accordion quickly takes dozens of keystrokes.
  • Reduced usability for screen reader users who use heading level navigation to get an overview of all content on the page. That’s just not possible anymore as the accordion cannot be opened all at once. Heading levels can also get quite wonky in screen readers when headings are used in the expand/collapse button.
  • Low-vision users and people on mobile viewports can easily lose orientation when one section opens and another section closes as the content shifts around. This is especially problematic with content of different lengths. This can also be problematic for people with vestibular disorders. (Gareth Joyce on LinkedIn, Olli Boermans on Mastodon, Christian Schaefer on Mastodon)
  • Dragon users can have a hard time opening <details> elements, as the software deprioritizes them compared to buttons and links. (Victoria Clark on LinkedIn)

These are just the three high-level points I have observed from an accessibility standpoint and two other obvious points added after the publication of this post. Most times, users really did not like accordions. The only exception is incredibly long pages that are terribly organized. And even in those instances, the need to open at least two panels happened more often than not.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

But couldn’t native exclusive accordions address some of these issues?

Technically yes. I am a big fan of making it easier to do the right thing. That should be our goal. Implementing exclusive accordions, be it through JavaScript or as a native browser feature, however, makes it easier to implement a UI principle that makes websites objectively harder to use. It allows developers to deprive users of a choice.

One name attribute and your user cannot interact with the content of the page as they like. It’s disempowering the user.

If we want native accordions in browsers, we also must make sure to have guardrails for users. Browsers are user agents, so they should counteract the negative impact of making exclusive accordions easily possible.

What are the next steps?

It feels like the decision for this native exclusive accordion has already been made. There was no proper accessibility consultation, probably a direct result of HTML features being developed outside of W3C and with no accessibility review. It’s also a cheaply implemented feature; that is easy PR, too. (It’s indeed so simple, I did build it in 2016 with five lines of JavaScript.)

What I hope for now is that browsers quickly address the usability and accessibility issues around accordions, exclusive or not:

  • Allow users to deactivate the exclusive accordion behavior globally and for individual websites. We have this for auto play audio and video, we need this here as well.
  • The ability to expand all and collapse all accordion sections (essentially all <details> elements) on the page.
  • Make sure content inside accordions is shown in reader mode.

It’s unacceptable that we introduce native barriers in HTML and the web platform in 2023. This is unbearable. When we did this last time we got broken date and time pickers, a situation that has not been addressed for more than a decade.

The web must be holistically accessible. Every feature that is introduced must be vetted for accessibility.

2023-11-17: Update to include more bad examples of what accordions do.
2025-08-05: Update to add the dates when the feature shipped and that there are no mitigations for the feature at all.

]]>
Enough with the baby steps! Let’s make accessibility leaps. (My rejected axe-con submission.) https://yatil.net/blog/a11y-leaps https://yatil.net/blog/a11y-leaps Mon, 13 Nov 2023 21:15:00 +0100 This was my submission for axe-con 2024, which unfortunately did not make it to the conference. Please tell me if the topic would be interesting for you, and you would like to hear more about the topic!

  • Title: Enough with the baby steps! Let’s make accessibility leaps.
  • Outline: So much of our work is based on nudging people into the right direction. Applying a little pressure that makes a change but is not disruptive. This needs to change. This talk showcases steps that we can take that make instant notable differences for disabled people using websites and apps by using policy changes that are strong and disruptive once, instead of continuous glacially slow progress.
  • Additional Information: I don’t expect this to be the most technical talk, but it might be most suitable for people who lead teams or companies; hence I selected intermediate. The talk’s goal is to shake people awake and show how gradually improving accessibility is often not the best way to spend their effort.

(Slightly edited for grammar. Imported from my micro.blog.)

]]>
Inspecting websites and web views on iOS devices https://yatil.net/blog/inspect-web-ios https://yatil.net/blog/inspect-web-ios Sat, 04 Nov 2023 17:15:00 +0100 While it is often sufficient to test the mobile view of websites and applications on the desktop, with desktop browsers, it’s sometimes not enough: Some websites use device sniffing to hash out which device is used and deliver different code to users. In other instances, the web view is part of an application.

Being able to inspect and look at the code in these views is essential to give good feedback to developers implementing these views.

Inspect Browser (websites only)

Screenshots of Inspect Browser on iPhone and iPad, showing the WCAG 2.2 Quick Reference, the introductory sentence is nspected and the DOM can be seen in a panel on the bottom on iPhone and on the right side on iPad.
The Inspect Browser app on iPhone and iPad

For casual use and availability on the go (without tethering to a Mac), Inspect Browser does the job. It works great on iOS and iPadOS and provides all web inspection needs: Logging on the console, inspecting elements, finding out accessible names, and much more.

I personally use it only to quickly get to the bottom of an HTML structure or figuring out why something is announced/shown weirdly while using VoiceOver or Voice Control. It is a separate browser, so you have to log in and/or navigate to where the issue is.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Safari on macOS (websites and web views)

Develop menu showing the MacBook Pro (nicknamed MaxBook Pro, because I’m very clever!) and my iPhone (named Ramrod Ti, as I name all my phones with SaberRider references). The phone is selected and yatil.net is also selected. In addition, Connect via Network is selected.
Picking a website on the iPhone

For websites and web views where the small-screen inspector in Inspect Browser does not cut it, you can use Safari on macOS to connect to the iPhone/iPad. You need to set up your device once:

  1. On your Mac: Switch on Developer mode in Safari by going to PreferencesAdvanced and check the “Show features for web developers” checkbox.
  2. On your iPhone or iPad: Go to SettingsSafariAdvanced and switch on “Web Inspector”.

When you attach your iPhone or iPad to the Mac using a Lightning or USB-C cable, open Safari and go to the Develop menu. Select the device and then the website and a inspector window opens. It has the full capabilities of the desktop Safari inspector, which is very capable.

From my experience, everything that is in a normal web view can be easily inspected, even in non-iOS-Safari apps. More custom implementation sometimes suppress the ability to inspect them. I can easily inspect web views in Mona (App Store Link), my favorite Mastodon client, but have no chance in the LinkedIn app.

Check “Connect via Network” to get rid of the need of a cable connection.

Web inspector window in front of a nature desktop background. The h1 of yatil.net’s home page is selected
The inspector live inspecting content on my iPhone

You can even use the crosshair button and select elements on the iPhone/iPad by touch.

]]>
Use the accessibility shortcuts on iOS to speed up your testing workflow https://yatil.net/blog/ios-a11y-shortcuts https://yatil.net/blog/ios-a11y-shortcuts Tue, 31 Oct 2023 11:00:00 +0100 You can switch VoiceOver (and Voice Control) on in the iOS settings on iPhone and iPad. But this is very cumbersome if you are in the process of testing an app or website. There are quicker ways:

Using Siri

Siri switches VoiceOver on where you are at the moment, if you invoke it using the command “Hey Siri, VoiceOver on”. Switching VoiceOver off works by issuing “Hey Siri, VoiceOver off”.

But this way is cumbersome, and if you, like me, switch VoiceOver on and off many, many times during a testing session, unpractical. Here are some even better shortcuts:

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Accessibility Shortcut (all iPhones and iPads)

Two iPhones next to each other, one with the Accessibility Shortcuts selection screen and the other with the Accessibility Shortcuts menu triggered by pressing the sleep/wake button three times.
Accessibility Shortcut Configuration

There is literally a shortcut for this. Go to SettingsAccessibilityAccessibility Shortcut and check the accessibility features you use in your testing. Now, if you press the sleep/wake button three times in quick succession, a menu pops open that allows you to switch on and off the checked accessibility features. If you only check VoiceOver, it is switched on/off directly. See the official Apple documentation about the Accessibility Shortcut.

Control Center (all iPhones and iPads)

Screenshots of three iPhones, first shows the Control Center configuration in settings, second shows Control Center itself with buttons for accessibility features like Sound Recognision, Text Size, Hearing, and the Accessibility Shortcut. The third screenshot shows the opened Accessibility Shortcut Menu.
Configuring Control Center, Control Center itself, and the Accessibility Shortcut menu as invoked in control center

You can put accessibility buttons into Control Center (the panel that appears when you swipe down from the top right of the screen). Go to SettingsControl Center and add accessibility features under “more controls”. I have text resize in there to be able to quickly test that in apps. But you can also add “Accessibility Shortcuts” which brings up the menu as configured above.

It’s good for lesser used features, but as the popup immediately closes after selecting VoiceOver in the triple-press sleep/wake button scenario, the menu stays active here. Navigating out of it to the app you want to test is quite cumbersome, so I tend to not use it to invoke VoiceOver.

See Apple’s documentation of Control Center customization.

Back Tap (all iPhones)

Two iPhone screenshots, on the left the Back Tap screen with VoiceOver selected for the Double Tap and the Accessibility Shortcut for the Triple Tap. The right screenshot shows part of the list of many functions that can be selected for Double/Triple Tap.
Double and Triple Back Tap Configuration

If you want a little more flexibility, the Back Tap gesture allows you to gently tap the back of your iPhone twice or three times to launch either the aforementioned Accessibility Shortcut, or a number of other functionality. You can, for example enable VoiceOver with two back taps and the Accessibility Shortcut on three taps.

To configure it, go to SettingsAccessibilityTouchBack Tap and select Double Tap or Triple Tap. Then select the Accessibility Shortcut or the function you want to invoke from the list.

(The Back Tap section has been added after I was reminded of this functionality by Shelly’s mention in her article The iPhone 15 Pro brings tangible accessibility benefits on sixcolors.)

Action Button (iPhone 15 Pro and later)

Screenshot of VoiceOver being configured for the Action Button in settings
Action Button Configuration

You can also put an accessibility feature, like VoiceOver, directly on the new iPhone 15 Pro Action Button. In Settings, go to Action Button and swipe almost all the way to the right to the “Accessibility” option and chose VoiceOver. Now, whenever you invoke the Action Button (press and hold briefly), VoiceOver is quickly turned on or off. See Apple’s documentation about the Action Button.

Using a combination of these shortcuts, you can make it really easy testing with accessibility features on iOS.

]]>
Accessibility in the real world https://yatil.net/blog/accessibility-in-the-real-world https://yatil.net/blog/accessibility-in-the-real-world Wed, 25 Oct 2023 10:45:00 +0200 This is a repost of a Twitter thread from August 2022. Slightly edited in format and for clarity.

Accessibility must work within the constraints of an ableist world to improve things. I hope it can help to make the world a tiny bit less unjust every day.

I have seen accessibility people say “this is a hill I’m willing to die on” and then they died on that proverbial hill.

Some clients just don’t care, and you have no power to make them care. You can make them aware, you can put procedures in place, you can point at laws. But you can’t change their attitude.

And yes, that might mean that the products of the process are… mediocre at best.

That is disappointing for the accessibility professionals involved, who did their best in the circumstances, and still fail many disabled people.

I think it’s still important to do this work:

Awareness is important, and when more people are aware that accessibility is a thing, more people will be willing to invest in it. This is a slow process, but I have seen it in real life: Companies that have an audit done for compliance and then want to get better.

And sometimes you inspire people to get into accessibility, and they might have an impact for a long time.

Is any of this optimal? No.

Do I wish I had a magic wand that made disability justice a reality and everyone care? You bet!

But I don’t, and so I need to have my practice grounded in the reality of the world as it is, as it otherwise becomes burnout inducing.

And if we cannot afford one thing, that’s people quitting accessibility because they are burned out. Because they feel that they are ineffective, and their work is worthless. I feel like that all the time.

That said, the WebAIM Million study shows that between 2019 and 2022 the average error per page has decreased, and the most common issues have also decreased. The web is slowly getting better.

I strongly believe that we must change the systems to make web accessibility easier, especially aligning what’s right with what’s easy. Currently, a lot of accessibility practices on the web are hidden or require additional knowledge. That is an ableist barrier itself.

I wrote about changing the system on my blog.

I also recorded a talk about the topic.

(Previously published on my micro.blog.)

]]>
Misconceptions can kill accessibility momentum https://yatil.net/blog/misconceptions-can-kill-accessibility-momentum https://yatil.net/blog/misconceptions-can-kill-accessibility-momentum Sun, 24 Sep 2023 20:15:00 +0200 Time and time again, I come across accessibility solutions in which teams have put a massive amount of work. And often I have to ask them to undo that work. There are many reasons for that request, but it typically comes down to a false understanding of how assistive technologies actually work.

Now, don't get me wrong, a good percentage of my work is to “well, actually” people who should know better. And I generally enjoy it – using my mansplaining powers for good.

But now and then, you get that sinking feeling that you are undoing someone’s work that they created with the best intentions, where they researched hours and hours for a problem they perceived.

And I come along and say “nah”.

“Nah”, because “it wasn't a concern in the first place”. “Nah”, because “that's not how assistive technology works”. “Nah”, because “many screen reader users can see the screen”.

The reality is, accessibility is hard, especially when thinking about it holistically. Which you have to do to not leave people behind. That complexity is inherent to the humanity that's behind accessibility. We’re doing this for people that have all sorts of disabilities, that are different from one another in many, many ways.

Even looking at screen reader users, individual preferences and settings can throw assumptions out of the window.

I have lost count on how often I have seen developers adding tabindex="0" to random text because they couldn't reach it using the tab key, and so they assumed that nobody could reach it.

Of course, screen readers have ways to read text on web pages. They would be pretty useless otherwise.

This blog post was spawned by the “State of HTML 2023” survey and its question on the focusgroup attribute, which is an Open UI proposal that I had never heard of before.

Its goals are to bring the focus behavior of <select> elements and radio groups to other elements.

To recap: When you encounter an element with focusable child elements, the usually expected behavior is that the arrow keys do the navigation among these child elements.

Tab to a native <select> and use the arrow keys to make a selection. This is genuinely useful behavior. You would not want to stop at every sub-item of a select, and differentiating between these two focuses makes sense.

What could bring problems is to generalize that behavior to random elements.

The use case is custom composite widgets, but experience shows that eager developers will use it in other circumstances. It would be a better approach to define default keyboard behaviors in ARIA and let developers opt into browsers managing focus for that specific role and its children.

<!-- THIS IS NOT REAL CODE -->
<div role="menubar" aria-interaction="default">
…
</div>

That way, browsers could verify that a role is used correctly and take measures to fix misuse. Developers would be encouraged to use correct roles for widgets and their children, if they want to reap the benefits of the default keyboard interactions.

Conclusion

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

The power to redefine how focus works amongst a group of UI elements brings with it a great deal of responsibility to not mess it up. For most people, including many accessibility pros, it’s a challenge to decide when to use which behavior.

Developers are bound to stumble over these techniques, like they do now with over-eager use of ARIA roles or the tabindex attribute. They might implement it without checking their assumptions.

A note on the “State of HTML 2023” survey

Generally, I think a survey like this can be useful. It would be even more useful, if it would address longstanding accessibility issues and also not itself misuse HTML elements:

Radio buttons are not supposed to be uncheckable[^ You can literally click on a radio button to mark it, and then click on it again to now have no radio button marked.], but if you insist on using that functionality, it must be keyboard accessible, too.

It's also problematic that the technologies are only referred to by name without any indication if the technology is in the HTML standard (or adjacent standards), like focus group, which is a seemingly early proposal within Open UI.

Presenting landmark elements, which are part of HTML for a decade, alongside focusgroup makes little sense to me.

A note on the focusgroup proposal

The proposal does not use great HTML practices, which does not lean trust to it. A menubar/menuitem example uses <ul>/<li> elements only to redefine their roles. Just use <div> elements!

Another issue is the use of tabindex="-1" for demoting inactive elements in a focus group. Browsers without support will make the elements with that tabindex unreachable using the tab key, potentially hide interactive elements from users, which is suboptimal.

I also don’t like that it is both, a HTML and CSS proposal. It feels like there is a lot of potential for conflict when both are applied.

That said, in the early days of ARIA I had an idea to use CSS-inspired “Cascading ARIA Sheets” which would allow developers to assign roles and properties using CSS selectors and a similar syntax. I still think it could be a nifty technology to have (that would of course bring its own challenges).

]]>
Accessibility is not inclusive design or disability rights. It’s a part of it. https://yatil.net/blog/accessibility-is-not-inclusive-design https://yatil.net/blog/accessibility-is-not-inclusive-design Wed, 16 Aug 2023 08:45:00 +0200 Every few months, the discussion comes up that you cannot make accessibility work if you are not fighting for disability rights or practicing inclusive design. While there is a kernel of truth in that – it will certainly be easier to make consistently good choices regarding the interaction of disabled individuals with the product you create – it is not a requirement for accessibility practices.

What I mean by that is that often, you are in a situation where you cannot influence the culture or moral of a company. Making inaccessibility a moral failure can mean that people go in a defending position, resulting in less progress than otherwise.

For me, accessibility is mainly a set of practices that allow practitioners to build their product in a way that does not introduce obvious barriers for users. To do that effectively, of course they need to learn about the disabled experience and how people (in my case) use the web. And hopefully that sparks interest and thinking more about disability needs as a whole.

The truth is that we live in an ableist world. Most accessibility work is done against ableist headwinds. Sometimes these are blatantly obvious (“we only want to conform to the minimum standard defined by law”), sometimes they are clear in project constraints (time and budget).

If I can change those parameters, I will, and I try whenever the opportunity arises. If I can use my WCAG report to inform developers on how to think about the interaction of disabled users with their product, I will.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

But in the end, it is important that the practitioners do the actual practice of putting the right elements at the right place in HTML, and know what an accessible name is. It is one of the fundamental building blocks, because you won’t have an inclusive society if you don’t have these stepping stones in place.

There are often memes going around in the accessibility space that show “curb cuts to nowhere”. Where a curb cut does end at a place where there is no sidewalk. It nicely shows that accessibility practices on their own do not guarantee an accessible experience.

That said, the person putting in the curb cut is not responsible for making their municipal government anti-ableist. Realistically, there is no way to do that. One option is to give up and not add a curb cut to that side. Or the other is to do it, so it is ready once the sidewalk is built. And in the meantime it means a flat surface area for people to stand on, and a call button that enables blind and low-vision users to cross the street.

Is that disability justice? No, not at all. Is it inclusive design? Not by a long shot. Does it create the requisites to make both happen in the future? Yes.

Accessibility on its own can improve situations, following it cannot guarantee inclusive spaces. But without accessible building blocks, you can never reach inclusivity.

(Apparently this blog post was written because I saw this LinkedIn post by Tori Clark appear – and then vanish – this morning. I tried to re-find it, but once LinkedIn has changed your timeline, it’s almost impossible.)

]]>
Do we need WCAG 3 (now)? https://yatil.net/blog/do-we-need-wcag-3-now https://yatil.net/blog/do-we-need-wcag-3-now Fri, 28 Jul 2023 10:10:00 +0200 Earlier this week, W3C/WAI announced that Web Content Accessibility Guidelines (WCAG) 2.2 is now at the last hurdle before becoming a standard. This is huge news because its precursor WCAG 2.1 is the basis of a lot of accessibility policy and laws. For example, the European Accessibility Act (EAA) makes web accessibility mandatory for most commercial websites. The requirements are set in the European Norm EN 301 549 which explicitly directly references WCAG 2.1.

While WCAG 2 (and 2.1, and 2.2) has its flaws, like every standard has, it is a very successful standard. The whole accessibility industry has rallied around it, it is referenced by the International Association of Accessibility Professionals (IAAP)[^ Quick acknowledgement that both, W3C and IAAP, are allowing memberships of companies selling dubious accessibility overlays.] in their certification programs.

In addition, we have fifteen years of experience with WCAG 2 now. Tooling, practices, expectations have been set. We have found guidance and documentation that is misleading or insufficient and corrected it over the years.[^ Huge shoutout to everyone who has contributed to issues and pull requests!] We learned to explain the requirements and the ins and outs of how to address different failures.

And I think the knowledge of seeing a pattern in a code and knowing how to best meet or exceed WCAG is really what an accessibility professional can bring into a team. Identifying that something passes or fails is relatively simple, taking clients by the hand and guiding them to conformance is much harder[^ Of course, conformance should never be the end goal. But IMHO, it is a necessary stepping stone towards an inclusive product.]. And experience helps a lot in this regard.

W3C/WAI also announced a new Working Draft of WCAG 3, the next generation standard. Confusingly enough, apart from the abbreviation, WCAG 3 will have nothing in common with WCAG 2. Not even its name which is planned to become W3C Accessibility Guidelines 3[^ And yes, I am unreasonably bothered by WCAG 2, 2.1, and 2.2 having /TR/wcag2, /TR/wcag21, and /TR/wcag22 URL slugs respectively, and this one has /TR/wcag-3.0.]. This draft highlights the highly experimental nature of this specification right now.

I have written about the WCAG 3 not being ready in 2021 and this is the first update since then. I would suspect that it will take at least until the end of the decade to see WCAG 3 come to fruition, if that fast. The W3C/WAI has a good overview of the changes that might be coming in WCAG 3.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Do we need a revolution?

“[T]his is another positive step toward a much needed revolution of WCAG.” writes Léonie Watson in LinkedIn.

I don’t fully agree. Producing a new standard seems to be a solution to some of the issues that WCAG has, mainly the intermixing of guidance and conformance, hard to read language or limits of where WCAG 2 applies due to new technologies.

That said, the base principles of accessibility (perceivable, operable, understandable, and robust) will not change. WCAG 2 compliant sites won’t be inaccessible once the standard is published. Indeed, W3C/WAI says that WCAG 2 will exist long after WCAG 3 is published: “WCAG 3 will not supersede WCAG 2, and WCAG 2 will not be deprecated, for at least several years after WCAG 3 is finalized.”

Let’s say WCAG 3 is finalized in 2029[^ See, I can be optimistic!] and the transition period is five years until 2035, then this gives companies a decision point for quite a long time: Can I change to WCAG 3 while WCAG 2 is legally required? Do I have to conform to both to be future-proof?

Testers and auditors on the other side must cater for two different types of tests every time they start an audit. Sometimes they might need to use ruleset A and other times B and sometimes a combined AB ruleset. And if that wasn’t making it complicated enough, one of the goal of WCAG 3 is to move away from the binary pass/fail criteria of WCAG 2 to a graded, well, grade.

While this sounds useful in practice, there is a lot of bookkeeping involved. Currently, if an image has no alternative text (and should have one), that page fails SC 1.1.1 Non-Text Content. In the future, the amount of images might have an impact on the conformance. Test Scopes describes the current thinking of the group (the section is marked as “developing”). I think this kind of scoring will work great for large companies with in-house testers and processes, but it will make it much harder for individuals or small consultants. This part of the standard could probably be its own separate testing standard.

And indeed with WCAG 2, we have Evaluation Methodology (WCAG-EM) that does some of this.

Evolution

WCAG 2 has shown over 15 years that it can be shaped into a better standard with incremental updates. It feels wasteful that we are training people and companies on WCAG 2.2 in the next five years, only to then pivot to the shiny new thing. Which in practice will not be a significant improvement for disabled people, apart from the new cognitive requirements that, by definition, cannot fall into the pass/fail scheme of WCAG 2[^ Again, the principles for accessibility stay the same, and I’m convinced that if there are gaps, those can be filled in WCAG 2, too – if the Working Group would choose to do it.].

That said, why could the conformance model of WCAG 2 not be adapted to these requirements? Could WCAG 2 reference another standard that has more of these “squishy” requirements? I think it is totally in the realm of a standard like WCAG to say “here are the practices for readable text” and then leave it to the reviewer to make the argument for pass/fail.

CSS is the other successful standard at W3C/WAI. It works because it is an iterative improvement. Like WCAG 2, it is only additive. Unlike WCAG 2, it is developed in modules. Have a good idea for a CSS module? Spec it, have it implemented, and voilà, it’s part of CSS. This should be the way WCAG 2 works, too. If there is a new color contrast approach, why not put that into its own module, mature it on its own and when that has happened, add it to the next version of WCAG 2.

W3C wanted to reinvent an important standard, HTML, in the early 2000s. XHTML, an XML version of HTML, was supposed to be the next version. It broke compatibility with many previous HTML implementations and practices. And, in the end, it failed. W3C lost HTML to the What Working Group. If WCAG 2 is still used by laws and policies but W3C/WAI does not want to further develop it, there might be a gap for people who want to continue with the tried ways of WCAG 2.

On the other hand, how good is a WCAG 3 that only gets updated like WCAG 2, every 5 to 10 years? In any case, the rate of updates needs to increase. WCAG 2 has hundreds of open issues and pull requests, mostly for supplemental guidance like the Understanding and the Techniques. And exactly those types of information is what WCAG 3 is thinking about to update frequently. The question is: Will this be done? Understanding, Techniques and other documents are already supposed to be up-to-date. But even the correction for minor typos are often not published.[^ Like my evergreen “refow” typo in the quick reference.]

Conclusion

I know that the people who are working on WCAG 3 have the right intentions. It just doesn’t fill me with confidence to see so many issues and pull requests open for a standard and its supporting documents. As far as I can see, WCAG 2 will be on life support at best in the coming years.

I would not want to switch places with people new to the accessibility field – be it as designers, developers, or testers – in the coming years. We have a long transitional phase in front of us. This would be OK if WCAG 2 was a universally understood and applied baseline. But it is not. Most websites fail WCAG, and I don’t think that will change over the next years, also not with a new standard overnight.

For me, WCAG 3 currently feels like a big distraction, the candy you are not allowed to have for a long time. And then you need to develop tools, and teach the standard to people, and lobby for adoption. All while WCAG 2 is there and could be improved.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

]]>
Quick guidance for referring to (parts of) HTML elements https://yatil.net/blog/quick-guidance-for-referring-to-parts-of-html-elements https://yatil.net/blog/quick-guidance-for-referring-to-parts-of-html-elements Sun, 23 Jul 2023 17:45:00 +0200 When writing about HTML, especially in the context of accessibility audits, you always need to be very clear in what you mean. Otherwise, the guidance is challenging to read for your audience.

I recommend to always include brackets with the element names. You can differentiate attributes and values by using these words. Always include the word “value” when talking about values.

  • First mention of an element: “<h1> element”
  • First mention of an attribute: “id attribute”
  • First mention of a value: “my-great-id value”
  • Subsequent mention of an element: “<h1>” or “<h1> element”
  • Subsequent mention of an attribute: “id” or “id attribute”
  • Subsequent mention of a value: “my-great-id value”
  • Avoid the use of “tag” when the whole element is the subject of the sentence, do only use “tag” when it is specific to the start or end tag. Always specify “start tag” or “end tag”.

(This post was imported from my micro.blog.)

]]>
WCAG 2.2 misses mark on defining visible focus https://yatil.net/blog/wcag22-visible-focus https://yatil.net/blog/wcag22-visible-focus Fri, 02 Jun 2023 10:30:00 +0200 About two weeks ago, the WCAG WG released a new version of the Candidate Recommendation for WCAG 2.2. After it had been in the Editor’s Draft for quite some while, it changed the requirements for the Focus Appearance Success Criterion (SC).

The SC was deemed to not be AA-worthy. With the W3C process, however, items marked as at risk, which this SC was, can only be removed before publication of the standard, not altered. So changing it to a AAA criterion meant that there had to be a new Candidate Recommendation anyway.

The WG took that opportunity to change the order of the SC, too, as new AAA success criteria have always been inserted after AA success criteria. I’m not fond of the last-minute SC number change (it is now 2.4.13 instead of 2.4.11) but it can always happen. It’s one reason why I never refer to SC numbers when talking about proposed criteria in Editor’s or Working Drafts. I am not sure that this has ever happened during Candidate Recommendation phase, however. [^ Hence I used the SC numbers in the headings of a recent blog post.]

First, the good thing about the changed 2.4.13 Focus Appearance criterion: It reads really simple, and that is a good thing. To meet AAA, your focus indicator needs to be at least as large as a 2px thick around the perimeter of the focused element and have a 3∶1 contrast ratio.

Now, the bad thing about the change: The previous proposal of moving 2.4.7 Focus Visible to A level has been completely reverted. A basic, in any way visible focus is essential for keyboard users who do not use assistive technologies that create their own focus ring. It is such a basic accessibility affordance like having good page titles or having a consistent focus order, both SCs are A-level SCs.

It makes little sense to say that the order of the focused elements must be logical, but it does not matter to be able to perceive where you are in those elements.

This SC should have been an A-level SC from WCAG 2.0 back in 2008. That the Working Group has reverted a change that would not affect most people (as the general baseline is AA in laws and policies) but sent a signal on its importance is baffling to me.

But, the most outrageous issue is that what a “visible focus” stays undefined at AA level. Arguably, changing one pixel from white to just off-white satisfies that there is a visible change on focus.

This is the only place where, in an AA SC, the term visible is not defined. 1.4.3 Contrast Minimum (AA) defines is as 3∶1 for large/bold text and 4.5∶1 for normal size text. 1.4.11 Non-text Contrast (AA) defines it as 3:1 against adjacent colors.

Anything that is stronger than “visible” on an AA level would have been welcome. I proposed simplifications to the initial AA Focus Appearance SC, which were deemed as not strict enough (and at the same time overly strict) by the group last November.

The Group could have added an SC that defines what visible is: “At least a part of the focus indicator has a 3∶1 contrast ratio between the same pixels in the focused and unfocused states.”

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Why is this important?

Good focus styles make the lives better of many disabled people and are generally a usability win. Many who do not think of themselves as disabled use the keyboard to navigate web pages. A visible focus is an essential affordance.

The other reason is that WCAG 2.2 is planned to be the final update for WCAG 2. The proposed new Charter for the Working Group puts WCAG 3 at the front, with WCAG 2 going into maintenance mode. And considering that the WG refuses to publish updates in the case of typos, I expect little maintenance on the actual specification.

As for WCAG 3, the Charter has an “expected completion date” of Q2, 2026. But the previous/current charter stated WCAG 2.2 would be done by Q4 2020 and WCAG 3 done by Q2 2023.

I don’t blame the Group for having deadlines slip in the midst of a global pandemic. But I take the expected dates with a grain of salt, especially as we are staring at a WCAG 3 Working Draft that has seen no updates over the past year. And it tries to re-invent accessibility conformance completely. I’ll not repeat that I think an evolution of WCAG 2 – a generally good standard that would need more frequent updates – would be a simpler approach. You can read about it here or watch my 75-minute presentation here[^ Feel free to skip to the WCAG chapter directly.].

But I don’t expect WCAG 3 to be ready before the end of the decade. And that means, gaps in conformance that have a real impact on users will be at least be unsolved for another decade, as it will take time for WCAG 3 practices to get developed. That is a lot of time during which we are basically OK with the rules of accessibility as they are. Maybe we should aim for better.

]]>
We need accessibility action https://yatil.net/blog/accessibility-action https://yatil.net/blog/accessibility-action Sat, 01 Apr 2023 21:20:00 +0200 The latest WebAIM Million has come out. For those who are unaware, it is an automated accessibility evaluation of the top 1 Million home pages. While it is an automated test which only finds a subset of accessibility barriers, its results can at least show us trends:

  • Average errors per home page went slightly down to 50 errors.
  • 96.3% of home pages still have easily detectable WCAG failures. That is only a decrease of 1.5% in four years.
  • 96.1% of errors fall in six categories:
    • Low contrast text
    • Missing alternative text for images
    • Empty links
    • Missing form input labels
    • Empty buttons
    • Missing document language
  • The use of ARIA (Accessible Rich Internet Applications) has increased a lot. And home pages that use ARIA are more likely to be inaccessible.

The shocking truth is, that we cannot make the web accessible at a rate of 5000 websites per year. There are gigantic Diversity, Equity, and Inclusion programs, and they barely make a dent in the actual accessibility of websites. Where are the commitments, where are the action plans? It’s just the home page, we should have shamed — sorry, encouraged — people to at least get their home pages in order.

Also, the 96% of issues that are found on websites? These are not new requirements. They all have been around since WCAG 1.0[^ Web Content Accessibility Guidelines 1.0] which was released in 1999 and will celebrate its 24th birthday in May. The same principles have been carried over in the 2.0 and 2.1 standards released in 2008 and 2018.

A quarter of a century and basic accessibility is not met by 96% of home pages. I find this fact embarrassing. Mostly as a web developer because fixing those six issues can be learned in a day. If you are a web developer who does not know how to fix them, read these two excellent articles from Hidde now: Post 1, Post 2.

But I also find it embarrassing for web accessibility. We should have better strategies to educate people about the issues, provide them with actionable feedback and make sure that issues are effectively addressed.

For other issues, we should explore how to minimize the impact on disabled people by using browsers to mitigate issues. A ramp built into a train will generally be more available than a situation where every stop needs to provide its own ramp.[^ Yes, this simplifies the maintenance and reliability issues of some built-in ramps.]

Mitigation for low contrast text could be done by the browser directly: Fixa11y is a browser plugin that detects low contrast text and adjusts it to meet minimum or even high contrast scenarios. If this was built into browsers, it would take the burden from implementors, and allow users to customize their experience.

But the browser cannot do everything. Alternative texts need to be customized and fit into the page and context where they are. Automated image recognition is getting better, but it is far from context-aware enough to rely on it daily. That said, it is technically possible to add a default, maybe very detailed description to image files, especially if they are package files. Those detailed image descriptions would travel with the file and be available as a fallback option in case no context alternative text is provided.

Empty links and buttons, as well as unlabeled form elements, should be part of the browser’s console error messages. There is no reason why JavaScript programming errors trigger messages, and accessibility issues do not. Tooling is bizarrely oblivious to accessibility.

Essential ARIA functionality must be transferred into HTML. ARIA needs to be a specialist tool that you only get out if you don’t have any other options. Many of the ARIA techniques are very intricate and for 90% of developers they should never be exposed to that kind of complexity and power.

In the end, we must guarantee an accessible web that everyone can use and adjust to their needs. This is the basic promise of the web, a promise that is broken every day.

Some people think it’s the standard, and if we quickly work on a version 3 of WCAG, all will fall into place. I don’t buy that. We have standards for almost a quarter of a century and people are unable or unwilling to follow them. Rephrasing the basic principles – that content must be perceivable, understandable, operable, and robust – will not move the needle towards an inclusive web. In the best case, web accessibility will drag on. In the worst case, we will have multiple standards to follow that have entirely unique ideas of how to test and measure accessibility.

And we have a good standard. WCAG 2 has its weaknesses, but meaningful evolution is possible if the Working Group wants it.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

After many, many, years of trying to make the web accessible doing the same things, maybe it is time to re-evaluate. Take a look at the list of issues and develop a strategy on how to address each of them. Look holistically where these issues are introduced and how we can start to prevent them. The current strategy of “here are rules, deal with them, goodbye” has not worked, and the rules don’t go away while we remove the systematic issues plaguing accessibility.

I wrote about this topic before in Fix web accessibility systematically and spoke about it in my talk Web Accessibility is broken. It’s time to fix it!

]]>
Automated testing won’t solve web accessibility https://yatil.net/blog/automated-testing-wont-solve-web-accessibility https://yatil.net/blog/automated-testing-wont-solve-web-accessibility Sat, 11 Feb 2023 22:45:00 +0100 Over the past few years, accessibility companies have started to develop tools that claim to find accessibility problems automatically. Often the idea is that “automated testing is not quite there yet, but in a few years there will be a revolution”. I don't believe that.

Human problems need human solutions

At its core, accessibility is about people interacting with computers. Users take different paths with their computers to get to your content. Sometimes that route is through a screen reader, zoom software, voice interface, or switch controls. In other use cases, there are no specific accessibility features involved. In addition, there are many written and unwritten user interface rules that apply: Is user interaction from one operating system even understandable on another operating system? Can different accessibility APIs even represent a specific UI element?

This has happened before, with the Treeview component, which is rarely used outside its natural Windows 98 habitat. There is no rule against using it, but making it truly accessible instead of just conforming to some soulless specification is almost impossible.

Automated findings need human interpretation

Sure, finding issues can be a challenge. But the real challenge is how to address an issue. An automated tool can easily say that a <div> with a link role cannot be reached with the keyboard. But what the correct course of action is, might not be clear to the person reading the finding.

Usually, you want to replace the <div> with an <a> element, but in other instances, removing the role="link" altogether is the correct advice. Might some AI/ ML/ InsertBuzzwordTechnologyHere be able to figure this out and make a decent guess? Maybe at some point. But the reality is that the automation might give you wrong advice, which means it will look to the tool that you fixed the issue, but in reality you haven’t.

Automated testing is pretty basic

WCAG 2.0 is 15 years old this year. And while tools to aid exploratory testing[^ In accessibility, we usually call this “manual testing”, but I’ve learned a few years ago that QA testers use the term “exploratory testing” instead. As web accessibility testing includes many instances of exploring the content with different tools and (assistive) technologies, I have adapted that nomenclature.] have matured and gotten better to guide testers through what needs to be done, most automated testing is still very basic. Adrian Roselli compared his own exploratory testing to free automated tools in a blog post recently.

The results are not good. While Adrian found 37 failures against WCAG, the most failures any tool found were five. No tool found any AA violations, Adrian found 11. The tools can also provide warnings, which can be useful. But in my experience, the warnings can create more confusion, especially when the tool users are inexperienced.

While A success criteria (generally) have the most impact on disabled people, not finding any AA criteria is obviously a weakness. It clearly shows that you cannot rely on automated testing alone to meet the absolute minimum level of WCAG AA.

Efficient automated testing works best for preventing regressions

While I think automated testing tools are not good at finding accessibility issues and helping to remediate them, the tests can help with keeping a website or app accessible. Significant issues will crop up earlier when you have regular linting and automated testing for accessibility. This becomes even better if you can include best practice rules. Comparing to a known best practice will always be more useful than having a general purpose tool.

Might this get better in the future?

Maybe. It is hard to gauge the future of our community at the moment. On one hand, it looks like some aspects get easier to test, on the other hand, new requirements are introduced occasionally. And then there is room for interpretation of the rules and how to apply them. And that all does not take into account that the web is a magical, flexible medium that you can adapt to a plethora of things.

But manual testing is hard and expensive

That’s true. Deal with it. 😎

There is no way around doing a manual/exploratory test eventually. That is just the nature of the task at hand. And as much as you would expect a developer to know enough to check their code generally for bugs like performance and security, we also need to teach developers to do the same. It’s not that this would completely prevent the need for exploratory testing, but it would certainly prevent shipping the simple to recognize accessibility bugs.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Automated tools should run continuously and issues remediated immediately. That’s where these tools are useful. In all other cases, automated tools can be too hard to understand for users who are not accessibility experts. And once they have acquired enough knowledge to understand them, the users don’t need automated testing anymore.

Update February 15, 2023

Karl Groves published a blog post called “Automation is not the enemy”, where he specifically calls out the title of this article without linking to it (which is fair). As an automation nerd, I enthusiastically agree that automation is our friend. I automate the heck out of my life on an everyday basis. I have Stream Deck buttons that switch on and off different email accounts, depending on the work I do.

But, especially for accessibility testing, users of those tools must be aware that they are severely limited, which Karl also agrees with:

It is true that there are a lot of shortcomings when it comes to automation of something like accessibility testing.
Karl Groves
Sadly, it bears mentioning that no automated accessibility testing tool on the market today can fully test for every possible accessibility challenge. In fact, some WCAG Success Criterion cannot be tested for using any automated means available now.
Karl Groves

I’m not sure where his leap of understanding comes from when he writes in the following sentence:

That said, it is still irresponsible to act as though automated testing is bad and should be avoided.
Karl Groves

Because I don’t think anyone has said that. At least I did not write this in my article. The fair summarization of my article is “automated testing tools have limits (hence they don’t on their own solve web accessibility) and people need to be aware of them”.

A while ago, a competing vendor started making the claim that their tool could find over 70% of accessibility issues, then made hand-wavy explanations of how they came to that conclusion. I decided to do my own research. What I found, based on Tenon’s data, is that my own findings from my blog post “What can be tested and how” from 2012 is still accurate – but that there’s a pretty big difference between “possible” and “likely”, and Tenon.io was able to find 59% of likely accessibility issues.
Karl Groves

I don’t think any of this contradicts my post above. I explicitly say, “While A success criteria (generally) have the most impact on disabled people, not finding any AA criteria is obviously a weakness.” And yes. Adrian’s test is limited to one site only, but it matches my experience. Level A issues are generally more likely to occur than AA issues. As Karl points out, the lens though which you view results is essential. 60% of likely accessibility issues is good, but we can’t call this “accessibility solved” – and we all agree on that.

Automated tools have become better in recent years in other ways than how many errors they detect. Interoperability is one aspect, there is a W3C Working Group that makes sure that tools can use the same tests to interpret things similarly. That’s good. I don’t claim that there has been no development in these tools, just that they are limited. And those limits come from the way accessibility as a discipline needs to be viewed (a human problem with human solutions) and how the standards are written.

Finally, Karl makes the good point that automated tools that are regularly used by trained accessibility professionals can speed up, help, and supplement manual/exploratory testing. And I totally agree. Professionals use tools and know their limits and how to interpret results. But that doesn’t mean that the same tools can be given to non-professionals with the expectation of similar success.

Final note: I have recommended Tenon.io in the past to clients where I thought it was the right fit. I regularly tell people to use axe to verify their work. But I also say that they might need a professional that interprets the results or recommend best practices to solve issues, and advise them to reach out, if they are unsure about the results or how to address errors.

]]>
New WCAG 2.2 features rated https://yatil.net/blog/new-wcag-22-features-rated https://yatil.net/blog/new-wcag-22-features-rated Sat, 28 Jan 2023 22:00:00 +0100 It’s January 2023 and there is a new WCAG 2.2 Candidate Recommendation Draft (which apparently is a different type of document from the September Candidate Recommendation Snapshot). Here is a diff between these two versions for your convenience.

Table of Contents

About the ratings

I judge the success criteria by different categories:

  • Understandability: For me, this is the most important criterion for the success of an SC. If it is hard to understand, it will mean that people will have a hard time learning and internalizing the SC.
  • Teachability: While this seems to be closely related to understandability, it is a slightly different aspect that I find critical. Sometimes hard to understand concepts can be easily taught.
  • Testability: How much will this change affect testing. Is it a massive burden, or is it something that you can test with other tests.
  • Impact: How much will this change improve the lives of disabled people?

All four categories will be graded on a scale of zero to five, where five is the best possible rating. Of course, this is far from scientific, but I try to explain my ratings in (excruciating) detail!

2.4.13 Focus Appearance (Level AAA)

What this SC does: 2.4.11 is supposed to make clear what “visible” means for 2.4.7 Focus Visible. It defines the area that the visible focus needs to cover and how much contrast there needs to be towards adjacent colors.

Rating: This success criterion is a mess. You can see the ambition of the Working Group to finally fix 2.4.7 Focus Visible, but the resulting SC just is not very good. And it hasn’t changed since September. It introduces four new definitions and has various sub-rules. There are different requirements for when the entire focus indicator encloses the UI component in question or when it only partly does so. Sometimes it must meet a 3:1 contrast ratio unless a certain thickness is met. There are no obvious fail cases this way and also no obvious pass cases because one pixel that doesn’t meet the 3:1 contrast ratio means that a different calculation needs to be used. This SC is still at risk and I wished it was either split up or replaced with easier to understand and test guidance. (More in the conclusion below!)

  • Understandability: 0 — You can read this Success Criterion many, many times, and you will always find new ways to combine the different clauses which upend your previous assumption of what is a pass or a fail.
  • Teachability: 0 — I think I can give most people a good overview on what any success criterion is and how to apply it in practice (be it an implementor or tester) in an hour. For this, I don’t even know where to start. I usually try to summarize a success criterion in one sentence and then spiral out into exceptions and particularities of an SC from there. Here, apart from “defines the appearance of the focus in many ways” I don’t even know where to start.
  • Testability: 2 — This is generous. I think that the different descriptions will help to determine relatively exactly if something meets the SC or not. That said, it will be a lot of work to go through every focusable element and see if they meet the SC or if a vital part of the visible focus does not meet the SC. I would expect that this can add hours to some complex pages.
  • Impact: 5 — Obviously, having a visible focus is super important. Having this guidance in WCAG 2.2 is long overdue.
  • Verdict: 7/20

Update 7 February 2023

Alastair Campbell has published a post explaining the SC. I appreciate the blog post, but it does actually show what the issue here is. his examples are all clear-cut and isolated examples. It is a good introduction for implementers, but it does little for testers. I think this is exemplary by this quote:

For example, a 25 by 100px button requires an indicator area of 25+25+100+100 = 150px.
Technically we need to take off 4px for the corners as they overlap, so it is 146px. However, if you are relying on 4 pixels you have bigger problems. If it is that close, pick a different indicator!

As a tester, it is not on me to chose that. I need to measure it. And if there is a difference of 4px, I need to understand that. I would argue that, if 4px out of an area of 150px doesn’t matter, why insist including it in the definition. Why go through the length of defining a perimeter? The reason is that a CSS outline works that way, the four pixels in the corners are shared between vertical and horizontal borders/outlines.

So those four pixels matter a lot to make it easy to conform in simple instances. Because if we don’t account for those four pixels, the focus definition of outline: 1px solid black would not conform on a white background.

Testers must understand this. That’s why I say that this SC has very intricate new concepts testers must understand making a decision on conformance.

The next example shows a four pixel thick left line next to the text “Example 2”. The text is on a grey background. Considering that this example is about the perimeter rule, the whole height of the link or button is apparently set by the background color. With a star or a circle, the perimeter would follow the exact visual outline of the shape. Here, the faint grey background is counted as part of the shape. Would the perimeter apply only to the text height, if there was no background color? I think so (but I might be wrong). If that was the case, changing the background of a component from white to just off-white would change its focus indicator requirement.

Another example is “Easy to assess passes”, example 3. A white button with black text whose focus style is an inverted color scheme: black button with white text. It’s probably one of the most common examples of a good focus style. But there is nothing in the SC that screams that makes this pass obvious. It passes clause 2 as on focus, 100% of all pixels change color with sufficient contrast, which is more than the pixels needed.

Of course, I can teach those clear examples, but that is not where the rubber meets the road when doing testing and teaching. Even for the clear examples, I need to clearly rationalize why the elements conform. This is especially important when we get to learn new success criteria.

And of course these examples are isolated cases. What happens if a specific style does not meet the SC – even barely – in one case and does meet it in another. That can easily happen when the size of the element changes. What is sufficient in a menu in one language, might not meet the SC in a language with longer words. It adds a lot of complexity to WCAG.

I don’t think this SC will change. “It’s not that bad” is what I have been hearing for a long time now. I and others disagree, but it won’t matter. I think the best case scenario is that everyone will test for the obvious scenarios and then ignore everything that is non-obvious or close enough. And that will probably be OK.

Update 2 June 2023

In the WCAG 2.2 Recommendation Draft update from 17 May 2023 has been demoted to an AAA Success Criterion, which also meant moving it behind the Focus Not Obscured Success Criteria. So this goes from 2.4.11 to 2.4.13.[^ Yes, it’s confusing.] I have changed the headings, left the previous IDs in place (hashtag cool URIs never change) and I won’t reorder the SCs here.

It was also altered again, because why not.

In addition, 1.4.7 is back on AA level again. I guess a visible focus is not that important after all!

2.4.11 Focus Not Obscured (Minimum) (Level AA)

What this SC does: If something receives focus, it can’t be entirely hidden by website content. (Here, you just learned all there is to this success criterion.)

Rating: This is a needed SC. We often see that cookie banners or other messages are on top of focused content.

  • Understandability: 5
  • Teachability: 5
  • Testability: 5
  • Impact: 4 — This would have gotten a score of 5 if it was an A criterion. I think it’s simple enough to do that it should be a baseline accessibility requirement.
  • Verdict: 19/20 — This is a perfect SC. Short, to the point, easy to understand and implement. More of this.

2.4.13 Focus Not Obscured (Enhanced) (Level AAA)

What this SC does: If something receives focus, no part of it can be hidden by website content.

Rating: This is a perfect step up from the AA SC with the same name.

  • Understandability: 5
  • Teachability: 5
  • Testability: 5
  • Impact: 3 — I think AAA is the right level for this SC, but I could have seen it as an AA criterion as well. As an AAA criterion, its impact is limited.
  • Verdict: 18/20

2.5.7 Dragging Movements (Level AA)

What this SC does: Provide an alternative for dragging actions.

Rating: This is also a pretty straightforward SC. The only slight complication is the definition of what “dragging movement” is. Testing is all manual, but dragging is relatively rare and alternatives are usually pretty obvious. Well done!

  • Understandability: 4
  • Teachability: 5
  • Testability: 5
  • Impact: 5
  • Verdict: 19/20

2.5.8 Target Size (Minimum) (Level AA)

What this SC does: Defines a minimum size for interactive elements (24px by 24px) with some exception when there is enough space around the element or when it is part of a sentence.

Rating: We had 2.5.5 Target Size on level AAA in WCAG 2.1 and having some minimum is certainly good. 24px is a little small for my taste, but it’s always hard to strike the balance here. What I don’t like is that the exceptions are worded differently between the two SCs and I would love to adopt the 2.5.8 wording in the renamed 2.5.5 Target Size (Enhanced) SC.

Teaching could be a little better as there are a lot of exceptions. The definition of target offset is outrageously complicated. (Basically, when two targets are next to each other, the targets can be less than 24px large, as long as the space between the side furthest away of one target is 24px to the nearest side of the second target). Testing can be done in general automatically, with manual reviews for the exceptions. The impact I rated relatively low because such small UI components are relatively uncommon.

Update 3 February 2023

After reading through more issues (particularly w3c/wcag#2972, w3c/wcag#2973, and w3c/wcag#2974) with target offset, I think I need to deduct one point each from Understandability and Teachability, as well as Testability. This is more complicated than it looks and while irregular shapes are rare, their testing will be a significant head-scratcher.

  • Understandability: 3 (was: 4)
  • Teachability: 2 (was: 3)
  • Testability: 4 (was: 5)
  • Impact: 3
  • Verdict: 12/20

3.2.6 Consistent Help (Level A)

What this SC does: Requires that help mechanisms that repeat on multiple pages are in the same place.

Rating: This is a little nothing burger of a Success Criterion, as usually most mainstream website already meet this and it doesn’t elevate the need for good accessible help mechanisms. I think the name is misleading (similar to Consistent Navigation and Identification) because it is not the help that needs to be consistent, but its placement or order. So Consistent Help Position or something would make this much easier to understand at a glance. This SC has also a note on “same relative order” which explains what is meant with this phrase. Maybe this should better be a normative definition that can also be applied to other “same relative order” SCs?

  • Understandability: 4
  • Teachability: 5
  • Testability: 5
  • Impact: 1
  • Verdict: 15/20

3.3.7 Redundant Entry (Level A)

What this SC does: Requires that users do not need to enter information again, when they have already provided that data.

Rating: The intent and the wording of this SC is pretty good, and I like that it is on the A level. It makes a lot of sense. It will improve data submission for everyone with a disability. The only ding is the short name, because it should say “No Redundant Entry”. But I won’t deduct points for that!

Update 4 February 2023

Patrick H. Lauke makes the excellent point that the impact of the SC is limited by the fact that it is scoped to the current process. Feels like this should have a companion AA SC that avoids that any users have to enter redundant information in any processes.

  • Understandability: 5
  • Teachability: 5
  • Testability: 5
  • Impact: 4 (was: 5)
  • Verdict: 19/20

3.3.8 Accessible Authentication (Level AA)

What this SC does: Improves accessibility by avoiding cognitive function tests in password authentication flows …

Rating: … unless it is a cognitive function test that is covered by exceptions. And those exceptions explicitly allow the use of CAPTCHAs where you recognize objects. It does not define what the “objects” can be that need to be recognized. I remember that ReCaptcha asked me to identify fire hydrants, and none looked like German hydrants. I’m not sure if this is really a significant improvement for users with cognitive impairments. It’s also not specified that you need an accessible alternative for the CAPTCHA, tho that would be covered by other SCs, I guess.

Testing if some login flow meets this SC will be relatively cumbersome but doable. I expect significant discussions on what a “mechanism to assist the user” is. I don’t know how feasible it is to use content uploaded to the website as a form of authentication.

  • Understandability: 4
  • Teachability: 4
  • Testability: 4
  • Impact: 3
  • Verdict: 15/20

3.3.9 Accessible Authentication (Enhanced) (Level AAA)

What this SC does: Improves accessibility by avoiding cognitive function tests in password authentication flows …

Rating: … but with fewer exceptions. CAPTCHAs are not allowed, and you cannot make the user identify content they provided to the site.

  • Understandability: 4
  • Teachability: 4
  • Testability: 4
  • Impact: 2
  • Verdict: 14/20

4.1.1 Parsing (Obsolete and removed) (Level A)

What this SC does: Nothing! It has been removed as it is now obsolete with the modern HTML parsers.

Rating: In the end, removing this SC is the clear-cut decision that we need from the WCAG WG. Without institutional knowledge, many people interpreted “nested according to specification” that it required HTML elements to be “nested according to the HTML specification”, not to the XML parsing rules. Of course, the latter makes much more sense 😉

  • Understandability: 5
  • Teachability: 5
  • Testability: 5
  • Impact: 5
  • Verdict: 20/20

Conclusion

This gives us the following scores for the success criteria, from best to worst:

  • 20 Points
    • 4.1.1 Parsing
  • 19 Points
    • 2.4.12 Focus Not Obscured (Minimum)
    • 2.5.7 Dragging Movements
    • 3.3.7 Redundant Entry
  • 18 Points
    • 2.4.13 Focus Not Obscured (Enhanced)
  • 15 Points
    • 3.2.6 Consistent Help
    • 3.3.8 Accessible Authentication
  • 14 Points
    • 3.3.9 Accessible Authentication (Enhanced)
  • 12 Points
    • 2.5.8 Target Size (Minimum)
  • 7 Points
    • 2.4.11 Focus Appearance

What does that tell us? Not much. I’m personally disappointed that 2.4.11 Focus Appearance has not improved at all since September. I don’t want this Success Criterion to be removed, but it will also be a pain to implement. The Working Group can do better. Split it up in multiple SCs, try not to cover every edge case. There is an exercise going on where the Working Group tries to figure out if 2.4.11’s complexity and reliability. Maybe this SC can be removed from 2.2 and reintroduced in six months in a 2.3 update. Individual SCs should never hold up updates.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

I’m really not sure what the best way forward is. On one hand, most of the updates feel OK as test criteria but don’t really push accessibility forward. Perhaps that is the strategy here. I think with good leadership, WCAG 2 has good guts to go for another decade. But the Working Group needs to be willing and able to simplify, clarify and modernize the standard.

I’m not a big fan of creating a major revision just for the sake of it. We’re only two versions into WCAG 2, and it held up well. I did propose fixing web accessibility in a more systematic way in 2021. I still think it’s important to re-evaluate how we want web accessibility to succeed.

]]>
2022 https://yatil.net/blog/2022 https://yatil.net/blog/2022 Sat, 31 Dec 2022 22:20:00 +0100 Year in review blog posts are very en vogue this year. Probably because people now have more time on their hand now that they are not constantly doomscrolling on Twitter.

Good stuff

  • We have settled in to the new apartment, and it is still great and everything we could wish for.
  • I started e-biking and spent over 250 km on the bike this year. While that does not sound much, considering that my fitness level is bad and the terrain here is quite hilly, I feel good about it. Biking helped me to get out of the house and explore the nature around the new apartment. Splendid! Unfortunately, the last few weeks of the bike season were tainted by an inner tube failure and now the need to adjust the back brakes. While I’m quite handy, doing something for the first time is complicated – especially if it has to do with brakes. I need those!
  • After building the Space Shuttle Discovery last year, I really got into Lego building. It’s an obsession now. It helps me to do something with my hands and switch off my brain. I built the following sets:
  • I read three books, which I enjoyed a lot!
  • Speaking of TV: 2022 was a good year for TV. My highlights:
    • Severance (Apple TV+)
    • Mythic Quest (Apple TV+)
    • Slow Horses (Apple TV+)
    • For All Mankind (Apple TV+)
    • Moon Knight (Disney+)
    • Ms Marvel (Disney+)
    • She-Hulk (Disney+)
    • Obi-Wan Kenobi (Disney+)
    • Andor (Disney+)
    • Welcome to Wrexham (Disney+)
    • The Sandman (Netflix)
    • Jet Lag: The Game (Nebula/YouTube)
    • Doctor Who — Eve of the Daleks and Power of the Doctor are fun, and Legend of the Sea Devils happened, too! I’m looking forward to the new era!
  • Formula E: I got a little bit obsessed with Season 8 of this motor sport. Electric cars are fascinating, and there is a lot of work going into finding out how to most efficiently use the battery’s power. 2023’s 9th season sees the new third generation car, too. And if it is true what I have seen so far, the World Championship will be a tough competition.
  • Snooker: A lot of Snooker happened, too. With a lot of Drama, especially Ronnie’s seventh World Championship and Mark Allen’s success. It really is the sport that keeps on giving with the change of pace. Ultra quick, super attacking frames and long, tense safety encounters. Anything can happen. Brilliant!
  • I also re-discovered microblogging and signed back up for micro.blog – you can find my microblog at micro.yatil.net.
  • I was invited to two podcasts: Parallel and the German speaking Working Draft.
  • Furthermore, I blogged quite a lot here. 15 posts sounds like a record in recent years.
  • Working with Axess Lab, who I joined in March this year, is delightful. My colleagues are knowledgeable and insightful.

Not so good stuff

This year was mainly one thing, and that is exhausting.[^Honestly, after adding to the list above — I should not be that surprised. I did a lot!] I did pick up a lot of new hobbies and interests. And with the change in work, the ongoing war in Ukraine, and the lingering Pandemic, it was just much. But it was also a lot of fun to rediscover hobbies.

In addition, I feel the loss of some of my accessibility community. Firstly, I lost interest helping with and commenting on WCAG. It just felt like a waste of time. The WCAG 3 discussions didn’t feel productive for a long time, and WCAG 2 followed quickly after the release of the Candidate Recommendation Snapshot of WCAG 2.2 which felt not well thought-through. I have seen that some comments are getting addressed, but I can’t fathom being involved as much as I had been in the past.

The second community loss was through Twitter. It was a huge part of my communication and keeping up with peers. Mastodon and microblogging does help with it, but it’s certainly a change. I did blog about both, WCAG and Twitter, in November.

The third community loss is my public speaking community, especially the accessibility community. Due to the global pandemic, I did not travel at all and kept mostly isolated all year. This is a necessary precaution as a person with “preexisting conditions”. I could also not live with the thought that a frivolous activity of mine caused direct harm of someone getting sick or long COVID. Especially people who are interested in accessibility or are disabled.

I do understand that conferences have commercial requirements to fulfill, and after being able to move a conference for two years, that was just not feasible for many in the community. The world pretended normality and forced organizers to hold these events. These events invited accessibility speakers who felt the duty to perform.

That said, it left a huge feeling of distrust in me. How can I trust that a conference keeps me or my disabled peers safe during another health event? I can’t. And that accessibility-focused events happened, with the predictable result of COVID-19 infections, is a reason for grave concern for me. And it’s extra concerning when those events market themselves as “inclusive”, but “not for people with respiratory illnesses.”

I won’t say that I will never speak at conferences who had in-person events this year, but I’m not eager to do so as well.

What’s next?

I don’t have reason to change a lot. I certainly want to get more active on the bike and also tackle longer trips through flatter terrain in the spring. After all, the Radweg Sieg is not too far away. I will work on acceptance of the loss of the communities and concentrate on building new ones. It’s important, and it doesn’t happen on its own. Luckily, the The Incomparable member’s Slack has been a nice refuge.

I hope to keep up the blogging and also go deeper into some topics. I have been catching up on hobby-type activities over last year, and I expect that to continue a little. Life did consist mainly of work in many of the previous years, so I yearn for other activities.

]]>
Lamenting Twitter’s and WCAG’s potential https://yatil.net/blog/lamenting-twitter-wcag https://yatil.net/blog/lamenting-twitter-wcag Sun, 06 Nov 2022 13:25:00 +0100 Twitter was and is (for now) an integral part of my web presence. Since March 2007 I have tweeted over 72 thousand times. That’s roughly 13 messages a day. I found community and friendship there. And the love of my life.

Twitter was (is?) important to me.

Seeing it change over the years made me sometimes tired of it, but in the end it just felt like a net positive place for me to be. Of course, this has changed this week. The place was attacked, but not from random people, but by someone who is – for all intents and purposes – almighty on the platform. There is nothing we can do.

Being powerless in the face of a tsunami of uncertainty and populism is what really irks me about the situation. Twitter was never really run extremely well, but it looked like it improved successively over the last couple of years. Especially, accessibility features got better and better, and the team really hit their stride lately. Until they got fired.

Twitter has lost its way for me. At least, I’m unable to fully trust it anymore. Maybe it will get better, but I have currently little desire to post on there.

In addition, I am trying to give up helping to improve WCAG from the outside.

Over the last few months, requests for clarification and simplicity have been either ignored or actively argued against. The standard as it might be published sometime next year is half-baked. The Working Group has not even looked at many of the existing issues.

Simple typos or editorial changes get no acknowledgement, and only few people of the Working Group seem to care for any of the discussions. It feels like they have all moved on.

WCAG is important, and I’m sure that does not make easier creating updates for it. But the reality is that the Working Group does not have enough support (or they wouldn’t be as behind). What starts as simple clarification questions (“What does visible in SC 2.4.7 Focus Visible actually mean?”) often ends up as a hard to understand and complicated new Success Criterion in an attempt to please everyone. Adding “a change of x CSS Pixels with at least a contrast of 3:1 to its background” would probably have covered most use cases for basic accessibility.

And then there are several places where the language and the actual interpretation of the guidelines do not match. For example, SC 1.4.1 Use of Color reads:

Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element.

If you think color is not allowed to “convey information, indicating an action, prompting a response, or distinguishing a visual element” based on the text, you would be mistaken. Color can be used as long as you change the lightness of the color. From the Understanding document[^ Or, as I started to call them, the “well, actually document”]:

If content is conveyed through the use of colors that differ not only in their hue, but that also have a significant difference in lightness, then this counts as an additional visual distinction, as long as the difference in relative luminance between the colors leads to a contrast ratio of 3:1 or greater. For example, a light green and a dark red differ both by color (hue) and by lightness, so they would pass if the contrast ratio is at least 3:1. Similarly, if content is distinguished by inverting an element's foreground and background colors, this would pass (again, assuming that the foreground and background colors have a sufficient contrast).

Changing the word in the success criterion to “hue” instead of “color” would clarify this right in the Success Criterion text. But that seems too easy.[^ One argument against those changes is “backwards compatibility”. But backwards compatibility for me is not making things unchangeable. Such clarifications would only introduce minor changes from the previous version, often not requiring a change to websites at all. Many would be more precise than before, so a subset of the previous broader rule. And even if SCs get more strict over time, that is a good thing, it is also why new SCs are added. To make the web more accessible.]

Now, I don’t want to dig up those discussions again, and I certainly don’t want to throw shade at the WCAG WG. It does what it is chartered to do and has put these rules on itself. But it also means it is at odds with my personal goals, which has always been to make WCAG and related resources as easy to understand and as practically useful as possible. I did that inside W3C, and I tried to keep it up from outside.

However, over the last few weeks since the WCAG 2.2 Candidate Snapshot release, it became even more clear that there is no interest for this work. Minor requests to clarify wording draw outsized discussions. And not because the clarification would change the definition, but because “this is understandable enough if you read it right”.

I’m exhausted and sad. Because both Twitter and WCAG WG are squandering the potential to make the world a better place. Or at least make their own product the best it can be. At Twitter, one person wreaks havoc by making reckless changes. At WCAG WG, the self-imposed rules make it hard to adapt to the modern web. And early WCAG 3 drafts also show similar issues because of that mindset.

Anyway, I think the demise of Twitter has me realize at which places I spend my time and which give me joy. So I’m stepping back from commenting on WCAG 2. I already made that decision for WCAG 3 earlier this year due to a hostile environment. Instead, I will focus on teaching accessibility in simple, understandable, and clear terms. Accessibility for everyone.

If you want to read updates from me, see my microblog which largely had replaced Twitter for me over the last months anyway. You can even follow me through Mastodon or on micro.blog. There is a newsletter where I send the occasional email, and a way to support my work.

]]>
Accessibility in the Fediverse (and Mastodon) https://yatil.net/blog/accessibility-in-the-fediverse-and-mastodon https://yatil.net/blog/accessibility-in-the-fediverse-and-mastodon Fri, 28 Oct 2022 11:00:00 +0200 Many people think about moving or at least establishing a presence in the so-called Fediverse. The Fediverse is (and this is probably a very shortened and incorrect) a collection of distributed web applications that can talk to each other. The most well known software is Mastodon, which is installed on many servers.

Now, because it is such a distributed system, the accessibility around the Fediverse is not super consistent either. But there are all the important foundations there, including the possibility to add alternative text for images.

Mastodon is a good place to dive into the Fediverse as it mimics Twitter quite closely: Followers and Following, Boosts (like “Retweets”), and Stars (like “Likes”). If you want to sign up for a disability/accessibility friendly instance, I can recommend toot.cafe, which tries to be as inclusive as the underlying software allows. There is also dragonscave.space, which is run by blind admins[^ via Robert Kinglett].

Sarah Higley has a very good step-by-step introduction on how to sign up to Mastodon, including server recommendations.

I, personally, have used micro.blog in the last couple of weeks, which deliberately does not support most of the standard Twitter and Mastodon functionality. I can’t even see who follows me. My toot.cafe profile still exists, and I’ll likely keep it (because it looks like it is easier to find for people), but it looks like it won’t be my primary way of posting in the future.

Should you join the Fediverse?

Yes, but not for the reasons that you might think of. It’s important to have options. And locking oneself into one social network is never good. Options are. Twitter has helped the web community to grow together like no other social network before. But it is in the end a closed system, which is antithetical to the web.

By opening a profile on Mastodon or somewhere else in the Fediverse, you can participate in more diverse places than before. And they all communicate with each other. It’s powerful, and if there is a new boss in your instance who brings a sink into a building for no reason, you can switch to another instance (with some issues).

Some accessibility people on the Fediverse:

Discovery can be hard on the Fediverse, but once you have an account, following and interacting is pretty straight forward. Here is a list of accessibility people that you can follow to get started:

If you want to get on the list, ping me on the Fediverse. My handle is @yatil@toot.cafe. I check that accounts are accessibility related.

]]>
On the Parallel podcast https://yatil.net/blog/on-the-parallel-podcast https://yatil.net/blog/on-the-parallel-podcast Wed, 28 Sep 2022 12:00:00 +0200 Thanks to Shelly for inviting me to talk about all things WCAG 2.2 on the Parallel Podcast, Episode 75! It was a wonderful conversation, and we walked through all the individual changed and new success criteria.

Note: RelayFM. Parallel’s podcast network, supports St. Jude Children’s Research Hospital in their fight against childhood cancer with the annual donation drive.

Listen to the episode.

]]>
On the Working Draft podcast https://yatil.net/blog/on-the-working-draft-podcast https://yatil.net/blog/on-the-working-draft-podcast Wed, 14 Sep 2022 12:00:00 +0200 Thanks to Christian, Hans, and Vanessa for having me on the German language Working Draft Podcast Episode 540! We talked about all things accessibility, including the German WCAG 2.1 translation, that we at outline carried out with support from Tomas Caspers and Aktion Mensch.

Listen here.

]]>
Welcome to the dark side https://yatil.net/blog/welcome-to-the-dark-side https://yatil.net/blog/welcome-to-the-dark-side Sat, 16 Jul 2022 13:15:00 +0200 The previous incarnation of this website had a dark theme option, but when I did the redesign a year or so ago I did not get around to implementing it. I’m of course aware that a dark option is an important accessibility feature for many people, especially as I’m using dark mode, too.

That said, most websites do not implement dark mode, so having a browser plugin like Noir or Dark Reader is necessary anyway.

A few weeks ago I read through Hidde’s blog post on his dark mode toggle implementation and that gave me the impetus to change this website to support dark mode, too.

First, I was thinking of just copying his solution, but binary dark mode toggles have an important caveat: What happens when the user changes their system settings?

You can either not follow the user’s setting and keep their choice, or, you can adapt with the system. Hidde looks for the change event in the dark mode media query and then adapts to the system preference. However, that only works if the website is open. If the website is closed, there is no way to update the data on what theme to use.[^ As I write this I realize that a Service Worker might be a way to do it, but that feels like an overengineered solution…]

Essentially there are three modes that should be respected:

  • Follow the system setting at all times.
  • Use light mode all the time, even if the system is in dark mode.
  • Use dark mode all the time, even if the system is in light mode.

Looks like a 2-way toggle is not going to cut it. And while I briefly thought about a tri-state button[^ Urgh!], there is only so much information that you can convey through one button. I looked around and Hidde’s post already had the Firefox settings which showed “System theme”, “Light” and “Dark” with radio buttons. And macOS is doing a similar thing in the system preferences[^ Until macOS 12 Monterey at least, macOS 13 Ventura introduces a new preferences app, which has been rated “meh” so far. Let’s hope the best for improvements during the beta.].

Screenshot from macOS Monterey System Preferences, showing Light, Dark, Auto as “Appearance” options.

When in doubt, I always prefer to be clear instead of clever, so my preferences button in the top right follows about the same principle. I use the new <dialog> element to put up a dialog that lets users choose their theme. A nice advantage of using a dialog is that users can get a preview of the changes and can then decide to save their choice or cancel and use their previous choice.

Of course there are a few caveats with this solution, not last the one Hidde also mentions in his post: To make it work reliably, I need to duplicate my variable declarations in my CSS file:

:root { /* Default light colors */ }

:root[data-theme-preference="light"] { /* Light theme selected */ }

@media (prefers-color-scheme: dark) {
  :root { /* System dark mode */ }
}

:root[data-theme-preference="dark"] { /* Dark mode selected */ }

The JavaScript is basically equivalent with a lot of what Hidde does, apart from the theme preference also supporting the value system. I also added a short inline JavaScript right after the opening <body> tag that applies the theme data attribute as soon as possible on page load. As my JavaScript is in a separate file, you could have gotten a flash of white before the dark mode kicked in.[^ That makes me wonder, what if we could use localStorage in media queries? For example: @media(localStorage("theme-preference"): dark)? That would be useful!]

I would agree with Hidde and Bramus that browsers should offer users choice between themes (and let’s extend it beyond light & dark, please! Despite the title of this post, this is not Star Wars!)

]]>
Set JAWS free! https://yatil.net/blog/set-jaws-free https://yatil.net/blog/set-jaws-free Fri, 08 Jul 2022 23:25:00 +0200 JAWS, Job Access With Speech, is the world’s most popular screen reader, developed for computer users whose vision loss prevents them from seeing screen content or navigating with a mouse.

A tweet from my friend Nicolas Steenhout reminded me of one issue I often run into with clients: They ask for how to best test their sites in popular screen readers and I routinely name the ones most often used. That includes the most named “Primary Desktop/Laptop Screenreader”, JAWS.

Nic is correct: Here in Germany it is the same picture: A long list of dealerships[^ Some of these dealerships even have accessible websites!][^ And yes, the German Freedom Scientific website still uses tables for layout.] but no way to purchase online, let alone naming a price.

The US website has prices and even “buy now” buttons. A personal license costs $95/year if you are using your computer non-commercially. $1285 allows you to use the current version of the screen reader commercially, too. (For example to work, which the “J” in JAWS stands for!)

Freedom Scientific seems to make it hard on purpose to get their software outside of the US. It’s so complicated that I have rarely seen someone outsde the US actually include JAWS in their testing. Some people use the 40-minute demo version as a work-around, but that does violate the terms of use.

I actively advice users to test in alternative screen readers first: NVDA is a great free alternative for Windows. Mac OS users can use VoiceOver for testing. And usually, in 95+% of use cases, that is totally fine: websites and applications working in those browsers will also work in JAWS. And of course the needs for accessible websites are much broader than tailoring your app to specific screen reader and browser combinations.

But when you have very complex UIs that warrant throurough testing, it would be so much easier to also test with JAWS. But the hassle provides an unnecessary barrier for these people who want to do the right thing.

And yes, Freedom Scientific’s sibling company[^ It might be worth noting that Freedom Scientific and TPGi are brands of Vispero, which is one of the largest accessibility companies on the planet that engages also in testing and consulting. Technically, we’re competitors in the same market, but of course they are huge.] TPGi has the JAWS Inspect product, which shows the speech output as text which can be helpful in some situations. But without real screen reader interaction, its results are limited. And interactive scenarios are exactly the situations where using the real thing matters.[^ Also the price of JAWS Inspect is apparently “Schedule a Live Demo with us”.]

It’s easy to see how limiting access to their software limits testing which in turn makes it harder for their users to get to tested sites. It actively produces a worse outcome for their clients.

In addition $1285 per JAWS license version (so roughly every year) might not be affordable by many accessibility professionals, especially those who start out or are self-employed.

Freedom Scientific’s goal should be to put JAWS into as many developer hands as possible, because if websites work best in JAWS people who need screen readers will chose the commercial product on the market. Make it easy to rent JAWS on a virtual machine by the hour. I’m a happy Assistiv Labs customer[^ This post is not sponsored. But cough see yatil.net/support. — Update: After publication of this blog post, Weston from Assistive Labs became a supporter. Thank you!] and the ease of having a Windows screen reader on hand has transformed my work.

Please, Freedom Scientific, set JAWS free[^ Not like in “free beer”, more like in “Freedom Scientific”.] and make it easily accessible, for developers and for users.

]]>
Text-overflow: ellipsis considered harmful https://yatil.net/blog/text-overflow-ellipsis-harmful https://yatil.net/blog/text-overflow-ellipsis-harmful Wed, 22 Jun 2022 00:20:00 +0200 This post is basically a short addendum to my article about text resize and reflow. I stumbled over some instances of text-overflow: ellipsis the other day and it broke resize and/or reflow.

The whole reason text-overflow exists is to specify the behavior of text once it flows over the container. There could be with and height constraints for a block. Using overflow: hidden makes sure that there is no overlapping text, but it cuts off the text abruptly. Text-overflow: ellipsis[^ And other, less well supported values.] allows to at least have an indicator that text is missing. But there is no way to make the hidden text visible.

In addition, text-overflow: ellipsis only works on one line text. That means that, to use this technique, you have to constrain the text to one line by using white-space: nowrap. MDN has a good example of the behavior.

There are a few legitimate use cases for this technique. For example, you might have a table with titles and descriptions. To preserve more space for the title, you constrain the description to one line on small viewports to the one-line and you repeat the description on the detail page for this item.

However, I often see it used on items like buttons or even form labels to make them look nicer(?) or when aligning them vertically. But once you change the viewport or resize the text, the end of the text disappears.

This is not the right thing to do. Even if your button might need to accommodate words like “Wagenstandsanzeiger”, seeing “Wagenstan…” is not going to be clear to users. It would be much better to hyphenate the word (using hyphens: auto[^ It would be really neat if Blink would finally support languages other than English here.] or &shy; entities) instead.

And for the visual design: Inline flex and grids give you a lot of control to align text and icons, for example. Don’t constrain the content to fit your design, make your CSS flexible to handle longer words gracefully.

]]>
WCAG SC 1.4.4 Resize Text & 1.4.10 Reflow https://yatil.net/blog/resize-text-reflow https://yatil.net/blog/resize-text-reflow Wed, 08 Jun 2022 00:05:00 +0200 There seems to be a confusion about the relationship and how to test for the WCAG 2.1 Success Criteria 1.4.4 Resize Text and 1.4.10 Reflow.

While these two success criteria seem related, they cover different use cases.

1.4.4 Resize Text

This success criterion that was introduced with WCAG 2.0 on level AA covers text resizing without assistive technologies. The requirement is that, except for captions and images of text, text can be resized up to 200% without losing content or functionality.

Note how the success criterion does not specify a specific method to reach this state of two times the font size. As long as the way to resize the text is “accessibility supported”, it is a valid way to conform to WCAG:

  • Resizing only the text (classic text resizing)
  • Zooming the page using browser features (viewport resizing)
  • Changing the viewport by changing the display resolution
  • Providing an on-page text size picker

Of course some ways are better than others and adjusting the viewport to resize text is frequently the most consistent way to do it, especially on websites that have been implemented in a responsive way.

That said, this SC is relatively permissive. As long as the text does not get completely lost (for example through overflow: hidden or text running into each other or behind other objects), your layout is allowed to break. And, more importantly, this success criterion gives no guidance on scrolling. It totally conforms if your website grows to twice the width and height when resizing the text to 200%, even if that means horizontal scrolling.

1.4.10 Reflow

Reflow was introduced to support users with low vision to easier navigate zoomed-in experiences by giving them a viewport size that – guaranteed – would not scroll horizontally. Reflow has nothing to do with resizing the size of the text at all.

It specifies that the content can be presented in a way that only requires scrolling in one direction at 320px for content that scrolls vertically (up and down) and 256px for content that scrolls horizontally (left and right).

There is an exception for content that requires two-dimensionality to be understood, example tables, maps, or some charts.

The reason for picking 320px/256px have been of practical nature. Firstly, 320px is a very common viewport width for smartphones. Secondly, if you use a desktop browser on a 1280px wide monitor and zoom in to 400% the width of the viewport is quartered internally in the browser… to 320px.

Using browser zoom on a desktop browser is functionally equivalent with changing the width of the viewport. Zoom to 200%, your viewport width halves.

How do these two success criteria work together?

From a desktop view, if you meet Reflow, you almost certainly also meet Resize Text. Even if your media query uses a lower font size for mobile devices, it would need to be very small to fall under the 200% threshold.

If your base font size is 16px, 200% is 32px (and note that these are real on-screen pixels, not CSS pixels dependent on your viewport here). A 8px size font in the 320px view would still meet the requirement of Resize Text. And Reflow has no requirement that the resulting text size needs to be at a certain size.

That said, once you are on a mobile viewport, you still need to be able to resize to 200% without losing any information (but scrolling horizontally is then allowed).

So… how is this supposed to be tested?

Resize the viewport width to 320px by 256px. Scrolling of the web page needs to happen in only one direction at a time. It is allowed to have sections of the page scroll into the other direction, but it must stay inside the viewport. For example would it be permissible to have a horizontal card area on an otherwise vertically scrolling page, but only if all information is visible in the viewport without being required to scroll in two dimensions.

Bump up the text size to 200%. You can do that through further zooming to a 160px viewport or resizing only the text. Important is that the resulting font size is 200% of the font visible on screen. (Note that the SC does not require that the text resize matches the setting. As long as you can eventually get to 200%, it is permissible, even if that means using the browser setting to 300% because a media query is using a smaller font size in the middle.)

In practice

Practically speaking, these success criteria are usually unproblematic, especially for modern, responsive websites. Yes, mistakes happen, and sometimes there is content that gets removed on smaller viewports. Or some CSS goes wrong when actual, real content meets it.

It can be tricky in complex web applications, especially if no mobile version exists or the mobile version removes content/functionality, as that is not allowed.

That said, text resizing in browsers is well supported (remember when Internet Explorer refused to resize text specified in pixels?) and the profileration of CSS Grid and Flexbox techniques for layouts makes it often less likely to break, compared to the float-based layouts back in the days. And web developers have learned to adapt better to different viewport sizes over the decade of responsive web development, which has brought a huge increase in accessibility in that area.

More content like this?

Support me on Steady and get blog posts like this in return!

]]>
I want to ride my bicycle https://yatil.net/blog/i-want-to-ride-my-bicycle https://yatil.net/blog/i-want-to-ride-my-bicycle Sat, 07 May 2022 11:20:00 +0200 Last week, I received a big box with something that I hoped to buy for a long time. As you might have guessed from the title of the blog post, it was a bike.

Now, I’m not the most active person, especially through the last two-and-a-bit years of pandemic life, so a regular bike was out of the question. I just know myself too well, that I would lose interest if it was not fun to do. And honestly, the main reason for getting a bike is to have some fun. Also, to be flexible for running errands instead of doing everything on foot. But mainly to have fun.

Mobility options

When moving last year, we picked a spot that would allow us to stay car-free. Cars are expensive, bad for the environment, and take up a lot of space. There is a bus stop with hourly service down the street that can get us to the train station that itself is only a 30-minute walk away. The next supermarket is a 10-minute walk away.

I’m very baffled that so many people here are car-dependent, but then I don’t have to go to work as I work from home, and connections can be time-consuming if you go by public transport. Hourly services are just not going to cut it there, and I don’t think there are individuals to blame for it. The whole system of transportation is designed in a way that makes owning a car the easy and cheap option (cheap mostly in time, not necessarily in money).

I thought about many options for allowing us (2 adults) to have some more freedom for moving around. Getting an electric car, I considered. But even leasing it for a couple of hundred Euros a month would be a waste. We just don’t have to travel longer distances that often. Also, there is no way to charge in the garage, so you’d have to go and charge at public chargers every few days. It made any electric vehicle that is impossible to connect in the apartment unattractive.

With a car out of the question, I looked at individual transportation options. And a bike was the natural answer. For getting the two of us to some place, a combination of walk, rail, and taxi would be sufficient.

Picking a bike

I had assumed picking a bike was easy, there is not that much variation in bikes, right? Well, wrong.

After seeing Stéphanie Walter’s RAD bike, I got a particular interest in those bikes. They look good and as they also have a cargo option. I was interested in a cargo bike because getting groceries and hurling around other things might be a good use of a bike. Over the weeks, I realized that having a super specialized bike like this would certainly be limiting for general bike hikes. So I waned off the thought of the cargo bike and looked more at general purpose bikes like the RadCity 5 Plus.

There was just this one problem: The payload capacity.

In contrast to non-e-bikes, e-bikes have a stated payload capacity. And for this heavy guy, 125kg just wouldn’t cut it, especially when adding groceries to it. Now, the likeliness of the bike just going kaputt because of this is probably very, very low. And still, I have seen many heavy people ruin bikes because they were not built for them. I did not want to make that mistake with something that was many hundred Euros.

So, my quest to get an “XXL bike”, as they are frequently called in Germany, started. This turned out to be much more complicated and in the end also significantly more expensive than initially planned.

Honestly, the high price point almost made me not buy a bike. Sure, a non-e-bike is a commodity by now, a status that e-bikes generally don’t have yet. And while there seems to be good competition in the space, there seems to be a few price floors that are just hard or impossible to crack.

The bike that I decided in the end, the GIANT Explore E+ 2 (2021), a name that rolls right off the tongue and I totally had no need to look up just now, has some features that I think made the higher price worth for me, in addition to the 156kg weight limit.

Generally the quality of manufacturing in that price class seems to be much higher than on cheaper bikes, for example almost all cables run inside the bike instead of outside of it, which hopefully protect them better from wearing out.

I know that there are no-name brands and probably cheaper options with a similar quality, but the good conscience that you can go to a store and they have probably heard of the GIANT, a literal giant of the industry, is reassuring for me as a first-time e-bike user.

That said, even finding out what different bikes from the same manufacturer had to offer, and what their similarities and differences were, was excruciatingly difficult. All bike manufacturers have convenient comparison functionality but the jargon used just makes it super hard to understand if there is actually a (meaningful?) difference between two features or spec items.

It probably would have cleared up really quickly in an in-person showroom, but trying to buy something online, it felt unnecessarily complicated.

And then there are the bike categories and names themselves: Even inside GIANT, there are different bike types (which makes sense), but then there is a E+ 1 and an E+ 3 version, which have all different numbers of gears and some changes in the displays and UI. From how I understood, the numbers are levels, so 1 is for the most proficient riders and 2 is for medium and 3 is for entry. But I might be very wrong about this.

It does not help that the 2022 and 2021 models are displayed on the website with the same names and very similar images. It took me far too long to figure out that the one with the 200 € cheaper price tag was last year’s model, and a third party site (where I ultimately bought the bike) that stated that there are basically no changes.

OK, so how is the bike?

First, huge shout out to Zweirad Gollmann who had the bike (and at a slight discount) and after placing the order sent me a message to double check my height fit for the bike, so I would not get a too large or small bike. While I had read up on it before and was confident to have made the right choice, this made me very confident that I had made the right purchase decision.

They even asked if they could put on the lock I bought with the bike, and they did so for free.

The bike arrived a few days after ordering it, setting it up was super easy, just aligning the handlebar and attaching the pedals and off I went. Well, almost. While I had taken the battery for charging when I received the bike, it took about 30 minutes to install software updates.

As I have alluded to above, I did get the previous years model, so I guess newer models come with more recent software that hopefully needs less updates. That said, I could have gone for a ride without installing updates at all, but that is not really how I roll. (Pun intended!)

Dark blue electric bike with panniers in front of a garage.

The bike rides wonderfully. I have mostly used the Smart Assist, or Auto, feature which supports you depending on how much you pedal. It feels very natural. Of course, I did try all the different assist modes, and they will be handy in different situations. I also rode on a flat street and switched off assistance completely and the bike still rode well.

Range anxiety is not a problem for me – my rounds are currently about 5km long. One reason is to get used to driving a bike again, getting acquainted with driving on roads (which I basically never did and is only an option here because of the light traffic), and to gradually get fitter.

Bike in front of the setting sun

So, any downsides?

Well, of course there are some. The app and software integration is pretty mediocre. That’s OK, I rather have a great bike (and this is one) with mediocre software than a mediocre bike with great software. What irks me most about the app is that it is only so useful. I can get all information from the bike, like the current battery level, when I’m in bluetooth range and I can also track my rides in the app. But that means that I have to have my phone out and prepped whenever I hop on the bike.

Planning a ride – which I have not done yet – is also only possible while being paired to the bike. As my bike is in my garage (which finally got a use!) and I am not planning my rides in the garage, but in my living room, it is basically a feature that does not exist for me. Depending on bluetooth range to the bike for this functionality is baffling to me.

The app’s view and use of Google Maps is also not too great, there is little bike-level information there and while there are a lot of graphs, none of them seem helpful to me. (But that might be a side-effect of being a novice rider.) It can also only export to Strava, at which point the question is: Why not use Strava directly? The app has a couple of nice features, like detailing how much support you got or how much battery was used.

I enjoyed the detail of the app changing color scheme with the dashboard on the bike when using different assist modes. Eco is green, trekking yellow, and sport red. That is a nice touch.

Also, I felt that I overextended myself during my first longer ride. You just can’t help and get the impression that you are more fit than you actually are while riding, but you still have to put in quite some pedaling work. And without warm-up and pedaling being a way of movement that I have not done for a long time, I was very sore for a couple of days. I probably should have ridden lower gears and/or higher assist, but it felt OK during the ride.

Last, but not least, expect to need a lot of additional accessories. A bike helmet, of course. (If your last one, like mine, sits on a shelf for about 8 years, it is probably a good time to replace it. I certainly did.) I got a handlebar mirror to have some visibility to the back, and how low the handlebars are is probably the biggest drawback of not having a Dutch-style bike, so visibility is still not great. I also got some penniers for the cargo part of the bike. I think they will work well. The bike uses an MIK rack mounting system which makes attaching and removing them very easy. A water bottle mount and a water bottle for hydration is also a must-have.

All in all, I can’t wait getting fitter and steadily increase the radius of where to bike to.

]]>
May 2022 Speaking Gigs https://yatil.net/blog/may-2022-speaking-gigs https://yatil.net/blog/may-2022-speaking-gigs Sat, 23 Apr 2022 23:30:00 +0200 I’ll be holding three talks and workshops remotely in May.

Diversity in May (Mangfold i mai) – ARIA Live Regions and User Preferences

For NAV, the Norwegian Labour and Welfare Administration, I’ll be holding two sessions for their “Diversity in May” series of events.

  1. Workshop: We’re ARIA Live! (May 3, 2022, 10:00-11:30)
    A deeper dive into ARIA live regions, their alternatives, and particularities. (This workshop is NAV internal, registration for NAV employees is available on the website.)
  2. Talk: Respecting User Preferences on the Web (May 13, 8:30–9:15)
    Allowing users to set their preferences and respecting them on websites is essential for accessibility. In this talk, that is updated for 2022, I’ll talk about which user preferences exist, how to implement, and how to test them. (This talk is open to everyone.)

AccessU 2022 – Web Accessibility is Broken

Knowbility’s AccessU 2022 has a different format this year, with asynchronous sessions being released on May 5th, 2022 and Questions and Answers during the “official” conference time between May 9 and 12.

In my brand-new talk, “Web Accessibility is broken. It’s time to fix it.”, I look at the system of web accessibility and what makes it so hard for web developers, designers, and managers to achieve. And then I have a few modest proposals for how to fix the system so that we get wider implementations and a higher overall standard.

You can buy tickets for AccessU 2022 here.

Talking at your conference or holding a workshop for your team?

Drop me an email if you’re interested in me holding these talks or similar talks and workshops for your team or at your conference. Please note that due to the ongoing pandemic, I’m only available for remote opportunities in 2022.

]]>
Thank you, Knowbility. https://yatil.net/blog/thank-you-knowbility https://yatil.net/blog/thank-you-knowbility Thu, 24 Feb 2022 11:10:00 +0100 After almost, but not quite, six years, I had my final day with Knowbility last week. The time working with them was great. I’m going to miss working with the many great minds over there.

Knowbility picked up and supported my W3C/WAI work when EU funding dried up in 2016 with 50% of my time. With the rest, I supported the Knowbility team, worked with Knowbility’s clients and did trainings and audits. I also supported the “Community Programs”, the common good part of the Knowbility nonprofit with tech support, especially around the AccessU conference.

Oh, the conferences. Knowbility made it possible for me to visit and speak at several CSUNs and AccessUs. The amount of experience that I have been able to collect is invaluable.

That also continued when I took over the mantle as “Tech Team Lead” and later “Director of Accessibility Services” in 2020 after leaving my W3C/WAI duties. I was asked to lead the team and happily agreed. While leading a US-based team from Germany wasn't easy, my colleagues seemed to appreciated my leadership style. (At least that’s what they have told me. 😉)

Working with a nonprofit like Knowbility means that you often work with clients that are in there for the “right” reasons. Not because they are sued or want to have the shine of being accessible, but because they believe in accessibility. We worked hard with some clients to guide them from their initial audit to a more in-depth working relationship with Knowbility where they were able to build up more and more competencies in-house.

Another tent pole of the work with Knowbility is the notion that Knowbility is two things: community & education.

This is the approach we tried to get to with every audit: Make sure that the audit report could be used as a learning and educational tool, and treat the clients, which have all different business pressure around making their product accessible, as part of the community.

In contrast to other accessibility services companies, our reports tried their best to give actionable advice and hands-on guidance with enough context for readers to learn, but sufficient clarity to not have too much nuance overwhelm them. It’s always a balancing act, and we did work hard to meet those goals.

I want to thank everyone there. First, and foremost, Sharron Rush, Knowbility’s founder. Thanks for believing in me and hiring me. And a special thanks to the Team I had the pleasure to serve as a lead. Thanks to Becky, Emily, Alicia, and Francesca for working with me the longest. Your support and how you worked as a team made it effortless for me.

Thanks to Ron, Toma, Kyo, and Iain who are continuing the good work in services at Knowbility. Thank you, everyone in community programs and other functions who keep the heart of Knowbility beating. You know who you are.

I am incredibly proud of the work we did over the years: Improving flight booking to make it more accessible, fix accessibility problems in online learning tools, advise fashion and media companies on how to implement accessible and inclusive practices. We helped cities to serve their inhabitants better, made dashboards accessible, and convinced clients to do the correct thing instead of using overlay products.

Despite being such a small place, I am convinced that we have moved the needle in accessibility for millions of people, and probably many billions of interactions. And we trained – directly or indirectly through reports and meetings – hundreds of web developers, designers, and project managers.

I wish Knowbility all the best for the future.

For me, I’m excited to get my evenings back and hopefully a better “work-life balance”. Working and being responsible for a team in a different time zone is hard, as there is so little overlap for proper coordination and guidance.

I’m looking forward to new challenges with Axess Lab, who I decided to contract with from March 1st.

]]>
There is no character limit for “alt text” https://yatil.net/blog/there-is-no-character-limit-for-alt-text https://yatil.net/blog/there-is-no-character-limit-for-alt-text Sat, 19 Feb 2022 14:15:00 +0100 When you search for alternative text length on the internet, there seems to be a pretty common understanding that “some screen readers” truncate alternative text[^ Note that many people use the phrase “alt text”, because the “traditional” way to use alternative text is through the alt attribute in HTML. These days, alternative text for images can come in different methods, including ARIA labels and descriptions or in some cases SVG titles.] after 125 characters:

The character limit for alt text is 125 characters, which is short, but just do the best you can.
Keep your alt text fewer than 125 characters. Screen-reading tools typically stop reading alt text at this point, cutting off long-winded alt text at awkward moments when verbalizing this description for the visually impaired.

Terrill Thompson did create a test page for it and documented his results: No screen reader cut off text altogether. JAWS – and I have tested this with a more recent version of it as well – will split up the alternative text into multiple graphics with shorter alternative text.

Screen readers do not just hide the rest of the text.

Additionally, I am pretty sure that the cut-off mentioned in Firefox does not exist anymore. At least I did not come across any truncated alternative texts.

My best guess is that some people have observed JAWS’ behavior and assumed that the text was truncated where it was only split up.

Alternative text best practices

I helped write a whole tutorial on images, so I don’t want to go into the details here, but the general rules are:

  • If an image meaning or shows something, it needs alternative text.
  • Alternative text depends on the context and usage of the image.
  • Describe the image as succinct as possible, but also as detailed as needed.

Writing alternative text is an art more than a science, and sometimes you’ll leave out essential information. My litmus test is “would I picture an approximation of the image when it was described to me over the phone using the alternative text.”

]]>
No Accessibility Without Disabilities https://yatil.net/blog/no-accessibility-without-disabilities https://yatil.net/blog/no-accessibility-without-disabilities Thu, 03 Feb 2022 10:20:00 +0100 People who are tasked with remediating accessibility often have little experience of how people with disabilities actually use the web. This leads to overcomplicated solutions, as they underestimate the capabilities of disabled people.

A few years ago, I talked to a person new to accessibility about their view that data tables were terrible for accessibility, especially for people using screen readers. It took a bit of time until I realized why they thought this was the case: The person had used a screen reader to test their site, but only knew about the basic functionality. Navigating tables, however, comes with its own keyboard shortcuts that help to orient users inside of tables.

Instead of trusting (and through research verifying) that a common pattern like data tables would be accessible, their assumption was that they weren’t.

This type of confirmation bias is hard to overcome, especially without experiencing and observing accessibility technologies directly. If it has “accessibility” in it, it must be hard, so it must be difficult for screen reader users, so I have to build a workaround for them.

The misunderstanding also comes in duplicated information or additional bolt-on code that is either inconsequential or, in extreme cases, harmful.

Take the following image code: <img src="…" alt="Image: Lego Space Shuttle">. The addition of “Image:” to the alternative text is completely unnecessary, as screen readers already output this information.

Another example is the misunderstanding of using the tab key to navigate the page. The tab key only goes from interactive element to interactive element. You use other keys to read, for example, body text. I’ve come across more than a few examples where every element on the page had tabindex="0" set, “to allow screen reader users to listen to the content”. No. Don’t do this!

Some of this might come from the notion that you can view accessibility as separate from disabilities. And you really can’t.

Accessibility removes actual barriers for people with disabilities. And you have to learn about the barriers and how they manifest for different disabilities. That will also highlight why the correct answer to accessibility questions often is “it depends”.

There are a few resources that you should be familiar with before jumping in and searching for solutions:

  • How People with Disabilities Use the Web from the W3C/WAI is a cornerstone for learning about accessibility. It’s three sub-pages really help to understand the interplay of actual user needs, their abilities, and the barriers they encounter, and tools and techniques they use to overcome the barriers.
    • Stories of Web Users is a collection of personas that you can use to build accessibility into your user stories, but they link to the other sub-pages, which allows you to really understand the needs.
    • Diverse Abilities and Barriers describes different types of disabilities and shows examples of the encountered barriers.
    • Tools and Techniques shows features, assistive technologies, and adaptive strategies that people with disabilities use to overcome or reduce the impact of accessibility barriers.
  • Browsing with assistive technology videos from Tetralogical can help to bridge the gap and get a better feeling on how assistive technology actually works.

Of course, the best thing you can do is to observe a wide variety of disabled people and learn how they use everyday websites. As a company, “hire, empower, and promote people with disabilities” (Charles Hall) as a smart way to bring that expertise in-house and have more awareness for everyone. Especially if their workplace has nothing to do with making your actual product accessible.

The last tip is that accessibility conferences often have disabled people show off their everyday assistive technologies. I learned about Augmentative and Alternative Communication (AAC) from Dave Chapple a few years ago at AccessU (which, by the way, has early bird pricing until March 6!). It is a great way to learn about all these different techniques and technologies.

I am personally not a fan of empathy labs or simulating disabilities because they are often counterproductive, as outlined by Sheri Byrne-Haber in her article Simulating Disabilities. Matt May also talks about this in his wonderful talk Design without empathy.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

(This blog post was inspired by one of my late-night tweets that got liked and retweeted a fair bit. I thought it would be good to bring that content to the blog.)

]]>
“Person of the Week” https://yatil.net/blog/person-of-the-week https://yatil.net/blog/person-of-the-week Sat, 15 Jan 2022 22:30:00 +0100 Thanks to Smashing Magazine for naming me(!) “Person of the Week” during last week. This is what they had to say:

Eric Eggert (@yatil) is a Web Accessibility Expert who tries to make the web a better place for everyone. He’s currently Director of Accessibility Services at Knowbility, before that, he worked with the W3C Web Accessibility Initiative to improve documentation of accessibility best practices on the web. Eric shares his knowledge as a speaker, teacher, and on his YouTube channel and blog. Thank you for everything you do for the community, dear Eric!

(Saved here for record keeping, I don’t think there is an archive on the Smashing Magazine site.)

]]>
The Year of Intent https://yatil.net/blog/the-year-of-intent https://yatil.net/blog/the-year-of-intent Sun, 09 Jan 2022 16:50:00 +0100 Since hearing Myke Hurley and CGP Gray talk about “yearly themes” on the Cortex podcast, I try to go into every year with a theme that acts as the north star for decisions during that time. As I outlined in my 2021 blog post, it was a stressful year and I never really felt in the driver seat.

I reviewed the year using this Looking Back at 2021 planner from ink+volt (likely an inaccessible PDF) and it helped me greatly to see what the wins and possible improvements were. The exercise helped me to make sure that I did not only look back at the negativity of the year.

While I have a few specific goals for this year, the big umbrella theme is “The Year of Intent”. I noticed during my review how much of my time I waste unintentionally. Everything I do should have a clear intent, a clear outcome to make sure I use my time productively.

And that does not only mean “productively working” but also “productively relaxing”. I caught myself a number of times in the in-between state between work and free time, where I could not really relax. In the end, I was frustrated that I did not achieve a nebulous goal, but also that I did not properly relax.

In the last week or so, I did experiment with different tools (mostly Craft, Noteplan, Obsidian, and Things) to streamline my (work) tasks. None of the tools is perfect for me, but they each have some features that I like. I also experimented a bit with time blocking, but it can be hard for me to box-in my attention that way.

I’m also struggling with doing proper weekly and daily reviews of the material that accumulates over the week and day… In the morning, I really like to go directly into work because it is when I’m most productive and at the end of my day (which is usually around 7pm), I don’t have a review in me. Maybe I need to start midday reviews?

Anyway, I’m looking forward to being more intentional this year. I started on this blog by implementing webmentions and comments, so feel free to let me know about your theme or goals for the year to test out how that all works.

]]>
2021 https://yatil.net/blog/2021 https://yatil.net/blog/2021 Fri, 31 Dec 2021 17:45:00 +0100 I welcomed 2021 with a blog post, so let’s wave goodbye to it that way, too.

To be honest, I don’t have an extensive review in me. This has been an extraordinarily tough and stressful year for me. After COVID had held strongly in the winter of 2020, the spring felt to be more normal and ordinary.

That particular calm was only of short duration as we got notice that, due to work from home of our landlord and the additional space requirements, we had to leave our home by March 2022. While the old place had been small for two people, especially when at home around the clock for living and working during a global pandemic, we did not fancy house hunting at all.

That said, by May we had found our new apartment which is closer to nature and also considerably bigger than the old one, allowing more space for the separation of work and nonwork life. We moved in August, and while we made sure that most things were taken care of by contractors, it took considerable time to find the apartment and make the move.

Apart from meeting people that we had to see for the move, we made a conscious attempt to further social distance and isolate as much as possible. This might feel like an abundance of caution, but with two self-employed people and one with considerable experience in lung illnesses (hi!), it still feels the right decision to err on the side of caution. Especially now with Omicron, of course.

That said, the new apartment is great: Two walkable supermarkets, DIY hardware store, and a pharmacy in a 10-minute radius. Thirty-five minutes by foot to the train station. Nature all around us. Woods, fields, views. It is fantastic.

Work obligations and apartment search meant that I was not able to continue with my YouTube videos. I’d really like to continue with them, but I first need to make sure I’m not as exhausted anymore. Health must always have priority. That said, I’m incredibly proud of the 11.500+ viewer figure of my first video. It really feels like I can reach further than with my other channels.

I also did change over my direct support channel to Steady from Patreon. The reason is simple: Steady is a German service, so it works better for business reasons, and it has several interesting features. For example, I might be able in the future to better integrate a membership into this site.

While the video front was relatively quiet, I picked up on blogging in the last quarter with three articles:

  1. Buttons vs. Links
  2. Fix web accessibility systematically
  3. WCAG 3 is not ready yet

I feel very good about that, and I hope to keep the occasional post coming. I have another blog post in draft since July, maybe I can finish it soon.

In contrast to other people, I did not read a lot of books. I can only remember one, to be perfectly honest, and that is Dan Moren’s The Bayern Agenda.

I did consume considerable amounts of other media, some new seasons of last year’s favorites, like the new Ted Lasso (excellent!) and For all Mankind (even excellenter!) seasons.

In summer, I also watched all Marvel movies in release order thanks to Disney+. I think the only one I had seen until then was Iron Man 1 and Spider-Man: Homecoming, and I think both were on a plane. While they were not all great, they were entertainment and I liked the continuing story. I did rate them all on Letterboxd.

In addition, I watched Doctor Who: Flux and Hawkeye (both great!) and over Christmas Around the World in 80 Days with David Tennant, which I liked.

I also built a Space Shuttle and a Telescope! (Link to the tweet with alternative texts.)

All in all, it was a good, but exhausting, year. A lot has changed, and there has been not enough time to really wrap my head around it at this point. Onwards to the next one.

]]>
WCAG 3 is not ready yet https://yatil.net/blog/wcag-3-is-not-ready-yet https://yatil.net/blog/wcag-3-is-not-ready-yet Sat, 11 Dec 2021 13:00:00 +0100

Table of Contents

In the last couple of weeks, more and more people point at the WCAG 3.0 Working Draft and recommend the adoption of aspects from it that suit their needs, despite the draft clearly stating (emphasis theirs):

These are early drafts of guidelines included to serve as initial examples. They are used to illustrate what WCAG 3.0 could look like and to test the process of writing content. These guideline drafts should not be considered as final content of WCAG 3.0. They are included to show how the structure would work.

W3C Working Groups publish drafts to allow the public and W3C members to give feedback. They are explicitly not meant as a recommendation or even as advice. To quote from the W3C process document (emphasis mine):

Working Drafts do not necessarily represent a consensus of the Working Group with respect to their content, and do not imply any endorsement by W3C or its members beyond agreement to work on a general area of technology.
[…]
A Working Draft is suitable for gathering wide review prior to advancing to the next stage of maturity.

What’s the issue with being an early adopter?

In general, web technologies are very good citizens to early adopters like me: They usually come with suitable fallbacks that allow you to use, for example, animations and transitions in 2009 with the fallback of no animation for browsers without support.

With guidelines like WCAG 2.1 and 2.2 (to be released later), the same approach is true. If you use WCAG 2.2 Success Criteria now, the Guidelines are built to be backwards compatible. So you will never break a 2.0 or 2.1 audit by using it.

But WCAG 3 breaks backwards compatibility. This is a conscious move to better adapt the standard to serve different disabilities which WCAG 2 did not sufficiently cover, due to its structure.

That means that WCAG 3 will probably have a different scoring system that does not necessarily overlap with WCAG 2. As far as I know – and my involvement was some time ago – the current plan is to make sure all WCAG 2 conforming pages conform to WCAG 3, too, in some form. They will not in reverse.

So, what about that “new color contrast algorithm”, then?

The visual contrast algorithm that is currently referenced in the WCAG 3 Working Draft, named APCA, is a stark departure from the luminosity contrast algorithm used in WCAG 2.

  • WCAG 2 treats front and background color the same, so inverting the color does not change the calculation. This is notably not how color perception works in practice. You can perceive certain colors better or worse, depending on the surrounding color.
  • WCAG 2 does not take font-size and weight into account, the APCA does.
  • WCAG 2 did not change the required contrast depending on the font, APCA does.

These are all good arguments to change to a new way of measuring contrast, especially as APCA also promises to give designers more color choice. However:

  • Any color combination with APCA needs to be checked for both font-size and weight, making requirements documents and design systems more complicated.
  • Designers compare the used font to the standard, Helvetica-based, APCA lookup table. This feels like an error-prone step to me, considering that this comparison seems to be done on a visual level. It is not only excluding people with visual disabilities from making their own (accessible) font and color choices, but it also brings a certain level of subjectivity into the rating.
  • How the APCA values convert to WCAG 3 ratings is not 100% clear to me. The rating section in the draft (expand the “Rating for Luminance contrast between background and text” for more info) refers to the lookup table values and how you can not meet a number of them and still get a rating. (WCAG 3 aims to not have clear pass/fail criteria, but looser ratings, that give websites the opportunity to be a bit inaccessible and still conform to WCAG to a certain extent.)
  • The – admittedly also draft – design and development information for ”Visual contrast of text” has little actually actionable information at this point: How do I choose colors? How do I make sure my design system complies? How do I measure the colors practically? It has some information on display color calibration and the environment, but in my opinion, those should be relevant for determining the contrast using the algorithm.
  • The APCA algorithm is changed occasionally (last in March 2021). It’s good that it adapts to new research, but it also means that you might use a color that is not sufficient by a later version.

This reads much more complicated to me, compared to the current way of using colors. It is probably more exact, but it trades off clarity. Designers might get to use orange and white, but there is an additional effort on how complicated it is to evaluate and describe accessible designs.

That trade-off might be totally worth it, but there are many questions that need to be answered between now and then.

So, should you use APCA?

The answer is two-fold:

  • For private, non-commercial projects: Sure, go ahead and apply it to the best of your knowledge. There are no restrictions on what you can do, and it might even inform future developments in WCAG.
  • For commercial and public projects: You are probably, through law or policy, required to conform to WCAG 2. That means you cannot rely on APCA for compliance (simply because it does not exist in WCAG 2).

WCAG 3 and the consensus process will probably mean that it takes another 3–5 years until WCAG 3 sees any release. And then WCAG 2 will be still enshrined into a lot of laws and policies. After all, WCAG 3 is a huge monolith of a specification, and the structure that the Working Group wants to use is very complex. You can read about it in the WCAG 3 explainer.

In the meantime, WCAG 2 is there for you. Is it perfect? No. Is the luminosity contrast flawed? Pretty sure. But that should encourage us to take the time to make sure that we don’t make similar choices in WCAG 3. As I have outlined previously on this very blog, I don’t think WCAG 3 is necessary the silver bullet that we think it is.

What is the way forward?

I think exploring APCA and how it works with your particular color needs is a good first step, and the Accessibility Guidelines Working Group probably welcomes that feedback. If you use it, be aware that you might not conform to WCAG 2, and you cannot conform to WCAG 3 (as that does not exist yet).

I’m very worried that some designers might think they should or can use the new contrast algorithm, and then accessibility consultants have to push back and clear up those misunderstandings. It takes up a lot of time, while accessibility consultants have their hands full already.

Additionally, it gives accessibility a bad reputation: “You can’t even agree on what colors we should use. Accessibility makes everything more complicated!”. This already is a common sentiment, and speculating what the future might be, based on an early working draft, will not help with it.

What if…?

In an alternate universe, we would have a modular WCAG (similar to what CSS is doing) where every two years or so we package up new success criteria into a new version. It would have allowed different speeds for different SCs, and in this case, we might have a better understanding on what the way forward would be. And if our rating or evaluation guideline would change, the next version of that Success Criterion could address it.

That said, it is so easy to think in these inconsequential hypotheticals. The W3C consensus is that WCAG 2.2 is published some time next year. WCAG 3 follows when it’s done. It’s a long process, and we need to make sure all our i’s are dotted and the t’s are crossed. Let’s just make sure we don’t get ahead of ourselves and create confusion.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

Addendum 2021-12-14

Maybe the article did not make that clear: If you use a color that has enough contrast to the algorithm specified in WCAG 2 and the one that is maybe coming in the future, that is great, and it will give your color combination a certain longevity.

Combining both means cutting off obviously hard to read color combinations that are allowed under WCAG 2 while not venturing out of the color space WCAG 2 has inhabited. That means you raise your level of accessibility beyond the minimal requirements of WCAG 2. And that is awesome.

Update 2023-03-28

WCAG 3 is still not ready. In fact, there haven’t been any meaningful updates to the draft since this article was initially published. The proposed charter for the WCAG WG has a completion date of Q2/2026, which is probably unrealistic. (Minor WCAG 2 updates took between 5 and 10 years, but now they want to create an entirely new standard with new testing requirements and documentation in three years?)

Update 2024-09-16

Rachael Bradley Montgomery, Accessibility Guidelines Working Group Co-Chair, asked me to update this article in a comment on LinkedIn: AGWG are updating the draft now every 6 months or so. A few points in the article need updating: 1. We are currently testing our velocity and do not expect to provide a final schedule until next year when we have a better estimate. 2. APCA is not in the current draft. We hope to put out our next update this fall and appreciate everyone who provides feedback, while recognizing that WCAG 3 is a work in progress!

]]>
Ask Me Anything Webinar on November 30, 2021 https://yatil.net/blog/ama-knowbility https://yatil.net/blog/ama-knowbility Fri, 26 Nov 2021 18:20:00 +0100 I’ll be joining my Knowbility colleague (“Knowlleague”?) Anthony Vasquez in an evening of questions and answers about web accessibility.

Please send questions in via Twitter with the Hashtag #A11yOfficeHour.

This event supports Knowbility’s current donation drive. So please support Knowbility and its mission by making a donation.

]]>
Fix web accessibility systematically https://yatil.net/blog/fix-web-accessibility-systematically https://yatil.net/blog/fix-web-accessibility-systematically Mon, 18 Oct 2021 10:15:00 +0200 Web accessibility is incredibly important. The web is the prime medium for information, education, entertainment, and social interaction. And it still is incredibly inaccessible to many people. According to WebAIM’s assessment of one million home pages, 97.4% of them had easily detectable failures.

Today starts W3C’s TPAC Conference. It’s where all W3C groups have an opportunity to meet and make sure that they work to bring the web forward. There is usually a lot of accessibility going on, but it is far from embedded across the organization. That has structural reasons (W3C’s Web Accessibility Initiative — WAI — is a dedicated section inside W3C) and while WAI checks all specifications for accessibility, most are not developed with accessibility in mind from the beginning.

And even the specifications that are developed for accessibility, have significant adoption problems. The only accessibility standard that got real traction is the Web Content Accessibility Guidelines (WCAG) 2. There is also ATAG 2.0, the standard for authoring tools, which is basically everything that creates web content (blog engines, social media sites, video sharing), but few tools adapt parts from it, let alone everything.

UAAG 2.0, the standard with the goal to make browsers and other user agents accessible, did not even get published as a standard, but as a working group note. There was not enough consensus to make it a requirement for browsers.

Another standard that W3C/WAI develops is ARIA (Accessible Rich Internet Applications)[^ This is a link to the ARIA 1.2 Candidate Recommendation Snapshot. I think that means it is technically a draft, but is close to being a recommendation. Unfortunately, W3C changed the naming of the documents, and I find the changes hard to understand.], which provides roles, states, and properties to make rich user interfaces accessible. It is a whole different set of semantics that you can add on top of HTML to make your website more accessible. It can also be used in other technologies, like ePub or PDF.

While developers would have used ARIA initially to adapt their HTML to the API for screen readers in complex situations, these days ARIA is almost a must-have even on the simplest website. If you have two navigation areas on the page, let’s say a visually horizontal main navigation and a vertical sub-navigation, it’s common to give them names. There is no mechanism to do that in HTML, so you have to go back to ARIA for that.

Accessibility got complicated and unpredictable

To build an accessible product, you need to know how all of these technologies interact and how you can combine them to create an accessible experience. You have to know what an accessible name is and if the aria-label attribute overwrites the aria-labelledby attribute. (It does not.)[^ Thanks to Mitchell Evan for pointing out that I initially had mixed up the priority between aria-label and aria-labelledby — accidentally proving my point.]

W3C provides a host of additional specifications for that, like the ARIA Authoring Practices[^ Linking to the editor’s draft, because that is better aligned with ARIA 1.2.], which demonstrates how ARIA works. But its examples do not reflect HTML best practices, as it is technologically neutral.[^ See, for example, this example of making a span element a link. I understand why this example is here, I also understand how people see this and come to wrong conclusions.] There is also HTML Accessibility API Mappings, which explains the relationship of how HTML maps to accessibility APIs, especially when using ARIA. And the ARIA in HTML specification, that gives advice on how to use ARIA in the first place when using HTML.

On top, you need to understand the capabilities of assistive technology and how it can actually use some of these technologies. Due to the vast market of assistive technologies, there is always uncertainty. And that HTML elements, like <input type="date">, which are standardized for over a decade now, lack accessibility support in modern browsers does not make it easy for developers.

“Don’t use ARIA unless you have to” is a common phrase uttered by accessibility experts, but how are ordinary developers supposed to know when they have to? The education around accessibility is abysmal and instead of making sure that it is really clear what to use in what situations, we just leave it to designers and developers to make these critical decisions.

WCAG 3 will not fix that issue

A lot of people have high hopes for WCAG 3 (the then likely renamed W3C Accessibility Guidelines[^ W3C Accessibility Guidelines: WCAG.]). But accessibility testing is the least of our problems. Nothing will magically let developers understand how to achieve a certain outcome[^ WCAG 3’s version of a success criterion] when WCAG 3 gets to recommendation status. It won’t make any of the interplay of the technologies easier. (And the jury is out if it will actually improve accessibility testing.)

We need a combined effort

There already is some wiggle room in accessibility: What alternative text is correct in what situation? Is something a button or a link? It is good that we can make decisions depending on the context, as the web is such a complex medium.

But if something is in ARIA, it should have the defined result in the DOM and AOM[^ That’s the Accessibility Object Model, a parallel Accessibility-focused version of the Document Object Model (DOM).] and thus a predictable outcome in assistive technologies.

For example, if you currently specify aria-haspopup="dialog", most screen readers will announce that a menu will pop up. That's not super useful.

This lack of predictability and interoperability hurts users. Developers cannot rely on the technology to work, which takes up resources that could be better spent elsewhere.

Initially, when we talked about ARIA, the plan was that most aspects of it would be converted into native HTML quickly. Combo boxes, dialogs, tab panels[^ Oh, looks like Open UI will have that covered soon, Dave Rupert is looking into native tab panels.]. The promised land of a world with natively accessible features right out of the box, it did not come to pass.

Instead, ARIA is now a meta language that sits between technologies, defining an accessibility vocabulary for them. This led to the interesting development that ARIA takes on features of HTML instead of the other way around. ARIA now even has a paragraph role.

Who can blame developers when they skip over searching HTML and go directly to ARIA — it has accessible in the name, after all. But ARIA is a much less forgiving and can be much more damaging than a bad HTML element somewhere usually is. And it also is more complicated. Some roles must be inside other roles. Using certain roles demands implementing predictable keyboard navigation (and no, you do not get that for free).

What to do?

I think we need to make sure that accessibility implementation is predictable, easy to understand and error tolerant. With the heavy reliance on ARIA, and barely any movement of getting accessibility into the core technologies[^ I’m counting on you, Open UI!], we made accessibility hard to understand for most developers and added more and more variables. And that is all before actual support for assistive technologies.

To make it easier to use, we have to bring accessibility back and modernize existing basic standards. It will simplify documentation, improve reliability, make errors easier to detect. And it will help to make accessibility easier to teach.

And browsers must do their fair share of it, too. Why is there no console warning, when a form field is missing a label? Why can I pollute my HTML with nonsensical ARIA attributes without the browser even raising an eyebrow? Every role="link" should yield a “Didn’t you want to use an a element instead?” message.

If we want the web to be “for everyone”, its tools must be for everyone, too. And that begins with accessible core ingredients like HTML.

Did you like this article? Support my independent work with just €5/month.

Update 2021-10-20: Added footnote regarding Open UI tab panel explorations.
Update: 2021-10-23: Corrected
aria-labelledby overwriting aria-label.

]]>
Buttons vs. Links https://yatil.net/blog/buttons-vs-links https://yatil.net/blog/buttons-vs-links Thu, 07 Oct 2021 23:55:00 +0200 Should some links look like buttons, or should some buttons look like links? Twitter was all up in arms about this issue this week. Let’s take a look to see what these two UI elements are and what they do, and then, how they can look.

Links are interactive elements that usually link to another document, for example: Click this link to go to Knowbility’s website. There is some additional functionality, like the ability to point to different frames in a “frame set” (yup, you can still do that!) or forcing a download of a file.

In essence, the link changes what the URL in the browser points to and then displays that website or file. If the browser can’t display the file, it gets downloaded.

Links give you also several additional options in the right click menu: Opening the target page in a new window or tab, download the linked page, copy the link. When you hover over the link with the mouse, you can also see the destination of the link in the status bar.

In addition, some links only bring you to a different section of the same page, which is useful, for example navigating footnotes[^ Footnotes are these small additional information section at the bottom of the page. Pretty much like this one. Actually, exactly like this one.]!

What are buttons?

Buttons perform an action. When they were introduced as a variant of the <input> element, their sole purpose was to submit forms. They are still pretty great for that. Later, HTML introduced the <button> element, which allowed more versatility of buttons outside of forms.

While you can get redirected after a form submission, back in the day, the website would often just stay on the same URL and display a success message. With the <button> element, buttons can now be used for functionality all over the site that does not lead a user somewhere else.

Have a calculator on the site? A great use for buttons. Expand a navigation? Use a button. Show/hide something? A button can do that. Basically, a button would always be used either in a form or with JavaScript. Without JavaScript, the usefulness of buttons is severely limited.

First, they have two different roles, so assistive technologies announce them differently. Links are (shockingly accurately) announced as “links”, while buttons are announced as (you might have guessed it by now) “buttons”.

Having these different roles means there are different user expectations. Not only that links go somewhere and buttons do something, but also their interactivity:

As a developer, it is important to embrace that difference and know about it, as you can much easier meet user expectations that way.

The same principles apply to links and buttons for styling. Users generally will have the expectation that…

  • Underlined text goes somewhere.
  • Text in a pill or rounded rectangle shape does something.

That said, on the web there has not been much of a separation of the two than on desktop operating systems. The power of CSS to make every element look any way you like blurred the lines here.

Call-to-action links (CTAs) often have a button-like shape. At the same time, we might have lists of links that look nothing like those in the body of our texts for navigation or in a tag cloud.

This is usually not a problem because context is a thing that can help users to identify what’s going on. In a teaser that has a pill-shaped link that reads “Read the full story”, people will not confuse it with a button to do something on the page.

Imagine a button that is styled to look like a text link, but has a pencil icon and reads “edit”. There’s a good chance users won’t be surprised when they trigger an inline editing mode, which does not lead them to another page to do the edits.

Conclusion

Buttons and links are functionally different, but their styling can be similar. Use the proper tool for the job and remember that links go somewhere while buttons do something.

If you style them similarly, make sure that the functionality is clear from the context. You can add other clues to differentiate:

  • Make call-to-action links a more pill like appearance, if your action buttons are rounded rectangles; or the other way around.
  • Use iconography that supports the use. An arrow to the right on a call-to-action link is a great indicator to say, “this goes somewhere!” (To the left on right-to-left languages.)
  • Use meaningful descriptions as link or button text. “Download document”, “Submit form”, “Save progress”, “Read article” are all probably as or even more instructive to direct user’s expectations compared to the actual shape of the link or button.

You should care about the difference

With both elements in a gray area, it might not make a huge difference on what to use. And that might be true for the occasional link that should be a button, or for the individual button that just redirects you somewhere. But if you depend on the role of the element every day, like screen reader or speech input users do, the reliability of these very common elements is key.

If you had a keyboard and your “e” key would only work 90% of the time, it would be infuriating. Reliability and trust in user interfaces is important to allow users to navigate content and application with ease. If you use the right elements, you support users.

Support Eric’s independent work

I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with Axess Lab as an accessibility specialist. Previously, I worked with Knowbility, the World Wide Web Consortium, and Aktion Mensch. In this blog I publish my own thoughts and research about the web industry.

Sign up for a €5/Month Membership Subscribe to the Infrequent Newsletter Follow me on Mastodon

That said, because of the complicated and diverse history of the web, in some instances there is no one true way to code or design something. Designs, development environments, approaches, and preferences can differ. Where I would have used a button and styled it that way, another user might have used a link. And that is totally OK.

Thanks to Hidde, Erik, and Nic, who reminded me about some things I forgot to mention in the first draft. Also, to everyone who shared their opinion and experience on Twitter. This is how we learn. And last, but not least, let me refer to Marcy Sutton’s talk “The Links vs. Buttons Showdown”, in which she comes to similar conclusions as I do. Carolyn reminded me of it via Twitter.

]]>
Media that helped me through 2020 https://yatil.net/blog/media-that-helped-me-through-2020 https://yatil.net/blog/media-that-helped-me-through-2020 Sat, 02 Jan 2021 00:00:00 +0100 We all needed distraction in 2020. Here are some of my highlights, so maybe you find something to enjoy from the list.

Podcasts

Unfortunately no podcasts listed have transcripts. The inaccessibility of podcasts is a really big problem.

Tech

Non-Tech

TV & Streaming

All TV series have captions and many also have Audio Descriptions. The accessibility options on Apple+ are especially plentiful, captions & subtitles in many languages and audio description in about 10 languages.

  • Doctor Who helped me in two ways: First, the new series that ran from January to March was really good. Second, the announcement of a “festive special” at the end of the year gave me something to look forward to. In addition, the animated miniseries DALEKS! was shown on Youtube.

  • The Mandalorian on Disney+ had two very good seasons released this year (because Europe got Disney+ a few months late it was all released last year for us). In addition, Disney Gallery is the behind the scenes series that covers the fascinating technology used filming it.

    Dan Moren published a fantastic recap podcast on The Incomparablecalled A Complicated Profession.

    The Mandalorian also let me to start watching the animated Clone Wars series.

  • Ted Lasso on Apple TV+ is a comedy and starts with the classical fish out of water tropes, but quickly allows peeks behind the curtains and then turns all the preconceived notions on their heads. It’s just 10 short 30 minute episodes, and I can’t wait for season two!

  • For All Mankind is an alternative history that explores what would have happened if the USSR had won the race to the moon. Also Apple TV+.

  • Mythic Quest: Raven’s Banquet is a comedy about the work in a game development studio and I enjoyed the humor in it quite a lot. They also shot a socially distanced special which is super heartwarming.

  • Killing Eve is a fascinating spy thriller series about a serial killer and an intelligence officer. When the two women’s paths cross, they discover what they have in common. It’s quite violent at times, but an incredible interesting story. (Unfortunately, the version of Killing Eve that I watched through the Apple TV Starz Channel had terrible captions.)

]]>
Welcome 2021 https://yatil.net/blog/welcome-2021 https://yatil.net/blog/welcome-2021 Sat, 02 Jan 2021 00:00:00 +0100 I’m so glad we’re in 2021, and I hope it gets to be better than 2020. For me personally, 2020 was a successful year, especially considering the circumstances we all had to work with.

The year took off quite ordinary. My workshop at a11y.club in Berlin the previous November went well, and I looked into how to do more of these seminars with people. Suffice to say that planning for in-person events was not the most useful thing at the time. Oh, how little did we anticipate.

In February, the signs of a worldwide crisis deepened, and while it was clear that these would be extraordinary times it felt save enough to do the yearly trip to CSUN in California in early March. By then many companies had withdrawn their travel but apart from the Conference itself, which was happening on a much smaller scale, the risk seemed low as long as we washed our hands and kept our distance.[^ I very much understand now that the risk level was probably higher than we could assess at the time. It is easy to second guess the decision in hindsight.]

That’s exactly what we did. And as the pre-conference meetings fell flat, I took a day off, and we took the opportunity to visit Disneyland. The park was relatively empty (during a weekday) and we had a good time stying in our bubble as much as possible and hand-sanitizing a lot.

Once CSUN was over, we traveled to the Anza Borrego Desert where we had rented a house for the week and wanted to continue to San Diego afterwards. During our hiking trip, California mostly locked down. As getting outdoor and away from people are one of the main reasons doing these trips to a mostly remote place, it did not impact us too much.

As it became clear that walking leisurely along the Beach in San Diego would not happen, we extended our stay in the desert. Ultimately, our flight back was cancelled, and we got rerouted through Boston and to Amsterdam, taking the train for the last leg of the Journey. I have never seen airports so empty. In Boston, our flight was the only non-cancelled flight on the schedule boards.

It was super lucky that we could have a trip like that. The timing worked out and we stayed healthy. That said, since arriving at home and with the growing consensus about masks and how the virus spreads, we isolated completely for the rest of the year, only leaving the house for groceries every 10 days or so.

March was also the last time I worked with W3C. Together with Knowbility I decided that it would be good to focus on Knowbility projects.

The next couple of months were a real rollercoaster, especially losing Christopher was a kick in the gut I have not really recovered from. I miss him dearly.

In May, Knowbility shifted their AccessU conference online, and it was a resounding success. At the same time, I was asked to lead the small-but-mighty tech team.

Saying that I was unsure if I could do it would be an understatement. But I was more than happy to try it and the response from the team and the work we did since then has assured me that I can guide them even as I am figuring all of it out myself.

After May, I did not do a lot of public speaking. With the nonexistent travel cost, I hope that people, that don’t have the resources, get more opportunities. I did a half-day online workshop for Knowbility about Inclusive Design in September.

In the fall, I started a — in my opinion — successful venture into YouTube video production. I’m delighted with the six videos I have created, with a combined 3.800 or so views, and with the response that I got so far from the community. The videos are embedded on this website (in a privacy-respecting way). They have all closed captions and transcripts. It’s nice to have a project that is creative and helps me to reach a wider audience than through conference talks. I hope to further improve the videos and publish more of them.

I also signed up for micro.blog in an attempt to spend less time on Twitter. You can find my microblog here: micro.yatil.net.

I have collected my TV/streaming and podcast highlights in a separate post. Those were wonderful distractions.

For 2021, I hope that everyone stays virus-free and that the vaccinations are successful and quick. I’ll hunker down as long as it takes — and you should do the same.

]]>
Updating Node.js on a Raspberry Pi Zero https://yatil.net/blog/node-on-pi https://yatil.net/blog/node-on-pi Sat, 07 Nov 2020 00:00:00 +0100 As the Raspberry Pi Zero is based on an older processor technology, the Node.js core team does not provide compiled binaries of newer versions. Here’s a quick guide on how to update anyway.

I use my Raspberry Pi Zero mainly for Homebridge, a way to use non-Homekit devices from my iPhone, iPad and Mac. Homebridge is based on Node.js but as the Pi is based on ARMv6, there is no official version of Node since version 10.x. Newer plugins demand later versions of Node, so I had to find a way to install it.

Fortunately it is pretty straight forward to install it from an unofficial repository. I followed the instructions on this web page, but I replaced the source of the compiled build.

  1. Connect to your Raspberry Pi using SSH.

  2. Find the latest build you want to install at unofficial-builds.nodejs.org/download/release/

    When I tried it, the current version was v15.1.0. In the current directory find the version for ARMv6, which is the file that ends with -armv6l.tar.gz.

    Make sure to use the correct version number in the commands below.

  3. On the command line on the Raspberry Pi download that file using the following command:

    curl -o node-v15.1.0-linux-armv6l.tar.gz https://nodejs.org/dist/v15.1.0/node-v15.1.0-linux-armv6.tar.gz

  4. Extract the files by using the tar command:

    tar -xzf node-v15.1.0-linux-armv6l.tar.gz

  5. Move the files over from the extracted directory:

    sudo cp -r node-v15.1.0-linux-armv6l/* /usr/local/

  6. In case you are greeted with the following error message:

    cp: cannot create regular file '/usr/local/bin/node': Text file bus

    You need to remove the node file first:

    sudo rm /usr/local/bin/node

  7. Restart the Pi or Homebridge to make the changes stick.

In the end, the whole process was not too bad and felt actually pretty straight forward once I found the unofficial builds.

They are unofficial and unsupported for a reason, so stuff might break in the future, but for now, everything looks good so far.

]]>
Inclusive Design Seminar https://yatil.net/blog/inclusive-design-seminar https://yatil.net/blog/inclusive-design-seminar Sat, 22 Aug 2020 00:00:00 +0200 On September 3, I will hold an online seminar about Inclusive Design, hosted by Knowbility.

The subtitle is “The Big Picture” as it continues my quest to connect all the dots between accessibility, design, inclusion, and society.

Find a full description of the seminar on Knowbility’s website.

Initially, I wanted to do a re-run of my Connecting the Accessibility Dots workshop that I did for Accessibility Club Summit in Berlin in-person in fall of 2019. But it did not sit right for me. Back then we have not been in a global pandemic, and it was before the recent Black Lives Matter protests.

Not talking about how these circumstances must change our view of the world and our approach to how we create things would be out of touch. Hence, I want to take a more holistic look onto the web industry and technology as a whole for this seminar.

Inclusive Design embraces diverse viewpoints. They are used to creating products, services, and relationships that are better for all people. It is a human-centric design philosophy.

To promote, Knowbility interviewed me about my motivation:

I was raised with a strong sense of equity for everyone, and I saw how society can benefit some groups and let others down. I think my first eureka moment growing up was when a friend of mine, who was using a wheelchair, had to go to a “special” school here in Germany because other schools were inaccessible. He had exactly one option to participate in the education system, while I always had multiple options. […]

[W]hat keeps me going[?] My love for the internet as a medium, really. It is something that we as a society are so accustomed now, everyone uses it. And I just want to make sure that everyone can still use it forever, regardless of disability or age. And deep down, I, selfishly, don’t want to lose access. So, I work to keep it.

Read the full interview on Knowbility’s website.

If you find this interesting, please sign up for my seminar. It will be fun, honest, conversational and, hopefully, insightful. A standard ticket is $149, with educators and students paying only $99. Scholarships are available if you cannot afford it.

All proceeds help Knowbility’s mission for equal access to technology for people with disabilities.

Here’s what attendees of my past workshops had to say:

]]>
Better Online Presentations https://yatil.net/blog/better-online-presentations https://yatil.net/blog/better-online-presentations Wed, 13 May 2020 00:00:00 +0200 Here are some tips I have gathered from doing online Zoom talks since 2015. I hope they help with your talk.

Sound

Zoom compresses the sound in meetings to send it to attendees more, so investing into sound gear should not be the highest priority. That said, clear, intelligible sound is much more important than everything else. If you’re hard to understand or if there’s a constant noise from your line, attendees might not be able to follow you.

Always use headphones. I have seen guidance that headphones look amateurish, but that is not true from my point of view. You want to understand audience questions or your moderator. That’s much more reliable when they are in or on your ears.

Microphones play a secondary role. You can use many laptops’ built-in microphones for your presentation. (But try it out beforehand!) It is very important to bring the microphone as close to your mouth as possible. You can do that with a headset or a table/podcasting microphone. But the wired headset included with your mobile should also work well.

I use a wired connection to my Mac to do my talks, but Bluetooth headsets or AirPods might work for your use case, too. Keep in mind that there is a brief delay with wireless options on top of the delay from the internet connection.

If you have a good microphone, Zoom gives you the option to send out non-processed audio in the settings.

Video

On videos I strongly prefer my real environment from those virtual backgrounds that are so en vogue these days. That said, I have my office carved out to support the “talk to the computer” use case. You might not be so lucky. If there is no suitable place to hold the presentation, virtual backgrounds are an excellent alternative. (And that also includes socio-economic reasons for not showing one’s living conditions.)

When using virtual backgrounds, I have seen fewer artifacts with photos that contain a lot of details. Backgrounds with solid colors have been more problematic. A picture of a forest might be better than your corporate colors displayed behind you. Make sure to not have “virtual background dismemberment” happen during your talk. If you wave around your hands while talking, your arms might look cut off with a virtual background. The edges of the top of a high-back chair can glitch in and out the background even if you only move a bit. Finally, turning your head can lead to your nose looking cut off.

Lighting is important, especially as laptops have mediocre cameras. (iPads and mobile phones are much better in that regard, but usually not suitable for many to do presentations on.) Make sure you have a bright light source in front of you. I have a daylight ceiling lamp that makes sure I have good lighting. Have as little light from behind you and from the sides. Light from behind you makes the camera overcorrect, so your face will be in the dark. Light from the side can lead to one half of your face almost dark while the other half is brightly lit. (And you don’t want to look like Two-Face, right?)

Try to look at the camera as much as possible. If your computer displays a (green) light where the camera is, try to look at it as often as possible to have “eye-contact” with your audience. It helps if your slides/notes are underneath the camera. Try to avoid having notes above the camera.[^ I think the use of teleprompters have trained us that someone looking down under the camera is more acceptable than someone looking over it. But then TV teleprompters are much further away from the speaker, so it's less noticeable that they are not looking into the camera.]

Position your head in the center of the frame, if possible with your eyes about a third from the top.

Internet Connection

Issues can arise from your internet connection not being up to the task. If you’re doing a talk during the day, your neighbors will also use the internet heavily, putting stress on the connection. There’s little you can do. I have used tethering to my iPhone when I had a complete landline blackout[^ …and I also presented from my iPhone once, but that is a story for another time. I’ll just say, having a PDF version of your slides on your phone might save your talk.].

Switch all heavy data users off. That includes Dropbox, Box, iCloud and those torrents that might run in the background. On Mac and Windows, you can use the app TripMode to only allow your presentation software and Zoom to connect to the internet (And Slack, if that is used to communicate).

If you have the possibility to connect to wired networking (“ethernet”), do so to cut out a potential issue. Yet, I do not have ethernet here and had no particular problems with wifi.

Computer Performance

If you want to be sure that everything is going without a hitch, I recommend closing all apps you don’t need for the presentation. You might even want to do a fresh reboot to make extra sure it all works.

Presentation/Display Setup

While I’m certain your setup different, here’s what I do: I like to have one display dedicated to my slide deck that I share with to Zoom. That way if I need a browser window to show something, I can drag the window over there. You can share only a particular window in Zoom, which is useful if you don’t have an extra display and don’t want the attendees to see other information.

I recommend using a presentation remote (“clicker”) like in an offline presentation, even if you only hit the right arrow key to advance the slides. It prevents you from pressing a different button by accident or losing your place on the keyboard.

When you need to share the sound from your computer, do not forget to check the “Share computer sound” checkbox in Zoom. If you play videos, the “Optimize Screen Share for Video Clip” option should give you a better refresh rate. It should make videos less choppy for the audience. Both options should appear on the bottom of the “Share Screen” menu that shows up when you click on the share screen button.

Notifications

Make sure your computer, phone, watch are in Do Not Disturb mode during the presentation.

]]>
Christopher Schmitt https://yatil.net/blog/christopher-schmitt https://yatil.net/blog/christopher-schmitt Sat, 18 Apr 2020 00:00:00 +0200 My colleague Christopher Schmitt passed away. He was one of the most extraordinary people I have been allowed to meet.

I met Christopher in person for the first time when I spoke at AccessU Online in 2015. He was organizing the conference and his warm welcome made me immediately comfortable.

There I was, embraced by Christopher’s smile and his generosity to invite me to his event. Events, that I admired from afar and I only had a tiny bit of hope to be ever involved in. It was a busy day, so we did not get to speak a lot but his care and his passion really came through.

I was stoked when I learned that he was joining the team at Knowbility just a few years later. While his expertise and his knowledge of all things good HTML/CSS/JS were much appreciated and he helped with organizing our online events, his attitude and kindness had an even greater impact.

I cannot recall a meeting where he was not smiling, where he didn’t have a funny and/or insightful comment. He rarely took compliments for himself without highlighting the accomplishments of others in the team. He was just such a good person.

Christopher has touched so many of us with his kindness and positivity. The world needs more Christophers, not fewer. But here we are.

For an impression of how important Christopher was for all of us in the web community, read through the condolences on TwitterDave Rupertand Chris Coyer have also written about Christopher.

My thoughts are with his partner Ari and their families. 💔

]]>
Hello 11ty! https://yatil.net/blog/hello-11ty https://yatil.net/blog/hello-11ty Sun, 23 Feb 2020 00:00:00 +0100 As a web developer, it is incredibly hard to just be happy with one’s website. You want to improve, and you want to make it better, always.

When I worked on this site the last time — apart from content updates, of course — I moved from Jekyll to Kirby. Now I have decided to move on from Kirby to Eleventy, a JavaScript-based static site generator.

There's no particular reason behind this change. I ran into some issues with the two languages on this site, and broke my Kirby installation briefly. And while it was quick to roll back, the overhead of a whole PHP application with Vue-powered backend felt wrong for a site that essentially publishes simple formatted hypertext.

So here we are. A simple theme, based on the eleventy-base-blog and a new coat of CSS paint is all I needed to release it. And for the first time I dabbled in using a variable font: Working with Recursive was a lot of fun, and it turned out to be very versatile.

I plan to write about the extremely simple CSS file and how I used CSS Custom Properties to make my life easier.

Expect that some posts are broken, converting between different Content Management Systems is always a challenge. If you find something, let me know.

Update October 2021: I changed back to Kirby.

]]>
ARIA Serious?! @ technica11y https://yatil.net/blog/aria-serious-at-technica11y https://yatil.net/blog/aria-serious-at-technica11y Sun, 29 Sep 2019 00:00:00 +0200 On Wednesday, October 2, I will do an online talk for technica11y. The talk will cover common ARIA pitfalls and how to avoid them. It is free, thanks to the support by tenon.io.

It is an updated talk from the one I gave several times before but it is always nice to document new and inventive atrocities.

When: October 2, 2019, 11am ET
Where: Online, Register here

]]>
Connecting the Accessibility Dots https://yatil.net/blog/connecting-the-accessibility-dots https://yatil.net/blog/connecting-the-accessibility-dots Sun, 29 Sep 2019 00:00:00 +0200 On November 17, 2019, I’ll hold a workshop in Berlin as a part of Accessibility Club Summit 2019. Tickets are just €50.

In this new workshop I want to help people wo have an understanding of specific parts of accessibility to get a better understanding on where this fits in the general framework of designing, writing, and developing accessible websites. The learning outcome should be a holistic approach to accessibility that leads participants to anticipate accessibility-related issues earlier.

We look at the requirements for accessibility, the needs of people with disabilities, and how assistive technologies work. We’ll answer the important questions about accessibility: Why is it important? What are the important concepts? How do people with disabilities actually use the web? How can we create accessible websites without consulting WCAG at every step? When, and how, can we make sure that we don’t step into the same traps all the time again and again?

In the second half of the workshop I’ll then answer the specific questions of the audience (provided in advance), applying the approaches learned in the morning to practical use.

When: November 17, 2019 (with Accessibility Club Summit Barcamp on Nov 16 and after beyondTellerrand, Nov 14 & 15)
Where: To be determined, Berlin

Buy tickets for the workshop at accessibility-club.org!

]]>
“Open in Overcast” Bookmarklet https://yatil.net/blog/open-in-overcast-bookmarklet https://yatil.net/blog/open-in-overcast-bookmarklet Tue, 27 Aug 2019 00:00:00 +0200 I use Overcast for my daily podcasting needs. Sometimes I stumble upon new podcasts and I quickly want to add an episode to Overcast for sampling the podcast.

Unfortunately there often is no link to the Overcast URL directly on the page despite Overcast having decent web integration[^ Which is one reason I switched back to Overcast twice after extended stints of trying out Castro where I prefer how podcast playlists are managed.]. Adding a podcast to Overcast in this case means copying the title of the podcast, open the web interface or the app, searching for the podcast, searching for the episode to sample. and adding this episode.

It’s not the end of the world, but it introduces some friction that seemed unnecessary to me.

Overcast accesses the iTunes Apple Podcast Directory and its podcast URLs take the same ID as is present in that directory. Due to the nature of Apple Podcasts, every podcast has a link to their entry on the page.

JavaScript to the rescue!

I have created the following JavaScript[^ Not really rocket science.] which searches for podcast links (two variations). If one is found, it extracts the ID using a regular expression, adds it to the Overcast URL and opens the URL in the current window/tab.

const regex = /podcast\/id([0-9]*)/i;
var itunes = document.querySelector('a[href^="https://itunes.apple.com/"][href*="/podcast/"],a[href^="https://podcasts.apple.com/"]');
if (itunes) {
  var itunesid = regex.exec(itunes.getAttribute('href'));
  var overcasturl = 'https://overcast.fm/itunes' + itunesid[1];
  window.location.href = overcasturl;
} else {
  alert('No Apple Podcasts link found. 😭');
}

I then used Peter Coles’ Bookmarklet Creator to generate a bookmarklet.

To install the bookmarklet, drag the following link to your bookmarks/favorites bar:

Open in Overcast

While searching for the episode and to add is still needed, I hope to try out to more diverse podcasts this way.

]]>
Accessible CSS Generated Content https://yatil.net/blog/accessible-css-generated-content https://yatil.net/blog/accessible-css-generated-content Sat, 13 Jul 2019 00:00:00 +0200 CSS generated content can have unintended side-consequences. As Andy Clarke discovered recentlydata- attributes he used as a way to transfer content into CSS for visual purposes are not translated using built-in browser functionality.

His[^ Note that this is using Andy’s use case as an example. He immediately added a note to his article when I made him aware of the accessibility implications. I wanted to write this up as a lesson in how the web changes and how different aspects of the web can work together. After all the web is constantly evolving and we’re all learning all the time.] goal was to provide text effects by layering different styles of the same font on top of each other. Designers use this technique to extend a base font style with other flourishes of the same font. The final code he came up with is this HTML, using the notranslate class to prevent translation of the heading[^ Usually I would oppose to remove the ability for users to translate content to their language. In some circumstances, like proper names, this can be OK.]:

<h1 class="type-family-jakob notranslate" data-heading="France-Norvège">
  France-Norvège
</h1>

The CSS looks like this:

[class*="type-family"] { position: relative; }

[class*="type-family"]:before, [class*="type-family"]:after {
  content: attr(data-heading);
  position: absolute;
  z-index: 1;
  overflow: hidden;
  left: 0;
  top: 0;
  font-size: inherit;
  font-weight: normal;
}

Until a couple of years ago, the browsers did not treat generated content as “real” content. They did not expose it to assistive technologies like screen readers. That created an issue, for example when web developers used CSS to specify the file format of a document:

<a href="link/to/an/interesting.pdf">
  Get the Report
</a>
a[href$="pdf"]:after { content: " (PDF)"; }

For visual users, the link text “Get the Report (PDF)” would have been clear. But “(PDF)” was not conveyed to screen readers and other assistive technologies and thus not their users. Most developers don’t intend that behavior, so browsers started to treat generated content as actual content.

Back to Andy’s example. The “accessible name” (the label that assistive technology uses) of his heading rank 1 would include the :before and the :after version of the contentand the content of the <h1> itself. The browser “sees”:

<h1 class="type-family-jakob notranslate">
  France-Norvège France-Norvège France-Norvège
</h1>

There is an ARIA attribute that we can use to overwrite[^ A note, because I see that in accessibility assessments all the time: If you use aria-label, the content of your element is not revealed to assistive technologies. Writing <a href="…" aria-label="opens in a new window">Visit our partner site</a> will result in a link that only says “opens in a new window”. Just don’t use it that way. OK?] the content of the <h1>aria-label. So we could augment Andy’s code like this to avoid tripling the heading:

<h1 class="type-family-jakob notranslate"
    data-heading="France-Norvège"
    aria-label="France-Norvège">
      France-Norvège
</h1>

This would work, but having two attributes repeating the content of the heading feels wrong. As attr() can use any attribute, not only data-attributes[^ Indeed, attr() was invented long before data- attributes were a thing.], we can use it with the aria-label and remove data-heading:

<h1 class="type-family-jakob notranslate"
    aria-label="France-Norvège">
      France-Norvège
</h1>
[class*="type-family"]:before, [class*="type-family"]:after {
  content: attr(aria-label);
  …
}

This is where this story could end. And indeed this is where this story would have ended a couple of weeks ago. Yet, thanks to accessibility advocates, aria-label is now actually one of the attributes that istranslated when using Google Translate through Google Chrome – but not in other browsers. If that is enough to remove the notranslate class from the heading depends on your circumstances. As the short clip of this example codepen shows, the aria-label attribute translates nicely:

ARIA label translates in Google Chrome [no sound]
]]>
Much Ado About No Lists https://yatil.net/blog/much-ado-about-no-lists https://yatil.net/blog/much-ado-about-no-lists Sun, 13 Jan 2019 00:00:00 +0100 In the past two days, people noticed that VoiceOver (VO) on top of Safari is not reading list semantics when the list is not styled in a list-like fashion. First things first: ## What does it mean for me as a web developer that Safari is not reading lists when it doesn't look like a list? **Nothing.** The first commits for “layout lists”[^I think that saying those lists are used as “layout” is quite a misnomer, the lists are used as a generic grouping mechanism.] have been committed to the [source in 2014](https://github.com/WebKit/webkit/commit/9ee768fd0a2fc2104c9a94542545f60e51421c07#diff-c0dfd1400d023854a36f3c70192c8968), the code for this particular functionality has [not changed since mid-2015](https://github.com/WebKit/webkit/commit/c484541d223f49c710cf5c8bfaeda672eeafe854#diff-c0dfd1400d023854a36f3c70192c8968). Considering that the issue just came up in 2019 probably means that it did not have a negative impact on users. Instead, according to [a comment made by James Craig](https://bugs.webkit.org/show_bug.cgi?id=170179#c1), “Customers seem much happier in the 3 years since this change went in.” ## But shouldn't browsers and screen readers respect semantics? That was my first [knee-jerk reaction on Twitter](https://twitter.com/yatil/status/1083736641737502720). In a perfect world where developers would code perfect code, this principle would hold true. However, in the diverse context of the web, browsers and assistive technologies have to make judgment calls. Back in the day that was mostly about repairing HTML (before the behavior was standardized in HTML5). Today those judgment calls revolve around how users actually use and want to read content on the web. When mobile browsers were introduced, the viewport was set to 960px by default to avoid breaking sites. It was a judgment call to not break the web. When Safari decides that it is better not to announce lists in certain circumstances, that is a judgment call they are allowed to make whether I agree with it or not. Indeed this already happens with tables where browsers (all of them!) make a determination of layout table, or not.[^This is an entirely different issue than the one that removes semantics from responsive tables.] Most screen readers also decide to not use `

` or `

` semantics, so they are usually not announced. In fact, even such useful elements as `

` and `

` usually have no recognition at all in browsers[^Which is a shame, they are so useful!]. ## So we need standards for screen reader output! Yes, and no. Users of screen readers are very diverse. Many screen reader users can see the screen. Some know every bit of the screen reader’s settings, other users struggle with the essential functions. In the end, a screen reader is a highly personalized piece of assistive technology. In principle, I’d personally prefer the behavior to be a setting in the screen reader (VoiceOver) itself, rather than Safari deciding what to do. On the other hand that has also ramifications: How would the browser communicate that it deems a list is used for “layout”? We generally don’t want assistive technologies to access the HTML directly, because this lead to issues in the past. ## Next steps? Of course, we can yell at browsers and assistive technologies for making our lives more complicated, but the reality is that we are living in a complex world and there is not a black and white answer (yet!) on how to tackle issues like this. > We really need an open conversation on what CSS is allowed to overwrite semantics. Apart from display:none/visibility:hidden, I personally think no CSS should alter the semantics of the page. The above paragraph was my hot-take two days ago. I’m not sure if it holds up as much as I would want it to do. I think we need to define the expected or preferred behavior of user agents somehow but to flat-out forbid interpretation might be to the decrement of the users. We have come so far to agree that [websites don’t need to look the same in every browser](http://dowebsitesneedtolookexactlythesameineverybrowser.com) mostly due to bugs in their rendering engines or preferences of the user. I think the same is true for screen readers and other assistive technology: **Websites don’t need to sound the same in every screen reader.** The issue with “listitis”[^ Using lists to structure every little part of the content.] stems from HTML not having a lot of ways to structure content differently. Do we really need `

    ]]>
    Leaving Facebook https://yatil.net/blog/leaving-facebook https://yatil.net/blog/leaving-facebook Mon, 31 Dec 2018 00:00:00 +0100 I’ll leave Facebook by the end of the day today[^This blog post was in the making for days, and I wanted to give advanced warnings, but it didn’t work out sooner.]. I thought about this final step for several months. I have many reasons, including, but not limited, to Facebook’s ongoing privacy issues. For me, as for many, Facebook has grown essential to be in touch with some relatives and colleagues. However, those contacts have been superficial, and Facebook is not the sole way to be in touch. My professional contacts have blogs and Twitter profiles. I can follow them using [Feedbin](https://feedbin.com/) which supports not only following RSS feeds but [also Twitter profiles](https://feedbin.com/blog/2018/01/11/feedbin-is-the-best-way-to-read-twitter/). This gives me a privacy-first way to read relevant information. Of course, where it gets hard are the private contacts. Some prefer Messenger, others just use Facebook as their social network of choice. Most of my contacts are, however, not very active on Facebook or live in a right-wing bubble. The latter leads to me not following them and they're not following me, so being active on Facebook is not broadening their horizon[^I try to read conservative views where I can. Right-wing propaganda is not conservative.]. While I will stop using Facebook, I’ll continue to use some of their other properties, namely WhatsApp and Instagram. The former is the basis for communication with some close relatives, so that leaves me without much choice. The conversation is encrypted, and I don’t share my contacts with the app, so it’s ok for now. The latter is an excellent way to keep in touch on a very superficial level. However, I’ve recently reduced publishing on Instagram and with Flickr's future in question, I hope to have a personal [Pixelfed](https://pixelfed.social/) instance running at some point. Lastly, I would rather not be a reason for people to stay on Facebook. Being a cog in the Facebook machine makes me an involuntary helper for their extremely addictive drug. And I don’t want to be that. If you want to stay in touch, I recommend these ways to follow me: - [Mastodon: @yatil@yatil.social](https://yatil.social/@yatil) - [My presentations](https://yatil.net/talks-and-workshops) - [GitHub](https://github.com/yatil) If you would like to message me, email is the best way: [mail@yatil.net](mailto:mail@yatil.net)[^Mastodon or other social media DMs might also work, but I don’t check them regularly.]. If you have my phone number (it hasn’t changed in many years), feel free to ping me via iMessage, SMS, in WhatsApp, or Signal.

    ]]>
    Sunday Seven for April 29, 2018 https://yatil.net/blog/sunday-seven-for-april-29-2018 https://yatil.net/blog/sunday-seven-for-april-29-2018 Sun, 29 Apr 2018 00:00:00 +0200 - [Swaziland king renames country Kingdom of eSwatini](https://www.theguardian.com/world/2018/apr/19/swaziland-king-renames-country-kingdom-of-eswatini) (The Guardian) Internationalization is hard, now you have to fit in a country with a lower case first letter. > Meaning “place of the Swazi”, eSwatini is the Swazi language name for the tiny state landlocked between South Africa and Mozambique. Unlike some countries, Swaziland did not change its name when it gained independence in 1968 after being a British protectorate for more than 60 years. - [Hand tremors and the giant-button-problem](https://axesslab.com/hand-tremors/) (Axess Lab) In accessibility, we usually argue for large tap areas – but they can be a problem for users with certain motor impairments. > The user is trying to place his finger between the news stories. He’s hoping the space is unclickable, so that an accidental tap while trying to scroll will not activate a link. However, every part of the screen is linked. It’s like the whole interface is one giant button – hey what a clever comparison, let’s add that to the title of this article! - [The BBC is letting you download more than 16,000 free sound effect samples from its archive](https://www.musicradar.com/news/the-bbc-is-letting-you-download-more-than-16000-free-sound-effect-samples-from-its-archive) (MusicRadar) > There can be few organisations that have used more sound effects than the BBC, so there’s bound to be great interest in the news that the corporation has now made more than 16,000 of its FX available for free download. These are being released under the RemArc licence, which means that they can be used for “personal, educational or research purposes”. - [Time.is](https://time.is) A useful site for people who need to communicate across time zones. - [For everyone](https://hiddedevries.nl/en/blog/2018-04-20-for-everyone) (Hidde de Vries) > It appears ‘for everyone’ can have different meanings and I think it is important to see the difference between them, so that we are not fooled by for-profit companies that present themselves as charities. The web itself is a place where people are put first, and a place where power is not exercised on people, it is given to people. - [Bits Up!: Cache-Control: immutable](https://bitsup.blogspot.de/2016/05/cache-control-immutable.html) In recent months, I have been surprised about the amount and possibilities of HTTP headers. Immutable is certainly one to add to the tool belt. > When a client supporting immutable sees this attribute it should assume that the resource, if unexpired, is unchanged on the server and therefore should not send a conditional revalidation for it (e.g. If-None-Match or If-Modified-Since) to check for updates. Correcting possible corruption (e.g. shift reload in Firefox) never uses conditional revalidation and still makes sense to do with immutable objects if you're concerned they are corrupted. - [gridtoflex.com](http://www.gridtoflex.com/) Good advice! (However, don’t use emojis in your CSS: It’s less understandable as you think it is, and there are likely weird edge cases in browsers.) > CSS grid is AMAZING! However, if you need to support users of IE11 and below, or Edge 15 and below, grid won't really work as you expect (more info here). This site is a solution for you so you can start to progressively enhance without fear!

    ]]>
    Hyphenation, Languages and Code https://yatil.net/blog/hyphenation-languages-code https://yatil.net/blog/hyphenation-languages-code Tue, 10 Apr 2018 00:00:00 +0200 Jeremy [posted a solution for multi-language sites](https://adactio.com/notes/13720) where you want to switch hyphenation on when the page language is set to (for example) German: ``` css [lang="de"] { hyphens: auto; } ``` This works great until you have code on the page. Even if we have word-wrapping for code enabled (and we should on responsive sites), hyphenation is not what we want, usually. The same goes for code in sentences. So I’d suggest adding the following to the CSS: ``` css [lang="de"] pre, [lang="de"] code { hyphens: none; } ```

    ]]>
    On the #A11y Rules Podcast https://yatil.net/blog/on-the-a11y-rules-podcast https://yatil.net/blog/on-the-a11y-rules-podcast Sun, 08 Apr 2018 00:00:00 +0200 Nic [@vavroom](https://twitter.com/vavroom/) Steenhout ([Blog](https://incl.ca)) invited me to his #A11y Rules Podcast. We talked about my work with [Knowbility](https://knowbility.org) and the [W3C Web Accessibility Initiative (WAI)](https://w3.org/WAI/) and how I got into accessibility. Nic’s podcast is short and sweet, so you don’t have to listen to me waffling on for too long. Nic makes transcripts of the episodes available. [Episode 1 of the two-part interview is out now!](https://a11yrules.com/podcast/e35-interview-with-eric-eggert-part-1/) Thank you, Nic, for having me!

    ]]>
    Sunday Seven for April 8, 2018 https://yatil.net/blog/sunday-seven-for-april-8-2018 https://yatil.net/blog/sunday-seven-for-april-8-2018 Sun, 08 Apr 2018 00:00:00 +0200 I’ve been on vacation for a bit, which was incredibly relaxing. Some pictures are available on [Instagram](https://www.instagram.com/yatil/) (for now – I need an indie web solution for this). - Professionalism: [**Design’s Lost Generation**](https://medium.com/@monteiro/designs-lost-generation-ac7289549017) (Mike Monteiro, Medium) — Everyone who helps to produce a product is a designer, every decision counts. It’s important to make ethical design decisions. There are two words every designer needs to feel comfortable saying: ‘no’ and ‘why’. - History: **[A Short History of WaSP and Why Web Standards Matter](https://thehistoryoftheweb.com/a-short-history-of-wasp-and-why-web-standards-matter/)** (Jay Hoffmann, thehistoryoftheweb.com) — Web standards wouldn’t be widely implemented without the volunteer groups formed in the early days of the internet. - Indie Web: **[It’s Time for an RSS Revival](https://www.wired.com/story/rss-readers-feedly-inoreader-old-reader/)** (Brian Barrett, Wired) — I firmly believe that the distributed web is the better model. But feeds aren’t a solution for everything: I would not want to subscribe to a newspaper because of the huge output there. Also it only furthers the information bubble. We need solutions to surface a diverse set of news. - Communicating Ideas: **[Write it down](https://markboulton.co.uk/journal/write-it-down)** (Mark Boulton) — I often ask people to write down specifics of their problem or suggestions. It often helps me to better understand but also helps others to understand the complexity of their request or find better/other approaches. Conversations are great for brainstorming, but to nail it down, write it down. - Accessibility: **[Small Tweaks That Can Make a Huge Impact on Your Website’s Accessibility](https://css-tricks.com/small-tweaks-can-make-huge-impact-websites-accessibility/)** (Andy Bell, css-tricks.com) — A broad overview over some accessibility techniques. See also the [W3C WAI Tips for Getting Started with Web Accessibility](https://www.w3.org/WAI/gettingstarted/tips/). - Malpractice on the web: **[Bei der „Sächsischen Zeitung“ wird Auschwitz zum Genuss-Moment](https://uebermedien.de/26546/bei-der-saechsischen-zeitung-wird-auschwitz-zum-genuss-moment/)** (Stefan Niggemeier, übermedien.de, [English machine translation](https://translate.google.com/translate?sl=de&tl=en&js=y&prev=_t&hl=en&ie=UTF-8&u=https%3A%2F%2Fuebermedien.de%2F26546%2Fbei-der-saechsischen-zeitung-wird-auschwitz-zum-genuss-moment%2F&edit-text=&act=url)) — There’s a new advertising form that content publisher can use: A swirly overlay that advertises a product inside the article image. It’s just really bad when the article image depicts the Auschwitz entrance gate and there’s no way for publishers to exclude sensitive material. (The whole ad form was disabled after the incident.) - Code examples: **[carbon](https://carbon.now.sh/)** — If you want to use images of code in your presentation, carbon adds a window frame around it. It looks very sharp. There is a way to export SVG, but I have not looked into the accessibility of it. (Provide a link to the code or add an alternative text.)

    ]]>
    Sunday Seven for March 18, 2018 https://yatil.net/blog/sunday-seven-for-march-18-2018 https://yatil.net/blog/sunday-seven-for-march-18-2018 Mon, 19 Mar 2018 00:00:00 +0100 I’m in San Diego where I’ll attend the W3C WAI Education and Outreach WG Face-to-Face meeting, and CSUN, the biggest accessibility conference. It’s always amazing to be able to work with my colleagues in one room and to meet all accessibility experts in one place. - Beta: [**W3C/WAI Website**](https://www.w3.org/WAI/beta/) – We managed to launch the beta for the new WAI site last week. There are still a few rough edges, but it is essential to get it in front of people. A lot of work from many people went into the site, from design, user testing, development. I made sure we can edit resources in their respective Jekyll projects on GitHub and then integrate it into one repository using git submodules. All repositories use one common theme, so changes to it will be reflected in all resource previews, hosted on GitHub pages. - Color: [**Colorblind Accessibility on the Web – Fail and Success Cases**](https://axesslab.com/colorblind-accessibility-web-fail-success-cases/) – An excellent overview of colorblindness and common pitfalls. - Principles: [**Accessibility Interview Questions**](https://scottaohara.github.io/accessibility_interview_questions/) – Everyone should have answers to the question collected by Scott O’Hara. Most aim at general principles than specific techniques. - Notifications: [**Inclusive Components: Notifications**](https://inclusive-components.design/notifications/) – Another excellent write-up by Heydon Pickering. - Buttons: [**Designing Button States**](https://cloudfour.com/thinks/designing-button-states/) – Tyler Sticka on different aspects of button design. Sweating details like this can greatly improve the usability and accessibility of your website or application. - PWA: [**Minimal viable service worker**](https://adactio.com/journal/13540) – I don’t know enough about Progressive Web Apps to implement them correctly, yet. However, Jeremy Keith’s article feels like a good starting point to learn more about it. - Fonts: [**Shipping system fonts to GitHub.com**](http://markdotto.com/2018/02/07/github-system-fonts/) – Interesting article on a very particular approach to shipping fonts.

    ]]>
    Sunday Seven for March 11, 2018 https://yatil.net/blog/sunday-seven-for-march-11-2018 https://yatil.net/blog/sunday-seven-for-march-11-2018 Sun, 11 Mar 2018 00:00:00 +0100 This was a long work week, so here are some games and apps instead of articles as I couldn’t find time to concentrate on pieces. - TV: [**Jessica Jones**, Season 2](https://www.netflix.com/title/80002311) – While work was plenty, some of it was also repetitive, so I managed to watch the new Season of Jessica Jones. Very intense storytelling. - iOS: [**Altos Odyssey**](https://itunes.apple.com/de/app/altos-odyssey/id1182456409?mt=8&uo=4&at=1010lpy5) – When I downloaded Alto for the first time, I dismissed it as being too similar to its precursor. However, it has more facets, and it’s easier to achieve goals. - Podcast: [**Playing for Fun** with Tiffany Arment and Myke Hurley](https://www.relay.fm/playingforfun) – Two people talk about the positive of a video game. It’s refreshing and fun. Episode 2 is about “Celeste” which I have never played, but Episode one was about one of my favorite games… - Switch: [**Super Mario Odyssey**](https://www.nintendo.com/games/detail/super-mario-odyssey-switch) – Such a refreshing re-imagination of Mario games. Certainly one of the best titles on the Switch to date. - Version Control: [**Tower**](https://www.git-tower.com/mac/) – Tower is a fantastic app for git version control. The people behind the app also have published [a comprehensive learning resource for git](https://www.git-tower.com/learn/). - CSS: [**Third party CSS is not safe** by Jake Archibald](https://jakearchibald.com/2018/third-party-css-is-not-safe/) – Whenever you embed any resource from a third-party server, you are building a tunnel under your site’s security. The same also applies to CSS. Great list of examples from Jake. - Browser: [**Firefox Developer Edition**](https://developer.mozilla.org/en-US/Firefox/Developer_Edition) & its inspector – Working with grids and other newer CSS benefits from a good inspector and Firefox has stepped up the game. Especially inspecting grids is impressive. The browser also has a beautiful and distinct dark theme.

    ]]>
    Is this thing still on? https://yatil.net/blog/is-this-thing-still-on https://yatil.net/blog/is-this-thing-still-on Sun, 04 Mar 2018 00:00:00 +0100 Let’s wipe some dust off this old blog, shall we? There’s a lot to do, including accessibility fixes, but sometimes you just have to start somewhere.

    ]]>
    Sunday Seven for March 4, 2018 https://yatil.net/blog/sunday-seven-for-march-4-2018 https://yatil.net/blog/sunday-seven-for-march-4-2018 Sun, 04 Mar 2018 00:00:00 +0100 In _Sunday Seven_ I publish a list of seven links to things on the internet. The only criteria to make it in this category is that it is interesting to me. - Accessibility: [**Apple Park’s Visitor Center** by twitter user @xarph](https://twitter.com/xarph/status/967652885604450305) – An interesting twitter thread about the many small details build for accessibility.[1](#fn-102264-0) (If you enjoy twitter threads as much as I do[2](#fn-102264-1), [read the whole thread as one article on “Thread reader”](https://threadreaderapp.com/thread/967652885604450305.html).) - AMP: [**“Ends and Means”** by Jeremy Keith](https://adactio.com/journal/13498) – Insightful post by Jeremy on how companies can act together to help good and how sometimes they go a step too far. To use new CSS properties in Firefox, websites need to support HTTPS before those are available to them. This behavior creates a whole layer of CSS that is harder to be used while learning. - Accessibility: [**“WAI-ARIA Screen Reader Compatibility”**](https://www.powermapper.com/tests/screen-readers/aria/) – An overview of ARIA support which is good, but there are always edge-cases. It also shows the tests used to determine support, so if you want to get an impression on how different ARIA roles or attributes are voiced, you can look it up here.[3](#fn-102264-2) - Layout: [**“Layout Land”** by Jen Simmons](https://www.youtube.com/playlist?list=PLbSquHt1VCf18lllS0C5quAaOcsuMAC70) – Lots and lots of short videos that describe how to create different layouts with the new capabilities in CSS & Browsers. - TV: [**“The Tick”**](http://amzn.to/2Fec1eu) (Amazon Originals) – Sometimes, especially while coding, I need to distract parts of my brain while working. The Tick is funny and not hard to follow. I enjoyed it. - Podcast: [**Game Show** by The Incomparable](https://www.theincomparable.com/gameshow/) – I’m late picking up this particular podcast because I dismissed the idea that game shows as podcasts could work. Boy, was I wrong! I love “Random Pursuit,” “Inconceivable,” “Low Definition,” and the text adventures and they had me spontaneously laughing out loud several times in the last few weeks. - Action: [**\#WHOagainstGuns**](http://www.realitybombpodcast.com/whoagainstguns/) – Over 40 Doctor Who podcasters are supporting actions for gun control in the U.S. and plan to produce an exclusive series of commentary podcasts for the classic story “The War Games.” Access to those unique recordings will be only available to donors. More info, including a list of possible organizations to donate to, is available on the [Reality Bomb website](http://www.realitybombpodcast.com/whoagainstguns/). - - - - - - 1. I don’t necessarily agree with the marking of the AED which should arguably be easier to find, but all in all, it is a testament that accessibility does not need to look ugly. [↩](#fnref-102264-0) 2. Which means “not very much.” [↩](#fnref-102264-1) 3. Beware: As those test cases are there for testing ARIA attributes the code might not be an example of a best practice but of a possibility. [↩](#fnref-102264-2)

    ]]>
    Web Accessibility Tutorials updated https://yatil.net/blog/a11y-tutorials-updated https://yatil.net/blog/a11y-tutorials-updated Sun, 07 May 2017 00:00:00 +0200 As many of you might know, I have been the primary editor of the [W3C WAI Web Accessibility Tutorials](https://www.w3.org/WAI/tutorials/) which provide practical guidance on how to implement web accessibility. A few days ago, the Education and Outreach Working Group and I were able to publish a major update. We added three new tutorials (which were released as a draft before). A lot of thought went into framing the tutorials the right way, and we addressed one of the issues with WAI resources that we often hear about by making it very streamlined and not wordy. I am proud of the new tutorials: [Page Structure](https://www.w3.org/WAI/tutorials/page-structure/), [Carousels](https://www.w3.org/WAI/tutorials/carousels/), and [Menus](https://www.w3.org/WAI/tutorials/menus/). I hope they can be a valuable building block for learning about and teaching web accessibility. As always, we are happy to take suggestions via [GitHub](https://github.com/w3c/wai-tutorials/issues/); a [change log](https://www.w3.org/WAI/tutorials/changelog/) is available. I want to thank my colleagues in the Education and Outreach Working Group for helping me to shape the tutorials. It’s invaluable feedback.

    ]]>
    Teaching at AccessU 2017 https://yatil.net/blog/teaching-at-accessu-2017 https://yatil.net/blog/teaching-at-accessu-2017 Sat, 22 Apr 2017 00:00:00 +0200 Next month I will continue the tradition of flying over to Austin, TX, USA to attend the annual [AccessU conference](https://www.knowbility.org/education/accessu/) and teach some classes. Organized by [Knowbility](https://www.knowbility.org/), the conference is a gathering of brilliant minds around accessibility and is an excellent opportunity to broaden your accessibility knowledge. Here’s an overview of my four classes: - **Responsive and Accessible Images (March 17, 2017 – 2:15pm–3:45pm)**Images are an important part of the web. This course will give an overview of the considerations for accessible images and their alternative texts, but also take a look from a content strategist perspective on how to present pictures in a responsive context. You will learn how to write good alt text, when longer descriptions are necessary, using resolution-independent images, and how to use different images in different responsive contexts for art direction. - **Advanced Accessibility: Deep Dive for Developers (March 17, 2017 – 4pm–5:30pm)**This session gives a general overview of good development practices that ensure a more accessible web product. It includes ARIA, styling, and advice for making your website more semantic and thus more accessible to everyone. - **Use ARIA Responsibly (March 18, 2017 – 8:30am–10:00am)**How to build web components, websites, and web applications in a way that leverages the capabilities of HTML5. Add ARIA on top to enhance the user experience. You’ll learn where to find information on how to implement ARIA correctly, and shows you a practical example. - **Simplify Your Development Life with Tools, Tests, and Procedures (March 18, 2017 – 10:15am–11:45am)**A condensed overview on how developers can simplify their life by making sure that procedures and tests are in place to ensure accessibility in every step. **[Tickets for AccessU](https://www.knowbility.org/education/accessu/#registration) are still available.**Also, Knowbility is organizing the [Inaugural Knowbility Accessibility](https://www.knowbility.org/education/knowbility-accessibility-leadership-symposium/)Leadership Symposium on May 15th and 16th: The opportunity for senior management to collaborate, confer and learn about accessibility challenges in the enterprise and how to address them, leading to a more diverse customer base. After AccessU, I’ll attend the W3C [Education and Outreach Working Group](https://www.w3.org/WAI/EO/)’s Face to Face Meeting on May 19 and 20.

    ]]>
    :focus-ring https://yatil.net/blog/focus-ring-video https://yatil.net/blog/focus-ring-video Sat, 25 Mar 2017 00:00:00 +0100 Great video over at the [Google Chrome Developers channel](https://www.youtube.com/channel/UCnUYZLuoy1rq1aVMwx4aTzw) about the upcoming [CSS Level 4 `:focus-ring` selector (draft)](https://drafts.csswg.org/selectors-4/#the-focusring-pseudo). The focus is often removed for stylistic reasons when using the mouse, but then keyboard users also have no indication of where they are on the website. `:focus-ring` solves that issue. https://www.youtube.com/watch?v=ilj2P5-5CjI&index=1&list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g The video includes a shout out to this [handy polyfill](https://github.com/wicg/focus-ring) on Github. There are [other videos about accessibility](https://www.youtube.com/playlist?list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g), also presented by [Rob Dodson](https://robdodson.me), available on the channel as well. Captions are available.

    ]]>
    My personal review of the 2016 MacBook Pro https://yatil.net/blog/the-2016-macbook-pro https://yatil.net/blog/the-2016-macbook-pro Sat, 28 Jan 2017 00:00:00 +0100 In 2006 I got my first Mac ever, the [2006 Apple MacBook “Core Duo” 1.83 13”](http://www.everymac.com/systems/apple/macbook/specs/macbook_1.83.html). After owning a humongous Acer 15” Laptop in the previous years, the experience of owning this computer was something from another world. Since 2013 I owned a [13” MacBook Air with 8GB RAM and an 1.7GHz Intel Core i7 processor](http://www.everymac.com/systems/apple/macbook-air/specs/macbook-air-core-i7-1.7-13-mid-2013-specs.html) and while I loved the portability of the device, I recently started to feel the limits of the processor and the disk space (just 128 GB). ## What I got I bought a [13” MacBook Pro 2016 with a Intel Core i5 3.1 GHz processor and Touchbar](http://www.everymac.com/systems/apple/macbook_pro/specs/macbook-pro-core-i5-3.1-13-late-2016-retina-display-touch-bar-specs.html) and 16GB of RAM and 512 GB of SSD storage. In Space Grey. ## What I use it for I mainly do web development, lots of writing and editing – not something you necessarily need “Pro” hardware, to be honest. But then there are some operations, like optimising images and decoding videos, that happen often enough so I can use the power. It’s also amazing how quickly Jekyll and Middleman projects build. I sometimes need to test websites in Windows, and firing up a virtual machine is now obviously less of an hassle. In addition, I occasionally play [Cities: Skylines](http://www.citiesskylines.com) and while there is a bug with the (unsupported) Intel graphics card, it is really cool to see houses and cars that are not just mushy blobs of textures. ## What I like - **The Screen** is just great. I never had a “Retina” screen before and this is really good. Type looks crisp and icons do, too. However parts of the web look awful as many people are not optimising their graphics. It’s especially appalling with icons. Use SVGs, everyone! - **The Speakers** are phenomenal. I have never really used the built-in speakers in my previous Macs, and I don’t really plan to use the ones built into this machine, but wow, they sound really good. - **The Touchbar** is a great gimmick. When apps support it, it shines, but without support it’s only mildly useful. The Touchbar is empty in that case, so you got a gap on the keyboard. I usually don’t need to use function keys and if I do pressing fn (like I used to do) brings them back. I have accidentally touched the Touchbar while typing and when it happens it is irritating. However it happens less and less. The bar is well integrated into Safari, so you can play and pause video playing in the browser from the bar and also scrub around the video which is much more intuitive and precise than using the touchpad and drag the handle. The only thing that is really annoying is that the Touchbar crashes occasionally – putting the computer to sleep and waking helps. - **TouchID** goes without saying. Unlocking the Mac or 1Password is blazingly fast. Now hurry to provide Apple Pay in Germany, Apple! - **The built quality and portability.** It’s incredible how dense this computer is, when you put the Air and the Pro on top of each other, the Pro is much smaller. It is thicker, but not by much. The space grey color is stunning. ## Other observations - **The Keyboard** is right in my ballpark. It is clicky, it is responsive, it is totally fine. But I don’t have a very specific taste in keyboards and I found every Mac keyboard that I typed on at least OK. Not having the inverted-T shape for the arrow keys is throwing me off however as it is hard to feel for the position of the arrow keys. - **The Trackpad** is working as expected. As a “tap to click” person it’s totally good for me. I haven’t used any force touch features a lot, but using it for the occasional dictionary lookup is useful. - **Thunderbolt 3/USB-C** works as expected. I can charge my Mac from either side, which is great, as the socket is on the right when I’m sitting on my couch. I miss MagSafe though. I bought one USB-C to USB-A and one USB-C to VGA/USB-A/Power adapters from Apple. I also got a [two pack of the Aukey USB-C/USB-A adapters _(affiliate link)_](http://amzn.to/2iYicL3). My external display (that I only use for referencing stuff when needed) and microphone are plugged in into the VGA/USB-A/Power adapter all the time. I still need a good SD card adapter but did not find one that I think is worth buying. ## Migration - I chose to start fresh and not use Migration Assistant to move my data. - I migrated most apps via the Mac App Store and [SetApp](https://setapp.com) and downloaded others directly. - I moved my data almost exclusively by AirDrop, which worked very well for my 6GB [MailMate](https://freron.com) archive and my 10GB `~/projects` folder (yes, I need to clean that up at some point). - Other data was synced using iCloud (works well for me, ymmv), Dropbox (where I downgraded to the free plan after moving most of my data to iCloud), and iCloud Photo Library. - The most inconvenient part was installing all the command line tools, like Middleman, Jekyll and Gulp. In the end this was just a small portion of the migration experience which took about one day. ## Conclusion This is not a Mac for everyone. It might not be for you if you have special needs, or need more power. However I think it is very versatile and while the USB-A to USB-C transition is inconvenient, it is where the future lies. This might be my last PC-type of computer (if there comes more pro functionality to the iOS platform), so being future proof is important.

    ]]>
    Tom Scott: The Little-Known Patterns on British Streets https://yatil.net/blog/tom-scott-tactile-pavement https://yatil.net/blog/tom-scott-tactile-pavement Tue, 10 Jan 2017 00:00:00 +0100 [Tom Scott on tactile pavement](https://www.youtube.com/watch?v=cdPymLgfXSY): https://www.youtube.com/watch?v=cdPymLgfXSY

    ]]>
    Aleppo https://yatil.net/blog/aleppo https://yatil.net/blog/aleppo Wed, 05 Oct 2016 00:00:00 +0200 Over the last year, the name of a city is coming up in German news more often than I like it to be: Aleppo. It is not just a city involved in the war in Syria, it is the scene of a standoff that is lasting for months. This city, the mention of its name on the news, the descriptions of the cruelty that happens there, is especially painful for me. When I was in elementary school, we had Syrian neighbors who fled during the Gulf War. Mohammad and I shared a class. We were good friends, played football together, learned together. I still long for his family’s traditionally baked bread sometimes. After a few years, that felt like a whole life for me as a child, they had to go back. Although quite well integrated, there was no way for them to get a permanent working permit, and they were happy to get back into their home country. (Of course I don’t know if that was really really the case, but that was what I gathered as a child.) The children, Mohammad had a little brother and – I think – a baby sister, were not too happy to leave, having their friends in that small town where I grew up. One day, we said goodbye, and they made their way to their home city of Aleppo in Syria. The thought alone, that those people, including my elementary school friend, might be injured or dead is gruesome to me. Hearing from injured or dead children makes me think about the potential children of Mohammad and his siblings. For most, the war in Syria is far, far away. For me, it feels close. This is why I think getting to know other people, other cultures is so important. It allows us to be close with people and to not brush this conflict away as “someone else’s problem”. Image: [Palmyra – Temple of Bel](https://www.flickr.com/photos/juan_llanos/21530827452): A cultural heritage that was destroyed during the war. Uploaded by [Juan Llanos on Flickr](https://www.flickr.com/photos/juan_llanos/). [See how that site looks today.](https://en.wikipedia.org/wiki/Temple_of_Bel)

    ]]>
    Speaking at… Accessing Higher Ground https://yatil.net/blog/speaking-at-accessing-higher-ground https://yatil.net/blog/speaking-at-accessing-higher-ground Tue, 04 Oct 2016 00:00:00 +0200 I’m happy to announce here that I will be speaking at [Accessing Higher Ground](http://accessinghigherground.org) in November, representing [Knowbility](http://knowbility.org). The conference is in Westminster, Colorado and coins itself as an “Accessible Media, Web and Technology Conference”. I will do two three-hour long workshops: - **[Advanced Accessibility: A Deep Dive for Developers](http://accessinghigherground.org/advanced-accessibility-deep-dive-developers/) Tuesday, Nov. 15th, 9am** Focused on UI widgets, WAI-ARIA techniques and semantics, with some JavaScript as a garnish, this workshop will teach how to implement complex widgets in an accessible way that is true to the nature of the web. - **[Simplify your development life with tools, tests and procedures](http://accessinghigherground.org/simplify-development-life-tools-tests-procedures/) Tuesday, Nov. 15th, 1:30pm** Developers are lazy. I know this because I am one. So having tools, tests and procedures in place that help developers to produce accessible templates and widgets is helping everyone. This workshop will give a broad overview about the possibilities and will also show how to implement some of the provisions in day-to-day work. Also, I will give two talks: - **[Semantic Subtleties](http://accessinghigherground.org/semantic-subtleties/) Thursday, Nov. 17th, 8am** This talk takes some of the semantic particularities that come also up in the workshop and will put them under the microscope and examine their meaning. - **[ARIA Serious?](http://accessinghigherground.org/aria-serious/) Thursday, Nov. 17th, 4pm** Here, I will presumably give a few good and lots of bad examples of ARIA implementation and show where the pitfalls and chances of using ARIA are. If you are still thinking about going, maybe the [fantastic lineup of speakers](http://accessinghigherground.org/conference-schedule/) can lure you in. Register now at [accessinghigherground.org](http://accessinghigherground.org/registration/).

    ]]>
    The web accessibility basics – Marco's Accessibility Blog https://yatil.net/blog/the-web-accessibility-basics-marcos-accessibility-blog https://yatil.net/blog/the-web-accessibility-basics-marcos-accessibility-blog Sun, 24 Jan 2016 00:00:00 +0100 > I always thought that it is not so difficult to find resources about these basics, the recurrence of that question prompted me to finally write my own take on this topic. So here it is, my list of absolute web accessibility basics every web developer should know about. A very solid overview of basic web accessibility techniques by Marco Zehe.

    ]]>
    My Facebook Time-Out https://yatil.net/blog/my-facebook-time-out https://yatil.net/blog/my-facebook-time-out Sat, 23 Jan 2016 00:00:00 +0100 Over the past years my social web interaction shifted from Twitter and this very blog more and more to Facebook. I have so many contacts and interactions there that it feels very overwhelming and occupying a good chunk of my free time that I would love to spend otherwise: Hiking through the sun, having random thoughts and ideas, read long-form articles or play video games. I was under the impression that engaging on Facebook – and to a lesser extend on Twitter – would allow me to relax, to have social interactions and would be worth the time. I have realized that this became less and less the case. Either things are fairly irrelevant for me, or there is in-depth political discussion. This made Facebook feel like a burden for me now, and the only way to reevaluate my usage is to stop using it almost completely. While I had a pinned tab with Facebook open at all time, as well as the mobile app installed, I have now closed that tab and removed the app from my iPhone. I have disabled all notifications. This is day three and I only had brief looks into Facebook on the mobile web version to check for important notifications. I also allow myself to syndicate content to Facebook – like this blog post and via an iOS extension called [Linky](https://pragmaticcode.com/linky) (which doesn’t currently support sharing to WordPress, e.g. this blog _hint hint_) but also using custom [Workflow](https://www.workflow.is)s. Although my brain doesn’t yet know what to do with those free cycles, it _feels_ like a change for the better. I want to continue at least for another week or two. Then I probably need to make significant changes to the websites and people I follow to reduce the load. The [experiments of CGP Grey](http://www.cgpgrey.com/blog/dialing-down) and Myke Hurley inspired me for this time-out. They outline their methods of [“Dialing Down”](https://www.relay.fm/cortex/17) in an Episode of their (much recommended) [Cortex podcast](https://www.relay.fm/cortex/17). (Image by [Jonathan Bean via Unsplash](https://unsplash.com/photos/ywnnwzcdR5o).)

    ]]>
    2015 in Review https://yatil.net/blog/2015-in-review https://yatil.net/blog/2015-in-review Sun, 03 Jan 2016 00:00:00 +0100 Wowza, that was a densely packed year 2015 for me. Here is my short,long, personal review of the year: ## January Slow start into the year, attended a reading by [Max Goldt](https://en.wikipedia.org/wiki/Max_Goldt) at [Zeche Carl (Carl Mine)](https://en.wikipedia.org/wiki/Zeche_Carl), a former mine and now event location, and even got a poster signed (yes, I’m used to my name being misspelled with a “k” in Germany): ![Max Goldt signature for Sandra and Erik](https://yatil.net/wp-content/uploads/2016/01/16101397668_a1dbf4dfbd_o-e1451849063826-768x1024.jpg)A week later we’ve been back to Zeche Carl to see the “[Terje Rypdal](https://en.wikipedia.org/wiki/Terje_Rypdal) Trio”. It was a nice evening of jazz music and very relaxing. Then winter happened: some snow fell from the sky on the 24th and we decided to do a nice hike through the snow: \![Gull on a post](https://yatil.net/wp-content/uploads/2016/01/16169378300_8b6932363c_o-1024x768.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157650445571352).\[/caption\] ## February February started with a huge disappointment: We had tickets for [Tenacious D](https://en.wikipedia.org/wiki/Tenacious_D) in the Paladium in Cologne. The concert itself was fine, but the venue is built in a way so that you are unable to see anything from farther back in the room. It felt like the money for the tickets was pretty much wasted. The weather on Valentine’s day was really nice and as it was a Saturday, we used the opportunity to do a hike and then had our traditional Valentine’s menu. \![A walkway with trees](https://yatil.net/wp-content/uploads/2016/01/17384231420_59e2cf4430_o-1024x768.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157662943555652).\[/caption\] The month concluded with an intercontinental flight to one of my most favorite cities: San Diego, CA for CSUN. As one of the best ways to cope with jet-lag is to just continue as if it is a loooooong day, we didn’t pass up the opportunity to visit a [Nukem](https://www.facebook.com/NukemOfficial) show in the Brick by Brick venue to see Norman Leggio of [Psychotic Waltz](http://psychoticwaltz.com) play and have a chat with him. ## March It was quite cold and rainy in the first days in San Diego, but I have been at the CSUN conference all day anyway. I met all the nice accessibility folks and it is always refreshing to speak to people face to face instead of over the phone. The conference went swiftly by, including my two panel appearances and a lot of small meet-ups and 1:1 discussions. Afterwards we rented a car and got out to the [Anza Borrego Desert State Park](http://www.parks.ca.gov/?page_id=638). It was beautiful, with all the nice landscape, cactus blossoms and animal wildlife. We even got to see some of the endangered Bighorn Sheep. I am always blown-away by the sheer size of the park. I got to drive a nice SUV for the week and it came in really handy when navigating the dirt roads. \![Cactus blossom](https://yatil.net/wp-content/uploads/2016/01/17385048000_c556e7c49b_o-1024x768.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157662977814021).\[/caption\] For one day only, we returned to Ocean Beach in San Diego, saying goodbye to the Pacific. \![Sea-Gull on the Ocean Beach Pier](https://yatil.net/wp-content/uploads/2016/01/17548421896_5de3d71d13_o-1024x768.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157663061125066).\[/caption\] The rest of the month, we were occupied getting out of jet-lag and adjusting to the freezing temperatures in Germany… ## April Slow-starting April had its first highlight with a [Damian Wilson](http://www.damian-wilson.net) concert in Düsseldorf, which was really funny and entertaining, we will certainly visit again. ![Damian Wilson](https://yatil.net/wp-content/uploads/2016/01/17106672271_5744d4b015_o-576x1024.jpg)![Damian Wilson](https://yatil.net/wp-content/uploads/2016/01/17105806282_1cd71bdb0c_o-1024x768.jpg)Then I hopped on a plane again, to Austria this time. I attended [BarCamp Graz](http://barcamp-graz.at) and met the students of the Content Strategy program that I lectured in the following weeks. As the master program is directed at people who are already in jobs, the lectures were on the evenings or weekends, so it had little impact on my usual work. It was a fun time and I think the students really took something away regarding multi-screen design and accessibility. To close off the month we needed to make up for the disappointing _Tenacious D_ concert in February. Good that _Kyle Gass_ visited with _[Kyle Gass Band](http://thekylegassband.com)_, this time playing in the [Turock](http://turock.de) venue in Essen. We got premium spots on the staircase and could see very well. An enjoyable evening. ![Kyle Gass Band](https://yatil.net/wp-content/uploads/2016/01/16681064994_d8194f03bc_o.jpg)## May In May we visited the local botanic garden called [Grugapark](http://www.grugapark.de/) where we saw ducklings and goslings. \![A Duck](https://yatil.net/wp-content/uploads/2016/01/17159512220_4af04db958_o-1024x576.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/albums/72157652255226086).\[/caption\] Just a few days later, I hopped on a train to Paris to attend the W3C@20 symposium, set in one of the nicest venue I’ve been to, and AC meeting. Another great opportunity to get into contact with the W3C members. \![Thalys train to Paris](https://yatil.net/wp-content/uploads/2016/01/17189955320_df607fde91_o.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157656568845704/).\[/caption\] And to continue the maniac travel, I again took the plane to the US, shortly after arriving from France. The destination this time: Austin, Texas. I was invited to give two presentations at the lovely AccessU conference and we did some light user testing of the _How to Meet WCAG 2.0_ prototype I worked on. In addition we had a two-day Education & Outreach Working Group meeting. I had half a day off and got to see a nice squirrel: ![Squirrel in a tree](https://yatil.net/wp-content/uploads/2016/01/17652666932_357dbc20ab_o-1024x768.jpg)Of course there needed to be some more live music that month as well, and thus we attended the [Rock Hard Festival](https://web.archive.org/web/20150526012921/http://www.rockhard.de/festival.html), which is conveniently located just around the corner in the Amphitheater Gelsenkirchen. It was really awesome, three days of Metal and the festival allows for strolling around in the surrounding Nordsternpark. ![Venom @ Rock Hard Festival](https://yatil.net/wp-content/uploads/2016/01/17790490470_a77f19baec_o.jpg)## June In early June, we took the opportunity to attend a [Jan Delay](http://www.jan-delay.de/home/) concert that was “free and outside”. The concert was given at the nice world cultural heritage site of Zeche Zollverein here in Essen. ![Jan Delay at Zeche Zollverein](https://yatil.net/wp-content/uploads/2016/01/18535764021_44ea95d7ab_o.jpg)Also in June, I got my Apple Watch (finally!). I still find it useful and wear it every day, but it is not as indispensable as a smartphone. Of course I also got onto a train that month. this time my destination was Utrecht in the Netherlands where I attended the face-2-face meetup of the [AutoWCAG CG](https://www.w3.org/community/auto-wcag/2015/06/19/successful-auto-wcag-workshop/). I again collected user feedback sessions on the _How to Meet WCAG 2.0_ redesign. Afterwards another train ride brought us to my home town for a few days where we also attended [Everyman](http://www.pfalztheater.de/cms/?p=293&s=pt_schedule&f=1&id=527&), a reinterpretation of the classic play in a rock-opera style with support of the there-local band _[Vanden Plas](http://www.vandenplas.de)_. I can’t recommend seeing this enough. \![Everyman at Pfalztheater Kaiserslautern](https://yatil.net/wp-content/uploads/2016/01/11351979_1860387397519073_1288669253_n.jpg) [Photo by @screenorigami.](https://www.instagram.com/p/4M5nNKJZFb/)\[/caption\] ## July–August The month of the Sankt Peter Ording and Wacken Open Air vacation in a camper came. Luckily I have already [blogged about this muddy mess](/?p=101681), so no need to repeat that here. Shortly after coming back from the vacation, the annual Turock Open Air was in full swing. I think we only attended the Sunday because we had to harvest our field that was neglected while we were away. The week after that another short-range trip to Hamm where we stayed in the vegan hotel next to the Kurpark, where we got to watch the reggae night featuring _[Gentleman](http://gentleman-music.com/)_ and _[Jahcoustix](http://www.jahcoustix-music.com)._For me, that was a welcome change to the whole Metal this year. ![Stage at the Kurpark Hamm](https://yatil.net/wp-content/uploads/2016/01/21039709346_cab531668e_o-1024x768.jpg)## September In early September I attended the [NightlyBuild](https://www.nightlybuild.io) conference which had a few interesting talks. ![NightlyBuild.io Conference is about to go](https://yatil.net/wp-content/uploads/2016/01/20954508369_880566c887_o-1024x768.jpg)The day before speaking at [A-Tag in Vienna](http://atag.accessible-media.at), we had planned to attend a concert in Hamburg, so I took Thursday evening off and we traveled to Hamburg, had a look at the Speicherstadt and then attended a concert of the band [Eclipse](http://www.eclipsemania.com). It was totally worth the hassle to take the really early flight to Vienna the next morning. ## October …or [Fronteers](https://fronteers.nl/) month, as I prefer to call it. I did my usual talk at the Jam session and attended two extraordinary great days of talks in the main conference. The week after Fronteers, I started going to the gym and do exercises. I am still rolling with it although a medical annoyance has forced me to pause my efforts over the holiday break. ![View on the display of a cycling device in a gym](https://yatil.net/wp-content/uploads/2016/01/Unknown-1024x1024.jpeg)In the same week, we hit the Turock again to attend the concert of _[The Poodles](http://www.poodles.se)_. The concert was so great that we decided to attend the concert the following day in Cologne. The venue was also a bit smaller and thus the whole concert more intimate. On October 21st there was a showing of all three [Back to the Future](http://backtothefuture.com) movies in the historic local cinema called [Lichtburg](http://lichtburg-essen.de) which we attended, it was lots of fun and I enjoyed seeing all three back to back. The cinema also hired someone who parked a historic DeLorean in front of the cinema: ![DeLorean in Front of the Cinema](https://yatil.net/wp-content/uploads/2016/01/22365953362_314397e1d7_o-e1451851802342-768x1024.jpg)As my working groups did not meet, there was no need for me to travel all the way to Sapporo, Japan to meet my colleagues, which was a bummer, but honestly, I was traveling enough that year anyway… Instead we went to Bochum to see [Eric Martin](http://www.ericmartin.com) of [Mr. Big](http://www.mrbigsite.com) play a nice solo concert. ## November We attended a show of the very entertaining comedian [Willy Astor](http://www.willyastor.de/servus/) in Cologne, and watched [James Bond: Spectre](https://en.wikipedia.org/wiki/Spectre_(2015_film)) in the aforementioned Lichtburg cinema. I flew to Graz, Austria (and back) to speak at [UX Day Graz](https://uxdaygraz2015.iicm.tugraz.at), which was a very well organized event with great speakers. I can’t recommend it enough. ![Uhrturm Graz](https://yatil.net/wp-content/uploads/2016/01/23033587026_9e0ed23b9b_o-1024x1024.jpg)![Sunset as seen from Graz Airport](https://yatil.net/wp-content/uploads/2016/01/23046115152_6e72c9d50b_o-1024x768.jpg)Then I flew to Vienna (and back) to speak at [DrupalCamp Vienna 2015](https://2015.drupalcamp.at), which was also a very good event with a very diverse audience and very diverse speakers. I also took the opportunity to visit my colleague [Shadi](http://www.w3.org/People/shadi/) and talk face to face about work. Somewhere in between I celebrated my birthday… ![Vienna Subway Train](https://yatil.net/wp-content/uploads/2016/01/22956546849_204fa52a50_o-1024x768.jpg)## December December was rather uneventful, I made it through without travel of any kind. I was published in the [24ways and Webkrauts advent calendars](/?p=101828) which made me quite happy. Of course we watched [Star Wars: The Force Awakens](http://www.starwars.com/films/star-wars-episode-vii-the-force-awakens). We also took advantage of the good weather over the holidays and hiked a lot through the sun. ![Kettwig Mühlengraben with the market church](https://yatil.net/wp-content/uploads/2016/01/23400204404_b33d74f474_o-1024x768.jpg)![Mintarder Ruhrtalbrücke over the river Ruhr](https://yatil.net/wp-content/uploads/2016/01/23398119123_1df59ac054_o-e1451852639513-768x1024.jpg)![](https://yatil.net/wp-content/uploads/2016/01/24096719616_f2a9799efd_o-e1451852756608-768x1024.jpg)We also played the [Thrash’n Roll board game](https://www.kickstarter.com/projects/1655592267/thrashn-roll-board-game), which has been tremendous fun. ![Thrash’n Roll board game](https://yatil.net/wp-content/uploads/2016/01/23722501749_412f429614_o-e1451852911633-768x1024.jpg)## Review & Outlook I have the feeling that I have forgotten to mention so many of the little things that happened. 2015 was a really dense year but it was totally worth it. Let’s see what 2016 brings.

    ]]>
    The Incomparable on “Star Wars Episode VII: The Force Awakens” https://yatil.net/blog/incomparable-force-awakens https://yatil.net/blog/incomparable-force-awakens Wed, 23 Dec 2015 00:00:00 +0100 My personal thoughts about “The Force Awakens” are very well mirrored by the discussion on last week’s [The Incomparable, Episode 277: Stormtroopers Are People](https://www.theincomparable.com/theincomparable/277/index.php). The panel consists of Jason Snell, Serenity Caldwell, Dan Moren and the [hypercritical](http://hypercritical.co/about/) John Siracusa. I think that Siracusa’s characterization of the movie (around the 2h45 mark) is especially noteworthy, where he states that he managed to judge the movie for its own merits and not to have unfair expectations.

    ]]>
    Line-On-Sides Headers Reloaded https://yatil.net/blog/line-on-sides-headers-reloaded https://yatil.net/blog/line-on-sides-headers-reloaded Sat, 19 Dec 2015 00:00:00 +0100 See the Pen Line-On-Sides Headers with Flexbox by Eric Eggert (@yatil) on CodePen.

    See the Pen [Line-On-Sides Headers with Flexbox](http://codepen.io/yatil/pen/RraBxW/) by Eric Eggert ([@yatil](http://codepen.io/yatil)) on [CodePen](http://codepen.io). ## Addendum Of course, while writing this article, [Gunnar Bittersman](http://bittersmann.de/) had already posted the [Flexbox approach to the article comments](http://webkrauts.de/artikel/2015/ueberschrift-ueber-durchgestrichener-linie#comment-5255). He knows everything. But while reading the comments, the topic of more words per line came up and how the solution looks when there are more lines involved. Turns out: Not too good. The lines shrink to 0 and the only thing you see is the margin. Flexbox to the rescue. Again! The `flex` shorthand can take the values of three other properties: `flex-grow`, `flex-shrink`, and `flex-basis`. If we set `flex-basis` to `20%`, this is the default width of the element. `flex-shrink` is set to `0` to avoid shrinking below those `20%` but the `flex-grow` is set to `1` to allow growing larger than `20%`: ```css h2:before, h2:after { flex: 1 0 20%; height: 3px; content: ''; background-color: currentColor; } ``` And a CodePen for you to play around with this solution:

    See the Pen Line-On-Sides Headers with Flexbox and minimal lines by Eric Eggert (@yatil) on CodePen.

    See the Pen [Line-On-Sides Headers with Flexbox and minimal lines](http://codepen.io/yatil/pen/NxNejB/) by Eric Eggert ([@yatil](http://codepen.io/yatil)) on [CodePen](http://codepen.io) And here is another example. This time we use `border-image` and a gradient around the heading:

    See the Pen Line-On-Sides Headers with Flexbox and border images by Eric Eggert (@yatil) on CodePen.

    See the Pen [Line-On-Sides Headers with Flexbox and border images](http://codepen.io/yatil/pen/VeaoMP/) by Eric Eggert ([@yatil](http://codepen.io/yatil)) on [CodePen](http://codepen.io).]]>
    On 24ways & Webkrauts advent calendars https://yatil.net/blog/advent-2015 https://yatil.net/blog/advent-2015 Thu, 17 Dec 2015 00:00:00 +0100 I was asked to write an article for 24ways.org, the well known web advent calendar, this year. It was published today! Hop over and read about [The Accessibility Mindset](https://24ways.org/2015/the-accessibility-mindset/). Thanks for all the good work behind the scene, [Drew](http://allinthehead.com/), [Brian](http://suda.co.uk/), [Anna](http://maban.co.uk/), and [Owen](http://fullcreammilk.co.uk/)! If you prefer to read the article in German, don’t shy away and see [Accessibility im Sinn](http://webkrauts.de/artikel/2015/accessibility-im-sinn), published on the Webkrauts Adventskalender. Thanks to [Matthias](http://yellowled.de), [Jens](http://grochtdreis.de), [Nicolai](http://textformer.de), [Kerstin](http://www.barrierefreie-informationskultur.de/), and [Nils](http://pookerart.de) for their continuous efforts to bring those articles to the German speaking audience.

    ]]>
    Facebook music challenge: Buffy https://yatil.net/blog/facebook-music-challenge https://yatil.net/blog/facebook-music-challenge Mon, 07 Dec 2015 00:00:00 +0100 > “The idea is to fill Facebook with music, breaking the monotony of selfies and sensationalism. If you ‘like’ this post you will be assigned a letter for a musician, band, artist or song for you to post on your timeline with this text.” I liked [Sandra’s post](https://www.facebook.com/ScreenOrigami/posts/1111049902246990) a few days ago and she assigned the letter “B” to me. I don’t have a lot of music I like and even less music that starts with the letter B. However there is one episode of a TV series I have warm feelings for and that is music related: The musical episode of “[**B**uffy, the Vampire Slayer](https://en.wikipedia.org/wiki/Buffy_the_Vampire_Slayer)”. It is called “[Once more, with feeling](https://en.wikipedia.org/wiki/Once_More,_with_Feeling_%28Buffy_the_Vampire_Slayer%29)” and I watched it first when it first aired in October 2002 in Germany. While the rest of the series was dubbed in German, they decided to broadcast the songs of the musical episode in English with German captions. All the actors sung their own parts, and there was also a lot of dancing going on, which made the episode stand out. Wikipedia has a [nice section](https://en.wikipedia.org/wiki/Once_More,_with_Feeling_%28Buffy_the_Vampire_Slayer%29#Music_and_style) on why the episode is so special. In Germany, the episode is available on [Amazon Prime](http://www.amazon.de/gp/product/B00LXOECU6/ref=as_li_tl?ie=UTF8&camp=1638&creative=19454&creativeASIN=B00LXOECU6&linkCode=as2&tag=yatildehomepa-21)\*, but I don’t think that the episode is too fascinating without knowledge of the Buffy canon. \*Affiliate link

    ]]>
    OnceMoreWithFeelingPoster https://yatil.net/blog/oncemorewithfeelingposter https://yatil.net/blog/oncemorewithfeelingposter Mon, 07 Dec 2015 00:00:00 +0100 Phil Hawksworth – Static Sites Go All Hollywood #fronteers15 https://yatil.net/blog/phil-hawksworth-static-sites-go-all-hollywood https://yatil.net/blog/phil-hawksworth-static-sites-go-all-hollywood Fri, 09 Oct 2015 00:00:00 +0200 - Simplicity is not dumbing down. - There is room for creativity even in relatively simple things. - Let’s focus on what matters. - Helps to provide the right optimizations for users. - Benefits about static sites - cheaper, simpler hosting - fewer points of failure - fewer vulnerabilities - easier compliance - greater portability - sandboxed environments - attrition avoidance - Credibility of static sites - Just for simple things? That’s not the case - Campaign for Obama – $250 million dollars donated - Static sites perfect for large audiences - baked with jekyll - large audience - rapid iterations - hosted statically - Google project - Content on Github - baked with jekyll - served staticly by google - Reduced risk - Google year in search - Annual retrospective - large audience - infrequently updated - long life - 40 stories, 52 languages - 2.6B social impressions - content abstracted - baked with “goro” - served staticly by google - Static sites are already mainstream - Enablers: - Front end tooling is a key part - Generators and templating -> staticsitegenerators.net - Style guides as a side effect… as an artifact… as a process - Styleguide driven development - How to have a style gide as a secondary output for your site - Modules + Templates + Content built site through generator - Style guide also built there - Unless a style guide is part of your built, it is just more documentation to maintain - Automation - Gulp grunt, brunch, belch, burp, cough, sneeze ;-) - deploy faster, safer - update faster - feels dynamic - surge is good tool to do this deploy - We need a developer mindset and people want to manage content themselves. - traditional web development is very complex with dev, staging and live stages - also server side logic - Static sites are simpler - Dev environment: Site generator & build tool -> Production -> User - Content as a service that cares about the admin interface. - Additionally you could use deployment as a service - Is that simplifying?! - It’s about shifting/outsourcing complexity. Distance between user and complecity. - Source content at build time, not execution time - Jekyll data - [contentful](https://www.contentful.com) is Content Management as a Service - Hosted CMS interface - Exposes content via an api - Supports translations - user roles & management - Environments & versions - Decouples content administration from the production invironment - integrates into jekyll: jekyll-contentfull - [roots.cx](http://roots.cx) - [netlify](https://www.netlify.com) for deployment - commit hooks - command line interface - portable configruration, can be in a config file in the repo - notification - control of headers - basic auth - A lot of control - Limitations: - personalization - very very large sites - user generated content - Need to find the best fit for the project - It depends -

    ]]>
    Rachel Andrew – But what about old browsers?!? #fronteers15 https://yatil.net/blog/rachel-andrew-but-what-about-old-browsers-fronteers15 https://yatil.net/blog/rachel-andrew-but-what-about-old-browsers-fronteers15 Fri, 09 Oct 2015 00:00:00 +0200 - Lots of old techniques out there have been outdated. - Layout methods have not. - Still using the same techniques as we did years ago. - Increasingly we’re using frameworks. - Add markup. - CSS processors. - Hopes for layout: - Flexbox - CSS Grid Layout - Box alignment module - Give us source oder separation from visual layout - precise alignment control - relationships to each other - Remember Faux Columns? (2004) - people jumped at display:table; give us a relationship between columns - Separation of content and markup - Separation of source and display - A bit of a failed promise - Need compromises, usually - Flexbox and Grid Layout helps to display items in every order - Default positioning - grid-auto-flow helps to fill gaps maisonette.js style - Kind of scary, especially if you think about accessibility. - Got a lot to learn - Good = Creating the best source with the best markup and then displaying it best for the breakpoint - Bad = So, I don’t need to care about the source order - Terrible = Flattening out the source order and do everything using CSS grid and flexbox - Relationship of the items but independent from source order - Control of alignment - Box alignment module level 3 - flexbox alignment to use for other specs - VERTICALLY CENTER ALL THE THINGS! - Distributed alignment - justify-content - align-items - stretch - center - justify-self - align-self - In CSS grid layout - Chrome canary - align-items center in a css grid with repeated columns - instead of stretch - Responsive by default - Flexbox: - flex-grow - flex-shrink - flex-basis - flex shorthand property recommended - flex: 1 1 200px means grow or shrink as you see fit but the optimal width is 200px - - CSS Grid: - fr (fraction) unit – similar to flex grow - grid-template-columns: 1fr, 1fr, 1fr -> same width - grid-template-columns: 600px, 1fr, 1fr -> remaining space is shared between column 2 & 3 - grid-template-areas -> ASCI Art building of layouts - But what about old browsers?! I can’t use that stuff! - We must to cater for the web of today, but we need to look forward and use progressive enhancement. - No layout is not an option. - Need to think about feature support differently in a world of evergreen browsers. - Business case: How long will the website that you build right now be active, the site will be updated when users upgrade. - CSS Grid Layout - Early implementation in IE10,11 & edge - Current spec in Chrome, Opera (experimental flag) - Prefixed in Webkit Nightlies - Partial in Firefox Nightly - In near future - High priority on edge - This is not all or nothing. You can begin with small UI elements, use the modern methods for finessing - Flexbox in the real world: [Zoe M. Gillenwater Enhancing Responsiveness With Flexbox](https://www.youtube.com/watch?v=_98SE8WUvLk) - Check stats and compare feature support, for example that is supported by gaug.es - Separate mobile and desktop stats – mobile might be more advanced - Use such tools for prototyping – you learn how they work, and you immediately can work with it while it is developed - You can give feedback to the Working group and it has an effect and they get implemented. - It is too late to comment when the things are out in browsers. If you want to be involved, do it now. - [gridbyexample.com](http://gridbyexample.com) - Slides & more information:

    ]]>
    Remy Sharp – The Art of Debugging #fronteers15 https://yatil.net/blog/remy-sharp-the-art-of-debugging-fronteers15 https://yatil.net/blog/remy-sharp-the-art-of-debugging-fronteers15 Fri, 09 Oct 2015 00:00:00 +0200 - Personal debugging workflow - Don’t Write Bugs! - Although… - the opposite is true - the artifact of writing software is fixing bugs - gives you experience - no silver bullet to debugging - you need to pick and chose the right tools - debugging helps you to identify issues earlier - Disclaimer 1: Frameworks? - Don’t have a project that required frameworks. - Tools I use are not for frameworks - For react: It brings it own debugging tool, because it has to as it is so abstract. - Disclaimer 2: I rarely do x-browser testing - Current work is not requiring it, mostly doing JavaScript - The art of debugging (says wikipedia) - The parts to debugging 1. Replicate - Hardest and most important part - Bug report: Saving doesn’t work. - I know saving works. - But it doesn’t work for them. - Wontfix is no solution. - Litmus-Test to see if it happens at the URL that the user is using. - Likely: Series of event happens to the bug - Debugging is the end of the process, it should have been caught in tests, right?! - Caching and browser add-ons mess with pages 2. Isolate - Pair down to the simplest form where the bug occurs 3. Eliminate - That makes fixing the bug much easier - But what is if you have a Heisenburg bug? (A bug that changes its shape while you’re debugging.) - Clean the environment as much as possible - State - All debugging comes out of state. - Two types: passive state - What happens? - Literally looking how the canvas was built - Memory history. - Interactive state - Fixing in the browser to not lose context - no back and forth to the editor and back - The stack - Two methods: - Inside out - When something changes and you have no idea where in the stack is the error introduced. - Outside in - You know where the bug is and you go in and edit the file. - You can import your local source in the Chrome devtools debugger and link it to the running files - Timeline mode is also useful to find performance bugs - DOM breakpoints allow you to stop the script when an element changes and shows the code snippet - Debug memory leaks with profiles. The memory should be on the level where it started. Snapshot help - Red background in profiles: Garbage collection didn’t work out right. - There is no silver bullet!

    ]]>
    Sally Jenkinson – An Introduction to Open Data #fronteers15 https://yatil.net/blog/sally-jenkinson-an-introduction-to-open-data-fronteers15 https://yatil.net/blog/sally-jenkinson-an-introduction-to-open-data-fronteers15 Fri, 09 Oct 2015 00:00:00 +0200 - Open data - Big data buzzwords - 90% of the world’s data was created in the last 2 years - Several ways to use data in your work - Tea tracker for personal tea consumption - Data is often restricted - Only certain data is displayed - Can’t use data freely - restricted - You sometimes can’t get your hand on the data that you want - Data sharing - Restrictive data sharing to restricted set of people - Open data means to not be confined to the data provider’s conditions - Opendefinition.org - Open data and content can be freely used, modified, and shared by anyone for any purpose. - Data spectrum: http://theodi.org/data-spectrum - Re-publish - Derive new content or data - make money by selling products - charge a fee for access - data needs to be open, but the delivery access (API) can be restricted - Licensing similar to the known content licence, not just Creative comments, for example Open Government Licence or OS Open Licence ect. - Dbpedia – Wikipedia data in RDF - Data.gov.uk - MusicBrainz - plaidplug.com - [awesome-public-datasets](https://github.com/caesar0301/awesome-public-datasets) - Consuming open data is pretty easy - data is not special - download periodically or via API - Sometimes data is released as PDF, “openly” - d3js.org – Data-Driven Documents - Example: Mark up fire hydrant violations in NY, top grossing hydrant was actually very confusing for parkers, almost a trap. Reaction from administration: Make clear where not to park. - open data -> may generate 3 million dollars - Transparency - Not only access - but also analyze and visualize - combine with other data - freely to use - open by default would save so much time - Data and User Experience - mapumental.com answers the time to work in minutes instead of miles. - How accessible is our nearest school, post office or hospital? - How quickly could fire engines reach a given postcode? - Improved efficientcy, effectiveness, measure impact - Improved products - Not just digital, also in the real world, for example as art - Internet of things - opensensors.io - dougmccune.com – Artistic projects based on open data - stevanie posavec - Linked data - timbl doesn’t only want us to share documents but also the data - new knowledge from combined data sources and patterns - Misinterpretation: - Some sites don’t allow it because they don’t want to have their data in the wrong context - spurious-corelations - Combining data sets & licenses - Publishing open data - People use it in ways you never dreamt of - Step one: Identification & planning - Clear licensing & usage information - Structure & quality - A plan for support – data needs to be maintained - Accuracy - Step two: transform and clean data - data privacy & the individul - openrefine - cleansheet - Step three: Sharing - http://5stardata.info/en/ - think about your data from the beginning - https://certificates.theodi.org - In conclusion: - We collect and share data and it is a component to the web, just like documents. - Slides:

    ]]>
    Soledad Penadés – Hands-On Web Audio #fronteers15 https://yatil.net/blog/soledad-penades-hands-on-web-audio-fronteers15 https://yatil.net/blog/soledad-penades-hands-on-web-audio-fronteers15 Fri, 09 Oct 2015 00:00:00 +0200 - You can generate audio using JavaScript - Tiny new language - small vocabulary - few grammar rules - couple of ideoms - AudioContext - like canvas - toolbox - instance factory - Nodes Taxonomy - Generation - Manipulation - Analysis - Audio Context as audio graph - Modular routing - Sound modulation - connect() helps you to modulate from one node to another - Gain nodes - … - Don’t keep nodes - stop and disconnect sound sources - load binary data - decode into a buffer - create buffer source and use it - you can even bend the pitch of the audio live - place sounds in 2D space – StereoPanner - Place to left change pan attribute to -1, to right to +1 - For 3D space, for example in Games, use Panner - update position for accurate placement - tries to be realistically physical, so the unit is meters - BiquadFilter - Let certain frequencies pass - Analyser for Visuals - Real time frequency and time-domain information - Getting creative - Real time input + processing - Get user media + echoing - Web audio is minimal and powerful - many built-in nodes - one graph, simple connect rules - sound generation, processing and analysis - great for games, VR and interactive applications - it’s also fun! - Web audio meetups in London & Berlin - Slides: [github.com/sole/howa](http://github.com/sole/howa)

    ]]>
    Wes Bos – Modern Workflow + Tooling for Front-end Developers #fronteers15 https://yatil.net/blog/wes-bos-modern-workflow-tooling-for-front-end-developers https://yatil.net/blog/wes-bos-modern-workflow-tooling-for-front-end-developers Fri, 09 Oct 2015 00:00:00 +0200 - Lets compare tooling to plumbing - new type of fitting: Sharkbite - Lego for plumbing - snaps together instantly - can connect any material to copper - can be redone - less prone to leaks - more expensive - less error prone - plumbers: too expensive, too new - changes the industry competely. - Some people write off tooling as over-engeneering, others see the benefits - Fine line between tooling for tooling’s sake and tooling to get work done - Let’s be smart about the tools that we’re using - Investments need to pay beck - Overwhelmed? Crying? 😭 - This talk: 😭-> 😃 - Build tools: - biggest barrier to entry - a lot - what are they for - compiling + converting styles - concatenation - test running - deployment - anything, really - two big: grunt, gulp - npm as a built system by using the CLI commands directly using scripts in the package.js, takes bash - But probably best used with simple sites - hard to maintain - Webpack - javascript modules focused - gulp meets browserfy - bit of a hard to learn api - react community likes it - What should I use? - Pick one. Whatever is best for you. - Personally like gulp - built speed - packages available - easy to understand and author - overall industry acceptance - 47% use gulp, 20% don’t use anything - Sass brought people to the built train - Performance - Critical: First paint is important - Purify: Removes unused CSS - Looks at JS and CSS and finds unused CSS - Much smaller CSS files - ImageMin: common interface to 17 different image compression libraries - Recommendation: MOZJPEG - Uglify.js: Minifies, compresses and mangles code - Dependency + Module Management - We’re seeing a huge shift on how we manage frontend dependencies - Problem: Many scripts, duplicated, different versions of the same file - The solution: Modules for javascript - How does it work 1. Install your libraries, ex. npm/bower install jquery 2. Write your code, ex. var$ = require('jquery'); or in IE6: import $ from jquery 3. Compile into a single or multiple bundles - Browsify - simple, quickest setup - WebPack - handles css - JSPM - client side, close to JS spec 4. Stop?! What about Gulp/Grunt? - They are task runners, one of the tasks will be “bundle javascript”, they can call those bundlers. - Small modules that do one thing, and one thing well - Only need ajax, npm install fetch - Pick and chose from lodash - Is coded in a way that you can access all methods individually, exports only that module to use - NPM or Bower? - Libraries, similar - NPM for everything! - Ecosystems coming soon to NPM, helps categorize the modules - The Future - JS + CSS evolve rapidly - Don’t need to wait with future code today - Wasn’t possible before - JavaScipt - ES6/7/Next - Arrow functions - let and const for variable declarations - template strings - many more - Babel - Allows you to write IE6 code but will then compile it to code that will work today. - gulp-babel - What about new language features? - polyfillable require babel/polyfill - CSS4 - Everyone 😍 SASS, comes to browser - Nesting - Scoping - Variables - CSSnext allows to write in CSS4 and compiles to CSS3 - part of postCSS ecosystem - quantityQueries helps to work with those, also a postCSS plugin - Workflow treats - Browsersync – like live reload but actually works - Instant reload - Includes server with cert for easy local HTTPS - Proxies existing applications/servers: Wordpess, ruby, python - Exposes server via local IP, can test on multiple devices - Syncs clicks, submits, scrolls - MAGIC - Sourcemaps - Code goes through several transforms before it is in the browser - If there is an error that needs to be traced back - Sourcemaps is standardized - Can be used with a lot of plugins - Tooling is extremely important - Everyone should have built process - Sky is the limit - Better code

    ]]>
    Primate – Walking the Tightrope Between Mediocrity and Bankruptcy #fronteers15 https://yatil.net/blog/primate-walking-the-tightrope-between-mediocrity-and-bankruptcy-fronteers15 https://yatil.net/blog/primate-walking-the-tightrope-between-mediocrity-and-bankruptcy-fronteers15 Thu, 08 Oct 2015 00:00:00 +0200 - Create a company that is not a web dev dactories - Challenge: How to do creative work and still get paid. - Clients & 💩 - Getting work: If you don’t have clients, there’s no business. - You need to find good clients. - Really challenging. How to find good clients? - You need to balance two things: - Build relationships - Tedious pitching - Love all(most) all clients, fired one client – this is tough - You have certain views of how your clients should be. - But sometimes you wake up and the client is not as easy to work with as you imagine. - Pitching is fun, but the idea is crazy. - You have to stand in front of someone and present your work, often unpaid. - You need to balance the time. - You don’t want to be under or over prepared. - Example: Pitched for hotel chain in brussels, had good feeling, well prepared. Budget 130.000€ - About 6 or 7 other agencies did also pitch, didn’t win. Client went with a agency they have had a personal connection with. - Best client that just wanted to have a talk about the project approach. - Only payed once for a pitch. - Project management - Working in agile way: not directly building the car, but building a bike first and then a motorcycle - People don’t read specs, don’t do too much of them. - Agile is tricky. - Bad experience, clients don’t understand what the concept of agile is. - Clients often do not prioritize their features properly. - They use sprintr + basecamp together with transparency and communication. Do more work and less management. - **Be honest.** - Design & 💩 - Design is about communicating an idea, the user journey. - Not talking about implementation. - Design should be brief but an idea needs to be conveyed. - Struggle with “content” and “best practice” - Content - Really, really important - Designers and content creators working together in print to deliver a proper design for the content. - Nowadays templates are designed without knowing what the actual content is, the content is added later. - This idea of designing distracts from what the developer should actually think about. - Atomic design is the idea to start with the small things. But that is just design assets, there is no real creativity in there. - Of course having a designer for every article is too expensive for most projects. - Content needs to play a central role in the design. - Avoid the handshake of death. - Copywriting can make it better: “We don’t do secret handshakes” - This is missing from online at the moment. - Copy text can be very simple and dull, for example Synergy. An image of a bee and a flower could help to enforce the message. - Sometimes things are like rules – Don’t define line-height in pixels, don’t do this and that. - But some times you need to do that stuff anyway, it depends on your context. - For example the smartphone is like a huge carousel. - F\*\*k the rules. Responsibly. - If you think something is best for the audience, do it. - Create for content. - Development & 💩 - Design – Developing relationship “interesting”. - We need to deliver projects in time and budget and – like architects – need to work in the boundaries of what is necessary. - Client’s don‘t care about a certain frontend tech. - With technology, you have to move fast to keep up with the quick evolving technology. - Massive explosion of new tools in the last year. - To survive in an ever-changing environment you have to move faster than everyone else. - Developers have to think and understand everything: designers, the business and clients. - Balancing between being “Jack of all trades” and being “the master of one” - Tech is disposable after a few years. Have the courage to dump things that don’t work anymore. - Everyone fails at something. - Embrace progress - Stakes are getting higher, projects get bigger. - What’s the point to keep that balance. - The journey is more important than the destination. - Aim: To have not a factory but a family. - Work affects our families and the other way around. So a good work environment is really needed to be happy.

    ]]>
    Scott Jehl — Delivering Responsibly #fronteers15 https://yatil.net/blog/scott-jehl-delivering-responsibly-fronteers15 https://yatil.net/blog/scott-jehl-delivering-responsibly-fronteers15 Thu, 08 Oct 2015 00:00:00 +0200 - The web is a hostile environment. “It is a continuum.” (Jeremy Keith) - Viewport sizes have become fluid, and they don’t need to be the same as the device’s screen size. - Now we need to difference between simple and enhanced use cases. - Many people use proxy browsers like Opera Mini – that often breaks JavaScript and doesn’t support icon fonts. - There are so many input and output methods – and you can’t deduct from the screen size the input method, touch is now everywhere. - 2013 60% of the people on the web were on sub-3G (Edge). - In Western Europe, still 60% on 3G, LTE takes a while to come up to speed, especially outside of Europe and the US. - Google services like fonts, translations and hosted JavaScript are 100% blocked in China. - We ususally don’t think as progressive enhancement as for people who disable JavaScript, but there are Content and Ad blockers that block requests and JavaScript. JavaScript is still enabled, so won’t work. Also @font-face can be blocked now very easily. - People won’t think they did something wrong when the site doesn’t work because of those blockers. - These factors don’t make our jobs harder, **it is our job**. - Not just a matter of empathy. Access is our job. - Some of the JS frameworks of today rely on JavaScript. Often the content of the site is perfectly useful without JavaScript, yet we built on the web’s most fragile layer. - And we – as developers – work under optimal conditions, as we need good connection if we want to work efficiently. - Sites grow all the time, the avg. page weight is over 2 MB.[ http://whatdoesmysitecost.com](http://whatdoesmysitecost.com) - We need to stop developing for the best cases but for the real world, for example by setting an artificial low connection speed. - But we can’t simulate everything, we need functional testing on real devices and using tools. Everyone needs a device lab. - We need to build with resilience. - We have developed tools that helped us to polyfill our lacking infrastructure. - But there are structure changes, for example http2 – some of our best practices are not needed with it: - Concatination - Spriting - Inclining CSS,JS, Images - Still important: - Optimizing files - Avoid unnecessary requests - HTTP2 doesn’t work with all browsers, but the support on browsers is quite good, but not so good on the servers. - We need to prioritize things for today and tomorrow. - Optimize - Minify - Gzip - Offer different versions of the images, based on the needs in the site. - The new image standards (srcset, picture) are working in browsers – including built-in fallbacks. - Client hints is a new kind of header where the server gets to know some things from the browser, for example viewport-width, width and dpr. - Server can make an informed decision on what file to send out. - Optimizing the critical rendering pipeline. - Latency is responsible for bad performance but not bandwidth. - We want to minimize roundtrips – and one way to do it is to carry more at each request. - Identify and inline the CSS necessary to render above the fold content. - But there is no fold, yet pages are viewed from top to bottom, so it makes sense to render the top of the page first. - There are tools to identify the critical CSS – e.g. - Do this for every template, identifies the CSS, ready to inline that CSS. - Then render the full css, but a usual link doesn’t work as browsers block rendering. to the rescue – which is unsupported right now. - Need to be polyfilled, so we need to inline critical javascript as well. - It makes sense to have an async css and script loader, like loadJS – Native support for async and defer work well. But the script loader allows us to see if we really want to load the script at all - Cutting the mustard: Only load javascript if it is useful to enhance. - What changes with HTTP2? - Inlining is not needed anymore. When the browser requests an HTML, the server can say oh, and here is the critical CSS, too. - Major perceived performance issue is font loading - Most browsers hide the text until the font is loaded. - 30s in iOS, 3s in other browsers until the fallback text appears. - Alternative using a font loader. Start with a fallback font and there will be a class to the body that is set once the font is loaded, so no you get a progressive font rendering. - Coming soon: font-display: swap; (used to be font-rendering – name still in discussion) - There are also other options that might suit other people more, for example don’t use custom font at all unless it is in cache. - Case study: Wired article dropped 9s on 3G – and that is just with HTTP1. - There is a lot to think about. We can build broadly accessible websites even if we want to leverage the latest techniques.

    ]]>
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
    <title>Eric Eggert (@yatil) on web accessibility and more.</title>
    <link>https://yatil.net/blog</link>
    <lastBuildDate>Wed, 20 Aug 2025 15:50:29 +0200</lastBuildDate>
    <atom:link href="https://yatil.net/feed/" rel="self" type="application/rss+xml"/>
    <description>These are the blog articles from yatil.net, the website of Web Accessibility Expert Eric Eggert.</description>
    <item>
    <title>About “best practices”</title>
    <link>https://yatil.net/blog/about-best-practices</link>
    <guid>https://yatil.net/blog/about-best-practices</guid>
    <pubDate>Wed, 20 Aug 2025 16:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p><a href="https://www.craigabbott.co.uk/">Craig Abbott</a> wrote <a href="https://www.craigabbott.co.uk/blog/best-practice-is-just-your-opinion/">about the term “best practice”</a> today. Thanks to posting his thoughts <a href="https://a11y.info/@craigabbott">on Mastodon</a>, I had time to kick my brain into gear and think about the topic myself.</p><p>The first thing I noticed when reading his piece is that how he experienced the term is different from how I have. Which means we’re off to a good start. 😃</p><blockquote> Like most things, the term [best practice] started off with good intentions. A way to suggest fixes for things which are definitely accessibility barriers, but don't technically fail the Web Content Accessibility Guidelines (WCAG), or whatever standard you're auditing against. <footer> Craig Abbott, "Best practice" is just your opinion </footer> </blockquote> <p>This is not how I have ever seen the term “best practice” used, and I would be as upset as Craig if I did see it used this way.</p><p>You cannot fail websites and apps because they don’t meet your personal “best practice”. Best practices to me are <em>techniques</em> that meet the current level of technology and understanding. These techniques are used to meet WCAG success criteria. Most best practices will exceed WCAG.</p><p>Let’s look at this concrete code sample:</p><pre><code class="language-text">&lt;span&gt;Your Email:&lt;/span&gt; &lt;input type=&quot;email&quot;&gt;</code></pre> <p>This fails several WCAG success criteria, but the most obvious is that the <code>&lt;input&gt;</code> element has no accessible name[^ A <a href="https://www.w3.org/TR/WCAG22/#name-role-value">4.1.2 Name, Role, Value</a> violation.], so let’s focus on that.</p><p>A technique to make sure that the <code>&lt;input&gt;</code> element has an accessible name is to add an <code>aria-label</code> attribute:</p><pre><code class="language-text">&lt;span&gt;Your Email:&lt;/span&gt; &lt;input aria-label=&quot;Your Email:&quot; type=&quot;email&quot;&gt;</code></pre> <p>That meets the success criterion, but it is not what I would generally recommend because it has some drawbacks: </p><ul><li><code>aria-label</code> is often not translated when using in-browser translation.</li><li>The value of <code>aria-label</code> can easily be overlooked when copying and pasting code to generate new, similar interfaces. That’s a future accessibility risk.</li><li>In some screen reader/browser combinations, the <code>aria-label</code> will be announced in the browser language, not in the website language.</li><li>The visual label cannot be clicked to activate the text field.</li></ul><p>If I came across code like the example, I would not fail it against the WCAG success criterion, because there is an accessible name[^I might fail it for other reasons and against other SCs.].</p><p>Another way to do it is to use <code>aria-labelledby</code> instead:</p><pre><code class="language-text">&lt;span id=&quot;emailLabel&quot;&gt;Your Email:&lt;/span&gt; &lt;input aria-labelledby=&quot;emailLabel&quot; type=&quot;email&quot;&gt;</code></pre> <p>This <em>also</em> meets the success criterion. But it also has drawbacks, but arguably fewer:</p><ul><li>The value of <code>aria-labelledby</code> can easily be overlooked when copying and pasting code to generate new, similar interfaces. That’s a future accessibility risk.</li><li>In some screen reader/browser combinations, the <code>aria-labelledby</code> may be announced in the browser language, not in the website language.</li><li>The visual label cannot be clicked to activate the text field.</li></ul><p>Lastly, another way is to use the HTML <code>&lt;label&gt;</code> element instead of ARIA:</p><pre><code class="language-text">&lt;label for=&quot;emailInput&quot;&gt;Your Email:&lt;/label&gt; &lt;input id=&quot;emailInput&quot; type=&quot;email&quot;&gt;</code></pre> <p>While this solution is still susceptible to copy and paste errors, you can now click on the label to set the focus into the text field, and the label’s text is always read in the page’s language.</p><h2 id="so-whats-the-best-practice">So, what’s the best practice?</h2> <p>For me, I would always <em>recommend</em> using the &lt;label&gt; element. So if I find an element without an accessible name, this is my go-to technique. It’s my “best practice” because I think it has the least downsides and is usually not that difficult to implement.</p><p>That said, I do not always recommend it. Every so often the component is not relevant enough or the page is unlikely to be translated, so using a band-aid <code>aria-label</code> is good enough. </p><p>Frequently I will mention both: The quick fix and my “best practice”.</p><p>This gives designers and developers options. Some might find the “best practice” easier to implement, while others will only look at the quick fix.</p><p>Recommending best practices is always a double-edged sword: sometimes it can distract and lead to inaction, so the goal is to use them only when they make a noticeable difference for users in the context.</p><h2 id="what-about-non-wcag-accessibility-issues">What about non-WCAG accessibility issues?</h2> <p>It happens. The site uses a technique that we think is so bad that it doesn’t meet our high standards.</p><p>If you are in accessibility, this <em>should</em> happen every time you do a review. Your standards need to be high to make the differentiation between something that does not meet the minimum requirement and something that just about does.</p><p>Grading on a scale from “oops all <code>&lt;div&gt;</code>s” to “this is the most beautiful code I could have written” is important to make the distinction where the line goes.</p><p>When an implementation reaches the minimum, but you’re still unhappy with the result, you can add a “Recommendation”. Make clear that it is not a failure but an opportunity for improvement. Ensure that fixing WCAG failures is prioritized over recommendations.</p><h2 id="conclusion">Conclusion</h2> <p>Defining what is the best technique to recommend in a situation is an essential skill for fixing accessibility, a skill that can only be trained by using different techniques and learning about their advantages and disadvantages.</p> ]]>
    </description>
    </item>
    <item>
    <title>Avoiding the word “help”</title>
    <link>https://yatil.net/blog/avoiding-the-word-help</link>
    <guid>https://yatil.net/blog/avoiding-the-word-help</guid>
    <pubDate>Fri, 08 Aug 2025 08:40:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>I frequently see the word “help” used in accessibility, and I don’t like it. This is certainly a personal gripe, but I want to share my thinking behind avoiding it.</p><p>First, where there is “help”, there is “helplessness”. Using the word “help” in the accessibility context implies that disabled people need help from (usually non-disabled) people to accomplish things. While that is sometimes the case, often the same people who “help” are the ones that create accessibility barriers in the first place. You don’t help if you drag a wheelchair and its user up a staircase that you built instead of an elevator. That’s not helping. It’s damage limitation at best. It sounds like we’re doing charity work, but we’re providing concrete technical (and design, and structural) feedback that has societal impact.</p><p>Second, typically it is imprecise. Sure, adding an alternative text to an image “helps” screen reader users in the sense that it’s finally accessible. (See point 1.) But I sometimes see sentences like, “Adding an alternative text helps screen readers to convey the image content to their users.”</p><p>To me that feels like, “The screen reader would figure it out eventually. It just needs a little help from us!” This is, of course, not what happens. If there is no information, the screen reader cannot convey it. </p><p>I often use “enable” or “ensure” instead of the squishy “help” where I can. “Adding alternative text ensures that the content of the image is conveyed to screen reader users.” Or: “Formatting the bold text as headings instead enables users to navigate between headings and use them as reference points for orientation.”</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section> ]]>
    </description>
    </item>
    <item>
    <title>Deutschland: Berichte belegen blamable Bilanz bei digitaler Barrierefreiheit</title>
    <link>https://yatil.net/blog/barrieren-gutachten</link>
    <guid>https://yatil.net/blog/barrieren-gutachten</guid>
    <pubDate>Sun, 15 Jun 2025 14:15:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Auf der Seite <a href="https://barrieren-gutachten.de">barrieren-gutachten.de</a> hat die wundervolle <a href="https://conesible.de/">Casey Kreer</a> Gutachten zum Stand der Barrierefreiheit in Deutschland erstmals übersichtlich aufgelistet. Die Übersicht enthält 188 Gutachten, von denen 187 zur Bewertung „nicht bestanden“ kommen. Nur ein Gutachten hat das Ergebnis „im Wesentlichen bestanden“. </p><p>Die Gutachten stammen aus den Jahren 2022 bis 2024 und wurden alle über das Frag-den-Staat-Portal aufgrund des Informationsfreiheitsgesetzes veröffentlicht. Sie zeigen vor allem eines: Obwohl öffentliche Websites und Apps teilweise seit 2002 (also fast ein viertel Jahrhundert) barrierefrei sein müssen, hapert es überall gewaltig an der Umsetzung. Gutachten werden angefertigt, die gefundenen Fehler aber nicht behoben.</p><p>Das ist leider ein Zustand, den ich nur allzu gut kenne. Selbst wenn nachgebessert wird, dann nur in Form von Schnellschüssen statt durch ein nachhaltiges barrierefreies Design. Barrierefreiheit verkommt dann zu Insellösungen, die bei neuen Features oder Projekten vergessen werden. Das kostet Steuerzahler viel Geld, das besser in langfristig nachhaltige Seiten und Apps gesteckt werden sollte.</p><p><a href="https://steady.page/de/bye-bye-barrieren/posts/cbafc143-3d20-484b-8bb6-dc0b4d10e3c3">Mehr Informationen zum Portal bei Steady</a>, wo man <a href="https://steady.page/de/bye-bye-barrieren/about">Caseys <em>bye, bye Barrieren</em>-Projekt auch finanziell unterstützen</a> kann.</p><p>(Offenlegung: Ich unterstütze das Projekt seit Februar 2024.)</p> ]]>
    </description>
    </item>
    <item>
    <title>So, you screwed up your EAA compliance. What now?</title>
    <link>https://yatil.net/blog/so-you-screwed-up-your-eaa-compliance-what-now</link>
    <guid>https://yatil.net/blog/so-you-screwed-up-your-eaa-compliance-what-now</guid>
    <pubDate>Sun, 08 Jun 2025 17:15:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>The deadline of the European Accessibility Act (EAA) is near (June 28 is just 20 days away as I write this), and you just realized that your website or apps will not meet the requirements by then. Maybe you have just heard of it for the first time, or you might have tried to meet the requirements, but you’re not there yet.</p><p>If you have believed that there is an additional transition period, that is not true. The transition period basically started when the EAA got approved by the European Parliament in April 2019. All EU countries were then required to ensure that the directive is implemented in their laws by June 28, 2022, to be in effect from June 28, 2025.</p><p>(Note: Because I have little insight into <em>products</em> covered by the EAA, I will focus on the <em>services</em>, which is the EAA language for websites, online shops, and applications.)</p><section class="toc" aria-labelledby="toc"><h2 id="toc">Table of Contents</h2><ul> <li><a href="#who-needs-to-fulfill-the-eaa-requirements">Who needs to fulfill the EAA requirements?</a></li> <li><a href="#dont-panic">Don’t panic</a></li> <li><a href="#get-support">Get support</a></li> <li><a href="#what-to-do">What to do</a></li> <li><a href="#documentation">Documentation</a></li> <li><a href="#slow-but-steady">Slow, but steady</a></li> </ul></section><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="who-needs-to-fulfill-the-eaa-requirements">Who needs to fulfill the EAA requirements?</h2> <p>You are under the EAA legislation for services when your audience is in the EU[^and other countries that adapt the same legislation, like Norway] and is customers (instead of businesses). In addition, you are exempt if you are a “<a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32019L0882#:~:text=means%20an%20enterprise%20which%20employs%20fewer%20than%2010%20persons%20and%20which%20has%20an%20annual%20turnover%20not%20exceeding%20EUR%202%C2%A0million%20or%20an%20annual%20balance%20sheet%20total%20not%20exceeding%20EUR%202%C2%A0million;">microenterprise</a>”, meaning “an enterprise which employs fewer than 10 persons and which has an annual turnover not exceeding EUR 2&nbsp;million or an annual balance sheet total not exceeding EUR 2&nbsp;million”.</p><p>If you are a microenterprise, try to make your content more accessible anyway. Larger firms will have an advantage over you eventually, as accessible services are <a href="https://www.w3.org/WAI/business-case/">often preferred by customers</a>, due to better usability and customization options.</p><h2 id="dont-panic">Don’t panic</h2> <p>If you have not met the requirements and are required to do so, you have opened up yourself for potential punishment by the marketing surveillance agencies in the different EU countries you have customers in. There is no way around it: this is serious.</p><p>While the fines can be very high (for example, up to EUR 100.000 in Germany), the regulation allows for fixes before a company is sanctioned. This is especially important for first-time violators. The EAA also encourages agencies to support SMEs (“small and medium enterprises” up to EUR 50 million annual turnover) to meet the requirements and not overburden them.</p><h2 id="get-support">Get support</h2> <p>Unless you have worked on accessibility for a long time, and you know what you are doing, it is highly unlikely that you have the knowledge in-house. To be honest, if you are reading this, you certainly don’t have the knowledge in-house.</p><p>This is OK. Before you contact someone and sign a potentially expensive contract, here are some fundamental facts about accessibility you need to understand to make a good decision: </p><ul><li><strong>Accessibility is a process.</strong> It’s not a one-time fix or something you can only think about after you have deployed a new feature.</li><li><strong>There are no shortcuts.</strong> An accessibility widget or a one-line JavaScript will not make this go away.</li><li><strong>Experience over certification.</strong> Many new accessibility professionals have a certificate by the International Association of Accessibility Professionals (IAAP), but understand that these certifications cover fairly fundamental knowledge. In case you’re unsure, ask any professional, certificate or not, what their experience is, especially with projects similar to yours. Understand that Non-Disclosure Agreements (NDAs) might often prevent them from naming specific clients.</li></ul><p>The basis of compliance is the <a href="https://www.etsi.org/human-factors-accessibility/en-301-549-v3-the-harmonized-european-standard-for-ict-accessibility">EN&nbsp;301&nbsp;549</a> European norm, which includes the <a href="https://www.w3.org/TR/WCAG21/">Web Content Accessibility Guidelines (WCAG) 2.1 AA</a>. While it is currently not required, looking at <a href="https://www.w3.org/TR/WCAG22/">WCAG 2.2 AA</a> makes sense to avoid another round of accessibility fixes later. It expands WCAG 2.1 a little, and most sites should meet the new success criteria.</p><p>Many accessibility companies will start with an assessment of your service and how well it meets the requirements outlined in EN&nbsp;301&nbsp;549. That’s a good start, but without organizational commitment and internal processes, you risk getting into a “develop inaccessible functionality → test → fix functionality” treadmill. We see in many clients that they are fixing some existing functionality while expanding their services with inaccessible functionality at the same time.</p><p>You need to avoid this vicious cycle to make your case that you take accessibility serious.</p><h2 id="what-to-do">What to do</h2> <p>You have to prove that you are willing to make your service as accessible as possible as quickly as possible. That might help to avoid or reduce fines. </p><ul><li><strong>Commit to releasing only features that are reviewed and tested for accessibility.</strong> This will ensure that you do not build up more accessibility debt.</li><li><strong>Fix existing accessibility issues.</strong> Plan to test functionality in your service for accessibility step by step and resolve issues or rebuild functionality with accessibility in mind.</li><li>Often re-thinking a feature with accessibility in mind and rebuilding it will be quicker and cheaper than patching accessibility gaps.</li><li><strong>Scope well:</strong> Concentrate on the main avenues users use on your site or app first. If you provide an online shopping experience, prioritize the purchase flow over blog posts or other functionality.</li></ul><p>A good accessibility coach will guide you through this and help you prioritize what is important, and will also support you with an important additional step of the process:</p><h2 id="documentation">Documentation</h2> <p>The European Accessibility Act comes with some bureaucracy which requires you to provide accessibility information to users. In most countries this seems to be an on-demand feature, however in some European countries, this takes the form of a public page on your website or inside your app, an Accessibility Statement.</p><p>I strongly recommend a public accessibility statement for all sites and applications. Make sure it’s written to inform people with disabilities about the accessibility of your service. If your service is largely inaccessible, communicate goals for making parts of the experience accessible and document when you meet these goals continuously.</p><p>You are also required to report accessibility issues with the market surveillance agency when you learn about them. One would assume that those agencies have websites, forms, and procedures ready to review those reports, but it looks like some of them will only be up to speed later this year. While that might allow you a little more time to bring your website or app in order, you should document when you report what to the agency. Overall, it’s your responsibility to demonstrate that you try to conform as best as you can.</p><h2 id="slow-but-steady">Slow, but steady</h2> <p>When you make promises, ensure that you can keep them. Promising too much and then delaying will not only make market surveillance agencies uneasy, but users will also stop trusting you. Plan to take small steps, especially in the beginning. You, designers, and developers need to learn the basics of accessibility first before diving in. Making costly mistakes is easy, especially if the interactions that need fixing are complex. </p><p>Think about simplifying your user interface. Consider if a complex interaction pattern is worth putting time in when a simpler form is sufficient. Again, professional help can guide you through the process.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section> ]]>
    </description>
    </item>
    <item>
    <title>Tag, you’re it</title>
    <link>https://yatil.net/blog/tag-you-re-it</link>
    <guid>https://yatil.net/blog/tag-you-re-it</guid>
    <pubDate>Mon, 21 Apr 2025 12:30:00 +0200</pubDate>
    <description>
    <![CDATA[ <p><a href="https://mastodon.social/@SteveFaulkner">Steve Faulkner</a> tagged me in this <a href="https://html5accessibility.com/stuff/2025/04/06/tag-youre-it/">chain letter/interview style post</a>, and I foolishly agreed in advance to respond. So here we are 😂</p><h2 id="why-did-you-start-blogging-in-the-first-place">Why did you start blogging in the first place?</h2> <p>When I started blogging two decades ago it was just to share thoughts and interesting posts. I had websites before, but being able to react very immediately to things was intriguing.</p><h2 id="what-platform-are-you-using-to-manage-your-blog-and-why-did-you-choose-it">What platform are you using to manage your blog and why did you choose it?</h2> <p>I use <a href="https://getkirby.com/">Kirby</a>, because it is file-based and allows me to use the HTML and CSS that I want to. It is incredibly versatile and I like how it lets you create your own building blocks and site templates from scratch.</p><h2 id="have-you-blogged-on-other-platforms-before">Have you blogged on other platforms before?</h2> <p>I used to blog on <a href="https://textpattern.com">Textpattern</a> for many, many years, including when I ran <a href="https://snookerblog.de">Snookerblog</a>. I loved it, but moved to <a href="https://www.yatil.net/blog/relaunch-2014">Wordpress</a> in 2014 for its <a href="https://indieweb.org">IndieWeb</a> integration. It was a terrible choice for me, and switched to Kirby not soon after. (I just remembered that I ran <a href="https://jekyllrb.com">Jekyll</a> and <a href="https://www.11ty.dev">11ty</a> for a bit, and blogs with build steps are just not for me.)</p><h2 id="how-do-you-write-your-posts-for-example-in-a-local-editing-tool-or-in-a-panel-dashboard-thats-part-of-your-blog">How do you write your posts? For example, in a local editing tool, or in a panel / dashboard that’s part of your blog?</h2> <p>It really depends on how serious the article or post is. If it is longer form, I tend to grab <a href="https://ia.net/writer">iA Writer</a> or <a href="https://ulysses.app">Ulysses</a> for structure and then move it over to the Kirby panel. But for posts like this one, I just write it in the Kirby panel. It’s great on desktop and acceptable on iPad and iPhone. </p><h2 id="when-do-you-feel-most-inspired-to-write">When do you feel most inspired to write?</h2> <p>I rarely do feel inspired to write these days. My “day job” involves a fair bit of writing, so doing additional writing feels like even more work. That said, I get motivated when I figure out new ways to explain something and occasionally when I’m angry.</p><h2 id="do-you-publish-immediately-after-writing-or-do-you-let-it-simmer-a-bit-as-a-draft">Do you publish immediately after writing, or do you let it simmer a bit as a draft?</h2> <p>I have plenty of drafts, they rarely get published. Usually, I discover that I have already written the article or the act of writing it down reveals that the topic was not worth writing about at all. I use my blog as a way to rubber-duck ideas. If I like an article and I have the feeling it is reasonably well written, it goes live immediately.</p><h2 id="what-are-you-generally-interested-in-writing-about">What are you generally interested in writing about?</h2> <p>Mostly about web accessibility, including the societal and educational problems that lead us to create inaccessible software and products.</p><h2 id="who-are-you-writing-for">Who are you writing for?</h2> <p>I don’t write for anyone in particular, but my articles skew technical, and so it’s probably mostly developers. And of course for my supporters on Steady:</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="whats-your-favorite-post-on-your-blog">What’s your favorite post on your blog?</h2> <p><a href="https://www.yatil.net/blog/non-text-contrast-in-detail-ui-components">My recent post about WCAG 1.4.11 Non-Text Contrast</a> is probably my favorite because I researched it really well and made numerous examples.</p><h2 id="any-future-plans-for-your-blog-maybe-a-redesign-a-move-to-another-platform-or-adding-a-new-feature">Any future plans for your blog? Maybe a redesign, a move to another platform, or adding a new feature?</h2> <p>I would love to redesign the blog, but I don’t really have time/energy at the moment. Plus, I’m reasonably happy with the look. I would like to restart taking comments eventually. There are always things that could be done differently.</p><h2 id="tag-em">Tag ’em</h2> <p>I‘ll try not to put to-do items on other people’s lists, so if you want to take these question and answer them, please do! And if not, I leave you with a Doctor Who quote:</p><blockquote> The blossomiest blossom.<br>That’s the only sad thing.<br>I want to know what happens next.<br>Right then, Doctor-whoever-I’m-about-to-be.<br>Tag. You’re it. <footer> 13th Doctor as played by Jodie Whittaker </footer> </blockquote> ]]>
    </description>
    </item>
    <item>
    <title>WAI A Day: A week</title>
    <link>https://yatil.net/blog/wai-a-day-a-week</link>
    <guid>https://yatil.net/blog/wai-a-day-a-week</guid>
    <pubDate>Sat, 15 Mar 2025 16:55:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Last weekend, <a href="https://yatil.net/blog/wai-a-day">I launched</a> <a href="https://wai-a-day.yatil.net">WAI A Day</a>, the daily random WAI resource fun and information.</p><p>I added some things: A web page lists the URLs now together with the dates they have been picked for. This meant I had to give the page a history of all previously generated URLs. In the first version of the page, it only served as a random generator of a WAI URL and also, basically, only as an API – returning just the URL as a text string. So every time I accessed the URL, the response was different.</p><p>To change the design, I now save every URL into a JSON file, together with the date as a key. This allows me to check if a key is present for the current day and return that URL, or generate a URL if it is not. The first time the wai-a-day.yatil.net domain is accessed every day, the randomizer picks a URL and saves it to the JSON file.</p><p>I have used this way of a key/value storage quite often, and it is quick and just works. There are probably quicker ways to do the lookup that does not require as much reading from disk, but to be honest, I cross that bridge when I get to it after the JSON files gets many, many megabytes large.</p><p>What I don’t like is the monotony that the <a href="https://yatil.social/@WAI_A_Day">repeated generic social media previews on the WAI A Day Mastodon account</a> bring. Sure, this might not be a big deal in the grand scheme of things, but because I only have the URLs and I cannot produce more meaningful content for the <s>toots</s> posts, the social media previews are distracting. I wonder if I could parse the social graph texts myself and return a more meaningful, generated image – like I do for this blog – and embed this as an image in the post. But then that would not be clickable to the resource.</p><p>Proxying all links through the WAI A Day site was a consideration, but cool URIs don’t change. While I have no problem with the WAI A Day page going away, I’d like all fragments of its existence to work independently with the original URLs.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>The feedback from the community has been great, 65 followers on Mastodon and 20 on (reluctantly) Bluesky is not a huge number, but it’s a start. I wonder if I can use the data elsewhere, too. Would a Slack integration be useful? (Boo! Walled gardens!)</p><p>I want to highlight that the randomizer did a good job picking interesting pages in the first seven days (and I did a good job narrowing the options down for it):</p><ul><li>2025-03-08: <a href="https://www.w3.org/WAI/planning-and-managing/initiate/">Planning and Managing: Initiate</a><ul><li>This resource gives organizations hints on how to start making concrete accessibility changes that last. You couldn’t imagine a better first link.</li></ul></li><li>2025-03-09: <a href="https://www.w3.org/WAI/standards-guidelines/uaag/">User Agent Accessibility Guidelines (UAAG) Overview</a><ul><li>W3C has many standards, this is the one about Browsers and what they should do for accessibility. A little niche, but that’s why it’s random.</li></ul></li><li>2025-03-10: <a href="https://www.w3.org/WAI/older-users/literature/">Overview of “Web Accessibility for Older Users: A Literature Review”</a> <ul><li>If I had seen this in the dataset, I probably would have removed it from the list, as it is more of a support document to another document, and also last updated in 2008. Still relevant, though.</li></ul></li><li>2025-03-11: <a href="https://www.w3.org/WAI/roles/policy-makers/">Resources for Policy Makers</a><ul><li>I debated letting these meta-pages in there, but seeing it here after a niche page, having a broad one feels right.</li></ul></li><li>2025-03-12: <a href="https://www.w3.org/WAI/WCAG2/supplemental/objectives/o3-clear-content/">Cognitive Accessibility Objective: Use Clear and Understandable Content</a><ul><li>The supplemental guidance of how WCAG relates to cognitive disabilities is great, so I’m happy that it is included in the list! (I’m less happy that these pages use a separate navigation pattern from the main WAI site, I find it confusing.)</li></ul></li><li>2025-03-13: <a href="https://www.w3.org/WAI/fundamentals/accessibility-principles/">Accessibility Principles</a><ul><li>This page is frequently the first I guide people new to accessibility to, as it is a really nice overview of the guiding principles.</li></ul></li><li>2025-03-14: <a href="https://www.w3.org/WAI/test-evaluate/easy-checks/zoom/">Zoom Levels - Easy Checks</a><ul><li>This is part of the relatively new draft Easy Checks, and I like it. Learn how to test zoom.</li></ul></li></ul><p>I hope the radomizer keeps picking this well. Don’t forget that you can <a href="https://steadyhq.com/en/yatil/about">support this and all my other indy projects on Steady</a>. Or <a href="https://steadyhq.com/en/yatil/newsletter/sign_up">subscribe to the newsletter</a>.</p> ]]>
    </description>
    </item>
    <item>
    <title>WAI A Day</title>
    <link>https://yatil.net/blog/wai-a-day</link>
    <guid>https://yatil.net/blog/wai-a-day</guid>
    <pubDate>Sat, 08 Mar 2025 22:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>When I worked for W3C’s <a href="https://www.w3.org/WAI/">Web Accessibility Initiative</a>, we often discussed ways to spread the good word of our resources better. One idea that I was always fond of was to showcase the deep library of resources with a social media feed that would promote random resources regularly.</p><p>My grandiose idea would have been with custom promotional text that summarizes the resource and maybe give some more context.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>Suffice to say, we never followed through for a few different reasons. The priorities just didn’t align. It happens, but I still liked the idea. So just five years after leaving W3C, I created my own low-effort version of the idea.</p><p>It’s called <a href="https://wai-a-day.yatil.net">WAI A Day</a>, and it highlights a WAI resource every day.</p><h2 id="where-to-follow">Where to follow?</h2> <p>You can follow the <a href="https://yatil.social/@WAI_A_Day">Mastodon account @WAI_A_Day@yatil.social</a> and the account will post a random WAI resource every day at 17:00 Central European Time.</p><p>There is also a <a href="https://bsky.app/profile/WAI-A-Day.yatil.social.ap.brid.gy">Bluesky mirror</a>, but if you can, use the open social network Mastodon instead.</p><h2 id="caveats">Caveats</h2> <p>The list of URLs that the script choses from is filtered from the <a href="https://www.w3.org/WAI/sitemap.xml">sitemap.xml file of the WAI sub site</a>. I wasn’t happy with some of the URLs that are in there, so I decided to filter out some URLs, mainly:</p><ul><li>Translations (the account only posts English resources for now)</li><li>News (they are often outdated and not suitable for this kind of account)</li><li>Tests for ARIA features</li><li>Example pages</li><li>Some sub-pages that I did not feel were useful to be featured out of context</li></ul><p>I just auto-post the URLs and the social media preview of Mastodon does the rest. Unfortunately, some of those previews are more useful and others are less useful.</p><p>In addition, that list does not contain any specifications or any Understanding documents of W3C. I hope to add them to the list at a later date, but I could also see those documents overwhelm the other resources.</p><h2 id="code">Code</h2> <p>The <a href="https://codeberg.org/yatil/wai-a-day">code for inspection</a> and the <a href="https://codeberg.org/yatil/wai-a-day/src/branch/main/wai-urls.txt">created URL list</a> can be inspected on my Codeberg profile.</p><h2 id="thanks">Thanks</h2> <p>My deepest thanks go to <a href="https://steadyhq.com/en/yatil/about">my supporters on Steady</a> who allow me to invest time into projects like this.</p> ]]>
    </description>
    </item>
    <item>
    <title>Values</title>
    <link>https://yatil.net/blog/values</link>
    <guid>https://yatil.net/blog/values</guid>
    <pubDate>Sun, 02 Mar 2025 15:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Normally, I reserve these more introspective texts for <a href="https://steadyhq.com/en/yatil/newsletter/sign_up">my newsletter</a>, which I send out occasionally. But this time, I want to make sure I document this particular struggle on my website, too.</p><p>This is a difficult text to write and as I start, I realize that I don’t know where this is going, so please excuse me if it is even more meandering than usual.</p><p>Let’s talk about the disconnect within the accessibility scene/industry/community[^ Oh, more disconnects!] and about the stampede of elephants in the room. Last week, Deque used their <a href="https://www.deque.com/axe-con/schedule/">free axe-con marketing event</a>[^ There are genuinely great talks featured, and it is a great resource to the community, but the company wouldn’t do it if they would not expect publicity from it – which is a fair deal.] to announce the vision of getting to 100% automated accessibility (by volume) across all disciplines within the next 10 years. This would be possible with “AI”.</p><p>The backlash during <a href="https://www.deque.com/axe-con/sessions/the-state-of-accessibility/">the keynote</a> was swift and forceful. I’m not sure how this was not anticipated. Axe-con is still a conference considered part of the accessibility community, so the message to replace genuine human testing and evaluation with “AI” could never land with that audience. But it also wasn’t made for that audience[^ Sorry, but if your script says, “Your work isn’t just following the AI revolution, it is enabling it.” that’s just another way of saying “We will take your work and productize it and sell it.”].</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>I don’t want to replicate the slide, but there is a slide that shows 2024 as 57% of automation, and 2025 as 100% automation, despite saying later that that’s somehow a 10-year vision. The presenter also says to get to 100% “or as close so it doesn’t really matter”, and that is an interesting phrase.</p><p>Because accessibility happens in these margins. “These few users and use cases don’t matter” is something I still hear occasionally. Recently, a fairly large online shop has introduced screen reader detection in their app to see if screen reader users are actually using their app – which is not very screen reader friendly. These tactics are used to reduce the need to make technology accessible. </p><p>The reality is: These percentages, hundredths of percentages, that is what web accessibility people should care about. This is where it matters. Promising 100% coverage or close to it, siphoning funds off real accessibility changes, will lock out people quickly.</p><p>And then there is the other side of the coin of being a consultant for accessibility. It’s not (just) about crossing t’s and dotting i’s to ensure conformance, it is about teaching designers, developers, project managers, and beyond the importance of accessibility and how to use it to make more inclusive and less ableist decisions that lead to better outcomes.</p><p>We know that <a href="https://www.microsoft.com/en-us/research/publication/the-impact-of-generative-ai-on-critical-thinking-self-reported-reductions-in-cognitive-effort-and-confidence-effects-from-a-survey-of-knowledge-workers/">“AI” impacts critical thinking negatively</a>. This is an inherent threat to accessibility in particular but also to human society eventually. Mindlessly copying and paste corrections from an “AI” might make you feel more productive, but what starts as automation in one section (for testers in the case of accessibility testing aided with “AI”) becomes worse productivity somewhere else. For example, designers that don’t understand how to create accessible color pallets need to re-do them over and over again because “AI says no”, but they might not understand why. The same goes for programmers who will correct their code and never learn to do it correctly. If the “AI” is broken, or the problem is new, they don’t know how to deal with it. And sometimes the “AI” might just generate nonsense[^ “hallucination”] and the critical thinking of determining if it is right or wrong is absent.</p><p>I think the misstep in tone in any presentation, especially with “AI”, is to not acknowledge the threats that concern disabled people and the community that supports them. Dismantling the state apparatus in the US that has historically ensured that disabled people get their rights, the thread of war, massive cuts to health care, the attempts to treat disabled people as second-class people.</p><p>Not acknowledging these changes and then framing the European Accessibility Act (EAA) as an excellent business opportunity that will need more people to work on accessibility just shows how far apart the values of some accessibility companies are in comparison to the people they work with. Also, I’ve seen a fair share of people on LinkedIn who have moved on from Deque over the last year, maybe the need for “AI” would be lessened if those employees were kept?</p><p>As you might have noticed, I don’t mention the names of the presenters of the Deque session because while I think they believe what they say, their objectives, their values are company objectives and values. As a company, it is a straightforward thought to say “clients/stakeholders/investors want to hear about AI, let’s talk about AI”.</p><p>But in accessibility that does not work. I, personally, believe that it works nowhere. And even if “AI” was working and universally fixing ableist outcomes of human processes to be technically accessible, my values tell me that we only put icing on an ableist mud cake.</p><p>It might quack like a cake, walk like a cake, and look like a cake, but it’s still muddy underneath it. It also would make accessibility something with a price tag, something that can be saved if politics is not defending accessibility – like what happens in the US right now. A developer who has learned to produce good, accessible code will write it whether it is mandated or not. When you switch off an “AI Agent”, you’re left with nothing permanent and/or a decrease in accessibility in the future.</p><p>There is no magic wand to make accessibility happen, other than hiring disabled people and include them in every step, in every decision. You want “100% AI accessibility”, try the Accessibility Intelligence of actual disabled people.</p><p>There are use cases where “AI” tools can actually be helpful. In real-world situations where there is no description available, a picture description can help with orientation or finding things. When there is no alternative text provided, users can use it themselves to identify the photo. Then at least they are aware of possible mistakes. Providing transcripts in situations where there is no time or budget to have them done professionally[^ Apparently Deque thinks automated live transcriptions are good enough for an accessibility conference, and I vehemently disagree. <a href="https://www.deque.com/axe-con/wp-content/uploads/2024/11/Ai-Media_46997_THE_STATE_OF_ACCESSIBILITY_FEB_25_2025_.txt">The transcripts are barely understandable</a>. They also sometimes transcribe “Deque” as “TC”. The captions appear to be much better.] can be a stopgap.</p><p>My values are people-based, are community-based, are society-based. I think when we learn from each other’s experiences, we will grow as humanity, and we will grow our humanity. I know that it doesn’t look like this at the moment, but no societal growth spurt happens without backlash or setbacks.</p><p>Accessibility is difficult, working in an ableist society is difficult. Realizing that ableism runs wide in the accessibility community hurts[^ Explicit props to Deque for making this a COVID/Influenza competent experience by holding it online. I also think this conference is much more accessible cognitively because you can watch the videos on your own time and from the comfort of your own home. Most conferences, accessibility or otherwise, have given up these crucial aspects of accessibility]. This is a chance to think about our own values and how we apply them to our jobs. For me, supporting people to experience all their human rights equally is a fundamental value. Not only that, but I think inaccessibility violates people’s dignity.</p><p>I, and probably everyone in the accessibility industry, could be in a better paying, less stressful, less occasionally antagonistic role with our skill set. Really good accessibility professionals (and yes, I butter my own bread here – deal with it) have skills that translate into all different situations because that’s what you need to be good at your job. You need to be a designer, a developer, a manager, a teacher, a decider, a reader of specifications, a shoulder to lean on, a resilient punching bag at times. Accessibility is a holistic discipline, so to be a specialist here, you also have to be a generalist in most other disciplines and a specialist in some.</p><p>It’s a tough gig, and we’re squeezed between our own goals and the compromises we have to agree to daily.</p><p>The reality is that most of us have so high values that we are bound to fail in an ableist society. “AI” won’t change that. What it will do, similarly to <a href="https://overlayfactsheet.com/en/">Overlays</a>, is that it devalues accessibility work by decoupling it from the actual humans needed to <em>do</em> the work and from the actual humans who <em>need</em> the work to be done. (Especially in accessibility, there’s significant overlap between those groups.) We accept that the platonic ideal of accessibility is unreachable in this ableist society, but it doesn’t stop us to push the Overton window into a more accessible place. That acceptance is mostly self-protection and self-preservation. Without it, we would have a binary choice of giving up or pushing for perfection, but that’s just not how the world works. I know that this difference between what we want to do and what we can do is a huge burden, especially for people who are new to this, and there are few support structures in place to help to deal with this stress.</p><p>Telling people that accessibility “so close to 100% in a way that it doesn’t matter” is possible with “AI” is a gut punch. It undermines the expertise and the versatility of the profession. It makes accessibility a technological problem, but it is a human problem.</p><p>How do we know? “Accessibility will be solved by technology in 10 years” is progressing in the same rate as is “AI” in general and fusion power. It’s always around the corner. And then it never is.</p><p>What this causes is deferral and loss of knowledge. We already have a significant gap between juniors and seniors and no clear paths how people can train up to be better equipped with testing and fixing accessibility. That’s the challenge we already have and by declaring accessibility a “100%” solved problem, we’re losing the interest from new juniors in the field and devalue the knowledge of us who do this for a long time.</p><p>Do I think that I, someone who does this for over 15 years of in-depth experience, should not do the chores of writing up simple alternative text issues? Sure! But I also know that this is a great way to get started for people new to it and then step-by-step broaden their experience. In addition, what I write up for clients does not matter that much, but how I write it up, how I inspire them, how I engage them to address issues. Communicate where the main blockers for disabled people are, and ensuring that they don’t focus on small issues that are not that important in context.</p><p>The reality is that my values, my goals for my job are different from those of big accessibility companies. For a company, dependence is important. That creates long-lasting clients, and that brings in the money. While I want and need to pay my bills, earning money is not my goal because there will always be enough work for me. I look forward to – and fondly back on – every instance where clients told me that they now have accessibility under control. Just this year, a long-term client project halved their hours with me, not because the coaching wasn’t useful, but because they have now more knowledge and understanding and don’t need to rely on me as much. This is wonderful.</p><p>Overall, it’s totally fine to have different values and different goals. The disconnect exists when you try to convince me that your values are also my values. They are not.</p><h2 id="some-interesting-axe-con-talks">Some interesting axe-con talks</h2> <p>Here are some axe-con talks that caught my eyes and that you should check out[^ You can make your own decision on what the choices say about my current state 😬]. I did not watch any of them before I wrote above because I could not make time for it yet.</p><ul><li><a href="https://www.deque.com/axe-con/sessions/cyborg-concerns-disability-services/">Cyborg Concerns &amp; Disability Services by Dr. Ashley Shew</a></li><li><a href="https://www.deque.com/axe-con/sessions/no-seriously-fck-engagement-building-a-more-human-web/">No, Seriously, F*ck Engagement: Building a More Human Web (Content Warning) by David Dylan Thomas</a></li><li><a href="https://www.deque.com/axe-con/sessions/burnout-bullsht-and-broken-systems-surviving-digital-accessibility-in-the-trenches/">Burnout, Bullsh*t, and Broken Systems: Surviving Digital Accessibility in the Trenches (Content Warning) by Kevin Andrews</a></li><li><a href="https://www.deque.com/axe-con/sessions/it-is-designed-to-break-your-heart-cultivating-a-harm-reduction-mindset-as-an-accessibility-practitioner/">It is designed to break your heart: Cultivating a harm reduction mindset as an accessibility practitioner (Content Warning) by Eric Bailey</a></li></ul><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section> ]]>
    </description>
    </item>
    <item>
    <title>Two different kinds of “focusable” UI elements</title>
    <link>https://yatil.net/blog/focusable-ui-elements</link>
    <guid>https://yatil.net/blog/focusable-ui-elements</guid>
    <pubDate>Sun, 10 Nov 2024 15:20:00 +0100</pubDate>
    <description>
    <![CDATA[ <p><em>In accessibility, “focusable” UI elements are represented by two separate yet equally important concepts: the elements who can be focused sequentially and those who can only receive focus programmatically. These are their stories. </em><a href="https://www.youtube.com/watch?v=lMalvNeJFLk"><strong><em>Dun-Dun</em></strong></a></p><p>While working for a client the other day, I found that <a href="https://polypane.app/?ref=yatil">Polypane</a>[^ Affiliate link.], which is excellent in locating accessibility issues, showed elements with <code>tabindex="-1"</code> as focusable in the <em>Focus Order</em> section of the <em>Outline</em> tool.</p><p>I contacted Kilian to see why that was happening, and he pointed me to the Accessibility Tree, which showed the element as <em>focusable</em>, too. </p><p>This is where I understood that there was a mix-up between two concepts: Sequentially focusable and programmatically focusable elements. The former are elements that can be reached with the <code>tab</code> key. Mixing these concepts is easy, as we use “focusable” because it is short and because the concepts are somewhat related. But for accessibility testing and understanding why we see certain behavior, understanding the difference is important.</p><h2 id="what-are-sequentially-focusable-elements">What are sequentially focusable elements?</h2> <p>For elements without a <code>tabindex</code> attribute, the HTML spec has the <a href="https://html.spec.whatwg.org/multipage/interaction.html#focus#:~:text=Modulo%20platform%20conventions,%20it%20is%20suggested%20that%20the%20following%20elements%20should%20be%20considered%20as%20focusable%20areas%20and%20be%20sequentially%20focusable:">following list of sequentially focusable elements</a>:</p><ul><li><code>a</code> elements that have an <code>href</code> attribute</li><li><code>button</code> elements</li><li><code>input</code> elements whose <code>type</code> attribute are not in the <a href="https://html.spec.whatwg.org/multipage/input.html#hidden-state-(type=hidden)">Hidden</a> state</li><li><code>select</code> elements</li><li><code>textarea</code> elements</li><li><code>summary</code> elements that are the first <code>summary</code> element child of a <code>details</code> element</li><li>Elements with a <code>draggable</code> attribute set, if that would enable the user agent to allow the user to begin drag operations for those elements without the use of a pointing device</li><li><a href="https://html.spec.whatwg.org/multipage/interaction.html#editing-host">Editing hosts</a></li><li><a href="https://html.spec.whatwg.org/multipage/document-sequences.html#navigable-container">Navigable containers</a></li></ul><p>In addition, elements with a <code>tabindex</code> attribute of <code>0</code> are <a href="https://html.spec.whatwg.org/multipage/interaction.html#focus%23#:~:text=If%20the%20value%20is%20a%20zero">also part of the sequentially focusable elements</a>.</p><p>Elements with a positive <code>tabindex</code> attribute are also part of the sequentially focusable elements, but reorder the sequence[^ Note that positive <code>tabindex</code> values are always sorted to the top of the sequence. If three links anywhere on the page have the <code>tabindex</code> values of <code>7</code>, <code>42</code>, and <code>147</code> respectively, they would be sorted to the top of the sequence as first, second, and third item in the sequence.]. There are almost <strong>no circumstances that warrant positive </strong><code>tabindex</code><strong> values</strong>[^ In my opinion, positive <code>tabindex</code> values cause more harm than benefit, HTML should deprecate them and treat them like <code>tabindex="0"</code>].</p><p><strong>Note:</strong> On macOS/Safari the tab-focusable elements are different from on other operating systems due to historical reasons. To test with a comparable experience, follow <a href="https://www.a11yproject.com/posts/macos-browser-keyboard-navigation/">Browser keyboard navigation in macOS</a>.</p><h2 id="what-are-programmatically-focusable-elements">What are programmatically focusable elements?</h2> <p>Programmatically focusable elements not (only) receive the focus when the user presses the <code>tab</code> key, but can (in addition or exclusively) receive the focus through JavaScript’s <code>focus()</code> function or because a fragment identifier points at the element with a corresponding <code>id</code>.</p><p>All sequentially focusable elements can also receive the focus programmatically. In addition, a negative integer[^ While any negative integer is allowed, in practice <code>-1</code> is usually the go-to value as other negative integer values have no different functionality.] value for the <code>tabindex</code> attribute makes an element a programmatically <a href="https://html.spec.whatwg.org/multipage/interaction.html#focusable-area">focusable area</a> but does <strong><em>not</em></strong> add the element to the sequentially focusable elements.</p><p>Programmatically focusable elements are useful when you need to direct users to a specific place in a website or app, especially after actions. A table of content might want to set the focus on the heading (a non-sequentially-focusable element) when using a skip link. Adding a negative <code>tabindex</code> to the heading makes it possible.</p><p>While programmatically focused, the focused element is treated as being the focus sequence as if its <code>tabindex</code> value was <code>0</code>. It’s inserted in the sequence and <code>tab</code> will go to the next item in the sequence.</p><p>In addition, <strong><em>negative </em></strong><code>tabindex</code><strong><em> values</em></strong> also <strong><em>remove sequentially focusable elements from the sequence!</em></strong></p><p>A link with a negative <code>tabindex</code> cannot be reached with the tab key, but most assistive technologies work around it. Screen readers, for example, can set “screen reader focus”[^ And you really thought we had only two things that we call focus here? Oh, sweet summer child!] to such a link when using arrow key navigation. </p><p>Some UI elements like tabs can use negative <code>tabindex</code> and programmatically assigned focus to control the interaction.</p><h2 id="demo">Demo</h2> <p>Here’s a demo with different permutations of elements and <code>tabindex</code> values:</p><div class="block-raw"><iframe height="300" style="width: 100%;" scrolling="no" title="Focusable demonstration" src="https://codepen.io/yatil/embed/ExqOWXg/b40abd780a6646f0d8e2d0eacf4bcd21?default-tab=html%2Cresult&theme-id=41003" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href="https://codepen.io/yatil/pen/ExqOWXg/b40abd780a6646f0d8e2d0eacf4bcd21"> Focusable demonstration</a> by Eric Eggert (<a href="https://codepen.io/yatil">@yatil</a>) on <a href="https://codepen.io">CodePen</a>. </iframe></div> ]]>
    </description>
    </item>
    <item>
    <title>My grief with “In Brief”</title>
    <link>https://yatil.net/blog/my-grief-with-in-brief</link>
    <guid>https://yatil.net/blog/my-grief-with-in-brief</guid>
    <pubDate>Sun, 08 Sep 2024 11:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p><em>Just to preemptively state it:</em> I appreciate what the Accessibility Guidelines Working Group (AGWG) is trying to do with the “In Brief” sections in <a href="https://www.w3.org/WAI/WCAG22/Understanding/">WCAG’s Understanding documents</a>. My criticism is about the execution of the information. In addition, this is not a plea to change it. I think the WG is very set on its approach and I learned it’s almost impossible to make it reconsider, so I don’t even want to bother trying. This is mostly documentation for myself.</p><section class="toc" aria-labelledby="toc"><h2 id="toc">Table of Contents</h2><ul> <li><a href="#what-are-in-brief-sections">What are “In Brief” sections?</a></li> <li><a href="#what-is-the-goal-of-the-in-brief-sections">What is the goal of the “In Brief” sections?</a></li> <li><a href="#why-i-dont-like-the-current-implementation-of-in-brief-sections">Why I don’t like the current implementation of “In Brief” sections</a><ul> <li><a href="#1-position-design">1. Position/Design</a></li> <li><a href="#2-content-information">2. Content/Information</a></li> <li><a href="#3-audience">3. Audience</a></li> </ul> </li> <li><a href="#what-to-do">What to do?</a></li> <li><a href="#other-examples">Other examples</a><ul> <li><a href="#sc1-2-2-captions-prerecorded">SC1.2.2 Captions (Prerecorded)</a></li> <li><a href="#sc-2-5-8-target-size-minimum-and-2-5-5-target-size-enhanced">SC 2.5.8 Target Size (Minimum) and 2.5.5 Target Size (Enhanced)</a></li> </ul> </li> <li><a href="#updates">Updates</a></li> </ul></section><h2 id="what-are-in-brief-sections">What are “In Brief” sections?</h2> <p>“In Brief” sections are information that has been added to every single WCAG Success Criterion Understanding page. They contain three bits of information: The <strong>goal</strong> of the success criterion, <strong>what to do</strong> to reach that goal, and <strong>why it is important</strong> to not violate the success criterion. Take for example the “In Brief” section for SC 1.3.1 Info and Relationships. First, the full Success Criterion as a reminder:</p><section class="entry-sc-block"> <header> <p><a href="https://www.w3.org/TR/WCAG22/#info-and-relationships">Success Criterion 1.3.1 Info and Relationships</a> (<a href="https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html">Understanding</a>)</p> <p>(Level A)</p> </header> <div> <p>Information, <a href="https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html#dfn-structure">structure</a>, and <a href="https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html#dfn-relationships">relationships</a> conveyed through <a href="https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html#dfn-presentation">presentation</a> can be <a href="https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html#dfn-programmatically-determined">programmatically determined</a> or are available in text.</p> </div> </section><p>And here is the “In Brief” section from the <a href="https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html">Understanding document</a>[^ In contrast to the actual understanding document, I use an unordered list instead of a description list.]:</p><ul><li><strong>Goal: </strong>Information about content structure is available to more people.</li><li><strong>What to do: </strong>Use code to reinforce relationships and information conveyed through presentation.</li><li><strong>Why it's important: </strong>People can adapt the presentation to suit their needs while preserving the original meaning.</li></ul><h2 id="what-is-the-goal-of-the-in-brief-sections">What is the goal of the “In Brief” sections?</h2> <p>The goal is to give people who are new to WCAG an easier to understand way to know what a Success Criterion is about. I think that is a great goal. The second goal stated in <a href="https://github.com/w3c/wcag/issues/3971#issuecomment-2294596919">Shawn Lawton Henry’s comment on GitHub</a> is to focus on disabled people’s experiences instead of (purely) conformance.</p><p>I think those are great goals.</p><h2 id="why-i-dont-like-the-current-implementation-of-in-brief-sections">Why I don’t like the current implementation of “In Brief” sections</h2> <p>I have multiple problems with the “In Brief” section as they are currently implemented. I hope some of them can be addressed, but I don’t hold my breath.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h3 id="1-position-design">1. Position/Design</h3> <p>For some time now, the “In Brief” sections are displayed between the Success Criterion title (and page heading) and the actual text of the success criterion (and non-normative notes quoted from WCAG).</p><p>In the <a href="https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships">WCAG 2.1 version</a>[^ Please ask the AGWG about the existing of different explainer documents for normative requirements which have exactly the same wording.] of the Understanding documents, the “In Brief” section was only added to a few SCs. It was put underneath the Success Criterion boxes, and at least on desktop browsers, it was clear that the first part of the page was the Success Criterion and then the explanation followed.</p><p>I always thought that the visual distinction was a bit confusing, but at least it felt clear to me that the top had the success criterion and the bottom explains it.</p><p><em>Side note:</em> While the pages always included the <strong>normative</strong> terms from the WCAG glossary, a reader might not identify them as such. They have also been renamed to “Key Terms” and collapsed as a section, further de-emphasizing their importance.</p><p>With WCAG 2.2, the “In Brief” sections were initially kept underneath the success criteria. But then got promoted to the most prominent place on the page, directly underneath the main heading.</p><p>The technically normative Success Criterion name is now followed by non-normative text, followed by the SC box (which contains the normative text of the SC and quotes non-normative notes), followed by explanatory text until the “Key Terms” expand/collapse which content itself is quoted normative content.</p><p>I’ve visualized the normative/non-normative balance in the following screenshot:</p><div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/my-grief-with-in-brief/b8229351e1-1725724157/screenshot-2024-09-07-at-17.46.32.png" alt="Screenshot of the WCAG Understanding document for SC 1.4.10 Reflow (AA). The heading, Understanding SC 1.4.10 Reflow (Level AA) is circled in red, then a large section of content is circled in black (In Brief), the a paragraph and a list and another paragraph are circled in red as normative. The two notes on the SC and the followin Intent paragraph is marked black as non-normative. The normative content drowns in non-normative information."> <figcaption class="img-caption"> Screenshot of the<a href="https://www.w3.org/WAI/WCAG22/Understanding/reflow"> WCAG Understanding document for SC 1.4.10 Reflow (AA)</a>. </figcaption> </figure> </div> <p>Compare this to a screenshot with the “In Brief” and “Success Criterion (SC)” box switched:</p><div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/my-grief-with-in-brief/90bd00724b-1725724582/screenshot-2024-09-07-at-17.55.38.png" alt="Now there are only two boxes: The heading and the two paragraphs and list of the success criterion are in a red box, then non-normative content starts."> <figcaption class="img-caption"> Alternative order </figcaption> </figure> </div> <p>I would even argue to integrate the heading and the SC text even better, getting rid of the SC box and maybe letting go of the notes altogether, since they are basically mini-understandings inside the specification.</p><p>Now, this would not be a big deal, if it was just a little more confusing to me, but there are reports of other people finding the Understanding documents harder to use. I have been quoted “In Brief” information as if it were normative text by clients. I opened an issue in <a href="https://github.com/w3c/wcag/issues/3971">June</a>, and another one was opened in <a href="https://github.com/w3c/wcag/issues/3971">July</a>.</p><p>One seemingly helpful suggestion was to <a href="https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html#success-criterion">link to the Success Criterion box directly (Example)</a> by adding <code>#success-criterion</code> to the URLs that I share. But that hides the name of the Success Criterion and its number[^ Why are the numbers so small, btw?] and is disorienting. It also removes the branding from the link which is important to say “See, I’m not guessing, there is official information about this.” and helps with credibility.</p><h3 id="2-content-information">2. Content/Information</h3> <p>Let’s talk about the actual content of the “In Brief” sections. Let me re-quote the 1.3.1 Info and Relationships one for you:</p><ul><li><strong>Goal: </strong>Information about content structure is available to more people.</li><li><strong>What to do: </strong>Use code to reinforce relationships and information conveyed through presentation.</li><li><strong>Why it's important: </strong>People can adapt the presentation to suit their needs while preserving the original meaning.</li></ul><p>I picked this SC basically at random. This is not a good explanation of why 1.3.1 Info and Relationships is important at all, or how to do it. It uses jargon language that is also vague. It also does not cover the whole SC.</p><p>And this is a pretty easy to explain success criterion:</p><p><em>Information that is clear for people who can see the screen must be either available in text or in (HTML) code to allow assistive technologies to read this information. It also allows for adaption of the information to user’s needs. A heading must not only look like a heading, but be marked up like one. Screen reader users can then navigate from heading to heading, low vision users might decide to increase the size of headings or use specific colors to make headings easier to find.</em></p><p>Is this longer than the “In Brief” section? Yes, but it is also clearer for anyone reading it. Not only does it help to use full sentences, it also uses concrete examples and little jargon. This can be word-smithed for sure, it’s literally a first draft.</p><p>I also think that the goal of putting the focus on disabled people’s lived experiences is not really met with the “In Brief” as it is. 1.3.1 above talks about “more people” and that “people can adapt”. Disabilities are not even mentioned in many “In Brief” sections. Sometimes assistive technologies are used in the abstract without concrete use cases. <a href="https://www.w3.org/WAI/WCAG22/Understanding/orientation">SC 1.3.4 Orientation (AA)’s “In Brief”</a> does a good job with its “Why it’s important” sentence: “Wheelchair users and others may have devices mounted in a fixed orientation.” Expand it to “Wheelchair users and others may have devices mounted in a fixed position, so allow that your content can be viewed in both, portrait and landscape orientation.”</p><h3 id="3-audience">3. Audience</h3> <p>And that brings me to the third point: What is the audience of the Understanding documents? For years, the audience was people who had the need to distinguish between pass and fail states. But they also helped clients to understand why we would fail something.</p><p>Having the SC and then supporting it with examples and different fail/pass cases is incredibly useful. It was never the most clear and best tool for the job, but it worked. Practitioners included links to it in audit reports and clients found it useful.</p><p>Since the change to “In Brief”-first listing, I had colleagues and clients confused. <a href="https://github.com/w3c/wcag/issues/3971#issuecomment-2275817656">People share user styles to hide the section.</a> </p><p>The Understanding documents try to be all things to all people, but they must be concise and helpful for conformance. </p><h2 id="what-to-do">What to do?</h2> <p>Having an overview for users who are new to WCAG without all the baggage of the Understanding documents is a great idea. And it already exists somewhat in the <a href="https://www.w3.org/WAI/standards-guidelines/wcag/new-in-21/">What's New in WCAG 2.1</a> and <a href="https://www.w3.org/WAI/standards-guidelines/wcag/new-in-22/">What's New in WCAG 2.2</a> resources, which are specifically created for people new to WCAG. (Here I also prefer the WCAG 2.1 approach of showing the Success Criteria first and then explaining it.)</p><p>In any case, WCAG 2 and its Understanding documents are not the right place to start – <a href="https://www.w3.org/WAI/people-use-web/">How People with Disabilities Use the Web</a> is a great resource to understand why accessibility is so multi-faceted. It’s a much better start. And yes, integrating these resources in the Understanding, or at least linking to them, is useful for many people.</p><p>I’m all for making the Understanding documents easier to understand, but adding more content is not the best way to go about. Every Understanding page has an intent section that already does a good job of explaining what the SC does:</p><blockquote> The intent of this Success Criterion is to ensure that information and relationships that are implied by visual or auditory formatting are preserved when the presentation format changes. For example, the presentation format changes when the content is read by a screen reader or when a user style sheet is substituted for the style sheet provided by the author. <footer> <a href="https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html#intent">Understanding 1.3.1 Info and Relationships (A), Intent</a> </footer> </blockquote> <p>I think it’s clear that some de-jargoning and using simpler sentence structure would meet the goal of making the Understanding pages easier to understand without sacrificing their utility.</p><p>I think explaining WCAG success criteria <em>in brief</em> is not a good proposition in the first place. The Success Criteria are of varying complexity, but they all deserve that interested people read and analyze them. Sure, the approach to actually explaining WCAG SCs in detail (like I did for <a href="https://yatil.net/blog/non-text-contrast-in-detail-ui-components">1.4.11 Non-Text Contrast (User Interface Components)</a> recently) will take them more time, but they also will have understood more of the nuance of the SC. There I start with rewriting the relevant part of the SC into more prose and then analyzing every part of the wording. This matters because it helps to form an understanding of how WCAG works.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="other-examples">Other examples</h2> <h3 id="sc1-2-2-captions-prerecorded">SC1.2.2 Captions (Prerecorded)</h3> <p>Several days ago, I posted my problems with the <a href="https://www.w3.org/WAI/WCAG22/Understanding/captions-prerecorded">“In Brief” of SC 1.2.2 Captions (Prerecorded) (A)</a> <a href="https://yatil.social/@yatil/113044626131243920">on Mastodon</a>. It reads:</p><ul><li><strong>Goal: </strong>Videos can be played with captions.</li><li><strong>What to do: </strong>Provide synchronized text for audio content in existing videos.</li><li><strong>Why it's important: </strong>People who are deaf or hard of hearing can understand audio in videos.</li></ul><p>Here, I especially don’t like that it says, “People who are deaf or hard of hearing can understand audio in videos.” The whole SC is about an alternative for the audio in videos. It is about making information in the audio of videos perceivable[^ In my experience, mixing perceivable and understandable when explaining WCAG concepts can lead to confusion, too. I try my best to use “perceivable” when explaining SCs/issues in the Perceivable principle, and reserve “understand” for the Understanding principle.] for d/Deaf and hard of hearing individuals.</p><p>In addition, “synchronized text” is more jargon than captions or subtitles. I can understand that you don’t want to repeat “captions” in all three sentences. But the uniformity of the advice is a self-afflicted constraint. “Videos can be played with captions” sounds a little like a technical problem, however, providing captions for media needs planning, some design decisions, and the infrastructure to make it work.</p><h3 id="sc-2-5-8-target-size-minimum-and-2-5-5-target-size-enhanced">SC 2.5.8 Target Size (Minimum) and 2.5.5 Target Size (Enhanced)</h3> <p>For <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum">SC 2.5.8 Target Size (Minimum) (AA)</a>, the “In Brief” section reads (as pointed out <a href="https://yatil.social/@yatil/113034561581158131">on Mastodon, too</a>):</p><ul><li><strong>Goal:</strong> Make controls easier to activate.</li><li><strong>What to do:</strong> Ensure targets meet a minimum size or have sufficient spacing around them.</li><li><strong>Why it's important:</strong> Some people with physical impairments cannot click small buttons that are close together.</li></ul><p>For <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum">SC 2.5.5 Target Size (Enhanced) (AAA)</a>, the “In Brief” section reads:</p><ul><li><strong>Goal:</strong> Controls can be operated more easily, especially on touch screens.</li><li><strong>What to do:</strong> Make custom targets at least 44 by 44 pixels.</li><li><strong>Why it's important:</strong> Some people cannot tap small objects.</li></ul><p>Again it uses jargon, “targets”, “minimum size”, “sufficient spacing”. The enhanced even says it applies to “custom targets”, something that is not defined or explained anywhere. And instead of naming disabilities that are concrete, it’s “some peopled” again. People with hand tremors or spasms are good examples of people who depend on large targets, whether they click or tap.</p><p>Minimum even names an exception as part of the “In Brief” which I’m not a fan of. Exceptions are compromises, not part of the guidance that I would expect on such an intro-level. </p><h2 id="updates">Updates</h2> <ul><li>September 8th, 2024: Added second other example.</li></ul> ]]>
    </description>
    </item>
    <item>
    <title>WCAG’s A and AA distinction is mostly academic</title>
    <link>https://yatil.net/blog/wcags-a-and-aa-distinction-is-mostly-academic</link>
    <guid>https://yatil.net/blog/wcags-a-and-aa-distinction-is-mostly-academic</guid>
    <pubDate>Sat, 24 Aug 2024 18:20:00 +0200</pubDate>
    <description>
    <![CDATA[ <p><a href="https://mastodon.social/@SteveFaulkner/113010547157869012">On Mastodon, Steve Faulkner shared a link</a> to a <a href="https://github.com/w3c/wcag/issues/3889">GitHub discussion around the A, AA, and AAA levels of WCAG</a> (Web Content Accessibility Guidelines). In it, the question is asked what makes a Success Criterion (SC) A, AA, or AAA. Basically, the question is what criteria are used to decide the level for any specific Criterion.</p><p>The “<a href="https://www.w3.org/WAI/WCAG22/Understanding/conformance#levels">Understanding Levels of Conformance</a>” section in the Understanding documents explains which considerations contributed to the decision for each criterion (paraphrased): </p><ul><li>Is this SC essential for access overall?</li><li>Can the SC be achieved by all websites and apps?</li><li>How easy is it to learn or address the issues that this SC uncovers?</li><li>Will meeting the SC require changes to the design or functionality of the site or app?</li><li>Is it possible to work around requirements?</li></ul><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>Importantly, not all criteria apply to all Success Criteria. But here are some examples:</p><ul><li><a href="https://www.w3.org/TR/WCAG22/#keyboard">2.1.1 Keyboard</a> is Level A despite the effort it can take to implement keyboard navigation and the occasional impact on design and functionality because keyboard access is absolutely fundamental for accessibility. There are very limited workarounds when keyboard access is unavailable.</li><li><a href="https://www.w3.org/TR/WCAG22/#images-of-text">1.4.5 Images of Text</a> is Level AA because it can change the design, it can sometimes be difficult to change from an textual image to “real text”, depending on the tools used, and text alternatives (and more recently OCR) can be valid workarounds.</li><li><a href="https://www.w3.org/TR/WCAG22/#sign-language-prerecorded">1.2.6 Sign Language (Prerecorded)</a> is Level AAA because recording and embedding sign language information can be a significant effort and is probably unrealistic for many websites (for example news sites that are frequently updated). Most sign language users can also perceive written information.</li></ul><p>While this is easy enough to do when creating the SCs, the levels lose their usefulness when clients try to use them as signifiers of what is more important. Because the reality is: everything on the level you want to conform to is equally critical.</p><p>The Levels are also the result of a political discussion during the creation of WCAG, there is some amount of back and forth that happens when new SCs are introduced, and the group needs to come to a consensus. A W3C member might feel strongly that an SC is so difficult to implement that it should be Level AAA. The group has only two options: Try to change the SC until the member agrees to move it to a lower level, or accept the AAA designation.</p><p>In practice, it makes almost no difference for disabled people in which order issues are fixed, with the following exception:</p><p><a href="https://www.w3.org/TR/WCAG22/#cc5">Non-interference SCs</a> are four SCs that are listed in WCAG that create barriers so significant, that they affect the ability to use the page overall. Those SCs are (order as in WCAG):</p><ul><li><a href="https://www.w3.org/TR/WCAG22/#audio-control">1.4.2 Audio Control</a></li><li><a href="https://www.w3.org/TR/WCAG22/#no-keyboard-trap">2.1.2 No Keyboard Trap</a></li><li><a href="https://www.w3.org/TR/WCAG22/#three-flashes-or-below-threshold">2.3.1 Three Flashes or Below Threshold</a></li><li><a href="https://www.w3.org/TR/WCAG22/#pause-stop-hide">2.2.2 Pause, Stop, Hide</a></li></ul><p>So, if anything, failures concerning those SCs should have preference over others. As for the A/AA distinction, it’s mostly academic: Most would agree that conforming only to Level A is not good enough to ensure that most disabled users have basic access. Level AA (which means meeting all Level A and AA criteria) is widely considered the absolute baseline. And that includes laws and policies around the world. </p><p>In my final talk, “<a href="https://talks.yatil.net/lbT3wo/web-accessibility-is-broken-its-time-to-fix-it">Web Accessibility is broken. It’s time to fix it.</a>”, I proposed gentle WCAG reform (instead of the W3CAG revolution). <a href="https://www.youtube.com/watch?v=PZYiweHuo_I">Video here.</a> My suggestions included combining the A and AA Levels.</p><p>AAA Level SCs should be checked if they are more achievable today than when they were introduced and either imported into the standard (making them A/AA) or exported into modules that individual websites could then choose to conform to. </p><p>For the above-mentioned Sign Language Success Criterion, websites would conform to WCAG 2.5+Sign Language. The modules could be listed in the accessibility statement of the site, and users who need the information would know better which features they could expect.</p><p>This approach would also allow getting rid of some redundant success criteria: <a href="https://www.w3.org/TR/WCAG22/#audio-description-or-media-alternative-prerecorded">1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A)</a> requires a audio description or a transcript with described audio, while <a href="https://www.w3.org/TR/WCAG22/#audio-description-prerecorded">1.2.5 Audio Description (Prerecorded) (Level AA)</a> requires audio description, essentially removing the option to use a descriptive transcript instead.</p><p>Similarly, <a href="https://github.com/w3c/wcag/issues/3984">another contested issue</a> could be simplified: <a href="https://www.w3.org/TR/WCAG22/#labels-or-instructions">3.3.2 Labels or Instructions (Level A)</a> technically only requires that labels need to be present, <a href="https://www.w3.org/TR/WCAG22/#headings-and-labels">2.4.6 Headings and Labels (Level AA)</a> requires that the labels are also actually descriptive. In practice, because most conformance is aiming at Level AA anyway, labels need to be descriptive[^ And yes, it’s a good question if the distinction of these two SCs is <em>really</em> useful…].</p><p>In my trainings, I only teach levels as conformance levels and not really elaborate on individual SCs Level rating. When I point out what the Conformance Levels do, my short, easy to learn explanation is:</p><ul><li>A: Removes many barriers for many disabled people.</li><li>AA: Removes most barriers for most disabled people.</li><li>AAA: Removes additional barriers.</li></ul><p>It’s not the most clear and comprehensive way to phrase it. But it gives student’s enough to not worry about individual levels. It also helps explain why A conformance is not enough, and AA conformance does not mean that your website/app is “accessible”.</p> ]]>
    </description>
    </item>
    <item>
    <title>The infuriating inefficiency of accessibility audits</title>
    <link>https://yatil.net/blog/the-infuriating-inefficiency-of-accessibility-audits</link>
    <guid>https://yatil.net/blog/the-infuriating-inefficiency-of-accessibility-audits</guid>
    <pubDate>Sat, 27 Jul 2024 16:40:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Accessibility audits are the bread and butter of every accessibility consultancy. It’s an easy to package product that clients have learned to ask for and buy. They have expectations on the deliverables and the form of an audit. Audits are usually also thorough, following established international guidelines (usually the <a href="https://www.w3.org/TR/WCAG/">Web Content Accessibility Guidelines</a>).</p><p><em>Note: I think this article applies to all kinds of accessibility audits, whether they are called “review” or “check” or “audit”.</em></p><section class="toc" aria-labelledby="toc"><h2 id="toc">Table of Contents</h2><ul> <li><a href="#whats-this-all-about">What’s this all about?</a></li> <li><a href="#the-cost-of-fixing-accessibility-bugs">The cost of fixing (accessibility) bugs</a></li> <li><a href="#avoiding-accessibility-bugs-in-the-first-place">Avoiding accessibility bugs in the first place</a></li> <li><a href="#audit-reports-are-often-long-and-complicated">Audit reports are often long and complicated</a></li> <li><a href="#why-not-fix-it-for-them">Why not fix it for them?</a></li> <li><a href="#what-you-can-do-to-expedite-audits">What you can do to expedite audits</a></li> </ul></section><h2 id="whats-this-all-about">What’s this all about?</h2> <p>Audit reports can be very long with dozens of issues and how to solve them. They include simple failures like missing alternative texts or single unreachable buttons, as well as more fundamental issues like a color scheme that produces low-contrast text or UI elements that are difficult to make accessible. </p><p>An example of the latter is what I call “overloading UI elements”: Modern search fields that you see at the top of many websites, especially in e-commerce, are often overloaded. They look like a simple search field, but in reality are a button that opens a dialog with promotions and once you start typing it works like a suggestion combo box. Three UI elements looking like one different UI element.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="the-cost-of-fixing-accessibility-bugs">The cost of fixing (accessibility) bugs</h2> <p>In 2002, the <em>U.S. Department of Commerce</em>’s <em>National Institute of Standards and Technology</em> (NIST) published a report called “The Economic Impacts of Inadequate Infrastructure for Software Testing”[^ <a href="https://www.nist.gov/el/economic-impact-studies">Find a PDF version of the report linked on the NIST website (probably not an “accessible” PDF)</a>.]. This NIST report looked into where testing would be most efficient to find and correct bugs during a software life cycle.</p><p>The findings and methodology of the report are interesting, and I would recommend taking a look at it. Table 5-1 is very illustrative of the problems of correcting errors late in development:</p><div class="block-raw"><table> <caption> <strong> Table 5-1. Relative Cost to Repair Defects When Found at Different Stages of Software Development (Example Only) </strong> <br /> X is a normalized unit of cost and can be expressed terms of person-hours, dollars, etc. </caption> <thead> <tr> <th>Requirements Gathering and Analysis/ Architectural Design</th> <th>Coding/Unit Test</th> <th>Integration and Component/RAISE System Test</th> <th>Early Customer Feedback/Beta Test Programs</th> <th>Post-product Release</th> </tr> </thead> <tbody> <tr> <td class="center tabular-nums">1X</td> <td class="center tabular-nums">5X</td> <td class="center tabular-nums">10X</td> <td class="center tabular-nums">15X</td> <td class="center tabular-nums">30X</td> </tr> </tbody> </table></div><p>Accessibility audits almost always happen after launch, as an afterthought. That means that errors that could have been found in the requirement analysis are 30&nbsp;times harder to fix[^ Note that this is a “counterfactual” or hypothetical example. The report goes into detail to show that different companies in different circumstances have different factors here. The main point is that fixing <em>any</em> bug post-launch will be more costly than avoiding or fixing it beforehand.]. This makes accessibility audits seem very inefficient.</p><p>To address this, accessibility people recommend shifting testing to the left. Every accessibility issue that is discovered early pays off many, many times. Even more so if you avoid the issue outright. This is what table 5-2 from the report demonstrates:</p><div class="block-raw"><table> <caption> <strong> Table 5-2. Preliminary Estimates of Relative Cost Factors of Correcting Errors as a Function of Where Errors Are Introduced and Found (Example Only) </strong> </caption> <thead> <tr> <th rowspan="2">Where Errors are Introduced</th> <th colspan="5">Where Errors are Found</th> </tr> <tr> <th>Requirements Gathering and Analysis/ Architectural Design</th> <th>Coding/Unit Test</th> <th>Integration and Component/ RAISE System Test</th> <th>Early Customer Feedback/ Beta Test Programs</th> <th>Post-product Release</th> </tr> </thead> <tbody> <tr> <th>Requirements Gathering and Analysis/ Architectural Design</th> <td class="right tabular-nums">1.0</td> <td class="right tabular-nums">5.0</td> <td class="right tabular-nums">10.0</td> <td class="right tabular-nums">15.0</td> <td class="right tabular-nums">30.0</td> </tr> <tr> <th>Coding/Unit Test</th> <td></td> <td class="right tabular-nums">1.0</td> <td class="right tabular-nums">10.0</td> <td class="right tabular-nums">20.0</td> <td class="right tabular-nums">30.0</td> </tr> <tr> <th>Integration and Component/ RAISE System Test</th> <td></td> <td></td> <td class="right tabular-nums">1.0</td> <td class="right tabular-nums">10.0</td> <td class="right tabular-nums">20.0</td> </tr> </tbody> </table></div><p>Now, of course, some teams are quicker remediating issues later in the life cycle, but other teams are not. Every team has to find that balance for themselves. My observation is that most teams go from “let’s fix the errors in this report” to “this is tedious, how can we avoid making mistakes in the first place?” really quickly.</p><h2 id="avoiding-accessibility-bugs-in-the-first-place">Avoiding accessibility bugs in the first place</h2> <p>One of the frequent questions clients ask me is: “How would you address this issue?” In many instances, my response is that I would not have created this UI component/interaction/design in such an inaccessible way in the first place.</p><p>With the knowledge of the <a href="https://yatil.net/blog/wcag-2-guidelines-and-guardrails">guidelines of accessibility</a> in mind, a lot of the issues can be avoided by the decision to implement simpler, easier to code and test designs. That does not mean making designs and interactions less appealing, but taking the route of least resistance.</p><p>Some examples:</p><ul><li>Before the <code>&lt;dialog&gt;</code> element was widely available, instead of using custom-made and therefore complex and error-prone dialogs, I often opted for simpler solutions, like expandable sections on the page.</li><li>Instead of hand-coding a custom select box for styling, I would be content with changing the appearance of a native one.</li><li>Instead of dynamic error messages for forms, I’d let people submit the form and design the error messaging really well – with an overview list, the number of errors in the title, and links to the specific erroneous fields.</li></ul><p>I understand that not everyone is in the position to make these decisions, to trade fidelity for speed. But it feels that in a glossy Figma-driven world, many are not aware of easier options.</p><p>It’s essential that web designers and developers learn how to create simple, straight-forward experiences that are not always fancy. The goal is not to make websites boring – a common misconception about accessible websites – but allow time to do the important, complicated interactions right.</p><h2 id="audit-reports-are-often-long-and-complicated">Audit reports are often long and complicated</h2> <p>One of the most challenging tasks as an auditor is to communicate errors and fixes efficiently. I have made reviews that fit on a couple of pages and also in-depth audits of many web pages that spanned hundreds of report pages.</p><p>The reality is that the usefulness of an audit report is getting worse and worse after maybe the first dozen tested pages. What’s wrong there is wrong everywhere. These days, I test fewer and fewer pages if I can help it. This keeps audit reports shortish and also allows for easier remediation by clients.</p><p>I generally include:</p><ul><li>Essential and typical workflows: This could be “buying a thing in the shop and checking out” or “creating an account and interacting in a chat interface”, for example.</li><li>Important pages: Pages where people land on from external sources, including the home page, legal information, accessibility information, contact forms.</li></ul><p>I make clear that all issues are only examples and that I trust that the developers know their code best and find other instances. I usually also include consulting hours to work through open questions over time.</p><p>Keeping error descriptions brief and clear is also important. Most clients are uninterested in <em>why</em> something is broken, their goal is to fix it. Nevertheless, this is a great place to add some education into a report. Refer to the interactions of disabled people that are disturbed by the error and why it is important in one sentence or two.</p><p>Then give the most comprehensive solution that you can. It’s OK if that is “Change this implementation to follow this blog post[^ Who are we kidding, it’s 99% a link to <a href="https://adrianroselli.com">Adrian Roselli’s excellent blog</a>!]”. Or just a snippet of code. Make fixing errors not intimidating.</p><p>Remember that most designers and developers getting these reports are new to accessibility. That’s also the reason you have to explain the same concepts over and over again. Most web developers were not even in their teens when you taught alternative text in 1999.</p><p>Of course, these indirections lead to a heightened effort for accessibility: Auditors have to get access, understand the site, structure and conduct their testing, putting the results in an easy-to-understand document, and hand it over to explain to designers and engineers. And those people then have to translate it back for their needs.</p><h2 id="why-not-fix-it-for-them">Why not fix it for them?</h2> <p>Remediation as a service can certainly work in projects where no development team exists that regularly deploys updates. Smaller online shops come to mind. Sometimes embedding accessibility into larger organizations also helps to quicker translate the needs to fix accessibility internally.</p><p>But for the small project, a theme update or a new plugin can make the site inaccessible again. With larger projects, the risk is that people rely on the accessibility person’s expertise and not enough knowledge transfer happens to make accessibility stick.</p><p>In addition, the people working on the code already know it best. If they are not burdened by processes, they can often make fixes remarkably quick themselves.</p><p>There is no one-size-fits-all situation here. The approach that seems to work best for the teams I work with is a good review with details and then regular consulting check-ins to help them along the way. I have seen many teams getting self-sufficient really fast, learning along the way.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="what-you-can-do-to-expedite-audits">What you can do to expedite audits</h2> <p>Attempt to fix the basic accessibility issues. While <a href="https://yatil.net/blog/automated-testing-wont-solve-web-accessibility">automation will not fix all your accessibility issues</a>[^ and <a href="https://yatil.net/blog/ai-wont-solve-accessibility">neither will “AI”</a>], <a href="https://yatil.net/blog/accessibility-action">a good number of technical errors fall into very easily detectable categories</a>. Getting these top issues fixed will make a real difference to people. Think about hiring an accessibility person for a few hours to talk you through the results of your automated testing and suggest fixes. This can also help to guide you to the right path when your ideas are wrong or overly complicated.</p><p>Going through this process also helps to define what an audit might entail and makes good sample decisions easier.</p><p>It’s also important to not be minimalist when fixing issues. Don’t discuss what the minimum is that you need to do to just pass WCAG. When we recommend a best practice solution, implement it along the guidance. It’s easy to split hairs whether a Success Criterion is really failed or not, but that energy is often spent better elsewhere. The same goes for auditors as well. Try not to be overly pedantic, and be patient and compassionate when reporting issues. It helps nobody to be antagonistic. Resolving high-impact issues is more valuable than the long tail of little technical infractions.</p> ]]>
    </description>
    </item>
    <item>
    <title>In detail: 1.4.11 Non-Text Contrast (User Interface Components)</title>
    <link>https://yatil.net/blog/non-text-contrast-in-detail-ui-components</link>
    <guid>https://yatil.net/blog/non-text-contrast-in-detail-ui-components</guid>
    <pubDate>Sun, 23 Jun 2024 19:30:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>The Web Content Accessibility Guideline’s (WCAG) <a href="https://www.w3.org/TR/WCAG22/#non-text-contrast">Success Criterion 1.4.11 Non-Text Contrast</a> is one of the harder to understand requirements. Here’s a deep-dive into the details of it, including practical examples, concerning only its “User Interface Components” section.</p><p>Because, of course, this SC has multiple sections:</p><section class="entry-sc-block"> <header> <p><a href="https://www.w3.org/TR/WCAG22/#non-text-contrast">1.4.11 Non-Text Contrast</a> (<a href="https://www.w3.org/WAI/WCAG22/Understanding/non-text-contrast">Understanding</a>)</p> <p>(Level AA)</p> </header> <div> <p>The visual <a href="https://www.w3.org/TR/WCAG22/#dfn-presentation" title="rendering of the content in a form to be perceived by users">presentation</a> of the following have a <a href="https://www.w3.org/TR/WCAG22/#dfn-contrast-ratio" title="(L1 + 0.05) / (L2 + 0.05), where">contrast ratio</a> of at least 3:1 against adjacent color(s):</p><ul><li><p><strong>User Interface Components: </strong>Visual information required to identify <a href="https://www.w3.org/TR/WCAG22/#dfn-user-interface-components" title="a part of the content that is perceived by users as a single control for a distinct function">user interface components</a> and <a href="https://www.w3.org/TR/WCAG22/#dfn-states" title="dynamic property expressing characteristics of a user interface component that may change in response to user action or automated processes">states</a>, except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author;</p></li><li><p><strong>Graphical Objects: </strong>Parts of graphics required to understand the content, except when a particular presentation of graphics is <a href="https://www.w3.org/TR/WCAG22/#dfn-essential" title="if removed, would fundamentally change the information or functionality of the content, and information and functionality cannot be achieved in another way that would conform">essential</a> to the information being conveyed.</p></li></ul> </div> </section><p>Rewriting this Success Criterion for UI components only could look like this:</p><p><em>Visual information required to identify user interface components and states must have a contrast ratio of at least 3:1 against adjacent color(s), except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author.</em></p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="a-practical-example">A practical example</h2> <p><a href="https://pimpmytype.com/bio/">Oliver Schöndorfer</a>, who runs <a href="https://pimpmytype.com">Pimp My Type</a> and its associated <a href="http://youtube.com/@pimpmytype">YouTube channel</a>, posted the following image to <a href="https://www.linkedin.com/posts/oliver-schoendorfer_a11y-activity-7203415633898692610-GiSx">LinkedIn</a> recently, accompanied by the question:</p><blockquote> Does this pass WCAG 2.2 color contrast, dear #A11Y and UI design folks? I’m relating to Success Criterion 1.4.11. </blockquote> <div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/non-text-contrast-in-detail-ui-components/a5d0e23d01-1719163790/olivers-example.jpg" alt="A mock-up of a login form, with a “Your email” and password fields, the inside of the form fields is white, the outside cream colored. The fields also have a light grey border. Both form fields have a placeholder text of “Email” (!sic). The contrast between the background colors and the border is highlighted: 2.87:1 between the outside color and the border, 3.41:1 between the border and the white form field background color. The form also has a continue button and create account and forgot password links."> <figcaption class="img-caption"> Oliver’s illustration </figcaption> </figure> </div> <p>The question is (in my words): <strong>If a UI component has a border and the contrast is at least 3:1 against only one side of the border, does the UI element still meet WCAG SC 1.4.11 Non-Text Contrast?</strong></p><p>To be able to demonstrate how to apply the success criterion, I have recreated the form in HTML and CSS (<a href="https://codepen.io/yatil/pen/ZENyxJL/628d85a5a0fc6910a8e638d615cfccc7">Codepen</a>):</p><div class="block-raw"><p class="codepen" data-height="450" data-theme-id="41003" data-default-tab="result" data-slug-hash="ZENyxJL" data-pen-title="Login" data-user="yatil" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;"> <span>See the Pen <a href="https://codepen.io/yatil/pen/ZENyxJL"> Login</a> by Eric Eggert (<a href="https://codepen.io/yatil">@yatil</a>) on <a href="https://codepen.io">CodePen</a>.</span> </p> <script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></div><p>I tried to stay true to the original without being pixel perfect. I also had to guesstimate the colors from the compressed social media JPG. In the end, I decided to use the following colors:</p><ul><li>Border color: <code>#9b929b</code></li><li>Input background: <code>#ffffff</code> aka white, a <a href="https://contrast-ratio.org/#%239b929b-on-white">contrast of 3:1 against the border</a></li><li>Dialog background: <code>#f8f3e2</code>, which has a <a href="https://contrast-ratio.org/#%239b929b-on-%23f8f3e2">contrast of 2.7:1 against the border</a></li></ul><p>With this groundwork done, we can dive into seeing if the form fields meet the <strong><em>minimum</em></strong> contrast requirements of WCAG. Notice how we don’t even look at the question Oliver posed for quite some time, as we first need to look into the possibility that this Success Criterion doesn’t even apply:</p><h2 id="does-it-meet-exceptions">Does it meet exceptions?</h2> <p>The first step of seeing if a Success Criterion even needs to be looked at is to check exceptions. If the UI component (in this case) is covered by an exception, it’s an automatic pass, and we don’t need to think about it further. Let’s remind ourselves what the exceptions are in this case:</p><p><em>…, except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author.</em></p><h3 id="inactive-component">Inactive component?</h3> <p>The graphic does not provide us any information about the interactivity of the input fields. It’s unclear if they are “inactive”, but I think for the question to make most sense, we can assume that this is an active login form. This exception does not apply. </p><p>As a reminder: Inactive components in HTML are inputs that have the <code>disabled</code> attribute or are made to work like a native component that has it – no mouse or keyboard or other interaction, and no inclusion in the accessibility tree.</p><h3 id="user-agent-component">User agent component?</h3> <p>This exception is very narrow, and its goal is to cover UI components where developers have no influence over the rendering (let’s say a native file or color picker). Sometimes developers can also take standard components to prototype, or for quick development of unexpected functionality. However, once you modify the UI element in any way, you’re on the hook for the proper color contrast, this includes changing the color of the text. </p><p>In our case, this exception also does not apply, as the input forms are designed (colors, borders, rounded corners).</p><h2 id="what-visual-information-is-required">What visual information is required?</h2> <p>That leaves us with the rest of the requirement:</p><p><em>Visual information required to identify user interface components and states must have a contrast ratio of at least 3:1 against adjacent color(s), …</em></p><p>The question that we have to ask ourselves is: Is the border visual information required in the context it is in? In most ordinary forms, I would say that this is the case. Where to click and see where form fields are is essential to filling out the form. Forms are usually not universally designed: Sometimes an associated field is below its label, sometimes next to it, and occasionally the form field is above the label.</p><p>But this is a very specific form: A login form. And it is in a dialog. As <a href="https://www.linkedin.com/feed/update/urn:li:activity:7203415633898692610?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7203415633898692610%2C7203699986226659329%29&amp;dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287203699986226659329%2Curn%3Ali%3Aactivity%3A7203415633898692610%29">Patrick H. Lauke wrote in a LinkedIn comment</a> (slightly edited for clarity):</p><blockquote> Even if there was no contrast between the border and the inner and outer colour, it would arguably pass because the placeholder text there gives a hint that there’s an input field. So there’s no hard need for the border to identify/perceive the presence of the field. </blockquote> <p>To demonstrate this, I’ve removed all color from the login form:</p><div class="block-raw"><p class="codepen" data-height="450" data-theme-id="41003" data-default-tab="result" data-slug-hash="bGyMdXE" data-pen-title="Login no colors and lines" data-user="yatil" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;"> <span>See the Pen <a href="https://codepen.io/yatil/pen/bGyMdXE"> Login no colors and lines</a> by Eric Eggert (<a href="https://codepen.io/yatil">@yatil</a>) on <a href="https://codepen.io">CodePen</a>.</span> </p> <script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></div><p>Without the border, the placeholders together with the labels and the positioning act as the visual information to identify the form fields. The border isn’t even needed, so we would determine that this passes the Success Criterion. This is why the context is critical, and also why it is so tough to automate accessibility.</p><p>Just to be clear: <strong>Passing WCAG does <em>not</em> mean that it is a good design. It just means that you did meet the lowest bar.</strong></p><h3 id="removing-the-placeholder-text">Removing the placeholder text</h3> <p>In accessibility, we generally argue against placeholder texts, as demonstrated by this <a href="https://www.w3.org/WAI/GL/low-vision-a11y-tf/wiki/Placeholder_Research">placeholder text research by the Low Vision Accessibility Taskforce of W3C</a>. And while placeholders have the most impact when they are replacing labels, in this instance they are completely redundant to the email and password labels.</p><p>If we remove the placeholder, it becomes much less clear where to click. Yes, the most likely position of the form fields is underneath the labels, but that would be a pure guess, and guesswork like this means that the visual information required to identify the UI component is missing.</p><div class="block-raw"><p class="codepen" data-height="450" data-theme-id="41003" data-default-tab="result" data-slug-hash="GRadoEM" data-pen-title="Login no colors and lines, no placeholder" data-user="yatil" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;"> <span>See the Pen <a href="https://codepen.io/yatil/pen/GRadoEM"> Login no colors and lines, no placeholder</a> by Eric Eggert (<a href="https://codepen.io/yatil">@yatil</a>) on <a href="https://codepen.io">CodePen</a>.</span> </p> <script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></div><p><strong>So this is when Oliver’s question becomes relevant!</strong> We’ve identified that the borders are indeed the “visual information required to identify” the UI component if there are no placeholders. With colors and borders added back in, it looks like this:</p><div class="block-raw"><p class="codepen" data-height="450" data-theme-id="41003" data-default-tab="result" data-slug-hash="PoveKQQ" data-pen-title="Login with colors and lines, no placeholder" data-user="yatil" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;"> <span>See the Pen <a href="https://codepen.io/yatil/pen/PoveKQQ"> Login with colors and lines, no placeholder</a> by Eric Eggert (<a href="https://codepen.io/yatil">@yatil</a>) on <a href="https://codepen.io">CodePen</a>.</span> </p> <script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></div><p>Next step! The requirement says that the UI component <em>must have a contrast ratio of at least 3:1 against adjacent color(s)</em>. </p><p>One misunderstanding that I have seen in the LinkedIn comment underneath Oliver’s post was the assertion that the border must have a minimum 3:1 contrast ratio against <em>both</em>, the background of the input field and the background of the dialog. If that was the case, this would fail because we (deliberately) picked one color that is less than 3:1.</p><p>But this is not what WCAG requires (as the bare minimum) here. The border is not the UI component, the input field is, so this is about colors adjacent to the input field. Because WCAG is written in a way that works for all technologies, it does not care about where the CSS for the border is actually applied to: </p><p>An <code>&lt;input&gt;</code> element with a border would be judged the same as a border-less <code>&lt;input&gt;</code> element with a <code>&lt;span&gt;</code> around it, where the border CSS is applied to the <code>&lt;span&gt;</code>. It’s always about how the complete control is perceived by a user.</p><p>To be conforming, we look for a 3:1 contrast edge. That edge is there between the background of the input field and the border. </p><p>The easiest way to verify that it’s a sufficient edge is to “level out” non-conforming colors. The dialog background color and the border color could be the same color (with a contrast of 3:1 to the input field background) as far as we’re concerned, it would not change how we determine conformance. Colors with less than the minimum contrast are always insufficient, no matter if that contrast is 1:1 (same colors) or 2.99:1 (different colors).</p><p>So with the dialog background color being the same as the border color, we get this outcome:</p><div class="block-raw"><p class="codepen" data-height="450" data-theme-id="41003" data-default-tab="result" data-slug-hash="ZENoJmz" data-pen-title="Login, dialog background is border color" data-user="yatil" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;"> <span>See the Pen <a href="https://codepen.io/yatil/pen/ZENoJmz"> Login, dialog background is border color</a> by Eric Eggert (<a href="https://codepen.io/yatil">@yatil</a>) on <a href="https://codepen.io">CodePen</a>.</span> </p> <script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></div><p>Because the input fields are easy to recognize here, we can be sure that they conform to WCAG. (Yes, in this demonstration, the contrast of the text does not meet the contrast ratio, but this is irrelevant for finding out the impact of the border.)</p><h3 id="why-does-it-say-adjacent-color-s">Why does it say <em>adjacent color(s)</em>?</h3> <p>Depending on your use case, you might have several adjacent colors instead of one. Imagine the input fields had a background gradient for some reason. Some adjacent colors would be insufficient. This can make the determination if a user interface component meets WCAG much more complicated. (And you thought this was already a long article!)</p><p>In that case, you would mostly do the same as above but for every color change: If the color change is insufficient, you disregard it and “level it out”. Then you look at the resulting shape: Would it be possible to recognize the user interface element? Then it passes.</p><h2 id="is-this-good-design">Is this good design?</h2> <p>WCAG does not define what good design is. Its goal is to have Principles and Guidelines that guide you towards an accessible result. The Success Criteria are guardrails that make sure you’re not completely on the wrong track. (See: <a href="https://yatil.net/blog/wcag-2-guidelines-and-guardrails">WCAG 2: Guidelines and Guardrails</a>)</p><p>In most cases, doing the bare minimum is not making it particularly easy for your users to interact with your content. It only ensures that people with disabilities are not entirely shut out. I would recommend always using a more contrasting color for the border, and also suggest using a 2 pixel wide border:</p><div class="block-raw"><p class="codepen" data-height="450" data-theme-id="41003" data-default-tab="result" data-slug-hash="wvbjrWO" data-pen-title="Login improved" data-user="yatil" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;"> <span>See the Pen <a href="https://codepen.io/yatil/pen/wvbjrWO"> Login improved</a> by Eric Eggert (<a href="https://codepen.io/yatil">@yatil</a>) on <a href="https://codepen.io">CodePen</a>.</span> </p> <script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></div><h3 id="some-additional-considerations">Some additional considerations</h3> <p>If you can, optimize the design before implementation. That includes the positioning of the links for creating an account and requesting a new password. In the design above, they are underneath the “Continue” button, which means some users that navigate through the page linearly with the keyboard or screen readers don’t encounter them until after the form has already effectively ended with the “Continue” button.</p><p>To make these links easy to discover, I put a link next to the login heading that says, “or register”. The “Forgot password?” link is put directly after the password field. In addition, I reinstated the underlines on the links and used CSS <code>text-underline-offset</code> to allow for a little more breathing room between the link text and the underline.</p><div class="block-raw"><p class="codepen" data-height="450" data-theme-id="41003" data-default-tab="result" data-slug-hash="RwmyLOd" data-pen-title="Login optimized" data-user="yatil" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;"> <span>See the Pen <a href="https://codepen.io/yatil/pen/RwmyLOd"> Login optimized</a> by Eric Eggert (<a href="https://codepen.io/yatil">@yatil</a>) on <a href="https://codepen.io">CodePen</a>.</span> </p> <script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></div><p>Avoid putting form related information after the submit button of a form, common instances where this happens are coupon code fields or terms and condition checkboxes. All information to complete a form must be available before submitting it.</p> ]]>
    </description>
    </item>
    <item>
    <title>“AI” won’t solve accessibility</title>
    <link>https://yatil.net/blog/ai-wont-solve-accessibility</link>
    <guid>https://yatil.net/blog/ai-wont-solve-accessibility</guid>
    <pubDate>Fri, 05 Apr 2024 14:30:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>In our tech-focused society, there is this ever present notion that “accessibility will be solved by some technology”. But it won’t. Making things accessible is a fundamentally <em>human</em> challenge that needs <em>human</em> solutions in <em>human</em> contexts. <a href="https://yatil.net/blog/automated-testing-wont-solve-web-accessibility">I wrote about automated testing before.</a></p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>And because the current technology en vogue is “AI”, currently some people float “AI” as the way to make accessibility happen, and not just “improve some aspects” or “help some users to get to better information”, but in the sense of “nobody will need to know anything about accessibility, as AI will make it irrelevant”.</p><p>This is a dangerous proposal. In her book <a href="https://wwnorton.com/books/9781324036661">Against Technoableism</a>, Ashley Shew outlines how accessibility “solutions” are often forced onto disabled people by nondisabled people who do not share the experience and think that they know better.[^ Disclaimer: While I have a history of being disabled (child-age asthma), I would not consider me currently disabled as it was only a temporary disability.]</p><p>A few weeks ago, Jacob Nielsen formulated the following idea in his ill-advised column:</p><blockquote> I foresee a much more radical approach to generative UI to emerge shortly — maybe in 5 years or so. In this second-generation generative UI, the user interface is generated afresh every time the user accesses the app. Most important, this means that different users will get drastically different designs. [… F]reshly generated UIs also mean that the experience will adapt to the user as he or she learns more about the system. For example, a more simplified experience can be shown to beginners, and advanced features surfaced for expert users. <footer> <a href="https://archive.is/lpAJd">Jacob Nielsen: Accessibility Has Failed: Try Generative UI = Individualized UX (archived)</a> </footer> </blockquote> <p>And now <a href="https://ischool.umd.edu/directory/gregg-vanderheiden/">Gregg Vanderheiden</a> writes along the same lines on the Accessibility Guidelines Working Group[^ The Accessibility Guidelines Working Group (AG WG) is the place that develops all W3C Accessibility Guidelines that are not ARIA related. It’s the successor/renaming of the original Web Content Accessibility Guidelines Working Group or short WCAG WG.] mailing list, the group he formerly chaired:</p><blockquote> You [Patrick H. Lauke] asked — when does it end? <br><br>wow — I hope it ends with us not having to do anything (or almost nothing) with regard to accessibility regulations for ICT because each individual gets information and interface presented to them that is optimized for them as an individual ! <footer> <a href="https://lists.w3.org/Archives/Public/w3c-wai-gl/2024AprJun/0015.html">Gregg Vanderheiden: Re: AI and the future of Web accessibility Guidelines</a> </footer> </blockquote> <p>This is a dangerous and impractical idea for many reasons, including:</p><ul><li>Consistent user interfaces are easy to use and remember. User interfaces that change shape or hierarchy when the user interacts with them will make them harder to use. </li><li>User Interfaces are designed with intention[^ at least they should be], they are to guide users to a specific outcome. An “AI” cannot know a certain intention, it might come up with interfaces that are harder to use.</li><li>How dynamic would those adaptions be? Would a website look different when I get there with a migraine? And if so, will the generated UI that I need to learn be better for me, or would I be done with my task before I had even learned the UI?</li><li>What would be the parameters to adapt the UI? Where would the “AI” get the information about the website? Directly from the database? From a general purpose UI?</li><li>How would an “AI” make sure that a website is inclusive? How would it prevent to leave screen reader users with a text-only version, excluding screen reader users with sight from imagery?</li><li>How would the “AI” know what the user needs? Does this put an unnecessary burden on the user to communicate needs in detail and accurately to get a usable result? Is that not shifting the burden for accessibility from paid professionals to disabled people?</li><li>What about cognitive disabilities? How does an “AI” ensure they do not continue infantilizing people with cognitive disabilities and keeping vital information from them? This already happens today because humans make assumptions about others. That’s why I think it’s essential that the original, unchanged content is always available to everyone.</li><li>Also, I do not see a world where companies are willing to give one of their main marketing avenues in the hand of “AIs”.</li></ul><p><a href="https://hidde.blog/ai-for-accessible-components/">Hidde wrote in detail about the “generateability” of UI.</a></p><p>Now, Gregg might be thinking about user-side “AI” to make those changes. And I think enhancing user preferences, especially in mainstream browsers, makes a lot of sense. I even <a href="https://a11yfeat.com/">helped to start a W3C Community Group about that</a> a few years ago[^ That was before I realized how bad my burnout from W3C work was, so I had to stop.].</p><p>But none of that is “Generative UI”. It is a base UI, which must still be accessible and then adapting it to user’s needs. And yeah, currently, we need to write custom CSS to do this, or go through browser and operating system settings to select the options we need.</p><p>This can surely be automated: “I want my websites to display text at least 12px and fill the available viewport. Display them in an off-black background color with pinkish-white text color.” Taking an LLM and interpreting that into a custom style sheet or operating system settings makes a lot of sense to me to lower the barrier of entry for these settings.</p><p>The simple fact is that <em>we already have all the technology</em> to make wide-spread accessibility a reality. Today. We have guidelines that, while not covering 100% of the disability spectrum, cover a lot of the user needs. User needs that fundamentally do not change. </p><p>Will we have some “AI” technology breakthrough at some point? Maybe. But do we really want to squander “AI” technology on simple things that are essentials? Like having “AI” figure out the text on a button or the alternative text of the 1000th edit pencil icon? Is that a good use of our resources? <a href="https://hidde.blog/links/ai-uses-too-much-energy/">Especially with the incredible amount of energy these models currently use.</a> </p><p>I wished I were surprised that people who used to be leaders during the web revolution cling now to the next thing[^ I’m especially not surprised that Vanderheiden is an AI fan, he <a href="https://archive.is/cYWX5">planned to sit on a panel</a> with <a href="https://overlayfactsheet.com/en/">Overlay</a> vendors until the panel got cancelled because contrary to claims in the conference’s program, it was not IAAP sanctioned.]. It’s challenging to stay relevant. But there isn’t even experimental evidence that the “generative UI” works, let alone that it will be production ready any time soon. “Generative UI” is nice speculative fiction, but it is that. A guess of the future.</p><p>Tech “leaders” promised self-driving cars “next year” for a long time. Disabled people are often used in their marketing. Finally freeing them from the need to stay at home. But the reality is that better infrastructure, mostly through public transport and safe to use pedestrianized areas (with car access for those who need it) already would solve for a lot of the need. Would self-driving cars still be an improvement or even essential for some? Sure. But they do not (meaningfully for everyone) exist. </p><p>So let’s improve what we have, and make the world and the web better now, instead of waiting for lofty technologies that may never come.</p> ]]>
    </description>
    </item>
    <item>
    <title>Be anti-ableist</title>
    <link>https://yatil.net/blog/be-anti-ableist</link>
    <guid>https://yatil.net/blog/be-anti-ableist</guid>
    <pubDate>Fri, 05 Apr 2024 14:15:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>In the last couple of weeks, I had some encounters that made me think about the state of ableism. Turns out that despite <a href="https://yatil.net/blog/access-by-a-thousand-curb-cuts">a lot of slow but meaningful progress</a>, the world overall is still pretty much ableist.</p><p>This is not news for anyone who is disabled, of course, and it shouldn’t be for anyone who works in the field of accessibility.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>In fact, cultural ableism is often the greatest obstacle to overcome – for some disabled people, quite literally. Ableism during an accessibility project can manifest in different ways, the most common are probably:</p><ul><li>Limited budget because accessibility is not considered <em>that</em> important.</li><li>Undereducated project managers, designers, and developers because other topics are always more critical to get trained on.</li><li>Endless discussions on what and how to implement accessibility because investing time into discussions seems more important than just doing the thing.</li></ul><p>I think most people involved in accessibility are doing it in good faith. I think they want to change and improve and make their product better. But they are held back either by the climate of ableism or by their own internalized bias.</p><p>That’s, of course, not an excuse, but if we intend to dismantle ableism, we need to acknowledge it and its mechanism.</p><h2 id="accessibility-doesnt-just-happen-in-an-ableist-world">Accessibility doesn’t just happen in an ableist world</h2> <p>Often, when starting projects, clients have the expectation that they have done a good job with accessibility. But when you ask them about their quality assurance process or how they have ensured that their code is accessible, they regularly draw a blank.</p><p>The expectation is that accessibility comes automatically with a certain framework, or that smart programmers and designers will naturally come up with accessible solutions.</p><p>Sometimes, the answer is “we agreed to produce accessible code” and then you find misguided techniques in the code because the developers were asked to just learn on the job.</p><p>But accessibility doesn’t just happen in an ableist world. The mechanisms and automatisms are not tuned to produce accessible content, code, or designs. As a designer, developer, project manager, and really in any role, you have to focus on accessibility and do it intentionally. Every day of the week. Because it will not happen automatically.</p><p><strong><em>You must be anti-ableist.</em></strong></p><p>I see ableism in line with racism and fascism in that there is no neutral position on these topics. If you are neutral on racism, you will live in a racist society. If you are neutral on fascism, you will live in a fascist society. Only if you are anti-ableist, investigating your biases and practices, as well as seeing ableism in the world around you, you can succeed. Otherwise, the inertia of an ableist world will make your work ableist and therefor inaccessible.</p> ]]>
    </description>
    </item>
    <item>
    <title>Access by a thousand curb cuts</title>
    <link>https://yatil.net/blog/access-by-a-thousand-curb-cuts</link>
    <guid>https://yatil.net/blog/access-by-a-thousand-curb-cuts</guid>
    <pubDate>Sat, 09 Mar 2024 10:15:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Accessibility, especially on the web but also elsewhere, is a complicated combination of people with different roles working together. At any point during the creation of a web page, a blog post, its design, sourcing of images, or writing, issues can creep in.</p><p>As accessibility people, we often look at the end product and say “this is not accessible” (often meaning “this does not meet the minimum standards set out by WCAG”). And yes, it is always difficult to make everything 100% correct. Nobody’s perfect, and we have to make sure that perfect is not standing in the way of progress.[^ <a href="https://meryl.net/accessibility-progress-over-perfection/">Hi Meryl.</a>]</p><p>People love to claim that “accessibility failed”[^ No, I won't link to the Jakob Nielsen piece, but instead leave this <a href="https://toot.cafe/@aardrian/112035138874620031">Mastodon post/thread by Adrian Roselli which lists all the rebuttals</a>.] but <a href="https://tink.uk/nielsen-needs-to-think-again/">Léonie Watson describes plenty of interactions that would not have been possible a couple of decades ago</a>. These advantages did not all arrive at once. It’s step by step improving accessibility.</p><p>The same goes for making the physical world more accessible: Curb cuts are essential for people using mobility devices, be that wheelchairs or walkers, to get around efficiently. Of course, you might say, we should have started with curb cuts earlier, and we should have accelerated the implementation of curb cuts. And I agree in principle. But there are always other constraints, in this case (and many others), it’s all about the money. Still, there is no denying that cities are more accessible due to the curb cuts.</p><p>For accessibility, we like to look to the <a href="https://webaim.org/projects/million/">WebAIM Million survey report</a>. It says, “96.3% of home pages had detected WCAG 2 failures!” This sounds like a lot, but it is also like asking, “How many cities have <em>all</em> their curbs cut?” I’m pretty sure that percentage is lower than that of accessible home pages.</p><p>This is where the binary pass/fail of WCAG as a whole can’t convey the nuance that is needed in the conversation. Let’s look at the top 6 issues and see if we can see a positive or negative trend (change in percentage points):</p><ul><li>Low contrast text<ul><li>2019: 85.3%</li><li>2023: 83.6%</li><li>Change: –1.7%</li></ul></li><li>Missing alternative text<ul><li>2019: 68%</li><li>2023: 58.2%</li><li>Change: –9.8%</li></ul></li><li>Empty links<ul><li>2019: 58.1%</li><li>2023: 50.1%</li><li>Change: –8%</li></ul></li><li>Missing form input labels<ul><li>2019: 52.8%</li><li>2023: 45.9%</li><li>Change: –6.9%</li></ul></li><li>Empty buttons<ul><li>2019: 25%</li><li>2023: 27.5%</li><li><strong>Change: +2.5%</strong></li></ul></li><li>Missing document language<ul><li>2019: 33.1%</li><li>2023: 18.6%</li><li>Change: -14.5%</li></ul></li></ul><p>These are genuinely great numbers in terms of progress, especially as these issues make it impossible for some to not use affected websites at all. And even then, this says nothing about the severity of the issues because where they can have a major impact on the accessibility of a page: If links in the main navigation are empty, the impact is much higher than when social media links in the footer are empty. </p><p>Sweeping statements that accessibility “has failed” are often misguided. Improving 10 percentage points of accessibility errors in a category in four years is good. It’s trending in the right direction. Of course, there are still a lot of issues, but that is to be expected. I’m excited to see the details of the 2025 survey. (But really, developers, we have to talk about empty links and buttons, you can do better!)</p><p>That is also only the technical side of things: There are laws, like the European Accessibility Act, that are coming in effect which hopefully accelerate the adoption of good practices. I work with several high-profile clients, and there is a lot of work happening behind the scenes to make the deadline. Try a website or online shop that was inaccessible to you a year ago, it might have improved in the meantime.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>And some of the machine learning also improves steadily. That podcasts now come with transcripts by default when using Apple Podcasts is a great change (even if they won’t be perfect in many circumstances). But I think even more important is that <a href="https://podcasters.apple.com/support/5316-transcripts-on-apple-podcasts">podcasters who can provide their own, better, transcripts, now have a documented way to do so</a> that could show up in other podcatchers as well. </p><p>It’s not all doom and gloom as it might seem (although <a href="/@/page/RrXsGyUAOSDqwm5N">it is always totally OK to feel </a><a href="https://yatil.net/blog/hope-kills-you">that</a><a href="/@/page/RrXsGyUAOSDqwm5N"> way</a>) and we have to acknowledge the progress we make every day. </p> ]]>
    </description>
    </item>
    <item>
    <title>It’s the hope that kills you</title>
    <link>https://yatil.net/blog/hope-kills-you</link>
    <guid>https://yatil.net/blog/hope-kills-you</guid>
    <pubDate>Sat, 03 Feb 2024 10:45:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>I place the start of my career in accessibility to some time in 2008. Sure, I had done accessibility stuff before then, but I always saw me as a front-end developer with an interest in accessibility, not an outright person whose main focus was accessibility. I chose this profession because I believe in a web for all, a discrimination-free environment where everyone can be themselves, unburdened from the constraints of the physical world.</p><p>Of course, I knew that getting there would be a struggle. Too many people don’t care about disabled people until they experience disability themselves. But I hoped it would get easier over time. Technology advances, browsers got better, we front-end devs got many more tools to make websites beautiful and accessible.</p><p>I joined W3C/WAI in 2013 because I imagined I could change the world there. A little. Your work has a much better impact when you conduct it at such a pivotal place in our community. For the first few years I had a blast and contributed to wonderful projects, like the <a href="https://www.w3.org/WAI/tutorials/">Web Accessibility Tutorials</a>, the <a href="https://www.w3.org/WAI/WCAG22/quickref/">WCAG Quick Reference</a> update for WCAG 2.1, and the <a href="https://www.w3.org/WAI/">redesign of the WAI website</a>. Despite the frustration around the bureaucracy, the impact was worth it. The accessibility tutorials alone got many millions of hits during the years, and I still get appreciation for the Quickref when I mention my involvement in it. That said, I never felt that I had done enough. </p><p>The <a href="https://webaim.org/projects/million/">WebAIM million</a> in aggregate only shows an improvement of 1.5% of home pages where no WCAG error can be automatically found between 2019 and 2023. While that sounds like almost no progress, 15,000 home pages have been fixed over that time. That’s not shabby at all! </p><p>And if you go even deeper into the data, there is even more hope to be found. Missing alternative texts: down 9.8%. Empty links: down 8%. Missing form input labels: down 6.9%. Missing document language: down 14.5%.[^ These are absolute percent differences.]</p><p>This is great progress. The WebAIM million shows us that it is difficult to make websites 100% compliant, but it also shows us that progress is made. We have to see that progress for what it is – good trends in the right directions.</p><p>I have seen the main WebAIM million number (“96.3% of home pages had detected WCAG 2 failures!”[^ That’s literally the quote from the WebAIM website, including the exclamation mark.]) quoted in relation to the need of overlays to make accessibility work.</p><p>For those who are not aware, accessibility person <a href="https://www.prnewswire.com/news-releases/audioeye-taps-accessibility-industry-veteran-mike-paciello-as-chief-accessibility-officer-302048832.html">Mike Paciello has joined AudioEye</a>, a company that is, among other things, known for <a href="https://adrianroselli.com/2023/05/audioeye-is-suing-me.html">using SLAPP suits to silence critical professionals</a>. And where we had a fairly unified front against overlay technologies, some accessibility leaders started to schmooze up to them: “Maybe Mike can turn the ship around!” – “This is perhaps a sign of them changing!”</p><p>I don’t see this happening. There hasn’t been a public apology for the deceptive marketing, there has been no moves that inspire trust that this happens. Fool me once, shame on me. Sue acclaimed professionals, shame on you.</p><p>But it shows that the old marketing trick, to find a popular testimonial in the community you want to market to, works. </p><p>The fact is: Apart for determining if a website meets WCAG 2.2 AA, for example, meeting WCAG 2.2 AA is not that important. Removing the barriers that prevent people from using a site is much more critical. Some bad color contrast in the footer? Almost irrelevant. Social media icons without alternative text? Annoying but hardly preventing users from reading the actual site. </p><p>Seeing people aligning themselves with a person they trust and have trusted over the years is understandable. So is having the hope that they can turn the ship around. I understand that.</p><p>I understand that because I imagined being able to have a bigger impact at WAI. I hoped that we could be more agile, provide developers with better, more frequently updated information. I hoped to have an impact that made it more effective. And while I think I did a little, at the end that hope burned me out. Expecting a single person to fix an organization or company will eventually lead to disappointment.</p><p>The truth is that I’m still burned out from this experience. And I think it’s common among accessibility professionals. We believe in a better world, we believe in a world that is accessible by default. Most of us believe in a world where we don’t need automatic tools that fix issues that could have been easily prevented in the first place. And most of us believe that real accessibility is also much more than just fixing programming errors.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>I still have hope in the community, in the honest community, that wants to make the world a better place. In those who think teaching people how to make better decisions when creating websites is more important than giving them an half-assed way to paint over the cracks.</p><p>But I have lost hope in so many people I’ve considered accessibility leaders over the years. It used to be that my biggest criticism was that they were too timid to actually tackle the issues at hand. And I think that this contributed to the situation we are in now. Where even people who should know better try to find the magic wand that solves accessibility.</p><p>To be honest, I struggle with where to go from here. With more money, the industry has become incredibly toxic, far from the collaborative environment I experienced 15 years ago. If there is a quick buck to be made, it is made, often to the disadvantage of disabled people. I’m sad that this is happening because I had hoped that we would be better than that. Maybe we can turn it around.</p> ]]>
    </description>
    </item>
    <item>
    <title>The Year of Focus on Focus</title>
    <link>https://yatil.net/blog/year-of-focus-on-focus</link>
    <guid>https://yatil.net/blog/year-of-focus-on-focus</guid>
    <pubDate>Fri, 05 Jan 2024 18:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>After the <a href="/@/page/fVoe0ZxxHMHwJKJS">yearly theme of 2022</a> spilled over into 2023, it’s time for a new theme for 2024: “The Year of Focus on Focus”.</p><p>(See the <a href="/@/page/fVoe0ZxxHMHwJKJS">previous post</a> for some context on yearly themes.)</p><p><em>The Year of Intent</em> in 2022 worked out very well. I felt better and more intentional. Unfortunately, it lost all its power over 2023. Extending the theme this way was unintentional, which basically set the whole year up for failure from a yearly theme/north star perspective. I never really caught up with anything over 2023 and always felt behind.</p><p><em>The Year of Focus on Focus</em> continues a little from what I have subconsciously done in 2023: I drastically reduced my commitments and took breaks instead. Saying “no” to some things gave me space for saying “yes” to other things. And I want to continue that.</p><p>But <em>Focus on Focus</em> is also a promise to make changes that benefit being focused. I felt spread thin, stressed, and tired at the end of 2023, and the break hasn’t really helped, unfortunately. Focusing on the focus is the attempt to get the rhythm back, to create the space to be sustainably productive. I hope that that works out.</p> ]]>
    </description>
    </item>
    <item>
    <title>Level Access crosses the line; buys accessibility overlay company</title>
    <link>https://yatil.net/blog/level-access-userway</link>
    <guid>https://yatil.net/blog/level-access-userway</guid>
    <pubDate>Tue, 02 Jan 2024 16:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>In a stunning <a href="https://www.businesswire.com/news/home/20231230607997/en/UserWay-Agrees-to-be-Acquired-by-Digital-Accessibility-Leader-Level-Access">press release</a>, Level Access has revealed that it plans to buy accessibility overlay company UserWay for about $99 Million. For those who are unaware, accessibility overlays are JavaScripts that claim to fix accessibility issues automagically. They claim to use “AI” to analyze the site and then apply accessibility fixes on the fly while the user is using the website.</p><p>Of course, it is common knowledge that automated tools for <em>finding</em> accessibility issues can only find a limited number of issues (probably about 30–50%). Fixing issues needs additional context and care. I assume that is one of the reasons why the overlay providers themselves have started to add manual audits and remediation to their portfolio, including UserWay.</p><p>This is not a distraction for Level Access CEO Timothy Springer, who writes in <a href="https://www.linkedin.com/pulse/my-perspective-digital-accessibility-overlays-timothy-springer-bhx2c/">a long piece on LinkedIn</a> the following paragraphs: </p><blockquote> The chief criticism of accessibility overlays relates to marketing claims. </blockquote> <p>This is not true. If you look at the <a href="https://overlayfactsheet.com">Overlay Fact Sheet</a>, none of the outlined problems have to do with the marketing. These are all criticisms based on the merits of these “solutions”:</p><ol><li><a href="https://overlayfactsheet.com/#strengths-and-weaknesses-of-overlay-widgets">Overlay widgets are unnecessary and are poorly placed in the technology stack.</a></li><li><a href="https://overlayfactsheet.com/#strengths-and-weaknesses-of-automated-repair">While some automated repair is possible, customers should be discouraged from using an overlay as a long-term solution.</a></li><li><a href="https://overlayfactsheet.com/#fitness-for-achieving-compliance-with-accessibility-standards">While the use of an overlay may improve compliance with a handful of provisions in major accessibility standards, full compliance cannot be achieved with an overlay.</a></li><li><a href="https://overlayfactsheet.com/#privacy">Adding an overlay to your site may run counter to end users' preference for privacy and may create risk of noncompliance with GDPR, UK GDPR, CCPA, et al.</a></li></ol><p>Yes, the advertisements are problematic, including UserWay claiming which says:</p><blockquote> Our Widget has quickly become the world's leading accessibility plugin and compliance solution, now installed on millions of websites worldwide. </blockquote> <p>The leading compliance solution is to comply with accessibility law, not installing a widget. The easiest way to integrate accessibility into projects is by thinking about it from the beginning.</p><p>(According to <a href="https://www.prnewswire.com/news-releases/userway-reports-h1-2023-results-81-arr-growth-anticipates-cash-flow-breakeven-as-doj-set-to-roll-out-historic-digital-accessibility-regulation-301901042.html">UserWay’s 2023 financial report</a>, they also have 6800 paying customers, I guess there are millions of websites out there using it for free?)</p><p>Back to Timothy Springers post:</p><blockquote> The technology of overlays works. Truth is it actually works very well and does so at scale. In that, it can positively impact the accessibility of millions of sites. The marketing claims, the effective use of that technology as part of an accessibility journey, are what needs work. </blockquote> <p>It does not.</p><p>I linked to the technology criticism above. This is technology that cannot work well enough to cross the threshold from uncanny valley accessibility to real accessibility. Because in the end, this is about humans and how they interact with the web.</p><p>The reality, as I see it, is that overlays do very limited things ok, but also miss things that would take less than a minute for a developer to fix.</p><p><a href="https://youtu.be/xtP-gstvHrI">I recorded a 50-minute walkthrough of the Beyond Meat website, which is advertised on UserWay’s website, using the overlay.</a> In the end, my conclusion was that the website is not substantially better with the overlay compared to without the overlay.</p><p>Indeed, when I tried to stop the animation using the overlay (the website does not respect my “do not autoplay preference”), the overlay made the animation flicker rapidly. It was worse than without the overlay.[^ Update January 28, 2024: This behavior seems to have stopped at some point during the last month. I guess a fix was implemented (which is good), but I have not seen any communication about this.]</p><p><strong>Setting the anti-seizure setting while the animation was playing triggered a potentially seizure-triggering flicker effect.</strong></p><p>Now, Timothy Springer claims that users won’t need to use the functionality in the widget anymore in the future:</p><blockquote> Some accessibility overlays require a user to click to activate its automated remediation. For us, automated remediation must be active and always on for every user. Every user should get the same, accessible experience. </blockquote> <p>This is table stakes. But if the website only works on the client side and shares cookies with a third-party domain, a disabled user who would need automated remediation would be forced to accept that. With all the security and privacy implications that using a third-party script brings with it.</p><p>Is that an equal experience?</p><p>Even if your code runs automatically, a pause button for the animation would need to be provided. And if users use them, and it works badly, then that’s bad luck.</p><p>Or, as Timothy Springer says (emphasis his):</p><blockquote> Automated remediation and browser-based tools should <em>never</em> interfere with user installed AT. If they do, we will treat this like all engineering issues and address the issue. And, browser-based assistive tools will always be optional. </blockquote> <p>“We put it in our backlog” is not a suitable way of implementing things. This puts the burden on disabled people to find and report errors and wait for remediation before they might be able to use a site efficiently.</p><p>And that is the process we have today in accessibility. But with an overlay, you are not relying on your staff or site builder to fix an issue, you put that into the hands of a third party. A party which can also introduce accessibility bugs at any time (for which the site owner might be liable). </p><p>Timothy Springer again:</p><blockquote> What gets missed in that, though, is that there are millions of websites whose owners have neither the funds nor technical depth to develop a comprehensive digital accessibility program. Cost is the biggest barrier for these firms. Level Access can either provide a principled, compelling, cost-effective solution they can say “yes” to today, and get started on accessibility, or keep doing little for these firms. If we’re smart about it, that starting point will materially improve the accessibility of these sites today. Now. </blockquote> <p>While cost certainly plays a role, a widget which at best does little and at worst provides barriers is not “cost-effective”. Quite the opposite. I understand that a company that throws around 99 Million Dollars for an overlay company finds it difficult to do small-scale accessibility.</p><p>But that is OK. </p><p>The small website widget costs $490/year at UserWay. This can easily pay a developer to go through templates and remove accessibility blockers. Or it can help pay someone to test and recommend an accessible theme for the shop. Those are permanent fixes that will bring you much further than paying for a widget which will have no long-lasting impact.</p><p><strong>Accessibility is not expensive, inaccessibility is.</strong> And not because you might be sued, lawsuits are still incredibly uncommon, considering how inaccessible the web is. But because you show your customers that you don’t value them if they have a disability.</p><p>Investing in permanent change might look slow in the beginning, but <em>always</em> pays off over the long run.</p><p>And that brings me to one of the highest impacts of overlay companies on the accessibility community: It drains the money out of smaller assignments which are essential to training up new accessibility people. Sure, as a company you won’t make a massive profit off a $1000 review, but if one of your juniors can use it as an exercise under supervision, it is a wonderful learning opportunity.</p><p>There is a lot of discussion that we need automated tools because there are so few accessibility professionals, but imagine Level Access had paid 99 Million Dollars to train their employees or subsidize companies who cannot pay for it. Would that not be a more sound investment in accessibility?</p><p>But let's not lose sight of why this is happening: Profit. It’s an already gigantic company that wants to profit from all parts of accessibility. Even from those who are getting tricked into thinking that there is an imminent risk of getting sued and sold a placebo.</p><p>Even then, even if you believe there is and should be a market for overlays, then… they already exist. There is nothing here that fundamentally changes them through this purchase in that regard. There are plenty of overlay companies that are already providing this service. Why would you want to be part of it?</p><p>The UserWay CEO will be “President of Level Access” in the future, and the UserWay company will continue to operate. It feels hard to believe that the marketing and focus of a company will change, especially if so much money has changed hands. The promises Timothy Springer makes hint to changing UserWay, which leaves the question: why buy them instead of building something better?</p><h2 id="equality-now-is-better-than-equality-later">Equality now is better than equality later</h2> <p>Accessibility is not a profit business. Sure, it can pay well for people who have expertise, but ultimately, it is a craft that is limited. Yes, some tooling can make aspects easier. Definitely, you can lint and autotest the hell out of your code. But eventually, the only thing that really makes your product accessible and inclusive is thinking about the inclusive experience constantly. Not as an afterthought, not as a bolt-on, not as something extra.</p><p>Companies need to decide if they fall for the uncanny accessibility of overlays or start the learning process with a trustworthy non-overlay provider. Starting now, even with little investment, can be the start of building an accessibility understanding that will be beneficial for a long time.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section> ]]>
    </description>
    </item>
    <item>
    <title>2023</title>
    <link>https://yatil.net/blog/2023</link>
    <guid>https://yatil.net/blog/2023</guid>
    <pubDate>Sun, 31 Dec 2023 10:30:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>I’m not a good “retro” person. I always want to move on to the next thing. But reflecting over the past achievements is a good habit, so let’s do it.</p><p>This year was very different from <a href="/@/page/Xbk9V3yYFd58Zkrz">last year</a>. I did not bike a single kilometer, which feels super bad, and if I have one personal goal for 2024, it’s getting back on the bike again. That said, we did rent a car to find hiking trails and hiked quite a bit during the summer. So not all is lost.</p><p>I also built many more Lego sets, so many in fact that this is getting a space concern. That said, they help me to keep my nerves down.</p><p>I started reading <a href="https://dmoren.com/all-souls-lost/">Dan Moren’s <em>All Souls Lost</em></a> book. (It came too late for the summer holidays, and I haven’t gotten into the habit of reading over Christmas.)</p><p>TV is still one of my main hobbies, and there is so much good stuff. Not only got four <em>Doctor Who</em> specials released, which are all excellent. (BBC/Disney+) I did enjoy the continuations of <em>For All Mankind</em>, <em>Foundation</em>, and <em>Slow Horses</em>. <em>Shrinking</em> is extremely well-made, too (all Apple TV+). <em>Loki</em> Season 2 was exquisite, while <em>Secret Invasion</em> existed. I enjoyed watching through <em>Star Wars Rebels</em> and then <em>Ahsoka</em> (all Disney+). <em>Good Omens</em> continued in a surprising and fun and tragic way (Amazon Prime). So much good TV.</p><p><em>Formula E</em> season 9 was spectacular, and I cannot underline enough how much fun that series is. The behind-the-scenes dramatization of the season (Aka FE’s <em>Drive to Survive</em>) called <a href="https://www.fiaformulae.com/en/ways-to-watch/unplugged-season-3"><em>Formula E: Unplugged</em></a> will be published on January 2, with the first race of the season on January 13.</p><p>I also fell into a <a href="https://www.home-assistant.io">Home Assistant</a> rabbit hole. After running a Homebridge for several years, this is a huge upgrade and wow can smart home stuff be easy and powerful. Having <em>everything</em> in one app that can be highly customized is empowering.</p><h2 id="this-blog-and-beyond">This blog and beyond</h2> <p>Including this post and with three posts that I imported from my retiring microblog, I have published 16 blog posts. That’s not bad.</p><p>I also started to take <a href="https://steadyhq.com/en/yatil/newsletter/sign_up">my newsletter</a> more serious and sent out four of them. I try to make them more personal but also look at the industry of accessibility, trying to improve it. In the last one, I wrote about <a href="https://steadyhq.com/en/yatil/posts/1268104f-55fe-4753-bd45-27f73b7638be">my thoughts on the European Accessibility Act and how prepared we are</a> to support all businesses who will need help.</p><p>I also created a bot in April that collects interesting links on the web regarding accessibility and then publishes them on Mastodon. You can follow <a href="https://yatil.social/@links">@links@yatil.social</a> or see the <a href="https://raindrop.io/yatil/accessibility-32203152/sort=">Raindrop.io collection</a>. It even has an <a href="https://raindrop.io/collection/32203152/feed">RSS feed</a>!</p><h2 id="what-else">What else?</h2> <p>The loss of community continues, I did not have one speaking engagement in 2023, which was my own decision due to the risks of travel during a pandemic. I also stopped teaching at FH Joanneum due to the requirement of teaching at least one day in-person, but also because the teaching days shifted to the autumn. There is too much work to do in autumn for that additional commitment.</p><p>Apart from that, work was great but stressful. I did a lot of strategic and coaching work. And I feel that I’m more effective doing this than doing audits. So this is something for 2024 Eric to figure out. Especially how to deliver work that meets my high expectations for myself while also not completely draining myself.</p><p>Of course, the world situations hang like a dark cloud over everything. A largely ignored health crisis, wars, right-wing extremism, the climate emergency. I hope we can finally address the issues head-on and come out on the other end. I’m not super optimistic, but I have hope.</p><p>That’s it. I wish you a great year 2024 personally, but also globally.</p> ]]>
    </description>
    </item>
    <item>
    <title>WCAG 2: Guidelines and Guardrails</title>
    <link>https://yatil.net/blog/wcag-2-guidelines-and-guardrails</link>
    <guid>https://yatil.net/blog/wcag-2-guidelines-and-guardrails</guid>
    <pubDate>Fri, 29 Dec 2023 10:30:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>The name “Web Content Accessibility Guidelines” (WCAG) has always been a source of misunderstanding and contention. “Guidelines” implies that this document only guides you, gives you hints on how to make web content accessible.</p><p>But that is only half of WCAG. The other half are “Guardrails” that prevent you from producing wholly inaccessible material.</p><h2 id="guidelines">Guidelines</h2> <p>The guidelines consist mostly of the Principles and Guidelines (oh!) of WCAG. There are four Principles that have in summary 13 Guidelines. Those are the first two numbers of the Success Criterion number (which are, spoilers, the Guardrails): <em>1.1.1 Non-Text Content</em> refers to Principle 1, Guideline 1, Success Criterion 1.</p><p>As we often focus on Success Criteria, the context of the Principles and Guidelines is missed. They can guide us to good, accessible solutions already. When people say “go beyond WCAG” they typically mean “follow best practice principles &amp; guidelines” which are also in WCAG.</p><p>Look at the excellent <a href="https://www.w3.org/WAI/standards-guidelines/wcag/glance/" rel="noreferrer">WCAG 2 at a Glance</a> document by W3C/WAI, and you’ll notice that nothing limits you to making the most accessible decision at any point. </p><p>“Go beyond WCAG” is a mischaracterization of what WCAG is. What people mean is “stay away from the Guardrails in WCAG”.</p><h2 id="guardrails">Guardrails</h2> <p>If you think of guidelines in the real world, you probably think of the guiding lines that you see on streets and that keep traffic separated into different lanes. Generally, you follow them, but every so often, you cross them to overtake or to make a turn. That is OK. The lines are there to guide you.</p><p>On the other hand, you have guardrails that you want to stay away from. These are the absolute limits of what you can do without getting into an accident. If you are a careful driver, you should never be very near those guardrails.</p><p>That is what the Success Criteria in WCAG 2 are. They tell you where the street ends, and you crash into a barrier. That’s why it’s so important that these are specific. A text contrast is insufficient if you are below 4.5:1 contrast.</p><p>The guideline “Make it easier for users to see and hear content” has its guardrail at a <em>minimum</em> 4.5:1 contrast, allowing text to be scaled to <em>at least</em> 200%, and that content on hover and focus stays visible.</p><h2 id="conclusion">Conclusion</h2> <p>It’s a myth that WCAG constricts the level of accessibility. It’s quite the opposite. I sometimes think WCAG should be two standards: The guidelines that give web designers and developers information on what to look out for, and “testing rules” for verifying that the guidelines are followed.</p><p>Unfortunately, in practice, most people learn of the guideline part of WCAG only after being confronted with the guardrails part. The tragic situation is that people would crash into guardrails less if we taught them the Guidelines first. </p><p>As it is right now, we are only a tow truck that pulls the wreckage out from the guardrails and positions it just next to them. Which means that the projects keep scraping along, sparks flying, until they break down again.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section> ]]>
    </description>
    </item>
    <item>
    <title>It depends, indeed.</title>
    <link>https://yatil.net/blog/it-depends-indeed</link>
    <guid>https://yatil.net/blog/it-depends-indeed</guid>
    <pubDate>Fri, 08 Dec 2023 13:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>My friend <a href="https://incl.ca" rel="noreferrer">Nicolas Steenhout</a> has published an <a href="https://nicsteenhout.substack.com/p/accessibility-specific-tech-requirements" rel="noreferrer">article about the impossibility of specificity in accessibility recommendations</a>.</p><p>It is excellent, and I strongly recommend reading it before continuing here.</p><p>The reason we often cannot be super specific has its roots in three areas:</p><ul><li><strong>The web</strong> is a complex environment. Anything can be done in hundreds of different ways, depending on the underlying technologies, frameworks, and sometimes business constraints. Recommending the one straightforward HTML/CSS/sprinkle of JavaScript/server-side solution might be a specific answer, but not necessarily a good answer for the circumstances the page is in.</li><li><strong>Disabled people</strong> are not uniform. They have different needs depending on their disabilities but also based on their individual preferences. That’s why we, for example, argue to leave content interpretation to screen readers as much as possible instead of dictating how something is said. That also means, as Nic mentions in his article, that there are many, many combinations of tools that users use. And even if they use the same tools, the settings can be quite different.</li><li><strong>Technology is inaccessible</strong>, so making something accessible is more complicated than it should be. I researched combo boxes and selects for a client yesterday and saw <code>&lt;select&gt;</code>, <code>&lt;selectlist&gt;</code> and handmade ARIA combo boxes. Which of those you use, depends on your need. <code>&lt;select&gt;</code> is simple and covers many areas, <code>&lt;selectlist&gt;</code> will cover more functionality and finally allow us to style options (at the expense of not being supported in a shipping browser to date), so the complicated ARIA combo box it is. It is not something I want to recommend, but it depends on the need of the client to what solution is suitable.</li></ul><h2 id="expectation-management">Expectation management</h2> <p>Nic mentions that some client teams see this as bait-and-switch. We tell them there are clear, internationally agreed standards for testing accessibility, so they expect that for every issue there is a technique to meet the success criterion. Indeed, the W3C does provide a list of techniques to meet success criteria. And look at that, there are many ways to meet these criteria.</p><p>A two-sided expectation management needs to happen. First, clients need to be aware what their goals for accessibility are. Nic has a good, IMHO, bad example in his post:</p><blockquote> We must meet WCAG 2.2. AA, and we must make sure what we build works well in NVDA with Chrome, VoiceOver with Safari on both MacOS and iOS, and TalkBack on Android </blockquote> <p>What does “works well” mean? How well? Perfectly? What are the differences that are allowed?</p><p>I love making things easy to use for everyone as well. But that often makes the goal not a line, but a zone. Nobody knows if what they are doing is enough to meet the expectations, frequently their own expectations.</p><p>Concentrate on what is important and testable, so WCAG 2.2. There will still be enough wiggle room, but it is a goal you can work towards. It’s a minimum, but you can achieve more from a strong foundation.</p><p>And then you can move on and say, “OK, now let's make a list of screen reader interactions that we are unhappy with in the following screen readers and ask our users what they expect.” This gives you a list to work through and check off. Real concrete progress instead of mushy goals.</p><p>The other expectation that needs to be managed is especially critical when interacting with developers and designers. As outlined above, nothing is set in stone and frequently there are no simple good answers that work for you. You also might not have learned any of that “accessibility stuff” and now you’re responsible. We’re here to help. Tell us what you’re struggling with, and we can make sure to better explain and be more concrete for your individual situation.</p><p>Occasionally, the best way to help developers with their accessibility problem is to talk to project managers or designers and change the process to be easier to implement.</p><p>We’re partners in making a product accessible, and when we say “it depends”, we don’t mean “it is impossible to know”, but “let’s figure out how we can fix this most efficient, together”.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section> ]]>
    </description>
    </item>
    <item>
    <title>Exclusive accordions exclude</title>
    <link>https://yatil.net/blog/exclusive-accordions</link>
    <guid>https://yatil.net/blog/exclusive-accordions</guid>
    <pubDate>Thu, 16 Nov 2023 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>You might not have noticed it, mainly because it was so quick, but a new HTML functionality is due to arrive in Chromium and WebKit browsers: <a href="https://github.com/openui/open-ui/issues/725">Exclusive Accordions</a>.[^ Yes, from starting the explainer, which has no serious exploration of the accessibility impact, to almost shipping in browsers in less than 9 months. <em>Move fast, break things for disabled people.</em>] [^ This has shipped in the following browsers: <br>Chrome 120 (Release date: 2023-12-05), Edge 120 (2023-12-07), Firefox 130 (2024-09-03), Opera 106 (2023-12-19), and Safari 17.2 (2023-12-11). No browser mitigates the risks outlined in this article.]</p><h2 id="what-are-exclusive-accordions">What are exclusive accordions?</h2> <p>Accordions are a series of expand/collapse (aka disclosure) widgets. Usually they start collapsed, and you can open each section one by one. Exclusive accordions close any previously opened section automatically when a new one opens. It means only one section of the accordion can be open at once.</p><p>A new proposal now wants to make the existing <code>&lt;details&gt;</code> element into an accordion by grouping them when adding a <code>name</code> attribute to it. Such an element's open state would then automatically be false (hiding the content) when another element’s open state is set to true, if those two <code>&lt;details&gt;</code> have the same <code>name</code> attribute value.</p><h2 id="what-are-the-accessibility-challenges-with-exclusive-accordions">What are the accessibility challenges with exclusive accordions?</h2> <p>There are some accessibility challenges with all types of accordions, but most of them are even worse when only one accordion section can be open at a time. Here are a few examples:</p><ul><li><strong>Higher cognitive load</strong> as users are unable to compare information between two sections, the accordion resetting on page reload, added difficulty in scanning and getting a general overview of the information provided.</li><li><strong>More complicated interaction for keyboard users</strong> who need to navigate maybe multiple times through multiple expand/collapse button to extend one section, then navigate to the next section and open that, then to the next to open that. Comparing between two section of an exclusive accordion quickly takes dozens of keystrokes.</li><li><strong>Reduced usability for screen reader users</strong> who use heading level navigation to get an overview of all content on the page. That’s just not possible anymore as the accordion cannot be opened all at once. Heading levels can also get quite wonky in screen readers when headings are used in the expand/collapse button.</li><li><strong>Low-vision users and people on mobile viewports</strong> can easily <strong>lose orientation</strong> when one section opens and another section closes as the content shifts around. This is especially problematic with content of different lengths. This can also be problematic for <strong>people with vestibular disorders</strong>. (<a href="https://www.linkedin.com/feed/update/urn:li:activity:7130694456218931200?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7130694456218931200%2C7130827863557050370%29&amp;dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287130827863557050370%2Curn%3Ali%3Aactivity%3A7130694456218931200%29" rel="noreferrer">Gareth Joyce on LinkedIn</a>, <a href="https://mastodon.social/@ollicle/111417859667872310" rel="noreferrer">Olli Boermans on Mastodon</a>, <a href="https://mastodon.social/@Schepp/111418952955180666" rel="noreferrer">Christian Schaefer on Mastodon</a>)</li><li><strong>Dragon users can have a hard time opening </strong><code>&lt;details&gt;</code><strong> elements,</strong> as the software deprioritizes them compared to buttons and links. (<a href="https://www.linkedin.com/feed/update/urn:li:activity:7130694456218931200?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7130694456218931200%2C7130933644788920320%29&amp;dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287130933644788920320%2Curn%3Ali%3Aactivity%3A7130694456218931200%29" rel="noreferrer">Victoria Clark on LinkedIn</a>)</li></ul><p>These are just the three high-level points I have observed from an accessibility standpoint and two other obvious points added after the publication of this post. Most times, users really did not like accordions. The only exception is incredibly long pages that are terribly organized. And even in those instances, the need to open at least two panels happened more often than not.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="but-couldnt-native-exclusive-accordions-address-some-of-these-issues">But couldn’t native exclusive accordions address some of these issues?</h2> <p>Technically yes. I am a big fan of making it easier to do the right thing. That should be our goal. Implementing exclusive accordions, be it through JavaScript or as a native browser feature, however, makes it easier to implement a UI principle that makes websites objectively harder to use. It allows developers to deprive users of a choice.</p><p>One <code>name</code> attribute and your user cannot interact with the content of the page as they like. It’s disempowering the user.</p><p>If we want native accordions in browsers, we also must make sure to have guardrails for users. Browsers are <em>user agents</em>, so they should counteract the negative impact of making exclusive accordions easily possible.</p><h2 id="what-are-the-next-steps">What are the next steps?</h2> <p>It feels like the decision for this native exclusive accordion has already been made. There was no proper accessibility consultation, probably a direct result of HTML features being developed outside of W3C and with no accessibility review. It’s also a cheaply implemented feature; that is easy PR, too. (It’s indeed so simple, <a href="https://codepen.io/yatil/pen/PNVvLw">I did build it in 2016 with five lines of JavaScript</a>.)</p><p>What I hope for now is that browsers quickly address the usability and accessibility issues around accordions, exclusive or not:</p><ul><li>Allow users to deactivate the exclusive accordion behavior globally and for individual websites. We have this for auto play audio and video, we need this here as well.</li><li>The ability to expand all and collapse all accordion sections (essentially all <code>&lt;details&gt;</code> elements) on the page.</li><li>Make sure content inside accordions is shown in reader mode.</li></ul><p>It’s unacceptable that we introduce native barriers in HTML and the web platform in 2023. This is unbearable. When we did this last time we got broken date and time pickers, a situation that has not been addressed for more than a decade.</p><p>The web must be holistically accessible. Every feature that is introduced must be vetted for accessibility.</p><p><em>2023-11-17: Update to include more bad examples of what accordions do.<br>2025-08-05: Update to add the dates when the feature shipped and that there are no mitigations for the feature at all.</em></p> ]]>
    </description>
    </item>
    <item>
    <title>Enough with the baby steps! Let’s make accessibility leaps. (My rejected axe-con submission.)</title>
    <link>https://yatil.net/blog/a11y-leaps</link>
    <guid>https://yatil.net/blog/a11y-leaps</guid>
    <pubDate>Mon, 13 Nov 2023 21:15:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>This was my submission for <a href="https://www.deque.com/axe-con/">axe-con 2024</a>, which unfortunately did not make it to the conference. Please tell me if the topic would be interesting for you, and you would like to hear more about the topic!</p><ul><li><strong>Title:</strong> Enough with the baby steps! Let’s make accessibility leaps.</li><li><strong>Outline:</strong> So much of our work is based on nudging people into the right direction. Applying a little pressure that makes a change but is not disruptive. This needs to change. This talk showcases steps that we can take that make instant notable differences for disabled people using websites and apps by using policy changes that are strong and disruptive once, instead of continuous glacially slow progress.</li><li><strong>Additional Information:</strong> I don’t expect this to be the most technical talk, but it might be most suitable for people who lead teams or companies; hence I selected intermediate. The talk’s goal is to shake people awake and show how gradually improving accessibility is often not the best way to spend their effort.</li></ul><p>(Slightly edited for grammar. Imported from my micro.blog.)</p> ]]>
    </description>
    </item>
    <item>
    <title>Inspecting websites and web views on iOS devices</title>
    <link>https://yatil.net/blog/inspect-web-ios</link>
    <guid>https://yatil.net/blog/inspect-web-ios</guid>
    <pubDate>Sat, 04 Nov 2023 17:15:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>While it is often sufficient to test the mobile view of websites and applications on the desktop, with desktop browsers, it’s sometimes not enough: Some websites use device sniffing to hash out which device is used and deliver different code to users. In other instances, the web view is part of an application.</p><p>Being able to inspect and look at the code in these views is essential to give good feedback to developers implementing these views.</p><h2 id="inspect-browser-websites-only">Inspect Browser (websites only)</h2> <div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/inspect-web-ios/6fde8df924-1699113182/img_510.jpeg" alt="Screenshots of Inspect Browser on iPhone and iPad, showing the WCAG 2.2 Quick Reference, the introductory sentence is nspected and the DOM can be seen in a panel on the bottom on iPhone and on the right side on iPad."> <figcaption class="img-caption"> The Inspect Browser app on iPhone and iPad </figcaption> </figure> </div> <p>For casual use and availability on the go (without tethering to a Mac), <a href="https://apps.pdyn.net/inspect/" rel="noreferrer">Inspect Browser</a> does the job. It works great on iOS and iPadOS and provides all web inspection needs: Logging on the console, inspecting elements, finding out accessible names, and much more.</p><p>I personally use it only to quickly get to the bottom of an HTML structure or figuring out why something is announced/shown weirdly while using VoiceOver or Voice Control. It is a separate browser, so you have to log in and/or navigate to where the issue is.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="safari-on-macos-websites-and-web-views">Safari on macOS (websites and web views)</h2> <div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/inspect-web-ios/a731c2a389-1699113563/screenshot-2023-11-04-at-16.56.59.png" alt="Develop menu showing the MacBook Pro (nicknamed MaxBook Pro, because I’m very clever!) and my iPhone (named Ramrod Ti, as I name all my phones with SaberRider references). The phone is selected and yatil.net is also selected. In addition, Connect via Network is selected."> <figcaption class="img-caption"> Picking a website on the iPhone </figcaption> </figure> </div> <p>For websites and web views where the small-screen inspector in Inspect Browser does not cut it, you can use Safari on macOS to connect to the iPhone/iPad. You need to set up your device once:</p><ol><li>On your <strong>Mac</strong>: Switch on Developer mode in Safari by going to <em>Preferences</em> → <em>Advanced</em> and check the “Show features for web developers” checkbox.</li><li>On your <strong>iPhone</strong> or <strong>iPad</strong>: Go to <em>Settings</em> → <em>Safari</em> → <em>Advanced</em> and switch on “Web Inspector”.</li></ol><p>When you attach your iPhone or iPad to the Mac using a Lightning or USB-C cable, open Safari and go to the <em>Develop</em> menu. Select the device and then the website and a inspector window opens. It has the full capabilities of the desktop Safari inspector, which is very capable.</p><p>From my experience, everything that is in a normal web view can be easily inspected, even in non-iOS-Safari apps. More custom implementation sometimes suppress the ability to inspect them. I can easily inspect web views in <a href="https://geo.itunes.apple.com/app/id1659154653" rel="noreferrer">Mona (App Store Link)</a>, my favorite Mastodon client, but have no chance in the LinkedIn app.</p><p>Check “Connect via Network” to get rid of the need of a cable connection.</p><div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/inspect-web-ios/843e5eafce-1699113846/screenshot-2023-11-04-at-17.03.53.png" alt="Web inspector window in front of a nature desktop background. The h1 of yatil.net’s home page is selected"> <figcaption class="img-caption"> The inspector live inspecting content on my iPhone </figcaption> </figure> </div> <p>You can even use the crosshair button and select elements on the iPhone/iPad by touch. </p> ]]>
    </description>
    </item>
    <item>
    <title>Use the accessibility shortcuts on iOS to speed up your testing workflow</title>
    <link>https://yatil.net/blog/ios-a11y-shortcuts</link>
    <guid>https://yatil.net/blog/ios-a11y-shortcuts</guid>
    <pubDate>Tue, 31 Oct 2023 11:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>You can switch VoiceOver (and Voice Control) on in the iOS settings on iPhone and iPad. But this is very cumbersome if you are in the process of testing an app or website. There are quicker ways:</p><h2 id="using-siri">Using Siri</h2> <p>Siri switches VoiceOver on where you are at the moment, if you invoke it using the command “Hey Siri, VoiceOver on”. Switching VoiceOver off works by issuing “Hey Siri, VoiceOver off”.</p><p>But this way is cumbersome, and if you, like me, switch VoiceOver on and off many, many times during a testing session, unpractical. Here are some even better shortcuts: </p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="accessibility-shortcut-all-iphones-and-ipads">Accessibility Shortcut (all iPhones and iPads)</h2> <div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/ios-a11y-shortcuts/7aeae170fa-1698745703/img_4590.jpeg" alt="Two iPhones next to each other, one with the Accessibility Shortcuts selection screen and the other with the Accessibility Shortcuts menu triggered by pressing the sleep/wake button three times."> <figcaption class="img-caption"> Accessibility Shortcut Configuration </figcaption> </figure> </div> <p>There is literally a shortcut for this. Go to <em>Settings</em> → <em>Accessibility</em> → <em>Accessibility Shortcut</em> and check the accessibility features you use in your testing. Now, if you press the sleep/wake button three times in quick succession, a menu pops open that allows you to switch on and off the checked accessibility features. If you only check VoiceOver, it is switched on/off directly. See the official <a href="https://support.apple.com/en-us/HT204390" rel="noreferrer">Apple documentation about the Accessibility Shortcut</a>.</p><h2 id="control-center-all-iphones-and-ipads">Control Center (all iPhones and iPads)</h2> <div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/ios-a11y-shortcuts/f5db2a90c0-1698746491/img_4597.jpeg" alt="Screenshots of three iPhones, first shows the Control Center configuration in settings, second shows Control Center itself with buttons for accessibility features like Sound Recognision, Text Size, Hearing, and the Accessibility Shortcut. The third screenshot shows the opened Accessibility Shortcut Menu."> <figcaption class="img-caption"> Configuring Control Center, Control Center itself, and the Accessibility Shortcut menu as invoked in control center </figcaption> </figure> </div> <p>You can put accessibility buttons into Control Center (the panel that appears when you swipe down from the top right of the screen). Go to <em>Settings</em> → <em>Control Center</em> and add accessibility features under “more controls”. I have text resize in there to be able to quickly test that in apps. But you can also add “Accessibility Shortcuts” which brings up the menu as configured above.</p><p>It’s good for lesser used features, but as the popup immediately closes after selecting VoiceOver in the triple-press sleep/wake button scenario, the menu stays active here. Navigating out of it to the app you want to test is quite cumbersome, so I tend to not use it to invoke VoiceOver.</p><p>See <a href="https://support.apple.com/guide/iphone/use-and-customize-control-center-iph59095ec58/17.0/ios/17.0" rel="noreferrer">Apple’s documentation of Control Center customization</a>.</p><h2 id="back-tap-all-iphones">Back Tap (all iPhones)</h2> <div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/ios-a11y-shortcuts/239880d242-1698790694/img_4602.jpeg" alt="Two iPhone screenshots, on the left the Back Tap screen with VoiceOver selected for the Double Tap and the Accessibility Shortcut for the Triple Tap. The right screenshot shows part of the list of many functions that can be selected for Double/Triple Tap."> <figcaption class="img-caption"> Double and Triple Back Tap Configuration </figcaption> </figure> </div> <p>If you want a little more flexibility, the <em>Back Tap</em> gesture allows you to gently tap the back of your iPhone twice or three times to launch either the aforementioned Accessibility Shortcut, or a number of other functionality. You can, for example enable VoiceOver with two back taps and the Accessibility Shortcut on three taps.</p><p>To configure it, go to <em>Settings</em> → <em>Accessibility</em> → <em>Touch</em> → <em>Back Tap</em> and select <em>Double Tap</em> or <em>Triple Tap</em>. Then select the Accessibility Shortcut or the function you want to invoke from the list.</p><p>(The Back Tap section has been added after I was reminded of this functionality by Shelly’s mention in her article <a href="https://sixcolors.com/post/2023/10/the-iphone-15-pro-brings-tangible-accessibility-benefits/" rel="noreferrer">The iPhone 15 Pro brings tangible accessibility benefits</a> on sixcolors.)</p><h2 id="action-button-iphone-15-pro-and-later">Action Button (iPhone 15 Pro and later)</h2> <div class="block-image"> <figure> <img src="https://yatil.net/media/pages/blog/ios-a11y-shortcuts/38908c7055-1698745805/img_4586.jpeg" alt="Screenshot of VoiceOver being configured for the Action Button in settings"> <figcaption class="img-caption"> Action Button Configuration </figcaption> </figure> </div> <p>You can also put an accessibility feature, like VoiceOver, directly on the new iPhone 15 Pro Action Button. In Settings, go to Action Button and swipe almost all the way to the right to the “Accessibility” option and chose VoiceOver. Now, whenever you invoke the Action Button (press and hold briefly), VoiceOver is quickly turned on or off. See <a href="https://support.apple.com/guide/iphone/action-button-iphone-15-pro-max-iphe89d61d66/ios" rel="noreferrer">Apple’s documentation about the Action Button</a>.</p><p>Using a combination of these shortcuts, you can make it really easy testing with accessibility features on iOS.</p> ]]>
    </description>
    </item>
    <item>
    <title>Accessibility in the real world</title>
    <link>https://yatil.net/blog/accessibility-in-the-real-world</link>
    <guid>https://yatil.net/blog/accessibility-in-the-real-world</guid>
    <pubDate>Wed, 25 Oct 2023 10:45:00 +0200</pubDate>
    <description>
    <![CDATA[ <p><a href="https://twitter.com/yatil/status/1556899672731574274"><em>This is a repost of a Twitter thread</em></a><em> from August 2022. Slightly edited in format and for clarity.</em></p><p>Accessibility must work within the constraints of an ableist world to improve things. I hope it can help to make the world a tiny bit less unjust every day.</p><p>I have seen accessibility people say “this is a hill I’m willing to die on” and then they died on that proverbial hill.</p><p>Some clients just don’t care, and you have no power to make them care. You can make them aware, you can put procedures in place, you can point at laws. But you can’t change their attitude.</p><p>And yes, that might mean that the products of the process are… mediocre at best.</p><p>That is disappointing for the accessibility professionals involved, who did their best in the circumstances, and still fail many disabled people.</p><p>I think it’s still important to do this work:</p><p>Awareness is important, and when more people are aware that accessibility is a thing, more people will be willing to invest in it. This is a slow process, but I have seen it in real life: Companies that have an audit done for compliance and then want to get better.</p><p>And sometimes you inspire people to get into accessibility, and they might have an impact for a long time.</p><p>Is any of this optimal? No.</p><p>Do I wish I had a magic wand that made disability justice a reality and everyone care? You bet!</p><p>But I don’t, and so I need to have my practice grounded in the reality of the world as it is, as it otherwise becomes burnout inducing.</p><p><strong>And if we cannot afford one thing, that’s people quitting accessibility because they are burned out. Because they feel that they are ineffective, and their work is worthless. I feel like that all the time.</strong></p><p>That said, the <a href="https://webaim.org/projects/million/#errors">WebAIM Million study</a> shows that between 2019 and 2022 the average error per page has decreased, and the most common issues have also decreased. The web is slowly getting better.</p><p>I strongly believe that we must change the systems to make web accessibility easier, especially aligning what’s right with what’s easy. Currently, a lot of accessibility practices on the web are hidden or require additional knowledge. That is an ableist barrier itself.</p><p>I wrote about <a href="https://yatil.net/blog/fix-web-accessibility-systematically">changing the system on my blog</a>.</p><p><a href="https://youtu.be/PZYiweHuo_I">I also recorded a talk about the topic.</a></p><p>(Previously published on my micro.blog.)</p> ]]>
    </description>
    </item>
    <item>
    <title>Misconceptions can kill accessibility momentum</title>
    <link>https://yatil.net/blog/misconceptions-can-kill-accessibility-momentum</link>
    <guid>https://yatil.net/blog/misconceptions-can-kill-accessibility-momentum</guid>
    <pubDate>Sun, 24 Sep 2023 20:15:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Time and time again, I come across accessibility solutions in which teams have put a massive amount of work. And often I have to ask them to undo that work. There are many reasons for that request, but it typically comes down to a false understanding of how assistive technologies actually work.</p><p>Now, don't get me wrong, a good percentage of my work is to “well, actually” people who should know better. And I generally enjoy it – using my mansplaining powers for good.</p><p>But now and then, you get that sinking feeling that you are undoing someone’s work that they created with the best intentions, where they researched hours and hours for a problem they perceived.</p><p>And I come along and say “nah”.</p><p>“Nah”, because “it wasn't a concern in the first place”. “Nah”, because “that's not how assistive technology works”. “Nah”, because “many screen reader users can see the screen”.</p><p>The reality is, accessibility is hard, especially when thinking about it holistically. Which you have to do to not leave people behind. That complexity is inherent to the humanity that's behind accessibility. We’re doing this for people that have all sorts of disabilities, that are different from one another in many, many ways.</p><p>Even looking at screen reader users, individual preferences and settings can throw assumptions out of the window.</p><p>I have lost count on how often I have seen developers adding <code>tabindex="0"</code> to random text because they couldn't reach it using the tab key, and so they assumed that nobody could reach it.</p><p>Of course, screen readers have ways to read text on web pages. They would be pretty useless otherwise.</p><p>This blog post was spawned by the <a href="https://survey.devographics.com/en-US/survey/state-of-html/2023" rel="noreferrer">“State of HTML 2023” survey</a> and its question on the <code>focusgroup</code> attribute, which is an <a href="https://open-ui.org/components/focusgroup.explainer/" rel="noreferrer">Open UI proposal</a> that I had never heard of before.</p><p>Its goals are to bring the focus behavior of <code>&lt;select&gt;</code> elements and radio groups to other elements.</p><p>To recap: When you encounter an element with focusable child elements, the usually expected behavior is that the arrow keys do the navigation among these child elements.</p><p>Tab to a native <code>&lt;select&gt;</code> and use the arrow keys to make a selection. This is genuinely useful behavior. You would not want to stop at every sub-item of a select, and differentiating between these two focuses makes sense.</p><p>What could bring problems is to generalize that behavior to random elements.</p><p>The use case is custom composite widgets, but experience shows that eager developers will use it in other circumstances. It would be a better approach to define default keyboard behaviors in ARIA and let developers opt into browsers managing focus for that specific role and its children.</p><pre><code class="language-html">&lt;!-- THIS IS NOT REAL CODE --&gt; &lt;div role=&quot;menubar&quot; aria-interaction=&quot;default&quot;&gt; &hellip; &lt;/div&gt;</code></pre> <p>That way, browsers could verify that a role is used correctly and take measures to fix misuse. Developers would be encouraged to use correct roles for widgets and their children, if they want to reap the benefits of the default keyboard interactions.</p><h2 id="conclusion">Conclusion</h2> <section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>The power to redefine how focus works amongst a group of UI elements brings with it a great deal of responsibility to not mess it up. For most people, including many accessibility pros, it’s a challenge to decide when to use which behavior.</p><p>Developers are bound to stumble over these techniques, like they do now with over-eager use of ARIA roles or the <code>tabindex</code> attribute. They might implement it without checking their assumptions.</p><h2 id="a-note-on-the-state-of-html-2023-survey">A note on the “State of HTML 2023” survey</h2> <p>Generally, I think a survey like this can be useful. It would be even more useful, if it would address longstanding accessibility issues and also not itself misuse HTML elements:</p><p>Radio buttons are not supposed to be uncheckable[^ You can literally click on a radio button to mark it, and then click on it again to now have no radio button marked.], but if you insist on using that functionality, it must be keyboard accessible, too.</p><p>It's also problematic that the technologies are only referred to by name without any indication if the technology is in the HTML standard (or adjacent standards), like focus group, which is a seemingly early proposal within Open UI.</p><p>Presenting landmark elements, which are part of HTML for a decade, alongside focusgroup makes little sense to me.</p><h2 id="a-note-on-the-focusgroup-proposal">A note on the focusgroup proposal</h2> <p>The proposal does not use great HTML practices, which does not lean trust to it. A <code>menubar</code>/<code>menuitem</code> example uses <code>&lt;ul&gt;</code>/<code>&lt;li&gt;</code> elements only to redefine their roles. Just use <code>&lt;div&gt;</code> elements!</p><p>Another issue is the use of <code>tabindex="-1"</code> for demoting inactive elements in a focus group. Browsers without support will make the elements with that <code>tabindex</code> unreachable using the tab key, potentially hide interactive elements from users, which is suboptimal.</p><p>I also don’t like that it is both, a HTML and CSS proposal. It feels like there is a lot of potential for conflict when both are applied.</p><p>That said, in the early days of ARIA I had an idea to use CSS-inspired “Cascading ARIA Sheets” which would allow developers to assign roles and properties using CSS selectors and a similar syntax. I still think it could be a nifty technology to have (that would of course bring its own challenges).</p> ]]>
    </description>
    </item>
    <item>
    <title>Accessibility is not inclusive design or disability rights. It’s a part of it.</title>
    <link>https://yatil.net/blog/accessibility-is-not-inclusive-design</link>
    <guid>https://yatil.net/blog/accessibility-is-not-inclusive-design</guid>
    <pubDate>Wed, 16 Aug 2023 08:45:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Every few months, the discussion comes up that you cannot make accessibility work if you are not fighting for disability rights or practicing inclusive design. While there is a kernel of truth in that – it will certainly be easier to make consistently good choices regarding the interaction of disabled individuals with the product you create – it is not a requirement for accessibility practices.</p><p>What I mean by that is that often, you are in a situation where you cannot influence the culture or moral of a company. Making inaccessibility a moral failure can mean that people go in a defending position, resulting in less progress than otherwise.</p><p>For me, accessibility is mainly a set of practices that allow practitioners to build their product in a way that does not introduce obvious barriers for users. To do that effectively, of course they need to learn about the disabled experience and how people (in my case) use the web. And hopefully that sparks interest and thinking more about disability needs as a whole.</p><p>The truth is that we live in an ableist world. Most accessibility work is done against ableist headwinds. Sometimes these are blatantly obvious (“we only want to conform to the minimum standard defined by law”), sometimes they are clear in project constraints (time and budget).</p><p>If I can change those parameters, I will, and I try whenever the opportunity arises. If I can use my WCAG report to inform developers on how to think about the interaction of disabled users with their product, I will.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>But in the end, it is important that the practitioners do the actual practice of putting the right elements at the right place in HTML, and know what an accessible name is. It is one of the fundamental building blocks, because you won’t have an inclusive society if you don’t have these stepping stones in place.</p><p>There are often memes going around in the accessibility space that show “curb cuts to nowhere”. Where a curb cut does end at a place where there is no sidewalk. It nicely shows that accessibility practices on their own do not guarantee an accessible experience.</p><p>That said, the person putting in the curb cut is not responsible for making their municipal government anti-ableist. Realistically, there is no way to do that. One option is to give up and not add a curb cut to that side. Or the other is to do it, so it is ready once the sidewalk is built. And in the meantime it means a flat surface area for people to stand on, and a call button that enables blind and low-vision users to cross the street.</p><p>Is that disability justice? No, not at all. Is it inclusive design? Not by a long shot. Does it create the requisites to make both happen in the future? Yes.</p><p>Accessibility on its own can improve situations, following it cannot guarantee inclusive spaces. But without accessible building blocks, you can never reach inclusivity.</p><p>(Apparently this blog post was written because I saw this <a href="https://www.linkedin.com/posts/toriclarka11y_userexperience-uxdesign-designmemes-activity-7097426328613781505-SF4v" rel="noreferrer">LinkedIn post by Tori Clark</a> appear – and then vanish – this morning. I tried to re-find it, but once LinkedIn has changed your timeline, it’s almost impossible.)</p> ]]>
    </description>
    </item>
    <item>
    <title>Do we need WCAG 3 (now)?</title>
    <link>https://yatil.net/blog/do-we-need-wcag-3-now</link>
    <guid>https://yatil.net/blog/do-we-need-wcag-3-now</guid>
    <pubDate>Fri, 28 Jul 2023 10:10:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Earlier this week, W3C/WAI announced that <a href="https://www.w3.org/TR/WCAG22/" rel="noopener noreferrer">Web Content Accessibility Guidelines (WCAG) 2.2</a> is <a href="https://www.w3.org/WAI/news/2023-07-20/wcag22PR/" rel="noopener noreferrer">now at the last hurdle before becoming a standard</a>. This is huge news because its precursor WCAG 2.1 is the basis of a lot of accessibility policy and laws. For example, the <a href="https://ec.europa.eu/social/main.jsp?catId=1202" rel="noopener noreferrer">European Accessibility Act (EAA)</a> makes web accessibility mandatory for most commercial websites. The requirements are set in the <a href="https://en.wikipedia.org/wiki/EN_301_549" rel="noopener noreferrer">European Norm EN 301 549</a> which explicitly directly references WCAG 2.1.</p><p>While WCAG 2 (and 2.1, and 2.2) has its flaws, like every standard has, it is a very successful standard. The whole accessibility industry has rallied around it, it is referenced by the <a href="https://www.accessibilityassociation.org/s/" rel="noopener noreferrer">International Association of Accessibility Professionals (IAAP)</a>[^ Quick acknowledgement that both, W3C and IAAP, are allowing memberships of companies selling dubious <a href="https://overlayfactsheet.com" rel="noopener noreferrer">accessibility overlays</a>.] in their certification programs.</p><p>In addition, we have fifteen years of experience with WCAG 2 now. Tooling, practices, expectations have been set. We have found guidance and documentation that is misleading or insufficient and corrected it over the years.[^ Huge shoutout to everyone who has contributed to <a href="https://github.com/w3c/wcag/issues" rel="noopener noreferrer">issues</a> and <a href="https://github.com/w3c/wcag/pulls" rel="noopener noreferrer">pull requests</a>!] We learned to explain the requirements and the ins and outs of how to address different failures.</p><p>And I think the knowledge of seeing a pattern in a code and knowing how to best meet or exceed WCAG is really what an accessibility professional can bring into a team. Identifying that something passes or fails is relatively simple, taking clients by the hand and guiding them to conformance is much harder[^ Of course, conformance should never be the end goal. But IMHO, it is a necessary stepping stone towards an inclusive product.]. And experience helps a lot in this regard.</p><p>W3C/WAI also announced a <a href="https://www.w3.org/WAI/news/2023-07-24/wcag3/" title="" rel="noopener noreferrer">new Working Draft of WCAG 3</a>, the next generation standard. Confusingly enough, apart from the abbreviation, WCAG 3 will have nothing in common with WCAG 2. Not even its name which is planned to become <a href="https://www.w3.org/TR/wcag-3.0/" rel="noopener noreferrer"><em>W3C Accessibility Guidelines 3</em></a>[^ And yes, I am unreasonably bothered by WCAG 2, 2.1, and 2.2 having <code>/TR/wcag2</code>, <code>/TR/wcag21</code>, and <code>/TR/wcag22</code> URL slugs respectively, and this one has <code>/TR/wcag-3.0</code>.]. This draft highlights the highly experimental nature of this specification right now.</p><p>I have written about the <a href="https://yatil.net/blog/wcag-3-is-not-ready-yet" rel="noopener noreferrer">WCAG 3 not being ready in 2021</a> and this is the first update since then. I would suspect that it will take at least until the end of the decade to see WCAG 3 come to fruition, if that fast. The W3C/WAI has a <a href="https://www.w3.org/WAI/standards-guidelines/wcag/wcag3-intro/" rel="noopener noreferrer">good overview of the changes that might be coming in WCAG 3</a>.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="do-we-need-a-revolution">Do we need a revolution?</h2> <p> “[T]his is another positive step toward a much needed revolution of WCAG.” <a href="https://www.linkedin.com/posts/lwatson_w3c-accessibility-guidelines-wcag-30-activity-7089262646587195393-Cvmz" rel="noopener noreferrer">writes Léonie Watson in LinkedIn</a>.</p><p>I don’t fully agree. Producing a new standard seems to be a solution to some of the issues that WCAG has, mainly the intermixing of guidance and conformance, hard to read language or limits of where WCAG 2 applies due to new technologies.</p><p>That said, the base principles of accessibility (perceivable, operable, understandable, and robust) will not change. WCAG 2 compliant sites won’t be inaccessible once the standard is published. Indeed, <a href="https://www.w3.org/WAI/standards-guidelines/wcag/wcag3-intro/#timeline" rel="noopener noreferrer">W3C/WAI says that WCAG 2 will exist long after WCAG 3 is published</a>: “WCAG 3 will not supersede WCAG 2, and WCAG 2 will not be deprecated, for at least several years after WCAG 3 is finalized.”</p><p>Let’s say WCAG 3 is finalized in 2029[^ See, I can be optimistic!] and the transition period is five years until 2035, then this gives companies a decision point for quite a long time: Can I change to WCAG 3 while WCAG 2 is legally required? Do I have to conform to both to be future-proof?</p><p>Testers and auditors on the other side must cater for two different types of tests every time they start an audit. Sometimes they might need to use ruleset A and other times B and sometimes a combined AB ruleset. And if that wasn’t making it complicated enough, one of the goal of WCAG 3 is to move away from the binary pass/fail criteria of WCAG 2 to a graded, well, grade.</p><p>While this sounds useful in practice, there is a lot of bookkeeping involved. Currently, if an image has no alternative text (and should have one), that page fails SC 1.1.1 Non-Text Content. In the future, the amount of images might have an impact on the conformance. <a href="https://www.w3.org/TR/wcag-3.0/#test-scopes" rel="noopener noreferrer">Test Scopes</a> describes the current thinking of the group (the section is marked as “developing”). I think this kind of scoring will work great for large companies with in-house testers and processes, but it will make it much harder for individuals or small consultants. This part of the standard could probably be its own separate testing standard.</p><p>And indeed with WCAG 2, we have <a href="https://www.w3.org/WAI/test-evaluate/conformance/wcag-em/" rel="noopener noreferrer">Evaluation Methodology (WCAG-EM)</a> that does some of this.</p><h2 id="evolution">Evolution</h2> <p>WCAG 2 has shown over 15 years that it can be shaped into a better standard with incremental updates. It feels wasteful that we are training people and companies on WCAG 2.2 in the next five years, only to then pivot to the shiny new thing. Which in practice will not be a significant improvement for disabled people, apart from the new cognitive requirements that, by definition, cannot fall into the pass/fail scheme of WCAG 2[^ Again, the principles for accessibility stay the same, and I’m convinced that if there are gaps, those can be filled in WCAG 2, too – if the Working Group would choose to do it.].</p><p>That said, why could the conformance model of WCAG 2 not be adapted to these requirements? Could WCAG 2 reference another standard that has more of these “squishy” requirements? I think it is totally in the realm of a standard like WCAG to say “here are the practices for readable text” and then leave it to the reviewer to make the argument for pass/fail.</p><p>CSS is the other successful standard at W3C/WAI. It works because it is an iterative improvement. Like WCAG 2, it is only additive. Unlike WCAG 2, it is developed in modules. Have a good idea for a CSS module? Spec it, have it implemented, and voilà, it’s part of CSS. This should be the way WCAG 2 works, too. If there is a new color contrast approach, why not put that into its own module, mature it on its own and when that has happened, add it to the next version of WCAG 2.</p><p>W3C wanted to reinvent an important standard, HTML, in the early 2000s. XHTML, an XML version of HTML, was supposed to be the next version. It broke compatibility with many previous HTML implementations and practices. And, in the end, it failed. W3C lost HTML to the What Working Group. If WCAG 2 is still used by laws and policies but W3C/WAI does not want to further develop it, there might be a gap for people who want to continue with the tried ways of WCAG 2.</p><p>On the other hand, how good is a WCAG 3 that only gets updated like WCAG 2, every 5 to 10 years? In any case, the rate of updates needs to increase. WCAG 2 has hundreds of open issues and pull requests, mostly for supplemental guidance like the Understanding and the Techniques. And exactly those types of information is what WCAG 3 is thinking about to update frequently. The question is: Will this be done? Understanding, Techniques and other documents are already supposed to be up-to-date. But even the correction for minor typos are often not published.[^ Like my <a href="https://github.com/w3c/wai-wcag-quickref/pull/214" rel="noreferrer">evergreen “refow” typo in the quick reference</a>.]</p><h2 id="conclusion">Conclusion</h2> <p>I know that the people who are working on WCAG 3 have the right intentions. It just doesn’t fill me with confidence to see so many issues and pull requests open for a standard and its supporting documents. As far as I can see, WCAG 2 will be on life support at best in the coming years.</p><p>I would not want to switch places with people new to the accessibility field – be it as designers, developers, or testers – in the coming years. We have a long transitional phase in front of us. This would be OK if WCAG 2 was a universally understood and applied baseline. But it is not. Most websites fail WCAG, and I don’t think that will change over the next years, also not with a new standard overnight.</p><p>For me, WCAG 3 currently feels like a big distraction, the candy you are not allowed to have for a long time. And then you need to develop tools, and teach the standard to people, and lobby for adoption. All while WCAG 2 is there and could be improved. </p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section> ]]>
    </description>
    </item>
    <item>
    <title>Quick guidance for referring to (parts of) HTML elements</title>
    <link>https://yatil.net/blog/quick-guidance-for-referring-to-parts-of-html-elements</link>
    <guid>https://yatil.net/blog/quick-guidance-for-referring-to-parts-of-html-elements</guid>
    <pubDate>Sun, 23 Jul 2023 17:45:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>When writing about HTML, especially in the context of accessibility audits, you always need to be very clear in what you mean. Otherwise, the guidance is challenging to read for your audience. </p><p>I recommend to always include brackets with the element names. You can differentiate attributes and values by using these words. Always include the word “value” when talking about values.</p><ul><li>First mention of an element: “<code>&lt;h1&gt;</code> element”</li><li>First mention of an attribute: “<code>id</code> attribute”</li><li>First mention of a value: “<code>my-great-id</code> value”</li><li>Subsequent mention of an element: “<code>&lt;h1&gt;</code>” or “<code>&lt;h1&gt;</code> element”</li><li>Subsequent mention of an attribute: “<code>id</code>” or “<code>id</code> attribute”</li><li>Subsequent mention of a value: “<code>my-great-id</code> value”</li><li>Avoid the use of “tag” when the whole element is the subject of the sentence, do only use “tag” when it is specific to the start or end tag. Always specify “start tag” or “end tag”.</li></ul><p>(This post was imported from my micro.blog.)</p> ]]>
    </description>
    </item>
    <item>
    <title>WCAG 2.2 misses mark on defining visible focus</title>
    <link>https://yatil.net/blog/wcag22-visible-focus</link>
    <guid>https://yatil.net/blog/wcag22-visible-focus</guid>
    <pubDate>Fri, 02 Jun 2023 10:30:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>About two weeks ago, the WCAG WG released a new version of the Candidate Recommendation for WCAG 2.2. After it had been in the Editor’s Draft for quite some while, it changed the requirements for the <a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230517/#focus-appearance" rel="noopener noreferrer">Focus Appearance Success Criterion</a> (SC).</p><p>The SC was deemed to not be AA-worthy. With the W3C process, however, items marked as <em>at risk</em>, which this SC was, can only be removed before publication of the standard, not altered. So changing it to a AAA criterion meant that there had to be a new Candidate Recommendation anyway.</p><p>The WG took that opportunity to change the order of the SC, too, as new AAA success criteria have always been inserted after AA success criteria. I’m not fond of the last-minute SC number change (it is now 2.4.13 instead of 2.4.11) but it can always happen. It’s one reason why I never refer to SC numbers when talking about proposed criteria in Editor’s or Working Drafts. I am not sure that this has ever happened during Candidate Recommendation phase, however. [^ Hence I used the SC numbers in the headings of a recent blog post.]</p><p>First, <strong>the good thing</strong> about the changed 2.4.13 Focus Appearance criterion: It reads really simple, and that is a good thing. To meet AAA, your focus indicator needs to be at least as large as a 2px thick around the perimeter of the focused element and have a 3∶1 contrast ratio.</p><p>Now, <strong>the bad thing</strong> about the change: The previous proposal of moving <a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230517/#focus-visible" rel="noopener noreferrer">2.4.7 Focus Visible</a> to A level has been completely reverted. A basic, in any way visible focus is essential for keyboard users who do not use assistive technologies that create their own focus ring. It is such a basic accessibility affordance like having good page titles or having a consistent focus order, both SCs are A-level SCs.</p><p>It makes little sense to say that the order of the focused elements must be logical, but it does not matter to be able to perceive where you are in those elements.</p><p>This SC should have been an A-level SC from WCAG 2.0 back in 2008. That the Working Group has reverted a change that would not affect most people (as the general baseline is AA in laws and policies) but sent a signal on its importance is baffling to me.</p><p>But, the most outrageous issue is that what a “visible focus” stays undefined at AA level. Arguably, changing one pixel from white to just off-white satisfies that there is a visible change on focus.</p><p>This is the only place where, in an AA SC, the term visible is not defined. <a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230517/#contrast-minimum" rel="noopener noreferrer">1.4.3 Contrast Minimum (AA)</a> defines is as 3∶1 for large/bold text and 4.5∶1 for normal size text. <a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230517/#non-text-contrast" rel="noopener noreferrer">1.4.11 Non-text Contrast (AA)</a> defines it as 3:1 against adjacent colors.</p><p>Anything that is stronger than “visible” on an AA level would have been welcome. <a href="https://github.com/w3c/wcag/issues/2687" rel="noopener noreferrer">I proposed simplifications to the initial AA Focus Appearance SC</a>, which were deemed as <a href="https://github.com/w3c/wcag/issues/2687#issuecomment-1308736768" rel="noopener noreferrer">not strict enough (and at the same time overly strict)</a> by the group last November.</p><p>The Group could have added an SC that defines what visible is: “At least a part of the focus indicator has a 3∶1 contrast ratio between the same pixels in the focused and unfocused states.”</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="why-is-this-important">Why is this important?</h2> <p>Good focus styles make the lives better of many disabled people and are generally a usability win. Many who do not think of themselves as disabled use the keyboard to navigate web pages. A visible focus is an essential affordance.</p><p>The other reason is that WCAG 2.2 is planned to be the final update for WCAG 2. The <a href="https://raw.githack.com/w3c/wcag/charter-2022/charter.html" rel="noopener noreferrer">proposed new Charter for the Working Group</a> puts WCAG 3 at the front, with WCAG 2 going into maintenance mode. And considering that the<a href="https://github.com/w3c/wcag/issues/3143" rel="noopener noreferrer"> WG refuses to publish updates in the case of typos</a>, I expect little maintenance on the actual specification.</p><p>As for WCAG 3, the Charter has an “expected completion date” of Q2, 2026. But the <a href="https://www.w3.org/2019/12/ag-charter" rel="noopener noreferrer">previous/current charter</a> stated WCAG 2.2 would be done by Q4 2020 and WCAG 3 done by Q2 2023.</p><p>I don’t blame the Group for having deadlines slip in the midst of a global pandemic. But I take the expected dates with a grain of salt, especially as we are staring at a <a href="https://www.w3.org/standards/history/wcag-3.0" rel="noopener noreferrer">WCAG 3 Working Draft</a> that has seen no updates over the past year. And it tries to re-invent accessibility conformance completely. I’ll not repeat that I think an evolution of WCAG 2 – a generally good standard that would need more frequent updates – would be a simpler approach. You can <a href="https://yatil.net/blog/fix-web-accessibility-systematically" rel="noopener noreferrer">read about it here</a> or watch <a href="https://www.youtube.com/watch?v=PZYiweHuo_I" rel="noopener noreferrer">my 75-minute presentation here</a>[^ Feel free to <a href="https://youtube.com/watch?v=PZYiweHuo_I&amp;t=3122" rel="noopener noreferrer">skip to the WCAG chapter</a> directly.]. </p><p>But I don’t expect WCAG 3 to be ready before the end of the decade. And that means, gaps in conformance that have a real impact on users will be at least be unsolved for another decade, as it will take time for WCAG 3 practices to get developed. That is a lot of time during which we are basically OK with the rules of accessibility as they are. Maybe we should aim for better.</p> ]]>
    </description>
    </item>
    <item>
    <title>We need accessibility action</title>
    <link>https://yatil.net/blog/accessibility-action</link>
    <guid>https://yatil.net/blog/accessibility-action</guid>
    <pubDate>Sat, 01 Apr 2023 21:20:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>The <a href="https://webaim.org/projects/million/" rel="noopener noreferrer">latest WebAIM Million</a> has come out. For those who are unaware, it is an automated accessibility evaluation of the top 1 Million home pages. While it is an automated test which only finds a subset of accessibility barriers, its results can at least show us trends:</p><ul><li>Average errors per home page went slightly down to 50 errors.</li><li>96.3% of home pages still have easily detectable WCAG failures. That is only a decrease of 1.5% in four years.</li><li>96.1% of errors fall in six categories:<ul><li>Low contrast text</li><li>Missing alternative text for images</li><li>Empty links</li><li>Missing form input labels</li><li>Empty buttons</li><li>Missing document language</li></ul></li><li>The use of ARIA (Accessible Rich Internet Applications) has increased a lot. And home pages that use ARIA are more likely to be inaccessible.</li></ul><p>The shocking truth is, that we cannot make the web accessible at a rate of 5000 websites per year. There are gigantic Diversity, Equity, and Inclusion programs, and they barely make a dent in the actual accessibility of websites. Where are the commitments, where are the action plans? It’s just the home page, we should have shamed — sorry, encouraged — people to at least get their home pages in order.</p><p>Also, the 96% of issues that are found on websites? These are not new requirements. They all have been around since WCAG 1.0[^ <a href="https://www.w3.org/TR/WCAG10/" rel="noopener noreferrer">Web Content Accessibility Guidelines 1.0</a>] which was released in 1999 and will celebrate its 24th birthday in May. The same principles have been carried over in the 2.0 and 2.1 standards released in 2008 and 2018.</p><p>A quarter of a century and basic accessibility is not met by 96% of home pages. I find this fact embarrassing. Mostly as a web developer because fixing those six issues can be learned in a day. If you are a web developer who does not know how to fix them, read these two excellent articles from Hidde now: <a href="https://hidde.blog/common-a11y-issues/" rel="noopener noreferrer">Post 1</a>, <a href="https://hidde.blog/more-common-a11y-issues/" rel="noopener noreferrer">Post 2</a>.</p><p>But I also find it embarrassing for web accessibility. We should have better strategies to educate people about the issues, provide them with actionable feedback and make sure that issues are effectively addressed.</p><p>For other issues, we should explore how to minimize the impact on disabled people by using browsers to mitigate issues. A ramp built into a train will generally be more available than a situation where every stop needs to provide its own ramp.[^ Yes, this simplifies the maintenance and reliability issues of some built-in ramps.]</p><p>Mitigation for low contrast text could be done by the browser directly: <a href="https://fixa11y.com" rel="noopener noreferrer">Fixa11y</a> is a browser plugin that detects low contrast text and adjusts it to meet minimum or even high contrast scenarios. If this was built into browsers, it would take the burden from implementors, and allow users to customize their experience.</p><p>But the browser cannot do everything. Alternative texts need to be customized and fit into the page and context where they are. Automated image recognition is getting better, but it is far from context-aware enough to rely on it daily. That said, it is technically possible to add a default, maybe very detailed description to image files, especially if they are package files. Those detailed image descriptions would travel with the file and be available <em>as a fallback option</em> in case no context alternative text is provided.</p><p>Empty links and buttons, as well as unlabeled form elements, should be part of the browser’s console error messages. There is no reason why JavaScript programming errors trigger messages, and accessibility issues do not. Tooling is bizarrely oblivious to accessibility.</p><p>Essential ARIA functionality must be transferred into HTML. ARIA needs to be a specialist tool that you only get out if you don’t have any other options. Many of the ARIA techniques are very intricate and for 90% of developers they should never be exposed to that kind of complexity and power.</p><p>In the end, we must guarantee an accessible web that everyone can use and adjust to their needs. This is the basic promise of the web, a promise that is broken every day.</p><p>Some people think it’s the standard, and if we quickly work on a version 3 of WCAG, all will fall into place. I don’t buy that. We have standards for almost a quarter of a century and people are unable or unwilling to follow them. Rephrasing the basic principles – that content must be perceivable, understandable, operable, and robust – will not move the needle towards an inclusive web. In the best case, web accessibility will drag on. In the worst case, we will have multiple standards to follow that have entirely unique ideas of how to test and measure accessibility.</p><p>And we have a good standard. WCAG 2 has its weaknesses, but meaningful evolution is possible if the Working Group wants it.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>After many, many, years of trying to make the web accessible doing the same things, maybe it is time to re-evaluate. Take a look at the list of issues and develop a strategy on how to address each of them. Look holistically where these issues are introduced and how we can start to prevent them. The current strategy of “here are rules, deal with them, goodbye” has not worked, and the rules don’t go away while we remove the systematic issues plaguing accessibility.</p><p><em>I wrote about this topic before in </em><a href="https://yatil.net/blog/fix-web-accessibility-systematically" rel="noopener noreferrer"><em>Fix web accessibility systematically</em></a><em> and spoke about it in my talk </em><a href="https://www.youtube.com/watch?v=PZYiweHuo_I" rel="noopener noreferrer"><em>Web Accessibility is broken. It’s time to fix it!</em></a></p> ]]>
    </description>
    </item>
    <item>
    <title>Automated testing won’t solve web accessibility</title>
    <link>https://yatil.net/blog/automated-testing-wont-solve-web-accessibility</link>
    <guid>https://yatil.net/blog/automated-testing-wont-solve-web-accessibility</guid>
    <pubDate>Sat, 11 Feb 2023 22:45:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Over the past few years, accessibility companies have started to develop tools that claim to find accessibility problems automatically. Often the idea is that “automated testing is not quite there yet, but in a few years there will be a revolution”. I don't believe that.</p><h2 id="human-problems-need-human-solutions"><strong>Human problems need human solutions</strong></h2> <p>At its core, accessibility is about people interacting with computers. Users take different paths with their computers to get to your content. Sometimes that route is through a screen reader, zoom software, voice interface, or switch controls. In other use cases, there are no specific accessibility features involved. In addition, there are many written and unwritten user interface rules that apply: Is user interaction from one operating system even understandable on another operating system? Can different accessibility APIs even represent a specific UI element?</p><p>This has happened before, with the <em>Treeview</em> component, which is rarely used outside its natural <em>Windows 98</em> habitat. There is no rule against using it, but making it truly accessible instead of just conforming to some soulless specification is almost impossible.</p><h2 id="automated-findings-need-human-interpretation"><strong>Automated findings need human interpretation</strong></h2> <p>Sure, finding issues can be a challenge. But the real challenge is how to address an issue. An automated tool can easily say that a <code>&lt;div&gt;</code> with a <code>link</code> role cannot be reached with the keyboard. But what the correct course of action is, might not be clear to the person reading the finding.</p><p>Usually, you want to replace the <code>&lt;div&gt;</code> with an <code>&lt;a&gt;</code> element, but in other instances, removing the <code>role="link"</code> altogether is the correct advice. Might some AI/ ML/ InsertBuzzwordTechnologyHere be able to figure this out and make a decent guess? Maybe at some point. But the reality is that the automation might give you wrong advice, which means it will look to the tool that you fixed the issue, but in reality you haven’t.</p><h2 id="automated-testing-is-pretty-basic">Automated testing is pretty basic</h2> <p>WCAG 2.0 is 15 years old this year. And while tools to aid exploratory testing[^ In accessibility, we usually call this “manual testing”, but I’ve learned a few years ago that QA testers use the term “exploratory testing” instead. As web accessibility testing includes many instances of exploring the content with different tools and (assistive) technologies, I have adapted that nomenclature.] have matured and gotten better to guide testers through what needs to be done, most automated testing is still very basic. <a href="https://adrianroselli.com/2023/01/comparing-manual-and-free-automated-wcag-reviews.html" rel="noreferrer">Adrian Roselli compared his own exploratory testing to free automated tools</a> in a blog post recently.</p><p>The results are not good. While Adrian found 37 failures against WCAG, the most failures any tool found were five. No tool found any AA violations, Adrian found 11. The tools can also provide <a href="https://adrianroselli.com/2023/01/comparing-manual-and-free-automated-wcag-reviews.html#Warnings" rel="noreferrer">warnings</a>, which can be useful. But in my experience, the warnings can create more confusion, especially when the tool users are inexperienced.</p><p>While A success criteria (generally) have the most impact on disabled people, not finding any AA criteria is obviously a weakness. It clearly shows that you cannot rely on automated testing alone to meet the absolute minimum level of WCAG AA.</p><h2 id="efficient-automated-testing-works-best-for-preventing-regressions"><strong>Efficient automated testing works best for preventing regressions</strong></h2> <p>While I think automated testing tools are not good at finding accessibility issues and helping to remediate them, the tests can help with <em>keeping</em> a website or app accessible. Significant issues will crop up earlier when you have regular linting and automated testing for accessibility. This becomes even better if you can include best practice rules. Comparing to a known best practice will always be more useful than having a general purpose tool.</p><h2 id="might-this-get-better-in-the-future"><strong>Might this get better in the future?</strong></h2> <p>Maybe. It is hard to gauge the future of our community at the moment. On one hand, it looks like some aspects get easier to test, on the other hand, new requirements are introduced occasionally. And then there is room for interpretation of the rules and how to apply them. And that all does not take into account that the web is a magical, flexible medium that you can adapt to a plethora of things.</p><h2 id="but-manual-testing-is-hard-and-expensive">But manual testing is hard and expensive</h2> <p>That’s true. Deal with it. 😎</p><p>There is no way around doing a manual/exploratory test eventually. That is just the nature of the task at hand. And as much as you would expect a developer to know enough to check their code generally for bugs like performance and security, we also need to teach developers to do the same. It’s not that this would completely prevent the need for exploratory testing, but it would certainly prevent shipping the simple to recognize accessibility bugs.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>Automated tools should run continuously and issues remediated immediately. That’s where these tools are useful. In all other cases, automated tools can be too hard to understand for users who are not accessibility experts. And once they have acquired enough knowledge to understand them, the users don’t need automated testing anymore.</p><h2 id="update-february-15-2023">Update February 15, 2023</h2> <p><a href="https://karlgroves.com/automation-is-not-the-enemy/" rel="noreferrer">Karl Groves published a blog post called “Automation is not the enemy”</a>, where he specifically calls out the title of this article without linking to it (which is fair). As an automation nerd, I enthusiastically agree that automation is our friend. I automate the heck out of my life on an everyday basis. I have Stream Deck buttons that switch on and off different email accounts, depending on the work I do.</p><p>But, especially for accessibility testing, users of those tools must be aware that they are severely limited, which Karl also agrees with:</p><blockquote> It is true that there are a lot of shortcomings when it comes to automation of something like accessibility testing. <footer> Karl Groves </footer> </blockquote> <blockquote> Sadly, it bears mentioning that no automated accessibility testing tool on the market today can fully test for every possible accessibility challenge. In fact, some WCAG Success Criterion cannot be tested for using any automated means available now. <footer> Karl Groves </footer> </blockquote> <p>I’m not sure where his leap of understanding comes from when he writes in the following sentence:</p><blockquote> That said, it is still irresponsible to act as though automated testing is bad and should be avoided. <footer> Karl Groves </footer> </blockquote> <p>Because I don’t think anyone has said that. At least I did not write this in my article. The fair summarization of my article is “automated testing tools have limits (hence they don’t on their own solve web accessibility) and people need to be aware of them”.</p><blockquote> A while ago, a competing vendor started making the claim that their tool could find over 70% of accessibility issues, then made hand-wavy explanations of how they came to that conclusion. I decided to do my own research. What I found, based on Tenon’s data, is that my own findings from my blog post “<a href="https://karlgroves.com/web-accessibility-testing-what-can-be-tested-and-how/" rel="noopener noreferrer">What can be tested and how</a>” from 2012 is still accurate – <strong><em>but </em></strong>that there’s a pretty big difference between “possible” and “likely”, and Tenon.io was able to find 59% of likely accessibility issues. <footer> Karl Groves </footer> </blockquote> <p>I don’t think any of this contradicts my post above. I explicitly say, “While A success criteria (generally) have the most impact on disabled people, not finding any AA criteria is obviously a weakness.” And yes. Adrian’s test is limited to one site only, but it matches my experience. Level A issues are generally more likely to occur than AA issues. As Karl points out, the lens though which you view results is essential. 60% of likely accessibility issues is good, but we can’t call this “accessibility solved” – and we all agree on that.</p><p>Automated tools have become better in recent years in other ways than how many errors they detect. Interoperability is one aspect, there is a W3C Working Group that makes sure that tools can use the same tests to interpret things similarly. That’s good. I don’t claim that there has been no development in these tools, just that they are limited. And those limits come from the way accessibility as a discipline needs to be viewed (a human problem with human solutions) and how the standards are written.</p><p>Finally, Karl makes the good point that automated tools that are regularly used by trained accessibility professionals can speed up, help, and supplement manual/exploratory testing. And I totally agree. Professionals use tools and know their limits and how to interpret results. But that doesn’t mean that the same tools can be given to non-professionals with the expectation of similar success.</p><p><em>Final note:</em> I have recommended Tenon.io in the past to clients where I thought it was the right fit. I regularly tell people to use axe to verify their work. But I also say that they might need a professional that interprets the results or recommend best practices to solve issues, and advise them to reach out, if they are unsure about the results or how to address errors.</p> ]]>
    </description>
    </item>
    <item>
    <title>New WCAG 2.2 features rated</title>
    <link>https://yatil.net/blog/new-wcag-22-features-rated</link>
    <guid>https://yatil.net/blog/new-wcag-22-features-rated</guid>
    <pubDate>Sat, 28 Jan 2023 22:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>It’s January 2023 and there is a new <a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/" rel="noopener noreferrer">WCAG 2.2 Candidate Recommendation Draft</a> (which apparently <a href="https://www.w3.org/2021/Process-20211102/#RecsCR" rel="noopener noreferrer">is a different type of document</a> from the <a href="https://www.w3.org/TR/2022/CR-WCAG22-20220906/" rel="noopener noreferrer">September Candidate Recommendation <em>Snapshot</em></a>). Here is a <a href="https://services.w3.org/htmldiff?doc1=https%3A%2F%2Fwww.w3.org%2FTR%2F2022%2FCR-WCAG22-20220906%2F&amp;doc2=https%3A%2F%2Fwww.w3.org%2FTR%2F2023%2FCRD-WCAG22-20230125%2F" rel="noopener noreferrer">diff between these two versions for your convenience</a>.</p><section class="toc" aria-labelledby="toc"><h2 id="toc">Table of Contents</h2><ul> <li><a href="#about-the-ratings">About the ratings</a></li> <li><a href="#2-4-11-focus-appearance-level-aa">2.4.13 Focus Appearance (Level AAA)</a><ul> <li><a href="#update-7-february-2023">Update 7 February 2023</a></li> <li><a href="#update-2-june-2023">Update 2 June 2023</a></li> </ul> </li> <li><a href="#2-4-12-focus-not-obscured-minimum-level-aa">2.4.11 Focus Not Obscured (Minimum) (Level AA)</a></li> <li><a href="#2-4-13-focus-not-obscured-enhanced-level-aaa">2.4.13 Focus Not Obscured (Enhanced) (Level AAA)</a></li> <li><a href="#2-5-7-dragging-movements-level-aa">2.5.7 Dragging Movements (Level AA)</a></li> <li><a href="#2-5-8-target-size-minimum-level-aa">2.5.8 Target Size (Minimum) (Level AA)</a><ul> <li><a href="#update-3-february-2023">Update 3 February 2023</a></li> </ul> </li> <li><a href="#3-2-6-consistent-help-level-a">3.2.6 Consistent Help (Level A)</a></li> <li><a href="#3-3-7-redundant-entry-level-a">3.3.7 Redundant Entry (Level A)</a><ul> <li><a href="#update-4-february-2023">Update 4 February 2023</a></li> </ul> </li> <li><a href="#3-3-8-accessible-authentication-level-aa">3.3.8 Accessible Authentication (Level AA)</a></li> <li><a href="#3-3-9-accessible-authentication-enhanced-level-aaa">3.3.9 Accessible Authentication (Enhanced) (Level AAA)</a></li> <li><a href="#4-1-1-parsing-obsolete-and-removed-level-a">4.1.1 Parsing (Obsolete and removed) (Level A)</a></li> <li><a href="#conclusion">Conclusion</a></li> </ul></section><h2 id="about-the-ratings">About the ratings</h2> <p>I judge the success criteria by different categories:</p><ul><li><strong>Understandability:</strong> For me, this is the most important criterion for the success of an SC. If it is hard to understand, it will mean that people will have a hard time learning and internalizing the SC.</li><li><strong>Teachability:</strong> While this seems to be closely related to understandability, it is a slightly different aspect that I find critical. Sometimes hard to understand concepts can be easily taught.</li><li><strong>Testability:</strong> How much will this change affect testing. Is it a massive burden, or is it something that you can test with other tests.</li><li><strong>Impact:</strong> How much will this change improve the lives of disabled people?</li></ul><p>All four categories will be graded on a scale of zero to five, where five is the best possible rating. Of course, this is far from scientific, but I try to explain my ratings in (excruciating) detail!</p><h2 id="2-4-11-focus-appearance-level-aa"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230517/#focus-appearance" rel="noopener noreferrer">2.4.13 Focus Appearance (Level AAA)</a></h2> <p><strong>What this SC does:</strong> 2.4.11 is supposed to make clear what “visible” means for <strong>2.4.7 Focus Visible</strong>. It defines the area that the visible focus needs to cover and how much contrast there needs to be towards adjacent colors.</p><p><strong>Rating:</strong> This success criterion is a mess. You can see the ambition of the Working Group to finally fix <strong>2.4.7 Focus Visible</strong>, but the resulting SC just is not very good. And it hasn’t changed since September. It introduces four new definitions and has various sub-rules. There are different requirements for when the entire focus indicator encloses the UI component in question or when it only partly does so. Sometimes it must meet a 3:1 contrast ratio unless a certain thickness is met. There are no obvious fail cases this way and also no obvious pass cases because one pixel that doesn’t meet the 3:1 contrast ratio means that a different calculation needs to be used. This SC is still <em>at risk</em> and I wished it was either split up or replaced with easier to understand and test guidance. (More in the <em>conclusion</em> below!)</p><ul><li><strong>Understandability:</strong> 0 — You can read this Success Criterion many, many times, and you will always find new ways to combine the different clauses which upend your previous assumption of what is a pass or a fail.</li><li><strong>Teachability:</strong> 0 — I think I can give most people a good overview on what any success criterion is and how to apply it in practice (be it an implementor or tester) in an hour. For this, I don’t even know where to start. I usually try to summarize a success criterion in one sentence and then spiral out into exceptions and particularities of an SC from there. Here, apart from “defines the appearance of the focus in many ways” I don’t even know where to start.</li><li><strong>Testability:</strong> 2 — This is generous. I think that the different descriptions will help to determine relatively exactly if something meets the SC or not. That said, it will be a lot of work to go through every focusable element and see if they meet the SC or if a vital part of the visible focus does not meet the SC. I would expect that this can add hours to some complex pages.</li><li><strong>Impact:</strong> 5 — Obviously, having a visible focus is super important. Having this guidance in WCAG 2.2 is long overdue.</li><li><strong>Verdict:</strong> <strong>7</strong>/20</li></ul><h3 id="update-7-february-2023">Update 7 February 2023</h3> <p>Alastair Campbell has <a href="https://alastairc.uk/2023/02/focus-appearance-thoughts/" rel="noopener noreferrer">published a post explaining the SC</a>. I appreciate the blog post, but it does actually show what the issue here is. his examples are all clear-cut and isolated examples. It is a good introduction for <em>implementers</em>, but it does little for testers. I think this is exemplary by this quote:</p><blockquote> For example, a 25 by 100px button requires an indicator area of 25+25+100+100 = 150px.<br>Technically we need to take off 4px for the corners as they overlap, so it is 146px. However, if you are relying on 4 pixels you have bigger problems. If it is that close, pick a different indicator! </blockquote> <p>As a tester, it is not on me to chose that. I need to measure it. And if there is a difference of 4px, I need to understand that. I would argue that, if 4px out of an area of 150px doesn’t matter, why insist including it in the definition. Why go through the length of <a href="https://www.w3.org/TR/WCAG22/#dfn-perimeter" rel="noopener noreferrer">defining a perimeter</a>? The reason is that a CSS outline works that way, the four pixels in the corners are shared between vertical and horizontal borders/outlines.</p><p>So those four pixels matter <em>a lot</em> to make it easy to conform in simple instances. Because if we don’t account for those four pixels, the focus definition of <code>outline: 1px solid black</code> would not conform on a white background.</p><p>Testers must understand this. That’s why I say that this SC has very intricate new concepts testers must understand making a decision on conformance.</p><p>The next example shows a four pixel thick left line next to the text “Example 2”. The text is on a grey background. Considering that this example is about the perimeter rule, the whole height of the link or button is apparently set by the background color. With a star or a circle, the perimeter would follow the exact <em>visual </em>outline of the shape. Here, the faint grey background is counted as part of the shape. Would the perimeter apply only to the text height, if there was no background color? I think so (but I might be wrong). If that was the case, changing the background of a component from white to just off-white would change its focus indicator requirement.</p><p>Another example is “Easy to assess passes”, example 3. A white button with black text whose focus style is an inverted color scheme: black button with white text. It’s probably one of the most common examples of a <em>good</em> focus style. But there is nothing in the SC that screams that makes this pass obvious. It passes clause 2 as on focus, 100% of all pixels change color with sufficient contrast, which is more than the pixels needed.</p><p>Of course, I can teach those clear examples, but that is not where the rubber meets the road when doing testing and teaching. Even for the clear examples, I need to clearly rationalize why the elements conform. This is especially important when we get to learn new success criteria.</p><p>And of course these examples are isolated cases. What happens if a specific style does not meet the SC – even barely – in one case and does meet it in another. That can easily happen when the size of the element changes. What is sufficient in a menu in one language, might not meet the SC in a language with longer words. It adds a lot of complexity to WCAG.</p><p>I don’t think this SC will change. “It’s not that bad” is what I have been hearing for a long time now. I and others disagree, but it won’t matter. I think the best case scenario is that everyone will test for the obvious scenarios and then ignore everything that is non-obvious or close enough. And that will probably be OK.</p><h3 id="update-2-june-2023">Update 2 June 2023</h3> <p>In the WCAG 2.2 Recommendation Draft update from 17 May 2023 has been demoted to an AAA Success Criterion, which also meant moving it behind the <em>Focus Not Obscured</em> Success Criteria. So this goes from 2.4.11 to 2.4.13.[^ Yes, it’s confusing.] I have changed the headings, left the previous IDs in place (hashtag cool URIs never change) and I won’t reorder the SCs here.</p><p>It was also altered again, because why not.</p><p>In addition, 1.4.7 is back on AA level again. I guess a visible focus is not that important after all!</p><h2 id="2-4-12-focus-not-obscured-minimum-level-aa"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230517/#focus-not-obscured-minimum" rel="noopener noreferrer">2.4.11 Focus Not Obscured (Minimum) (Level AA)</a></h2> <p><strong>What this SC does:</strong> If something receives focus, it can’t be entirely hidden by website content. (Here, you just learned all there is to this success criterion.)</p><p><strong>Rating:</strong> This is a needed SC. We often see that cookie banners or other messages are on top of focused content.</p><ul><li><strong>Understandability:</strong> 5</li><li><strong>Teachability:</strong> 5</li><li><strong>Testability:</strong> 5</li><li><strong>Impact:</strong> 4 — This would have gotten a score of 5 if it was an A criterion. I think it’s simple enough to do that it should be a baseline accessibility requirement.</li><li><strong>Verdict:</strong> <strong>19</strong>/20 — This is a perfect SC. Short, to the point, easy to understand and implement. More of this.</li></ul><h2 id="2-4-13-focus-not-obscured-enhanced-level-aaa"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#focus-not-obscured-enhanced" rel="noopener noreferrer">2.4.13 Focus Not Obscured (Enhanced) (</a><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230517/#focus-not-obscured-enhanced" rel="noopener noreferrer">Level</a><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#focus-not-obscured-enhanced" rel="noopener noreferrer"> AAA)</a></h2> <p><strong>What this SC does:</strong> If something receives focus, no part of it can be hidden by website content.</p><p><strong>Rating:</strong> This is a perfect step up from the AA SC with the same name. </p><ul><li><strong>Understandability:</strong> 5</li><li><strong>Teachability:</strong> 5</li><li><strong>Testability:</strong> 5</li><li><strong>Impact:</strong> 3 — I think AAA is the right level for this SC, but I could have seen it as an AA criterion as well. As an AAA criterion, its impact is limited.</li><li><strong>Verdict:</strong> <strong>18</strong>/20</li></ul><h2 id="2-5-7-dragging-movements-level-aa"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#dragging-movements" rel="noopener noreferrer">2.5.7 Dragging Movements (Level AA)</a></h2> <p><strong>What this SC does:</strong> Provide an alternative for dragging actions. </p><p><strong>Rating:</strong> This is also a pretty straightforward SC. The only slight complication is the definition of what “dragging movement” is. Testing is all manual, but dragging is relatively rare and alternatives are usually pretty obvious. Well done!</p><ul><li><strong>Understandability:</strong> 4</li><li><strong>Teachability:</strong> 5</li><li><strong>Testability:</strong> 5</li><li><strong>Impact:</strong> 5</li><li><strong>Verdict:</strong> <strong>19</strong>/20</li></ul><h2 id="2-5-8-target-size-minimum-level-aa"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#target-size-minimum" rel="noopener noreferrer">2.5.8 Target Size (Minimum) (Level AA)</a></h2> <p><strong>What this SC does:</strong> Defines a minimum size for interactive elements (24px<strong> </strong>by 24px) with some exception when there is enough space around the element or when it is part of a sentence.</p><p><strong>Rating:</strong> We had <strong>2.5.5 Target Size</strong> on level AAA in WCAG 2.1 and having some minimum is certainly good. 24px is a little small for my taste, but it’s always hard to strike the balance here. What I don’t like is that the exceptions are worded differently between the two SCs and I would love to adopt the 2.5.8 wording in the renamed <strong>2.5.5 Target Size (Enhanced)</strong> SC.</p><p>Teaching could be a little better as there are a lot of exceptions. The definition of <a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#dfn-target-offsets" rel="noopener noreferrer"><em>target offset</em></a> is outrageously complicated. (Basically, when two targets are next to each other, the targets can be less than 24px large, as long as the space between the side furthest away of one target is 24px to the nearest side of the second target). Testing can be done in general automatically, with manual reviews for the exceptions. The impact I rated relatively low because such small UI components are relatively uncommon.</p><h3 id="update-3-february-2023">Update 3 February 2023</h3> <p>After reading through more issues (particularly <a href="https://github.com/w3c/wcag/issues/2972" rel="noopener noreferrer">w3c/wcag#2972</a>, <a href="https://github.com/w3c/wcag/issues/2973" rel="noopener noreferrer">w3c/wcag#2973</a>, and <a href="https://github.com/w3c/wcag/issues/2974" rel="noopener noreferrer">w3c/wcag#2974</a>) with target offset, I think I need to deduct one point each from Understandability and Teachability, as well as Testability. This is more complicated than it looks and while irregular shapes are rare, their testing will be a significant head-scratcher.</p><ul><li><strong>Understandability:</strong> 3 (was: 4)</li><li><strong>Teachability:</strong> 2 (was: 3)</li><li><strong>Testability:</strong> 4 (was: 5)</li><li><strong>Impact:</strong> 3</li><li><strong>Verdict:</strong> <strong>12</strong>/20</li></ul><h2 id="3-2-6-consistent-help-level-a"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#consistent-help" rel="noopener noreferrer">3.2.6 Consistent Help (Level A)</a></h2> <p><strong>What this SC does:</strong> Requires that help mechanisms that repeat on multiple pages are in the same place.</p><p><strong>Rating:</strong> This is a little nothing burger of a Success Criterion, as usually most mainstream website already meet this and it doesn’t elevate the need for good accessible help mechanisms. I think the name is misleading (similar to Consistent Navigation and Identification) because it is not the help that needs to be consistent, but its placement or order. So Consistent Help Position or something would make this much easier to understand at a glance. This SC has also a note on “same relative order” which explains what is meant with this phrase. Maybe this should better be a normative definition that can also be applied to other “same relative order” SCs?</p><ul><li><strong>Understandability:</strong> 4</li><li><strong>Teachability:</strong> 5</li><li><strong>Testability:</strong> 5</li><li><strong>Impact:</strong> 1</li><li><strong>Verdict:</strong> <strong>15</strong>/20</li></ul><h2 id="3-3-7-redundant-entry-level-a"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#accessible-authentication-enhanced" rel="noopener noreferrer">3.3.7 Redundant Entry (Level A)</a></h2> <p><strong>What this SC does:</strong> Requires that users do not need to enter information again, when they have already provided that data.</p><p><strong>Rating:</strong> The intent and the wording of this SC is pretty good, and I like that it is on the A level. It makes a lot of sense. It will improve data submission for everyone with a disability. The only ding is the short name, because it should say “No Redundant Entry”. But I won’t deduct points for that!</p><h3 id="update-4-february-2023">Update 4 February 2023</h3> <p><a href="https://toot.cafe/@patrick_h_lauke@mastodon.social/109784390498924311" rel="noopener noreferrer">Patrick H. Lauke</a> makes the excellent point that the impact of the SC is limited by the fact that it is scoped to the current process. Feels like this should have a companion AA SC that avoids that any users have to enter redundant information in any processes.</p><ul><li><strong>Understandability:</strong> 5</li><li><strong>Teachability:</strong> 5</li><li><strong>Testability:</strong> 5</li><li><strong>Impact:</strong> 4 (was: 5)</li><li><strong>Verdict:</strong> <strong>19</strong>/20</li></ul><h2 id="3-3-8-accessible-authentication-level-aa"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#accessible-authentication" rel="noopener noreferrer">3.3.8 Accessible Authentication (Level AA)</a></h2> <p><strong>What this SC does:</strong> Improves accessibility by avoiding cognitive function tests in password authentication flows …</p><p><strong>Rating:</strong> … unless it is a cognitive function test that is covered by exceptions. And those exceptions explicitly allow the use of CAPTCHAs where you recognize objects. It does not define what the “objects” can be that need to be recognized. I remember that ReCaptcha asked me to identify fire hydrants, and none looked like German hydrants. I’m not sure if this is really a significant improvement for users with cognitive impairments. It’s also not specified that you need an accessible alternative for the CAPTCHA, tho that would be covered by other SCs, I guess.</p><p>Testing if some login flow meets this SC will be relatively cumbersome but doable. I expect significant discussions on what a “mechanism to assist the user” is. I don’t know how feasible it is to use content uploaded to the website as a form of authentication.</p><ul><li><strong>Understandability:</strong> 4</li><li><strong>Teachability:</strong> 4</li><li><strong>Testability:</strong> 4</li><li><strong>Impact:</strong> 3</li><li><strong>Verdict:</strong> <strong>15</strong>/20</li></ul><h2 id="3-3-9-accessible-authentication-enhanced-level-aaa"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#accessible-authentication-enhanced" rel="noopener noreferrer">3.3.9 Accessible Authentication (Enhanced) (Level AAA)</a></h2> <p><strong>What this SC does:</strong> Improves accessibility by avoiding cognitive function tests in password authentication flows …</p><p><strong>Rating:</strong> … but with fewer exceptions. CAPTCHAs are not allowed, and you cannot make the user identify content they provided to the site.</p><ul><li><strong>Understandability:</strong> 4</li><li><strong>Teachability:</strong> 4</li><li><strong>Testability:</strong> 4</li><li><strong>Impact:</strong> 2</li><li><strong>Verdict:</strong> <strong>14</strong>/20</li></ul><h2 id="4-1-1-parsing-obsolete-and-removed-level-a"><a href="https://www.w3.org/TR/2023/CRD-WCAG22-20230125/#parsing" rel="noopener noreferrer">4.1.1 Parsing (Obsolete and removed) (Level A)</a></h2> <p><strong>What this SC does:</strong> Nothing! It has been removed as it is now obsolete with the modern HTML parsers.</p><p><strong>Rating:</strong> In the end, removing this SC is the clear-cut decision that we need from the WCAG WG. Without institutional knowledge, many people interpreted “nested according to specification” that it required HTML elements to be “nested according to the HTML specification”, not to the XML parsing rules. Of course, the latter makes much more sense 😉</p><ul><li><strong>Understandability:</strong> 5</li><li><strong>Teachability:</strong> 5</li><li><strong>Testability:</strong> 5</li><li><strong>Impact:</strong> 5</li><li><strong>Verdict:</strong> <strong>20</strong>/20</li></ul><h2 id="conclusion">Conclusion</h2> <p>This gives us the following scores for the success criteria, from best to worst:</p><ul><li><strong>20 Points</strong><ul><li>4.1.1 Parsing</li></ul></li><li>19 Points<ul><li>2.4.12 Focus Not Obscured (Minimum)</li><li>2.5.7 Dragging Movements</li><li>3.3.7 Redundant Entry</li></ul></li><li>18 Points<ul><li>2.4.13 Focus Not Obscured (Enhanced)</li></ul></li><li>15 Points<ul><li>3.2.6 Consistent Help</li><li>3.3.8 Accessible Authentication</li></ul></li><li>14 Points<ul><li>3.3.9 Accessible Authentication (Enhanced)</li></ul></li><li>12 Points<ul><li>2.5.8 Target Size (Minimum)</li></ul></li><li>7 Points<ul><li>2.4.11 Focus Appearance</li></ul></li></ul><p>What does that tell us? Not much. I’m personally disappointed that <strong>2.4.11 Focus Appearance</strong> has not improved at all since September. I don’t want this Success Criterion to be removed, but it will also be a pain to implement. The Working Group can do better. Split it up in multiple SCs, try not to cover every edge case. There is an <a href="https://github.com/w3c/wcag/issues/2901" rel="noopener noreferrer">exercise going on where the Working Group tries to figure out if 2.4.11’s complexity and reliability</a>. Maybe this SC can be removed from 2.2 and reintroduced in six months in a 2.3 update. Individual SCs should never hold up updates.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>I’m really not sure what the best way forward is. On one hand, most of the updates feel OK as test criteria but don’t really push accessibility forward. Perhaps that is the strategy here. I think with good leadership, WCAG 2 has good guts to go for another decade. But the Working Group needs to be willing and able to simplify, clarify and modernize the standard.</p><p>I’m not a big fan of creating a major revision just for the sake of it. We’re only two versions into WCAG 2, and it held up well. I did propose <a href="https://yatil.net/blog/fix-web-accessibility-systematically" rel="noopener noreferrer">fixing web accessibility in a more systematic way in 2021</a>. I still think it’s important to re-evaluate how we want web accessibility to succeed. </p> ]]>
    </description>
    </item>
    <item>
    <title>2022</title>
    <link>https://yatil.net/blog/2022</link>
    <guid>https://yatil.net/blog/2022</guid>
    <pubDate>Sat, 31 Dec 2022 22:20:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Year in review blog posts are very <em>en vogue</em> this year. Probably because people now have more time on their hand now that they are not constantly doomscrolling on Twitter.</p><h2 id="good-stuff">Good stuff</h2> <ul><li>We have settled in to the new apartment, and it is still great and everything we could wish for.</li><li>I <a href="https://yatil.net/blog/i-want-to-ride-my-bicycle" rel="noopener noreferrer">started e-biking</a> and spent over 250&nbsp;km on the bike this year. While that does not sound much, considering that my fitness level is <em>bad</em> and the terrain here is quite hilly, I feel good about it. Biking helped me to get out of the house and explore the nature around the new apartment. Splendid! Unfortunately, the last few weeks of the bike season were tainted by an inner tube failure and now the need to adjust the back brakes. While I’m quite handy, doing something for the first time is complicated – especially if it has to do with brakes. I need those!</li><li>After building the Space Shuttle Discovery last year, I <em>really</em> got into Lego building. It’s an obsession now. It helps me to do something with my hands and switch off my brain. I built the following sets:<ul><li><a href="https://www.lego.com/en-us/product/lego-nasa-apollo-saturn-v-92176" rel="noopener noreferrer">NASA Apollo Saturn V</a></li><li><a href="https://www.lego.com/en-gb/product/doctor-who-21304" rel="noopener noreferrer">Doctor Who TARDIS</a> (Yes, I bought this on eBay for a ridiculous price. Worth it!)</li><li><a href="https://www.lego.com/en-us/product/vincent-van-gogh-the-starry-night-21333" rel="noopener noreferrer">Vincent van Gogh - The Starry Night</a></li><li><a href="https://www.lego.com/en-gb/product/nintendo-entertainment-system-71374" rel="noopener noreferrer">Nintendo Entertainment System™</a></li><li><a href="https://www.lego.com/en-us/product/international-space-station-21321" rel="noopener noreferrer">International Space Station</a> (I had to get this before it sold out – and I’m glad I did!)</li><li><a href="https://www.lego.com/en-us/product/holiday-main-street-10308" rel="noopener noreferrer">Holiday Main Street</a></li><li><a href="https://www.lego.com/en-us/product/santa-s-visit-10293" rel="noopener noreferrer">Santa’s Visit</a></li><li><a href="https://www.lego.com/en-us/product/orchid-10311" rel="noopener noreferrer">Orchid</a></li><li><a href="https://www.lego.com/en-us/product/xl-15-spaceship-76832" rel="noopener noreferrer">XL-15 Spaceship</a></li><li><a href="https://www.lego.com/en-us/product/optimus-prime-10302" rel="noopener noreferrer">Optimus Prime</a></li><li><a href="https://www.lego.com/en-us/product/the-mighty-bowser-71411" rel="noopener noreferrer">The Mighty Bowser™</a></li></ul></li><li>I read three books, which I enjoyed a lot!<ul><li>Dan Moren’s <a href="https://dmoren.com/the-caledonian-gambit/" rel="noopener noreferrer">The Caledonian Gambit</a> and <a href="https://dmoren.com/the-nova-incident/" rel="noopener noreferrer">The Nova Incident</a>, including the <a href="https://dmoren.com/writing/short-stories/" rel="noopener noreferrer">connecting short stories</a></li><li>Antony Johnston’s <a href="https://antonyjohnston.com/work/brigittesharp/#patriosnetwork" rel="noopener noreferrer">The Patrios Network</a></li><li>I want to read more… but there’s Lego to build and TV to watch, so I don’t really make time for it. 😉</li></ul></li><li>Speaking of TV: 2022 was a <em>good</em> year for TV. My highlights:<ul><li>Severance (Apple TV+)</li><li>Mythic Quest (Apple TV+)</li><li>Slow Horses (Apple TV+)</li><li>For All Mankind (Apple TV+)</li><li>Moon Knight (Disney+)</li><li>Ms Marvel (Disney+)</li><li>She-Hulk (Disney+)</li><li>Obi-Wan Kenobi (Disney+)</li><li>Andor (Disney+)</li><li>Welcome to Wrexham (Disney+)</li><li>The Sandman (Netflix)</li><li>Jet Lag: The Game (<a href="https://nebula.tv/jetlag" rel="noopener noreferrer">Nebula</a>/<a href="https://www.youtube.com/@jetlagthegame" rel="noopener noreferrer">YouTube</a>)</li><li>Doctor Who — <em>Eve of the Daleks</em> and <em>Power of the Doctor</em> are fun, and <em>Legend of the Sea Devils</em> happened, too! I’m looking forward to the new era!</li></ul></li><li>Formula E: I got a <em>little bit</em> obsessed with Season 8 of this motor sport. Electric cars are fascinating, and there is a lot of work going into finding out how to most efficiently use the battery’s power. 2023’s 9th season sees the new third generation car, too. And if it is true what I have seen so far, the World Championship will be a tough competition.</li><li>Snooker: A lot of Snooker happened, too. With a lot of Drama, especially Ronnie’s seventh World Championship and Mark Allen’s success. It really is the sport that keeps on giving with the change of pace. Ultra quick, super attacking frames and long, tense safety encounters. Anything can happen. Brilliant!</li><li>I also re-discovered microblogging and signed back up for <a href="https://micro.blog" rel="noopener noreferrer">micro.blog</a> – you can find my microblog at <a href="https://micro.yatil.net" rel="noopener noreferrer">micro.yatil.net</a>.</li><li>I was invited to two podcasts: <a href="https://yatil.net/blog/on-the-parallel-podcast" rel="noopener noreferrer">Parallel</a> and the <a href="https://yatil.net/blog/on-the-working-draft-podcast" rel="noopener noreferrer">German speaking Working Draft</a>.</li><li>Furthermore, I blogged quite a lot here. 15 posts sounds like a record in recent years.</li><li>Working with <a href="https://axesslab.com" rel="noopener noreferrer">Axess Lab</a>, who I joined in March this year, is delightful. My colleagues are knowledgeable and insightful.</li></ul><h2 id="not-so-good-stuff">Not so good stuff</h2> <p>This year was mainly one thing, and that is <em>exhausting.</em>[^Honestly, after adding to the list above — I should not be that surprised. I did a lot!] I did pick up a lot of new hobbies and interests. And with the change in work, the ongoing war in Ukraine, and the lingering Pandemic, it was just much. But it was also a lot of fun to rediscover hobbies.</p><p>In addition, I feel the loss of some of my accessibility community. Firstly, I lost interest helping with and commenting on WCAG. It just felt like a waste of time. The WCAG 3 discussions didn’t feel productive for a long time, and WCAG 2 followed quickly after the release of the Candidate Recommendation Snapshot of WCAG 2.2 which felt not well thought-through. I have seen that some comments are getting addressed, but I can’t fathom being involved as much as I had been in the past.</p><p>The second community loss was through Twitter. It was a huge part of my communication and keeping up with peers. Mastodon and microblogging does help with it, but it’s certainly a change. I did <a href="https://yatil.net/blog/lamenting-twitter-wcag" rel="noopener noreferrer">blog about both, WCAG and Twitter</a>, in November.</p><p>The third community loss is my public speaking community, especially the accessibility community. Due to the global pandemic, I did not travel at all and kept mostly isolated all year. This is a necessary precaution as a person with “preexisting conditions”. I could also not live with the thought that a frivolous activity of mine caused direct harm of someone getting sick or long COVID. Especially people who are interested in accessibility or are disabled.</p><p>I do understand that conferences have commercial requirements to fulfill, and after being able to move a conference for two years, that was just not feasible for many in the community. The world pretended normality and forced organizers to hold these events. These events invited accessibility speakers who felt the duty to perform.</p><p>That said, it left a huge feeling of distrust in me. How can I trust that a conference keeps me or my disabled peers safe during another health event? I can’t. And that accessibility-focused events happened, with the predictable result of COVID-19 infections, is a reason for grave concern for me. And it’s extra concerning when those events market themselves as “inclusive”, but “not for people with respiratory illnesses.”</p><p>I won’t say that I will never speak at conferences who had in-person events this year, but I’m not eager to do so as well.</p><h2 id="whats-next">What’s next?</h2> <p>I don’t have reason to change a lot. I certainly want to get more active on the bike and also tackle longer trips through flatter terrain in the spring. After all, the <a href="https://naturregion-sieg.de/tour/radweg-sieg-fluss-radweg-von-der-muendung-bis-nach-windeck" rel="noopener noreferrer">Radweg Sieg</a> is not too far away. I will work on acceptance of the loss of the communities and concentrate on building new ones. It’s important, and it doesn’t happen on its own. Luckily, the <a href="https://theincomparable.com/" rel="noopener noreferrer">The Incomparable</a> member’s Slack has been a nice refuge.</p><p>I hope to keep up the blogging and also go deeper into some topics. I have been catching up on hobby-type activities over last year, and I expect that to continue a little. Life did consist mainly of work in many of the previous years, so I yearn for other activities.</p> ]]>
    </description>
    </item>
    <item>
    <title>Lamenting Twitter’s and WCAG’s potential</title>
    <link>https://yatil.net/blog/lamenting-twitter-wcag</link>
    <guid>https://yatil.net/blog/lamenting-twitter-wcag</guid>
    <pubDate>Sun, 06 Nov 2022 13:25:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Twitter was and is (for now) an integral part of my web presence. Since March 2007 I have tweeted over 72 thousand times. That’s roughly 13 messages a day. I found community and friendship there. And the love of my life.</p><p>Twitter was (is?) important to me.</p><p>Seeing it change over the years made me sometimes tired of it, but in the end it just felt like a net positive place for me to be. Of course, this has changed this week. The place was attacked, but not from random people, but by someone who is – for all intents and purposes – almighty on the platform. There is nothing we can do.</p><p>Being powerless in the face of a tsunami of uncertainty and populism is what really irks me about the situation. Twitter was never really run extremely well, but it looked like it improved successively over the last couple of years. Especially, accessibility features got better and better, and the team really hit their stride lately. <u><a href="https://twitter.com/gerardkcohen/status/1588584459779321857" rel="noopener noreferrer">Until they got fired.</a></u></p><p>Twitter has lost its way for me. At least, I’m unable to fully trust it anymore. Maybe it will get better, but I have currently little desire to post on there.</p><p>In addition, I am trying to <strong>give up helping to improve <u><a href="https://www.w3.org/TR/WCAG21/" rel="noopener noreferrer">WCAG</a></u></strong> from the outside.</p><p>Over the last few months, requests for clarification and simplicity have been either ignored or actively argued against. The standard as it might be published sometime next year is half-baked. The Working Group has not even looked at many of the <u><a href="https://github.com/w3c/wcag/issues/" rel="noopener noreferrer">existing issues</a></u>.</p><p>Simple typos or editorial changes get no acknowledgement, and only few people of the Working Group seem to care for any of the discussions. It feels like they have all moved on.</p><p>WCAG is important, and I’m sure that does not make easier creating updates for it. But the reality is that the Working Group does not have enough support (or they wouldn’t be as behind). What starts as simple clarification questions (“What does visible in <a href="https://www.w3.org/TR/WCAG21/#focus-visible" rel="noopener noreferrer">SC 2.4.7 Focus Visible</a> actually mean?”) often ends up as a <a href="https://www.w3.org/TR/WCAG22/#focus-appearance" rel="noopener noreferrer">hard to understand and complicated new Success Criterion</a> in an attempt to please everyone. Adding “a change of <em>x</em> CSS Pixels with at least a contrast of 3:1 to its background” would probably have covered most use cases for basic accessibility.</p><p>And then there are several places where the language and the actual interpretation of the guidelines do not match. For example, <a href="https://www.w3.org/TR/WCAG21/#use-of-color" rel="noopener noreferrer">SC 1.4.1 Use of Color</a> reads:</p><blockquote> Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element. </blockquote> <p>If you think color is not allowed to “convey information, indicating an action, prompting a response, or distinguishing a visual element” based on the text, you would be mistaken. Color can be used as long as you change the lightness of the color. From the <a href="https://www.w3.org/WAI/WCAG21/Understanding/use-of-color.html" rel="noopener noreferrer">Understanding document</a>[^ Or, as I started to call them, the “well, actually document”]:</p><blockquote> If content is conveyed through the use of colors that differ not only in their hue, but that also have a significant difference in lightness, then this counts as an additional visual distinction, as long as the difference in relative luminance between the colors leads to a contrast ratio of 3:1 or greater. For example, a light green and a dark red differ <strong>both</strong> by color (hue) <strong>and</strong> by lightness, so they would pass if the contrast ratio is at least 3:1. Similarly, if content is distinguished by inverting an element's foreground and background colors, this would pass (again, assuming that the foreground and background colors have a sufficient contrast). </blockquote> <p>Changing the word in the success criterion to “hue” instead of “color” would clarify this right in the Success Criterion text. But that seems too easy.[^ One argument against those changes is “backwards compatibility”. But backwards compatibility for me is not making things unchangeable. Such clarifications would only introduce minor changes from the previous version, often not requiring a change to websites at all. Many would be more precise than before, so a subset of the previous broader rule. And even if SCs get more strict over time, that is a good thing, it is also why new SCs are added. To make the web more accessible.]</p><p>Now, I don’t want to dig up those discussions again, and I certainly don’t want to throw shade at the WCAG WG. It does what it is chartered to do and has put these rules on itself. But it also means it is at odds with my personal goals, which has always been to make WCAG and related resources as easy to understand and as practically useful as possible. I did that inside W3C, and I tried to keep it up from outside.</p><p>However, over the last few weeks since the WCAG 2.2 Candidate Snapshot release, it became even more clear that there is no interest for this work. <a href="https://github.com/w3c/wcag/issues/2669" rel="noopener noreferrer">Minor requests to clarify wording</a> draw outsized discussions. And not because the clarification would change the definition, but because “this is understandable enough if you read it right”.</p><p>I’m exhausted and sad. Because both Twitter and WCAG WG are squandering the potential to make the world a better place. Or at least make their own product the best it can be. At Twitter, one person wreaks havoc by making reckless changes. At WCAG WG, the self-imposed rules make it hard to adapt to the modern web. And early WCAG 3 drafts also show similar issues because of that mindset.</p><p>Anyway, I think the demise of Twitter has me realize at which places I spend my time and which give me joy. So I’m stepping back from commenting on WCAG 2. I already made that decision for WCAG 3 earlier this year due to a hostile environment. Instead, I will focus on teaching accessibility in simple, understandable, and clear terms. Accessibility for everyone.</p><p><em>If you want to read updates from me, see my <a href="http://micro.yatil.net" rel="noopener noreferrer">microblog</a> which largely had replaced Twitter for me over the last months anyway. You can even <a href="https://micro.blog/yatil?remote_follow=1" rel="noopener noreferrer">follow me through Mastodon</a> or on <a href="https://micro.blog/yatil?remote_follow=1" rel="noopener noreferrer">micro.blog</a>. There is a <a href="https://steadyhq.com/en/yatil/about" rel="noopener noreferrer">newsletter</a> where I send the occasional email, and a way to <a href="https://steadyhq.com/en/yatil/about" rel="noopener noreferrer">support my work</a>.</em></p> ]]>
    </description>
    </item>
    <item>
    <title>Accessibility in the Fediverse (and Mastodon)</title>
    <link>https://yatil.net/blog/accessibility-in-the-fediverse-and-mastodon</link>
    <guid>https://yatil.net/blog/accessibility-in-the-fediverse-and-mastodon</guid>
    <pubDate>Fri, 28 Oct 2022 11:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Many people think about moving or at least establishing a presence in the so-called Fediverse. The Fediverse is (and this is probably a very shortened and incorrect) a collection of distributed web applications that can talk to each other. The most well known software is Mastodon, which is installed on many servers.</p><p>Now, because it is such a distributed system, the accessibility around the Fediverse is not super consistent either. But there are all the important foundations there, including the possibility to add alternative text for images.</p><p>Mastodon is a good place to dive into the Fediverse as it mimics Twitter quite closely: Followers and Following, Boosts (like “Retweets”), and Stars (like “Likes”). If you want to sign up for a disability/accessibility friendly instance, I can recommend <a href="https://toot.cafe" title="" rel="noopener noreferrer">toot.cafe</a>, which tries to be as inclusive as the underlying software allows. There is also <a href="https://dragonscave.space/about" rel="noopener noreferrer">dragonscave.space</a>, which is run by blind admins[^ <a href="https://writing.exchange/users/blindscribe/statuses/109253409387133850" rel="noopener noreferrer">via Robert Kinglett</a>].</p><p><strong><a href="https://sarahmhigley.com/writing/mastodon/" rel="noopener noreferrer">Sarah Higley has a very good step-by-step introduction on how to sign up to Mastodon, including server recommendations.</a></strong></p><p>I, personally, have used <a href="https://micro.blog" rel="noopener noreferrer">micro.blog</a> in the last couple of weeks, which deliberately does not support most of the standard Twitter and Mastodon functionality. I can’t even see who follows me. My <a href="https://toot.cafe/@yatil" rel="noopener noreferrer">toot.cafe profile</a> still exists, and I’ll likely keep it (because it looks like it is easier to find for people), but it looks like it won’t be my primary way of posting in the future.</p><h2 id="should-you-join-the-fediverse">Should you join the Fediverse?</h2> <p>Yes, but not for the reasons that you might think of. It’s important to have options. And locking oneself into one social network is never good. Options are. Twitter has helped the web community to grow together like no other social network before. But it is in the end a closed system, which is antithetical to the web.</p><p>By opening a profile on Mastodon or somewhere else in the Fediverse, you can participate in more diverse places than before. And they all communicate with each other. It’s powerful, and if there is a new boss in your instance who brings a sink into a building for no reason, you can switch to another instance (<a href="https://toot.cafe/@yatil/109245908037229789" rel="noopener noreferrer">with some issues</a>).</p><h2 id="some-accessibility-people-on-the-fediverse">Some accessibility people on the Fediverse:</h2> <p>Discovery can be hard on the Fediverse, but once you have an account, following and interacting is pretty straight forward. Here is a list of accessibility people that you can follow to get started:</p><ul><li>Me, Eric Eggert: <a href="https://yatil.social/@yatil">@yatil@yatil.social</a></li><li>Erik Kroes: <a href="https://mastodon.social/@erikKroes">@erikKroes@mastodon.social</a></li><li>Kilian Valkhof: <a href="https://mastodon.social/@kilian">@Kilian@mastodon.social</a></li><li>Svenja: <a href="https://chaos.social/@svenja">@svenja@chaos.social</a></li><li>Markus Herrmann: <a href="https://mastodon.social/@marcus">@marcus@mastodon.social</a></li><li>Nina Gerling: <a href="https://mastodon.social/@NinaGerling">@NinaGerling@mastodon.social</a></li><li>Moritz Gießmann: <a href="https://mastodon.social/@MoritzGiessmann">@MoritzGiessmann@mastodon.social</a></li><li>Joschi Kuphal: <a href="https://mastodon.social/@jkphl">@jkphl@mastodon.social</a></li><li>Matthias Ott: <a href="https://mastodon.social/@matthiasott">@matthiasott@mastodon.social</a></li><li>Matthias Pfefferle: <a href="https://mastodon.social/@pfefferle">@pfefferle@mastodon.social</a> &amp; @pfefferle@notiz.blog</li><li>René Stalder: <a href="https://mastodon.social/@renestalder">@renestalder@mastodon.social</a></li><li>Jeff Bigham: <a href="https://hci.social/@jbigham">@jbigham@hci.social</a></li><li>Rob Whitaker: <a href="https://mastodon.social/@Rwapp">@Rwapp@mastodon.social</a></li><li>Michael Spellacy: <a href="https://a11y.info/@spellacy">@spellacy@a11y.info</a></li><li>Saptak S: <a href="https://toots.dgplug.org/@saptaks">@saptaks@toots.dgplug.org</a></li><li>Aaron Stephenson: <a href="https://mastodon.social/@azzoor">@azzoor@mastodon.social</a></li><li>ruben nic: <a href="https://mastodon.social/@rubensandwich">@rubensandwich@mastodon.social</a></li><li>Rachele DiTullio: <a href="https://mastodon.social/@racheled">@racheled@mastodon.social</a></li><li>Jo Spelbrink: <a href="https://mastodon.social/@joville">@joville@mastodon.social</a></li><li>Eric Bednarz: <a href="https://mastodon.social/@broomwagon">@broomwagon@mastodon.social</a></li><li>Melly: <a href="https://fedisabled.social/@melly_maeh">@melly_maeh@fedisabled.social</a></li><li>Marco Zehe: <a href="https://chaos.social/@marco">@marco@chaos.social</a></li><li>Adrian Roselli: <a href="https://toot.cafe/@aardrian">@aardrian@toot.cafe</a></li><li>Stéphane Deschamps: <a href="https://toot.cafe/@accessiblestef">@accessiblestef@toot.cafe</a></li><li>Heydon Pickering: <a href="https://mastodon.social/@heydon">@heydon@mastodon.social</a></li><li>Dennis Lembrée: <a href="https://mastodon.social/@dennisl">@dennisl@mastodon.social</a></li><li>Scott O'Hara: <a href="https://mastodon.social/@scottohara">@scottohara@mastodon.social</a></li><li>Laura Kalbag: <a href="https://mastodon.laurakalbag.com/@laura">@laura@mastodon.laurakalbag.com</a></li><li>Julie Moynat: <a href="https://mastodon.social/@juliemoynat">@juliemoynat@mastodon.social</a></li><li>Jeff Knaack: <a href="https://mastodon.social/@knaackbuilt">@knaackbuilt@mastodon.social</a></li><li>Angie Radtke: <a href="https://mastodon.social/@angieradtke">@AngieRadtke@mastodon.social</a></li><li>Anna E. Cook: <a href="https://mstdn.social/@annaecook">@annaecook@mstdn.social</a></li><li>Andrew Hedges: <a href="https://mastodon.social/@segdeha">@segdeha@mastodon.social</a></li><li>Núria Peña: <a href="https://mastodon.social/@nuriapenya">@nuriapenya@mastodon.social</a></li><li>Erik Vorhes: <a href="https://mastodon.social/@erikvorhes">@erikvorhes@mastodon.social</a></li><li>Laura Carlson: <a href="https://mastodon.social/@laura_carlson">@laura_carlson@mastodon.social</a></li><li>Peter Grucza: <a href="https://toot.cafe/@pgrucza">@pgrucza@toot.cafe</a></li><li>Sarah Fossheim: <a href="https://mastodon.social/@fossheim">@fossheim@mastodon.social</a></li><li>Aaron Gustafson: <a href="https://toot.cafe/@aarongustafson">@aarongustafson@toot.cafe</a></li><li>Joe Humbert: <a href="https://mastodon.social/@joehumbert">@joehumbert@mastodon.social</a></li><li>Mike 麥 Mai: <a href="https://mastodon.social/@mikemai2awesome">@mikemai2awesome@mastodon.social</a></li><li>Wendy Reid: <a href="https://mastodon.social/@reidmore">@reidmore@mastodon.social</a></li><li>Winnie Bosibori: <a href="https://mstdn.social/@MissB">@MissB@mstdn.social</a></li><li>A11yAlicia: <a href="https://mastodon.social/@A11yAlicia">@A11yAlicia@mastodon.social</a></li><li>Anne Bovelett: <a href="https://wpbuilds.social/@bovelett">@bovelett@wpbuilds.social</a></li><li>Raul Krauthausen: <a href="https://mastodon.cloud/@RaulKrauthausen">@RaulKrauthausen@mastodon.cloud</a></li><li>Ronny Hendriks: <a href="https://mastodon.social/@toegonline">@toegonline@mastodon.social</a></li><li>Robert Kingett: <a href="https://writing.exchange/@blindscribe">@blindscribe@writing.exchange</a></li><li>Hidde de Vries: <a href="https://mastodon.social/@hdv">@hdv@mastodon.social</a></li><li>Meryl Evans: <a href="https://mastodon.social/@MerylEvans">@MerylEvans@mastodon.social</a></li><li>Daniel Mclaughlan: <a href="https://mstdn.social/@straydogstrut">@straydogstrut@mstdn.social</a></li><li>Sandrine: <a href="https://mastodon.social/@fedbysandrine">@fedbysandrine@mastodon.social</a></li><li>FreeXenon: <a href="https://mastodon.social/@FreeXenon">@FreeXenon@mastodon.social</a></li><li>Ben Myers: <a href="https://a11y.info/@ben">@ben@a11y.info</a></li><li>Beatriz González Mellídez: <a href="https://a11y.info/@b_atish">@b_atish@a11y.info</a></li><li>Steve Sawczyn: <a href="https://mspsocial.net/@SteveSawczyn">@SteveSawczyn@mspsocial.net</a> and <a href="https://micro.blog/SteveSawczyn">@SteveSawczyn@micro.blog</a></li><li>Arthur Rigaud: <a href="https://a11y.info/@arigaud_ca">@arigaud_ca@a11y.info</a></li><li>Marjon Bakker: <a href="https://a11y.info/@marjon">@marjon@a11y.info</a></li><li>Iacobien: <a href="https://mastodon.online/@iacobien">@iacobien@mastodon.online</a></li><li>Glenda Sims: <a href="https://mastodon.social/@gwitch">@gwitch@mastodon.social</a></li><li>Tristan Bussiere: <a href="https://noc.social/@tristan">@tristan@noc.social</a></li><li>Jayme: <a href="https://c.im/@hippyjo">@hippyjo@c.im</a></li><li>Steve Woodson: <a href="https://mastodon.online/@stevenwoodson">@stevenwoodson@mastodon.online</a></li><li>Todd Libby: <a href="https://a11y.info/@todd">@todd@a11y.info</a></li></ul><p><strong>If you want to get on the list, ping me on the Fediverse. My handle is @yatil@toot.cafe.</strong> I check that accounts are accessibility related.</p> ]]>
    </description>
    </item>
    <item>
    <title>On the Parallel podcast</title>
    <link>https://yatil.net/blog/on-the-parallel-podcast</link>
    <guid>https://yatil.net/blog/on-the-parallel-podcast</guid>
    <pubDate>Wed, 28 Sep 2022 12:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Thanks to <a href="https://twitter.com/shelly" rel="noopener noreferrer">Shelly</a> for inviting me to talk about all things WCAG 2.2 on the <a href="https://www.relay.fm/parallel/75" rel="noopener noreferrer">Parallel Podcast, Episode 75</a>! It was a wonderful conversation, and we walked through all the individual changed and new success criteria.</p><p><strong>Note:</strong> <a href="https://stjude.org/relay" rel="noopener noreferrer">RelayFM. Parallel’s podcast network, supports St. Jude Children’s Research Hospital</a> in their fight against childhood cancer with the annual donation drive. </p><p><a href="https://www.relay.fm/parallel/75" rel="noopener noreferrer">Listen to the episode.</a></p> ]]>
    </description>
    </item>
    <item>
    <title>On the Working Draft podcast</title>
    <link>https://yatil.net/blog/on-the-working-draft-podcast</link>
    <guid>https://yatil.net/blog/on-the-working-draft-podcast</guid>
    <pubDate>Wed, 14 Sep 2022 12:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Thanks to <a href="https://twitter.com/derSchepp/" rel="noopener noreferrer">Christian</a>, <a href="https://twitter.com/drublic" rel="noopener noreferrer">Hans</a>, and <a href="https://twitter.com/vannsl" rel="noopener noreferrer">Vanessa</a> for having me on the German language <a href="https://workingdraft.de/540/" rel="noopener noreferrer">Working Draft Podcast Episode 540</a>! We talked about all things accessibility, including the German WCAG 2.1 translation, that we at <a href="https://outline.rocks" rel="noopener noreferrer">outline</a> carried out with support from <a href="https://twitter.com/tcaspers" rel="noopener noreferrer">Tomas Caspers</a> and <a href="https://www.aktion-mensch.de" rel="noopener noreferrer">Aktion Mensch</a>.</p><p><a href="https://workingdraft.de/540/" rel="noopener noreferrer">Listen here.</a></p> ]]>
    </description>
    </item>
    <item>
    <title>Welcome to the dark side</title>
    <link>https://yatil.net/blog/welcome-to-the-dark-side</link>
    <guid>https://yatil.net/blog/welcome-to-the-dark-side</guid>
    <pubDate>Sat, 16 Jul 2022 13:15:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>The previous incarnation of this website had a dark theme option, but when I did the redesign a year or so ago I did not get around to implementing it. I’m of course aware that a dark option is an important accessibility feature for many people, especially as I’m using dark mode, too.</p><p>That said, most websites do not implement dark mode, so having a browser plugin like <a href="https://getnoir.app" rel="noopener noreferrer">Noir</a> or <a href="https://darkreader.org" rel="noopener noreferrer">Dark Reader</a> is necessary anyway.</p><p>A few weeks ago I read through <a href="https://hidde.blog/dark-light/" rel="noopener noreferrer">Hidde’s blog post on his dark mode toggle implementation</a> and that gave me the impetus to change this website to support dark mode, too.</p><p>First, I was thinking of just copying his solution, but binary dark mode toggles have an important caveat: What happens when the user changes their system settings? </p><p>You can either not follow the user’s setting and keep their choice, or, you can adapt with the system. Hidde looks for the change event in the dark mode media query and then adapts to the system preference. However, that only works if the website is open. If the website is closed, there is no way to update the data on what theme to use.[^ As I write this I realize that a Service Worker might be a way to do it, but that feels like an overengineered solution…]</p><p>Essentially there are three modes that should be respected:</p><ul><li>Follow the system setting at all times.</li><li>Use light mode all the time, even if the system is in dark mode.</li><li>Use dark mode all the time, even if the system is in light mode.</li></ul><p>Looks like a 2-way toggle is not going to cut it. And while I briefly thought about a tri-state button[^ Urgh!], there is only so much information that you can convey through one button. I looked around and Hidde’s post already had the <em>Firefox</em> settings which showed “System theme”, “Light” and “Dark” with radio buttons. And macOS is doing a similar thing in the system preferences[^ Until <em>macOS 12 Monterey</em> at least, <em>macOS 13 Ventura</em> introduces a new preferences app, which has been <a href="https://sixcolors.com/post/2022/07/first-look-macos-ventura-public-beta/" rel="noopener noreferrer">rated “meh” so far</a>. Let’s hope the best for improvements during the beta.].</p><div class="block-image"> <img src="https://yatil.net/media/pages/blog/welcome-to-the-dark-side/4bb51f79f6-1657959429/screenshot-2022-07-16-at-10.16.25.png" alt="Screenshot from macOS Monterey System Preferences, showing Light, Dark, Auto as “Appearance” options."> </div> <p>When in doubt, I always prefer to be clear instead of clever, so my preferences button in the top right follows about the same principle. I use the <a href="https://webkit.org/blog/12209/introducing-the-dialog-element/" rel="noopener noreferrer">new &lt;dialog&gt; element</a> to put up a dialog that lets users choose their theme. A nice advantage of using a dialog is that users can get a preview of the changes and can then decide to save their choice or cancel and use their previous choice.</p><p>Of course there are a few caveats with this solution, not last the one Hidde also mentions in his post: To make it work reliably, I need to duplicate my variable declarations in my CSS file:</p><pre><code class="language-css">:root { /* Default light colors */ } :root[data-theme-preference=&quot;light&quot;] { /* Light theme selected */ } @media (prefers-color-scheme: dark) { :root { /* System dark mode */ } } :root[data-theme-preference=&quot;dark&quot;] { /* Dark mode selected */ }</code></pre> <p>The JavaScript is basically equivalent with a lot of what Hidde does, apart from the theme preference also supporting the value <code>system</code>. I also added a short inline JavaScript right after the opening <code>&lt;body&gt;</code> tag that applies the theme <code>data</code> attribute as soon as possible on page load. As my JavaScript is in a separate file, you could have gotten a flash of white before the dark mode kicked in.[^ That makes me wonder, what if we could use <code>localStorage</code> in media queries? For example: <code>@media(localStorage("theme-preference"): dark)</code>? That would be useful!]</p><p>I would agree with Hidde and Bramus that <a href="https://www.bram.us/2022/05/25/dark-mode-toggles-should-be-a-browser-feature/" rel="noopener noreferrer">browsers should offer users choice between themes</a> (and let’s extend it beyond light &amp; dark, please! Despite the title of this post, this is not <em>Star Wars!</em>)</p> ]]>
    </description>
    </item>
    <item>
    <title>Set JAWS free!</title>
    <link>https://yatil.net/blog/set-jaws-free</link>
    <guid>https://yatil.net/blog/set-jaws-free</guid>
    <pubDate>Fri, 08 Jul 2022 23:25:00 +0200</pubDate>
    <description>
    <![CDATA[ <blockquote> JAWS, Job Access With Speech, is the world’s most popular screen reader, developed for computer users whose vision loss prevents them from seeing screen content or navigating with a mouse. <footer> <a href="https://www.freedomscientific.com/products/software/jaws/" rel="noopener noreferrer">Freedom Scientific</a> </footer> </blockquote> <p><a href="https://twitter.com/vavroom/status/1545415544010145795" rel="noopener noreferrer">A tweet from my friend Nicolas Steenhout</a> reminded me of one issue I often run into with clients: They ask for how to best test their sites in popular screen readers and I routinely name the ones most often used. That includes the <a href="https://webaim.org/projects/screenreadersurvey9/#primary" rel="noopener noreferrer">most named “Primary Desktop/Laptop Screenreader”</a>, JAWS.</p><div class="block-image"> <a class="auto" data-contain href="https://twitter.com/vavroom/status/1545415544010145795" style="--w:auto; --h:1"> <img src="https://yatil.net/media/pages/blog/set-jaws-free/036bba7c10-1693418737/img_0495.jpeg" alt="Tweet from Nicolas Steenhout (@vavroom) from 2022-07-08: Went to check out pricing to purchase Jaws. Looks like because I'm not in the US, I have to email/phone a Canadian dealer. WTF? Isn't this 2022?"> </a> </div> <p>Nic is correct: Here in Germany it is the same picture: <a href="https://www.freedomsci.de/links.htm" rel="noopener noreferrer">A long list of dealerships</a>[^ Some of these dealerships even have accessible websites!][^ And yes, the German <em>Freedom Scientific</em> website still uses tables for layout.] but no way to purchase online, let alone naming a price.</p><p><a href="https://www.freedomscientific.com/products/software/jaws/" rel="noopener noreferrer">The US website has prices and even “buy now” buttons.</a> A personal license costs $95/year if you are using your computer non-commercially. $1285 allows you to use the current version of the screen reader commercially, too. (For example to work, which the “J” in JAWS stands for!)</p><p><em>Freedom Scientific</em> seems to make it hard on purpose to get their software outside of the US. It’s so complicated that I have rarely seen someone outsde the US actually include JAWS in their testing. Some people use the 40-minute demo version as a work-around, but that does violate the terms of use.</p><p>I actively advice users to test in alternative screen readers first: <a href="https://www.nvaccess.org" rel="noopener noreferrer">NVDA</a> is a great free alternative for <em>Windows</em>. <em>Mac OS</em> users can use VoiceOver for testing. And usually, in 95+% of use cases, that is totally fine: websites and applications working in those browsers will also work in JAWS. And of course the needs for accessible websites are much broader than tailoring your app to specific screen reader and browser combinations.</p><p>But when you have very complex UIs that warrant throurough testing, it would be so much easier to <em>also</em> test with JAWS. But the hassle provides an unnecessary barrier for these people who want to do the right thing.</p><p>And yes, <em>Freedom Scientific</em>’s sibling company[^ It might be worth noting that <em>Freedom Scientific</em> and <em>TPGi</em> are brands of <em><a href="https://vispero.com" rel="noopener noreferrer">Vispero</a></em>, which is one of the largest accessibility companies on the planet that engages also in testing and consulting. Technically, we’re competitors in the same market, but of course they are huge.] <em>TPGi </em>has the <em><a href="https://www.tpgi.com/arc-platform/jaws-inspect/" rel="noopener noreferrer">JAWS Inspect</a></em> product, which shows the speech output as text which can be helpful in some situations. But without real screen reader interaction, its results are limited. And interactive scenarios are exactly the situations where using <em>the real thing</em> matters.[^ Also the price of <em>JAWS Inspect</em> is apparently “Schedule a Live Demo with us”.]</p><p>It’s easy to see how limiting access to their software limits testing which in turn makes it harder for their users to get to tested sites. It actively produces a worse outcome for their clients.</p><p>In addition $1285 per JAWS license version (so roughly every year) might not be affordable by many accessibility professionals, especially those who start out or are self-employed.</p><p><em>Freedom Scientific</em>’s goal should be to put JAWS into as many developer hands as possible, because if websites work best in JAWS people who need screen readers will chose the commercial product on the market. Make it easy to rent JAWS on a virtual machine by the hour. I’m a <a href="https://assistivlabs.com" rel="noopener noreferrer">happy </a><em><a href="https://assistivlabs.com" rel="noopener noreferrer">Assistiv Labs</a></em> customer[^ This post is not sponsored. But <em>cough</em> see <a href="https://yatil.net/support" rel="noopener noreferrer">yatil.net/support</a>. — Update: After publication of this blog post, Weston from <em>Assistive Labs</em> became a supporter. Thank you!] and the ease of having a Windows screen reader on hand has transformed my work.</p><p><strong>Please, <em>Freedom Scientific</em>, set JAWS free[^ Not like in “free beer”, more like in <em>“Freedom Scientific”</em>.] and make it easily accessible, for developers and for users.</strong></p> ]]>
    </description>
    </item>
    <item>
    <title>Text-overflow: ellipsis considered harmful</title>
    <link>https://yatil.net/blog/text-overflow-ellipsis-harmful</link>
    <guid>https://yatil.net/blog/text-overflow-ellipsis-harmful</guid>
    <pubDate>Wed, 22 Jun 2022 00:20:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>This post is basically a short addendum to <a href="https://yatil.net/blog/resize-text-reflow" rel="noopener noreferrer">my article about text resize and reflow</a>. I stumbled over some instances of <code>text-overflow: ellipsis</code> the other day and it broke resize and/or reflow.</p><p>The whole reason <code>text-overflow</code> exists is to specify the behavior of text once it flows over the container. There could be with and height constraints for a block. Using <code>overflow: hidden</code> makes sure that there is no overlapping text, but it cuts off the text abruptly. <code>Text-overflow: ellipsis</code>[^ And other, less well supported values.] allows to at least have an indicator that text is missing. But there is no way to make the hidden text visible.</p><p>In addition, <code>text-overflow: ellipsis</code> only works on one line text. That means that, to use this technique, you have to constrain the text to one line by using <code>white-space: nowrap</code>. <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow" rel="noopener noreferrer">MDN has a good example of the behavior.</a></p><p>There are a few legitimate use cases for this technique. For example, you might have a table with titles and descriptions. To preserve more space for the title, you constrain the description to one line on small viewports to the one-line and you repeat the description on the detail page for this item.</p><p>However, I often see it used on items like buttons or even form labels to make them look nicer(?) or when aligning them vertically. But once you change the viewport or resize the text, the end of the text disappears.</p><p>This is not the right thing to do. Even if your button might need to accommodate words like “Wagenstandsanzeiger”, seeing “Wagenstan…” is not going to be clear to users. It would be much better to hyphenate the word (using <code>hyphens: auto</code>[^ It would be really neat if Blink would finally <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/hyphens" rel="noopener noreferrer">support languages other than English</a> here.] or <code>&amp;shy;</code> entities) instead.</p><p>And for the visual design: Inline flex and grids give you a lot of control to align text and icons, for example. Don’t constrain the content to fit your design, make your CSS flexible to handle longer words gracefully.</p> ]]>
    </description>
    </item>
    <item>
    <title>WCAG SC 1.4.4 Resize Text & 1.4.10 Reflow</title>
    <link>https://yatil.net/blog/resize-text-reflow</link>
    <guid>https://yatil.net/blog/resize-text-reflow</guid>
    <pubDate>Wed, 08 Jun 2022 00:05:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>There seems to be a confusion about the relationship and how to test for the WCAG 2.1 Success Criteria <a href="https://www.w3.org/TR/WCAG21/#resize-text" rel="noopener noreferrer">1.4.4 Resize Text</a> and <a href="https://www.w3.org/TR/WCAG21/#reflow" rel="noopener noreferrer">1.4.10 Reflow</a>.</p><p>While these two success criteria seem related, they cover different use cases.</p><h2 id="1-4-4-resize-text">1.4.4 Resize Text</h2> <p>This success criterion that was introduced with WCAG 2.0 on level AA covers text resizing without assistive technologies. The requirement is that, except for captions and images of text, text can be resized up to 200% without losing content or functionality.</p><p>Note how the success criterion does not specify a specific method to reach this state of two times the font size. As long as the way to resize the text is “accessibility supported”, it is a valid way to conform to WCAG:</p><ul><li>Resizing only the text (classic text resizing)</li><li>Zooming the page using browser features (viewport resizing)</li><li>Changing the viewport by changing the display resolution</li><li>Providing an on-page text size picker</li></ul><p>Of course some ways are better than others and adjusting the viewport to resize text is frequently the most consistent way to do it, especially on websites that have been implemented in a responsive way.</p><p>That said, this SC is relatively permissive. As long as the text does not get completely lost (for example through <code>overflow: hidden</code> or text running into each other or behind other objects), your layout is allowed to break. And, more importantly, this success criterion gives no guidance on scrolling. It totally conforms if your website grows to twice the width and height when resizing the text to 200%, even if that means horizontal scrolling.</p><h2 id="1-4-10-reflow">1.4.10 Reflow</h2> <p>Reflow was introduced to support users with low vision to easier navigate zoomed-in experiences by giving them a viewport size that – guaranteed – would not scroll horizontally. Reflow has nothing to do with resizing the size of the text at all. </p><p>It specifies that the content can be presented in a way that only requires scrolling in one direction at 320px for content that scrolls vertically (up and down) and 256px for content that scrolls horizontally (left and right).</p><p>There is an exception for content that requires two-dimensionality to be understood, example tables, maps, or some charts.</p><p>The reason for picking 320px/256px have been of practical nature. Firstly, 320px is a very common viewport width for smartphones. Secondly, if you use a desktop browser on a 1280px wide monitor and zoom in to 400% the width of the viewport is quartered internally in the browser… to 320px.</p><p>Using browser zoom on a desktop browser is functionally equivalent with changing the width of the viewport. Zoom to 200%, your viewport width halves.</p><h2 id="how-do-these-two-success-criteria-work-together">How do these two success criteria work together?</h2> <p>From a desktop view, if you meet <em>Reflow</em>, you almost certainly also meet <em>Resize Text</em>. Even if your media query uses a lower font size for mobile devices, it would need to be very small to fall under the 200% threshold.</p><p>If your base font size is 16px, 200% is 32px (and note that these are real on-screen pixels, not CSS pixels dependent on your viewport here). A 8px size font in the 320px view would still meet the requirement of <em>Resize Text</em>. And <em>Reflow</em> has no requirement that the resulting text size needs to be at a certain size.</p><p>That said, once you are on a mobile viewport, you still need to be able to resize to 200% without losing any information (but scrolling horizontally is then allowed).</p><h2 id="so-how-is-this-supposed-to-be-tested">So… how is this supposed to be tested?</h2> <p><strong>Resize the viewport width to 320px by 256px. Scrolling of the web page needs to happen in only one direction at a time.</strong> It is allowed to have sections of the page scroll into the other direction, but it must stay inside the viewport. For example would it be permissible to have a horizontal card area on an otherwise vertically scrolling page, but only if all information is visible in the viewport without being required to scroll in two dimensions.</p><p><strong>Bump up the text size to 200%. You can do that through further zooming to a 160px viewport or resizing only the text.</strong> Important is that the resulting font size is 200% of the font visible on screen. (Note that the SC does not require that the text resize matches the setting. As long as you can eventually get to 200%, it is permissible, even if that means using the browser setting to 300% because a media query is using a smaller font size in the middle.)</p><h2 id="in-practice">In practice</h2> <p>Practically speaking, these success criteria are usually unproblematic, especially for modern, responsive websites. Yes, mistakes happen, and sometimes there is content that gets removed on smaller viewports. Or some CSS goes wrong when actual, real content meets it.</p><p>It can be tricky in complex web applications, especially if no mobile version exists or the mobile version removes content/functionality, as that is not allowed.</p><p>That said, text resizing in browsers is well supported (remember when Internet Explorer refused to resize text specified in pixels?) and the profileration of CSS Grid and Flexbox techniques for layouts makes it often less likely to break, compared to the float-based layouts back in the days. And web developers have learned to adapt better to different viewport sizes over the decade of responsive web development, which has brought a huge increase in accessibility in that area.</p><h2 id="more-content-like-this">More content like this?</h2> <p><a href="https://yatil.net/support" rel="noopener noreferrer">Support me on Steady and get blog posts like this in return!</a></p> ]]>
    </description>
    </item>
    <item>
    <title>I want to ride my bicycle</title>
    <link>https://yatil.net/blog/i-want-to-ride-my-bicycle</link>
    <guid>https://yatil.net/blog/i-want-to-ride-my-bicycle</guid>
    <pubDate>Sat, 07 May 2022 11:20:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Last week, I received a big box with something that I hoped to buy for a long time. As you might have guessed from the title of the blog post, it was a bike.</p><p>Now, I’m not the most active person, especially through the last two-and-a-bit years of pandemic life, so a regular bike was out of the question. I just know myself too well, that I would lose interest if it was not fun to do. And honestly, the main reason for getting a bike is to have some fun. Also, to be flexible for running errands instead of doing everything on foot. But mainly to have fun.</p><h2 id="mobility-options">Mobility options</h2> <p>When moving last year, we picked a spot that would allow us to stay car-free. Cars are expensive, bad for the environment, and take up a lot of space. There is a bus stop with hourly service down the street that can get us to the train station that itself is only a 30-minute walk away. The next supermarket is a 10-minute walk away.</p><p>I’m very baffled that so many people here are car-dependent, but then I don’t have to go to work as I work from home, and connections can be time-consuming if you go by public transport. Hourly services are just not going to cut it there, and I don’t think there are individuals to blame for it. The whole system of transportation is designed in a way that makes owning a car the easy and cheap option (cheap mostly in time, not necessarily in money).</p><p>I thought about many options for allowing us (2 adults) to have some more freedom for moving around. Getting an electric car, I considered. But even leasing it for a couple of hundred Euros a month would be a waste. We just don’t have to travel longer distances that often. Also, there is no way to charge in the garage, so you’d have to go and charge at public chargers every few days. It made any electric vehicle that is impossible to connect in the apartment unattractive.</p><p>With a car out of the question, I looked at individual transportation options. And a bike was the natural answer. For getting the two of us to some place, a combination of walk, rail, and taxi would be sufficient.</p><h2 id="picking-a-bike">Picking a bike</h2> <p>I had assumed picking a bike was easy, there is not that much variation in bikes, right? Well, wrong.</p><p>After seeing <a href="https://twitter.com/WalterStephanie/status/1492561746380435467" rel="noopener noreferrer">Stéphanie Walter’s RAD bike</a>, I got a particular interest in those bikes. They look good and as they also have <a href="https://radpowerbikes.eu/collections/electric-cargo-utility-bikes/products/radwagon-electric-cargo-bike" rel="noopener noreferrer">a cargo option</a>. I was interested in a cargo bike because getting groceries and hurling around other things might be a good use of a bike. Over the weeks, I realized that having a super specialized bike like this would certainly be limiting for general bike hikes. So I waned off the thought of the cargo bike and looked more at general purpose bikes like the <a href="https://radpowerbikes.eu/collections/electric-city-commuter-bikes/products/radcity-plus-electric-commuter-bike" rel="noopener noreferrer">RadCity 5 Plus</a>.</p><p>There was just this one problem: The payload capacity.</p><p>In contrast to non-e-bikes, e-bikes have a stated payload capacity. And for this heavy guy, 125kg just wouldn’t cut it, especially when adding groceries to it. Now, the likeliness of the bike just going kaputt because of this is probably very, very low. And still, I have seen many heavy people ruin bikes because they were not built for them. I did not want to make that mistake with something that was many hundred Euros.</p><p>So, my quest to get an “XXL bike”, as they are frequently called in Germany, started. This turned out to be much more complicated and in the end also significantly more expensive than initially planned.</p><p>Honestly, the high price point almost made me not buy a bike. Sure, a non-e-bike is a commodity by now, a status that e-bikes generally don’t have yet. And while there seems to be good competition in the space, there seems to be a few price floors that are just hard or impossible to crack.</p><p>The bike that I decided in the end, the <a href="https://www.giant-bicycles.com/de/explore-eplus-2--gts-sport-500wh-" rel="noopener noreferrer">GIANT Explore E+ 2 (2021)</a>, a name that rolls right off the tongue and I totally had no need to look up just now, has some features that I think made the higher price worth for me, in addition to the 156kg weight limit.</p><p>Generally the quality of manufacturing in that price class seems to be much higher than on cheaper bikes, for example almost all cables run inside the bike instead of outside of it, which hopefully protect them better from wearing out.</p><p>I know that there are no-name brands and probably cheaper options with a similar quality, but the good conscience that you can go to a store and they have probably heard of the GIANT, a literal giant of the industry, is reassuring for me as a first-time e-bike user.</p><p>That said, even finding out what different bikes from the same manufacturer had to offer, and what their similarities and differences were, was excruciatingly difficult. All bike manufacturers have convenient comparison functionality but the jargon used just makes it super hard to understand if there is actually a (meaningful?) difference between two features or spec items.</p><p>It probably would have cleared up really quickly in an in-person showroom, but trying to buy something online, it felt unnecessarily complicated.</p><p>And then there are the bike categories and names themselves: Even inside GIANT, there are different bike types (which makes sense), but then there is a <em>E+ 1</em> and an <em>E+ 3</em> version, which have all different numbers of gears and some changes in the displays and UI. From how I understood, the numbers are levels, so 1 is for the most proficient riders and 2 is for medium and 3 is for entry. But I might be very wrong about this.</p><p>It does not help that the 2022 and 2021 models are displayed on the website with the same names and very similar images. It took me far too long to figure out that the one with the 200 € cheaper price tag was last year’s model, and a third party site (where I ultimately bought the bike) that stated that there are basically no changes.</p><h2 id="ok-so-how-is-the-bike">OK, so how is the bike?</h2> <p>First, huge shout out to <a href="https://zweirad-gollmann.de/" rel="noopener noreferrer">Zweirad Gollmann</a> who had the bike (and at a slight discount) and after placing the order sent me a message to double check my height fit for the bike, so I would not get a too large or small bike. While I had read up on it before and was confident to have made the right choice, this made me very confident that I had made the right purchase decision.</p><p>They even asked if they could put on the lock I bought with the bike, and they did so for free.</p><p>The bike arrived a few days after ordering it, setting it up was super easy, just aligning the handlebar and attaching the pedals and off I went. Well, almost. While I had taken the battery for charging when I received the bike, it took about 30 minutes to install software updates.</p><p>As I have alluded to above, I did get the previous years model, so I guess newer models come with more recent software that hopefully needs less updates. That said, I could have gone for a ride without installing updates at all, but that is not really how I roll. (Pun intended!)</p><div class="block-image"> <img src="https://yatil.net/media/pages/blog/i-want-to-ride-my-bicycle/b4761ddbb8-1651910152/bike-in-front-of-garage.jpeg" alt="Dark blue electric bike with panniers in front of a garage."> </div> <p>The bike rides wonderfully. I have mostly used the Smart Assist, or Auto, feature which supports you depending on how much you pedal. It feels very natural. Of course, I did try all the different assist modes, and they will be handy in different situations. I also rode on a flat street and switched off assistance completely and the bike still rode well.</p><p>Range anxiety is not a problem for me – my rounds are currently about 5km long. One reason is to get used to driving a bike again, getting acquainted with driving on roads (which I basically never did and is only an option here because of the light traffic), and to gradually get fitter.</p><div class="block-image"> <img src="https://yatil.net/media/pages/blog/i-want-to-ride-my-bicycle/99701f8e5c-1651915058/bike-in-front-of-sunset.jpeg" alt="Bike in front of the setting sun"> </div> <h2 id="so-any-downsides">So, any downsides?</h2> <p>Well, of course there are some. The app and software integration is pretty mediocre. That’s OK, I rather have a great bike (and this is one) with mediocre software than a mediocre bike with great software. What irks me most about the app is that it is only so useful. I can get all information from the bike, like the current battery level, when I’m in bluetooth range and I can also track my rides in the app. But that means that I have to have my phone out and prepped whenever I hop on the bike.</p><p>Planning a ride – which I have not done yet – is also only possible while being paired to the bike. As my bike is in my garage (which finally got a use!) and I am not planning my rides in the garage, but in my living room, it is basically a feature that does not exist for me. Depending on bluetooth range to the bike for this functionality is baffling to me.</p><p>The app’s view and use of Google Maps is also not too great, there is little bike-level information there and while there are a lot of graphs, none of them seem helpful to me. (But that might be a side-effect of being a novice rider.) It can also only export to Strava, at which point the question is: Why not use Strava directly? The app has a couple of nice features, like detailing how much support you got or how much battery was used.</p><p>I enjoyed the detail of the app changing color scheme with the dashboard on the bike when using different assist modes. Eco is green, trekking yellow, and sport red. That is a nice touch.</p><p>Also, I felt that I overextended myself during my first longer ride. You just can’t help and get the impression that you are more fit than you actually are while riding, but you still have to put in quite some pedaling work. And without warm-up and pedaling being a way of movement that I have not done for a long time, I was very sore for a couple of days. I probably should have ridden lower gears and/or higher assist, but it felt OK during the ride.</p><p>Last, but not least, expect to need a lot of additional accessories. A bike helmet, of course. (If your last one, like mine, sits on a shelf for about 8 years, it is probably a good time to replace it. I certainly did.) I got a handlebar mirror to have some visibility to the back, and how low the handlebars are is probably the biggest drawback of not having a Dutch-style bike, so visibility is still not great. I also got some penniers for the cargo part of the bike. I think they will work well. The bike uses an MIK rack mounting system which makes attaching and removing them very easy. A water bottle mount and a water bottle for hydration is also a must-have.</p><p>All in all, I can’t wait getting fitter and steadily increase the radius of where to bike to.</p> ]]>
    </description>
    </item>
    <item>
    <title>May 2022 Speaking Gigs</title>
    <link>https://yatil.net/blog/may-2022-speaking-gigs</link>
    <guid>https://yatil.net/blog/may-2022-speaking-gigs</guid>
    <pubDate>Sat, 23 Apr 2022 23:30:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>I’ll be holding three talks and workshops remotely in May.</p><h2 id="diversity-in-may-mangfold-i-mai-aria-live-regions-and-user-preferences">Diversity in May (Mangfold i mai) – ARIA Live Regions and User Preferences</h2> <p>For <a href="https://www.nav.no/en/Home" rel="noopener noreferrer">NAV</a>, the Norwegian Labour and Welfare Administration, I’ll be holding two sessions for their <a href="https://www.mangfoldimai.no/mangfold-i-mai/" rel="noopener noreferrer">“Diversity in May” series of events</a>.</p><ol><li><strong><a href="https://www.mangfoldimai.no/mangfold-i-mai/events/aria-workshop.html" rel="noopener noreferrer">Workshop: We’re ARIA Live!</a> </strong>(May 3, 2022, 10:00-11:30)<br>A deeper dive into ARIA live regions, their alternatives, and particularities. (This workshop is NAV internal, registration for NAV employees is available on the website.)</li><li><strong><a href="https://www.mangfoldimai.no/mangfold-i-mai/events/userpreferences.html" rel="noopener noreferrer">Talk: Respecting User Preferences on the Web</a></strong> (May 13, 8:30–9:15)<br>Allowing users to set their preferences and respecting them on websites is essential for accessibility. In this talk, that is updated for 2022, I’ll talk about which user preferences exist, how to implement, and how to test them. (This talk is open to everyone.)</li></ol><h2 id="accessu-2022-web-accessibility-is-broken">AccessU 2022 – Web Accessibility is Broken</h2> <p><a href="https://knowbility.org/programs/accessu-2022" rel="noopener noreferrer">Knowbility’s AccessU 2022</a> has a different format this year, with <em>asynchronous</em> sessions being released on May 5th, 2022 and <em>Questions and Answers</em> during the “official” conference time between May 9 and 12.</p><p>In my brand-new talk, “<strong><a href="https://knowbility.org/programs/accessu-2022/web-accessibility-is-broken-it-s-time-to-fix-it" rel="noopener noreferrer">Web Accessibility is broken. It’s time to fix it.</a></strong>”, I look at the system of web accessibility and what makes it so hard for web developers, designers, and managers to achieve. And then I have a few modest proposals for how to fix the system so that we get wider implementations and a higher overall standard.</p><p><a href="https://events.humanitix.com/john-slatin-accessu-2022-powered-by-knowbility" rel="noopener noreferrer">You can buy tickets for AccessU 2022 here.</a></p><h2 id="talking-at-your-conference-or-holding-a-workshop-for-your-team">Talking at your conference or holding a workshop for your team?</h2> <p><a href="mailto:mail@yatil.net">Drop me an email</a> if you’re interested in me holding these talks or similar talks and workshops for your team or at your conference. Please note that due to the ongoing pandemic, I’m only available for remote opportunities in 2022.</p> ]]>
    </description>
    </item>
    <item>
    <title>Thank you, Knowbility.</title>
    <link>https://yatil.net/blog/thank-you-knowbility</link>
    <guid>https://yatil.net/blog/thank-you-knowbility</guid>
    <pubDate>Thu, 24 Feb 2022 11:10:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>After almost, but not quite, six years, I had my final day with <a href="https://knowbility.org" rel="noopener noreferrer">Knowbility</a> last week. The time working with them was great. I’m going to miss working with the many great minds over there.</p><p>Knowbility picked up and supported my <a href="https://w3.org/WAI/" rel="noopener noreferrer">W3C/WAI work</a> when EU funding dried up in 2016 with 50% of my time. With the rest, I supported the Knowbility team, worked with Knowbility’s clients and did trainings and audits. I also supported the “Community Programs”, the common good part of the Knowbility nonprofit with tech support, especially around the AccessU conference.</p><p>Oh, the conferences. Knowbility made it possible for me to visit and speak at several CSUNs and AccessUs. The amount of experience that I have been able to collect is invaluable.</p><p>That also continued when I took over the mantle as “Tech Team Lead” and later “Director of Accessibility Services” in 2020 after leaving my W3C/WAI duties. I was asked to lead the team and happily agreed. While leading a US-based team from Germany wasn't easy, my colleagues seemed to appreciated my leadership style. (At least that’s what they have told me. 😉)</p><p>Working with a nonprofit like Knowbility means that you often work with clients that are in there for the “right” reasons. Not because they are sued or want to have the shine of being accessible, but because they believe in accessibility. We worked hard with some clients to guide them from their initial audit to a more in-depth working relationship with Knowbility where they were able to build up more and more competencies in-house.</p><p>Another tent pole of the work with Knowbility is the notion that Knowbility is two things: community &amp; education.</p><p>This is the approach we tried to get to with every audit: Make sure that the audit report could be used as a learning and educational tool, and treat the clients, which have all different business pressure around making their product accessible, as part of the community.</p><p>In contrast to other accessibility services companies, our reports tried their best to give actionable advice and hands-on guidance with enough context for readers to learn, but sufficient clarity to not have too much nuance overwhelm them. It’s always a balancing act, and we did work hard to meet those goals.</p><p>I want to thank everyone there. First, and foremost, Sharron Rush, Knowbility’s founder. Thanks for believing in me and hiring me. And a special thanks to the Team I had the pleasure to serve as a lead. Thanks to <a href="https://twitter.com/becka11y" rel="noopener noreferrer">Becky</a>, <a href="https://twitter.com/emilylewis" rel="noopener noreferrer">Emily</a>, <a href="https://twitter.com/unleashalicia" rel="noopener noreferrer">Alicia</a>, and Francesca for working with me the longest. Your support and how you worked as a team made it effortless for me. </p><p>Thanks to Ron, <a href="https://twitter.com/TomaTantrum" rel="noopener noreferrer">Toma</a>, Kyo, and Iain who are continuing the good work in services at Knowbility. Thank you, everyone in community programs and other functions who keep the heart of Knowbility beating. You know who you are.</p><p>I am incredibly proud of the work we did over the years: Improving flight booking to make it more accessible, fix accessibility problems in online learning tools, advise fashion and media companies on how to implement accessible and inclusive practices. We helped cities to serve their inhabitants better, made dashboards accessible, and convinced clients to do the correct thing instead of using overlay products.</p><p>Despite being such a small place, I am convinced that we have moved the needle in accessibility for millions of people, and probably many billions of interactions. And we trained – directly or indirectly through reports and meetings – hundreds of web developers, designers, and project managers.</p><p>I wish Knowbility all the best for the future.</p><p>For me, I’m excited to get my evenings back and hopefully a better “work-life balance”. Working and being responsible for a team in a different time zone is hard, as there is so little overlap for proper coordination and guidance. </p><p>I’m looking forward to new challenges with <a href="https://axesslab.com" rel="noopener noreferrer">Axess Lab</a>, who I decided to contract with from March 1st.</p> ]]>
    </description>
    </item>
    <item>
    <title>There is no character limit for “alt text”</title>
    <link>https://yatil.net/blog/there-is-no-character-limit-for-alt-text</link>
    <guid>https://yatil.net/blog/there-is-no-character-limit-for-alt-text</guid>
    <pubDate>Sat, 19 Feb 2022 14:15:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>When you search for <a href="https://duckduckgo.com/?q=alt+text+125+characters" rel="noopener noreferrer">alternative text length on the internet</a>, there seems to be a pretty common understanding that “some screen readers” truncate alternative text[^ Note that many people use the phrase “alt text”, because the “traditional” way to use alternative text is through the <code>alt</code> attribute in HTML. These days, alternative text for images can come in different methods, including ARIA labels and descriptions or in some cases SVG titles.] after 125 characters:</p><blockquote> The character limit for alt text is 125 characters, which is short, but just do the best you can. <footer> <a href="https://bettermarketing.pub/how-and-why-to-add-alt-text-to-your-medium-articles-a9168df1105" rel="noopener noreferrer">How (and Why) to Add Alt Text to Your Medium Articles</a> </footer> </blockquote> <blockquote> Keep your alt text fewer than 125 characters. Screen-reading tools typically stop reading alt text at this point, cutting off long-winded alt text at awkward moments when verbalizing this description for the visually impaired. <footer> <a href="https://blog.hubspot.com/marketing/image-alt-text" rel="noopener noreferrer">Image Alt Text: What It Is, How to Write It, and Why It Matters to SEO</a> </footer> </blockquote> <p>Terrill Thompson did create a<a href="https://terrillthompson.com/tests/altlength.html" rel="noopener noreferrer"> test page</a> for it and documented his results: No screen reader cut off text altogether. JAWS – and I have tested this with a more recent version of it as well – will split up the alternative text into multiple graphics with shorter alternative text.</p><p>Screen readers do not just hide the rest of the text.</p><p>Additionally, I am pretty sure that the cut-off mentioned in Firefox does not exist anymore. At least I did not come across any truncated alternative texts.</p><p>My best guess is that some people have observed JAWS’ behavior and assumed that the text was truncated where it was only split up.</p><h2 id="alternative-text-best-practices">Alternative text best practices</h2> <p>I helped write a <a href="https://w3.org/WAI/tutorials/images/" rel="noopener noreferrer">whole tutorial on images</a>, so I don’t want to go into the details here, but the general rules are:</p><ul><li>If an image meaning or shows something, it needs alternative text.</li><li>Alternative text depends on the context and usage of the image.</li><li>Describe the image as succinct as possible, but also as detailed as needed.</li></ul><p>Writing alternative text is an art more than a science, and sometimes you’ll leave out essential information. My litmus test is “would I picture an approximation of the image when it was described to me over the phone using the alternative text.”</p> ]]>
    </description>
    </item>
    <item>
    <title>No Accessibility Without Disabilities</title>
    <link>https://yatil.net/blog/no-accessibility-without-disabilities</link>
    <guid>https://yatil.net/blog/no-accessibility-without-disabilities</guid>
    <pubDate>Thu, 03 Feb 2022 10:20:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>People who are tasked with remediating accessibility often have little experience of how people with disabilities actually use the web. This leads to overcomplicated solutions, as they underestimate the capabilities of disabled people.</p><p>A few years ago, I talked to a person new to accessibility about their view that data tables were terrible for accessibility, especially for people using screen readers. It took a bit of time until I realized why they thought this was the case: The person had used a screen reader to test their site, but only knew about the basic functionality. Navigating tables, however, comes with its own keyboard shortcuts that help to orient users inside of tables.</p><p>Instead of trusting (and through research verifying) that a common pattern like data tables would be accessible, their assumption was that they weren’t.</p><p>This type of confirmation bias is hard to overcome, especially without experiencing and observing accessibility technologies directly. If it has “accessibility” in it, it must be hard, so it must be difficult for screen reader users, so I have to build a workaround for them.</p><p>The misunderstanding also comes in duplicated information or additional bolt-on code that is either inconsequential or, in extreme cases, harmful.</p><p>Take the following image code: <code>&lt;img src="…" alt="Image: Lego Space Shuttle"&gt;</code>. The addition of “Image:” to the alternative text is completely unnecessary, as screen readers already output this information.</p><p>Another example is the misunderstanding of using the tab key to navigate the page. The tab key only goes from interactive element to interactive element. You use other keys to read, for example, body text. I’ve come across more than a few examples where every element on the page had <code>tabindex="0"</code> set, “to allow screen reader users to listen to the content”. <strong>No. Don’t do this!</strong></p><p>Some of this might come from the notion that you can view accessibility as separate from disabilities. And you really can’t.</p><p>Accessibility removes actual barriers for people with disabilities. And you have to learn about the barriers and how they manifest for different disabilities. That will also highlight why the correct answer to accessibility questions often is “it depends”.</p><p>There are a few resources that you should be familiar with before jumping in and searching for solutions:</p><ul><li><em><a href="https://www.w3.org/WAI/people-use-web/" rel="noopener noreferrer">How People with Disabilities Use the Web</a></em> from the <em>W3C/WAI</em> is a cornerstone for learning about accessibility. It’s three sub-pages really help to understand the interplay of actual user needs, their abilities, and the barriers they encounter, and tools and techniques they use to overcome the barriers.<ul><li><em><a href="https://www.w3.org/WAI/people-use-web/user-stories/" rel="noopener noreferrer">Stories of Web Users</a></em> is a collection of personas that you can use to build accessibility into your user stories, but they link to the other sub-pages, which allows you to really understand the needs.</li><li><em><a href="https://www.w3.org/WAI/people-use-web/abilities-barriers/" rel="noopener noreferrer">Diverse Abilities and Barriers</a></em> describes different types of disabilities and shows examples of the encountered barriers.</li><li><em><a href="https://www.w3.org/WAI/people-use-web/tools-techniques/" rel="noopener noreferrer">Tools and Techniques</a></em> shows features, assistive technologies, and adaptive strategies that people with disabilities use to overcome or reduce the impact of accessibility barriers.</li></ul></li><li><em><a href="https://tetralogical.com/blog/2021/12/24/browsing-with-assistive-technology-videos/" rel="noopener noreferrer">Browsing with assistive technology videos</a></em> from <em>Tetralogical</em> can help to bridge the gap and get a better feeling on how assistive technology actually works.</li></ul><p>Of course, the best thing you can do is to observe a wide variety of disabled people and learn how they use everyday websites. As a company, “hire, empower, and promote people with disabilities” (<a href="https://twitter.com/atCharlesHall/status/1488680672772427778" rel="noopener noreferrer">Charles Hall</a>) as a smart way to bring that expertise in-house and have more awareness for everyone. Especially if their workplace has nothing to do with making your actual product accessible.</p><p>The last tip is that accessibility conferences often have disabled people show off their everyday assistive technologies. I learned about<a href="https://knowbility.org/blog/2020/what-is-aac" rel="noopener noreferrer"> </a><em><a href="https://knowbility.org/blog/2020/what-is-aac" rel="noopener noreferrer">Augmentative and Alternative Communication (AAC)</a></em> from Dave Chapple a few years ago at <a href="https://events.humanitix.com/john-slatin-accessu-2022-powered-by-knowbility?c=yatil" rel="noopener noreferrer">AccessU (which, by the way, has </a><strong><a href="https://events.humanitix.com/john-slatin-accessu-2022-powered-by-knowbility?c=yatil" rel="noopener noreferrer">early bird pricing</a></strong><a href="https://events.humanitix.com/john-slatin-accessu-2022-powered-by-knowbility?c=yatil" rel="noopener noreferrer"> until March 6!)</a>. It is a great way to learn about all these different techniques and technologies.</p><p>I am personally not a fan of empathy labs or simulating disabilities because they are often counterproductive, as outlined by Sheri Byrne-Haber in her article <em><a href="https://sheribyrnehaber.com/simulating-disabilities/" rel="noopener noreferrer">Simulating Disabilities</a></em>. Matt May also talks about this in his wonderful talk <em><a href="https://accessibility.scot/design-without-empathy/" rel="noopener noreferrer">Design without empathy</a></em>.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>(This blog post was inspired by one of my <a href="https://twitter.com/yatil/status/1488631714071166981" rel="noopener noreferrer">late-night tweets</a> that got liked and retweeted a fair bit. I thought it would be good to bring that content to the blog.)</p> ]]>
    </description>
    </item>
    <item>
    <title>“Person of the Week”</title>
    <link>https://yatil.net/blog/person-of-the-week</link>
    <guid>https://yatil.net/blog/person-of-the-week</guid>
    <pubDate>Sat, 15 Jan 2022 22:30:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Thanks to <a href="https://www.smashingmagazine.com" rel="noopener noreferrer">Smashing Magazine</a> for naming me(!) “Person of the Week” during last week. This is what they had to say:</p><blockquote> Eric Eggert (<a href="https://twitter.com/yatil" rel="noopener noreferrer">@yatil</a>) is a Web Accessibility Expert who tries to make the web a better place for everyone. He’s currently Director of Accessibility Services at Knowbility, before that, he worked with the <a href="https://www.w3.org/WAI/" rel="noopener noreferrer">W3C Web Accessibility Initiative</a> to improve documentation of accessibility best practices on the web. Eric shares his knowledge as a <a href="https://talks.yatil.net/" rel="noopener noreferrer">speaker</a>, teacher, and on his <a href="https://www.youtube.com/c/EricEggert" rel="noopener noreferrer">YouTube channel</a> and <a href="https://yatil.net/blog" rel="noopener noreferrer">blog</a>. Thank you for everything you do for the community, dear Eric! </blockquote> <p>(Saved here for record keeping, I don’t think there is an archive on the Smashing Magazine site.)</p> ]]>
    </description>
    </item>
    <item>
    <title>The Year of Intent</title>
    <link>https://yatil.net/blog/the-year-of-intent</link>
    <guid>https://yatil.net/blog/the-year-of-intent</guid>
    <pubDate>Sun, 09 Jan 2022 16:50:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Since hearing Myke Hurley and CGP Gray talk about “yearly themes” on the <em><a href="https://www.relay.fm/cortex" rel="noopener noreferrer">Cortex</a></em><a href="https://www.relay.fm/cortex" rel="noopener noreferrer"> podcast</a>, I try to go into every year with a theme that acts as the north star for decisions during that time. As I outlined in my <a href="https://yatil.net/blog/2021" rel="noopener noreferrer">2021 blog post</a>, it was a stressful year and I never really felt in the driver seat.</p><p>I reviewed the year using this <em><a href="https://inkandvolt.com/blogs/articles/looking-back-worksheet-yearly-planning-part-1" rel="noopener noreferrer">Looking Back at 2021</a></em><a href="https://inkandvolt.com/blogs/articles/looking-back-worksheet-yearly-planning-part-1" rel="noopener noreferrer"> planner from </a><em><a href="https://inkandvolt.com/blogs/articles/looking-back-worksheet-yearly-planning-part-1" rel="noopener noreferrer">ink+volt</a></em> (likely an inaccessible PDF) and it helped me greatly to see what the wins and possible improvements were. The exercise helped me to make sure that I did not only look back at the negativity of the year.</p><p>While I have a few specific goals for this year, the big umbrella theme is “<strong>The Year of Intent</strong>”. I noticed during my review how much of my time I waste unintentionally. Everything I do should have a clear intent, a clear outcome to make sure I use my time productively.</p><p>And that does not only mean “productively working” but also “productively relaxing”. I caught myself a number of times in the in-between state between work and free time, where I could not really relax. In the end, I was frustrated that I did not achieve a nebulous goal, but also that I did not properly relax.</p><p>In the last week or so, I did experiment with different tools (mostly <a href="https://www.craft.do" rel="noopener noreferrer">Craft</a>, <a href="https://noteplan.co" rel="noopener noreferrer">Noteplan</a>, <a href="https://obsidian.md" rel="noopener noreferrer">Obsidian</a>, and <a href="https://culturedcode.com/things/" rel="noopener noreferrer">Things</a>) to streamline my (work) tasks. None of the tools is perfect for me, but they each have some features that I like. I also experimented a bit with <a href="https://www.macsparky.com/blog/2020/10/hyper-scheduling-technology/" rel="noopener noreferrer">time blocking</a>, but it can be hard for me to box-in my attention that way.</p><p>I’m also struggling with doing proper weekly and daily reviews of the material that accumulates over the week and day… In the morning, I really like to go directly into work because it is when I’m most productive and at the end of my day (which is usually around 7pm), I don’t have a review in me. Maybe I need to start midday reviews?</p><p>Anyway, I’m looking forward to being more intentional this year. I started on this blog by implementing webmentions and comments, so feel free to let me know about your theme or goals for the year to test out how that all works.</p> ]]>
    </description>
    </item>
    <item>
    <title>2021</title>
    <link>https://yatil.net/blog/2021</link>
    <guid>https://yatil.net/blog/2021</guid>
    <pubDate>Fri, 31 Dec 2021 17:45:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>I <a href="https://yatil.net/blog/welcome-2021" rel="noopener noreferrer">welcomed 2021 with a blog post</a>, so let’s wave goodbye to it that way, too.</p><p>To be honest, I don’t have an extensive review in me. This has been an extraordinarily tough and stressful year for me. After COVID had held strongly in the winter of 2020, the spring felt to be more normal and ordinary.</p><p>That particular calm was only of short duration as we got notice that, due to work from home of our landlord and the additional space requirements, we had to leave our home by March 2022. While the old place had been small for two people, especially when at home around the clock for living and working during a global pandemic, we did not fancy house hunting at all.</p><p>That said, by May we had found our new apartment which is closer to nature and also considerably bigger than the old one, allowing more space for the separation of work and nonwork life. We moved in August, and while we made sure that most things were taken care of by contractors, it took considerable time to find the apartment and make the move.</p><p>Apart from meeting people that we had to see for the move, we made a conscious attempt to further social distance and isolate as much as possible. This might feel like an abundance of caution, but with two self-employed people and one with considerable experience in lung illnesses (<em>hi!</em>), it still feels the right decision to err on the side of caution. Especially now with Omicron, of course.</p><p>That said, the new apartment is great: Two walkable supermarkets, DIY hardware store, and a pharmacy in a 10-minute radius. Thirty-five minutes by foot to the train station. Nature all around us. Woods, fields, views. It is fantastic.</p><p>Work obligations and apartment search meant that I was not able to continue with my YouTube videos. I’d really like to continue with them, but I first need to make sure I’m not as exhausted anymore. Health must always have priority. That said, I’m incredibly proud of the 11.500+ viewer figure of my <a href="https://www.youtube.com/watch?v=rIebSHUZz_w" rel="noopener noreferrer">first video</a>. It really feels like I can reach further than with my other channels.</p><p>I also did change over my direct support channel to <a href="https://steadyhq.com/en/yatil/" rel="noopener noreferrer">Steady</a> from Patreon. The reason is simple: Steady is a German service, so it works better for business reasons, and it has several interesting features. For example, I might be able in the future to better integrate a membership into this site.</p><p>While the video front was relatively quiet, I picked up on blogging in the last quarter with three articles:</p><ol><li><a href="https://yatil.net/blog/buttons-vs-links" rel="noopener noreferrer">Buttons vs. Links</a></li><li><u><a href="https://yatil.net/blog/fix-web-accessibility-systematically" rel="noopener noreferrer">Fix web accessibility systematically</a></u></li><li><u><a href="https://yatil.net/blog/wcag-3-is-not-ready-yet" rel="noopener noreferrer">WCAG 3 is not ready yet</a></u></li></ol><p>I feel very good about that, and I hope to keep the occasional post coming. I have another blog post in draft since July, maybe I can finish it soon.</p><p>In contrast to <a href="https://hiddedevries.nl/en/blog/2021-12-28-2021-in-review" rel="noopener noreferrer">other people</a>, I did not read a lot of books. I can only remember one, to be perfectly honest, and that is Dan Moren’s <a href="https://dmoren.com/the-bayern-agenda/" rel="noopener noreferrer">The Bayern Agenda</a>.</p><p>I did consume considerable amounts of other media, some <a href="https://yatil.net/blog/media-that-helped-me-through-2020" rel="noopener noreferrer">new seasons of last year’s favorites</a>, like the new <em>Ted Lasso</em> (excellent!) and <em>For all Mankind</em> (even excellenter!) seasons. </p><p>In summer, I also watched all Marvel movies in release order thanks to Disney+. I think the only one I had seen until then was <em>Iron Man 1</em> and <em>Spider-Man: Homecoming</em>, and I think both were on a plane. While they were not all great, they were entertainment and I liked the continuing story. <a href="https://letterboxd.com/yatil/films/ratings/" rel="noopener noreferrer">I did rate them all on Letterboxd</a>.</p><p>In addition, I watched <em>Doctor Who: Flux</em> and <em>Hawkeye</em> (both great!) and over Christmas <em>Around the World in 80 Days</em> with David Tennant, which I liked.</p><p>I also built a Space Shuttle and a Telescope! (<a href="https://twitter.com/yatil/status/1476182174667886597" rel="noopener noreferrer">Link to the tweet with alternative texts.</a>)</p> <embetty-tweet status="1476182174667886597"></embetty-tweet> <p>All in all, it was a good, but exhausting, year. A lot has changed, and there has been not enough time to really wrap my head around it at this point. Onwards to the next one. </p> ]]>
    </description>
    </item>
    <item>
    <title>WCAG 3 is not ready yet</title>
    <link>https://yatil.net/blog/wcag-3-is-not-ready-yet</link>
    <guid>https://yatil.net/blog/wcag-3-is-not-ready-yet</guid>
    <pubDate>Sat, 11 Dec 2021 13:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <section class="toc" aria-labelledby="toc"><h2 id="toc">Table of Contents</h2><ul> <li><a href="#whats-the-issue-with-being-an-early-adopter">What’s the issue with being an early adopter?</a></li> <li><a href="#so-what-about-that-new-color-contrast-algorithm-then">So, what about that “new color contrast algorithm”, then?</a></li> <li><a href="#so-should-you-use-apca">So, should you use APCA?</a></li> <li><a href="#what-is-the-way-forward">What is the way forward?</a><ul> <li><a href="#what-if">What if…?</a></li> </ul> </li> <li><a href="#addendum-2021-12-14">Addendum 2021-12-14</a></li> <li><a href="#update-2023-03-28">Update 2023-03-28</a></li> <li><a href="#update-2024-09-16">Update 2024-09-16</a></li> </ul></section><p>In the last couple of weeks, more and <a href="https://twitter.com/DanHollick/status/1468958644364402702" rel="noopener noreferrer nofollow">more people</a> point at the <a href="https://www.w3.org/TR/wcag-3.0/" rel="noopener noreferrer nofollow">WCAG 3.0 Working Draft</a> and recommend the adoption of aspects from it that suit their needs, despite the draft clearly stating (emphasis theirs):</p><blockquote> These are <strong>early drafts of guidelines included to serve as initial examples</strong>. They are used to illustrate what WCAG 3.0 could look like and to test the process of writing content. These guideline drafts should not be considered as final content of WCAG 3.0. They are included to show how the structure would work. </blockquote> <p>W3C Working Groups publish drafts to allow the public and W3C members to give feedback. They are explicitly <strong>not</strong> meant as a recommendation or even as advice. To quote from the W3C process document (emphasis mine):</p><blockquote> <strong>Working Drafts do not</strong> necessarily <strong>represent a consensus of the Working Group</strong> with respect to their content, and <strong>do not imply any endorsement by W3C or its members</strong> beyond agreement to work on a general area of technology.<br>[…]<br>A Working Draft is suitable for gathering wide review prior to advancing to the next stage of maturity. </blockquote> <h2 id="whats-the-issue-with-being-an-early-adopter">What’s the issue with being an early adopter?</h2> <p>In general, web <em>technologies</em> are very good citizens to early adopters like me: They usually come with suitable fallbacks that allow you to use, for example, animations and transitions <a href="http://webkrauts.de/artikel/2009/von-transitionen-und-animationen" rel="noopener noreferrer">in 2009</a> with the fallback of no animation for browsers without support. </p><p>With <em>guidelines</em> like WCAG 2.1 and 2.2 (to be released later), the same approach is true. If you use WCAG 2.2 Success Criteria now, the Guidelines are built to be backwards compatible. So you will never break a 2.0 or 2.1 audit by using it.</p><p><strong>But WCAG 3 breaks backwards compatibility.</strong> This is a conscious move to better adapt the standard to serve different disabilities which WCAG 2 did not sufficiently cover, due to its structure.</p><p>That means that WCAG 3 will probably have a different scoring system that does not necessarily overlap with WCAG 2. As far as I know – and my involvement was some time ago – the current plan is to make sure all WCAG 2 conforming pages conform to WCAG 3, too, in some form. They will not in reverse.</p><h2 id="so-what-about-that-new-color-contrast-algorithm-then">So, what about that “new color contrast algorithm”, then?</h2> <p>The visual contrast algorithm that is currently referenced in the WCAG 3 Working Draft, named APCA, is a stark departure from the luminosity contrast algorithm used in WCAG 2.</p><ul><li>WCAG 2 treats front and background color the same, so inverting the color does not change the calculation. This is notably not how color perception works in practice. You can perceive certain colors better or worse, depending on the surrounding color.</li><li>WCAG 2 does not take font-size and weight into account, the APCA does.</li><li>WCAG 2 did not change the required contrast depending on the font, APCA does.</li></ul><p>These are all good arguments to change to a new way of measuring contrast, especially as APCA also promises to give designers more color choice. However:</p><ul><li>Any color combination with APCA needs to be checked for both font-size and weight, making requirements documents and design systems more complicated.</li><li>Designers compare the used font to the standard, Helvetica-based, APCA lookup table. This feels like an error-prone step to me, considering that this comparison seems to be done on a visual level. It is not only excluding people with visual disabilities from making their own (accessible) font and color choices, but it also brings a certain level of subjectivity into the rating.</li><li>How the APCA values convert to WCAG 3 ratings is not 100% clear to me. The <a href="luminance-contrast-between-background-and-text" rel="noopener noreferrer nofollow">rating </a><a href="https://www.w3.org/TR/wcag-3.0/#visual-contrast-of-text" rel="noopener noreferrer nofollow">section</a><a href="luminance-contrast-between-background-and-text" rel="noopener noreferrer nofollow"> in the draft</a> (expand the “Rating for&nbsp;Luminance contrast between background and text” for more info) refers to the lookup table values and how you can not meet a number of them and still get a rating. (WCAG 3 aims to not have clear pass/fail criteria, but looser ratings, that give websites the opportunity to be a bit inaccessible and still conform to WCAG to a certain extent.)</li><li>The – admittedly also draft – <a href="https://www.w3.org/WAI/GL/WCAG3/2021/how-tos/visual-contrast-of-text/#design-button" rel="noopener noreferrer nofollow">design</a> and <a href="https://www.w3.org/WAI/GL/WCAG3/2021/how-tos/visual-contrast-of-text/#develop-button" rel="noopener noreferrer nofollow">development</a> information for ”Visual contrast of text” has little actually actionable information at this point: How do I choose colors? How do I make sure my design system complies? How do I measure the colors practically? It has some information on display color calibration and the environment, but in my opinion, those should be relevant for determining the contrast using the algorithm.</li><li>The APCA algorithm is changed occasionally (last in March 2021). It’s good that it adapts to new research, but it also means that you might use a color that is not sufficient by a later version.</li></ul><p>This reads much more complicated to me, compared to the current way of using colors. It is probably more exact, but it trades off clarity. Designers might get to use orange and white, but there is an additional effort on how complicated it is to evaluate and describe accessible designs.</p><p>That trade-off might be totally worth it, but there are many questions that need to be answered between now and then.</p><h2 id="so-should-you-use-apca">So, should you use APCA?</h2> <p>The answer is two-fold:</p><ul><li>For private, non-commercial projects: Sure, go ahead and apply it to the best of your knowledge. There are no restrictions on what you can do, and it might even inform future developments in WCAG.</li><li>For commercial and public projects: You are probably, through law or policy, required to conform to WCAG 2. That means you cannot rely on APCA for compliance (simply because it does not exist in WCAG 2).</li></ul><p>WCAG 3 and the consensus process will probably mean that it takes another 3–5 years until WCAG 3 sees any release. And then WCAG 2 will be still enshrined into a lot of laws and policies. After all, WCAG 3 is a huge monolith of a specification, and the structure that the Working Group wants to use is very complex. You can read about it in <a href="https://www.w3.org/TR/wcag-3.0-explainer/" rel="noopener noreferrer nofollow">the WCAG 3 explainer</a>.</p><p>In the meantime, WCAG 2 is there for you. Is it perfect? No. Is the luminosity contrast flawed? Pretty sure. But that should encourage us to take the time to make sure that we don’t make similar choices in WCAG 3. As I have outlined previously on this very blog, <a href="https://yatil.net/blog/fix-web-accessibility-systematically" rel="noopener noreferrer nofollow">I don’t think WCAG 3 is necessary the silver bullet that we think it is</a>.</p><h2 id="what-is-the-way-forward">What is the way forward?</h2> <p>I think exploring APCA and how it works with your particular color needs is a good first step, and the <em>Accessibility Guidelines Working Group</em> probably welcomes that feedback. If you use it, be aware that you might not conform to WCAG 2, and you cannot conform to WCAG 3 (as that does not exist yet).</p><p>I’m very worried that some designers might think they should or can use the new contrast algorithm, and then accessibility consultants have to push back and clear up those misunderstandings. It takes up a lot of time, while accessibility consultants have their hands full already. </p><p>Additionally, it gives accessibility a bad reputation: “You can’t even agree on what colors we should use. Accessibility makes everything more complicated!”. This already is a common sentiment, and speculating what the future might be, based on an early working draft, will not help with it.</p><h3 id="what-if">What if…?</h3> <p>In an alternate universe, we would have a modular WCAG (similar to what CSS is doing) where every two years or so we package up new success criteria into a new version. It would have allowed different speeds for different SCs, and in this case, we might have a better understanding on what the way forward would be. And if our rating or evaluation guideline would change, the next version of that Success Criterion could address it.</p><p>That said, it is so easy to think in these inconsequential hypotheticals. The W3C consensus is that WCAG 2.2 is published some time next year. WCAG 3 follows when it’s done. It’s a long process, and we need to make sure all our i’s are dotted and the t’s are crossed. Let’s just make sure we don’t get ahead of ourselves and create confusion.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><h2 id="addendum-2021-12-14">Addendum 2021-12-14</h2> <p>Maybe the article did not make that clear: If you use a color that has enough contrast to the algorithm specified in WCAG 2 and the one that is maybe coming in the future, that is great, and it will give your color combination a certain longevity. </p><p>Combining both means cutting off obviously hard to read color combinations that are allowed under WCAG 2 while not venturing out of the color space WCAG 2 has inhabited. That means you raise your level of accessibility beyond the minimal requirements of WCAG 2. And that is awesome.</p><h2 id="update-2023-03-28">Update 2023-03-28</h2> <p>WCAG 3 is still not ready. In fact, there haven’t been any meaningful updates to the draft since this article was initially published. The <a href="https://www.w3.org/2022/10/proposed-ag-charter" rel="noopener noreferrer">proposed charter for the WCAG WG</a> has a completion date of Q2/2026, which is probably unrealistic. (Minor WCAG 2 updates took between 5 and 10 years, but now they want to create an entirely new standard with new testing requirements and documentation in three years?)</p><h2 id="update-2024-09-16">Update 2024-09-16</h2> <p><a href="https://www.linkedin.com/in/rachael-bradley-montgomery-ph-d-6847144" target="_self">Rachael Bradley Montgomery</a>, Accessibility Guidelines Working Group Co-Chair, asked me to update this article in a <a href="https://www.linkedin.com/feed/update/urn:li:activity:7241019088746000384?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7241019088746000384%2C7241089443938332672%29&amp;dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287241089443938332672%2Curn%3Ali%3Aactivity%3A7241019088746000384%29">comment on LinkedIn:</a> AGWG are updating the draft now every 6 months or so. A few points in the article need updating: 1. We are currently testing our velocity and do not expect to provide a final schedule until next year when we have a better estimate. 2. APCA is not in the current draft. We hope to put out our next update this fall and appreciate everyone who provides feedback, while recognizing that WCAG 3 is a work in progress!</p> ]]>
    </description>
    </item>
    <item>
    <title>Ask Me Anything Webinar on November 30, 2021</title>
    <link>https://yatil.net/blog/ama-knowbility</link>
    <guid>https://yatil.net/blog/ama-knowbility</guid>
    <pubDate>Fri, 26 Nov 2021 18:20:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>I’ll be joining my Knowbility colleague (“Knowlleague”?) Anthony Vasquez in an evening of questions and answers about web accessibility.</p><ul><li>Date: November 30, 2021</li><li>Time: 8–9pm CEST (Berlin)/1–2pm Central (Austin)</li><li><strong><a href="https://events.humanitix.com/a11y-office-hours-episode-3" rel="noopener noreferrer nofollow">Register for the webinar!</a> It’s free!</strong></li></ul><p><a href="https://twitter.com/intent/tweet?text=My+question+for+%23A11yOfficeHour+is…" rel="noopener noreferrer nofollow">Please send questions in via Twitter with the Hashtag #A11yOfficeHour.</a></p><p>This event supports Knowbility’s current donation drive. So <a href="https://knowbility.org/donate" rel="noopener noreferrer nofollow">please support Knowbility and its mission by making a donation</a>.</p> ]]>
    </description>
    </item>
    <item>
    <title>Fix web accessibility systematically</title>
    <link>https://yatil.net/blog/fix-web-accessibility-systematically</link>
    <guid>https://yatil.net/blog/fix-web-accessibility-systematically</guid>
    <pubDate>Mon, 18 Oct 2021 10:15:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Web accessibility is incredibly important. The web is the prime medium for information, education, entertainment, and social interaction. And it still is incredibly inaccessible to many people. According to <a href="https://webaim.org/projects/million/" rel="noopener noreferrer nofollow">WebAIM’s assessment of one million home pages</a>, 97.4% of them had easily detectable failures.</p><p>Today starts <a href="https://www.w3.org/2021/10/TPAC/" rel="noopener noreferrer nofollow">W3C’s TPAC Conference</a>. It’s where all W3C groups have an opportunity to meet and make sure that they work to bring the web forward. There is usually a lot of accessibility going on, but it is far from embedded across the organization. That has structural reasons (W3C’s Web Accessibility Initiative — WAI — is a dedicated section inside W3C) and while WAI checks all specifications for accessibility, most are not developed with accessibility in mind from the beginning.</p><p>And even the specifications that are developed for accessibility, have significant adoption problems. The only accessibility standard that got real traction is the <a href="https://www.w3.org/TR/WCAG21/" rel="noopener noreferrer nofollow">Web Content Accessibility Guidelines (WCAG) 2</a>. There is also <a href="https://www.w3.org/TR/ATAG20/" rel="noopener noreferrer nofollow">ATAG 2.0, the standard for authoring tools</a>, which is basically everything that creates web content (blog engines, social media sites, video sharing), but few tools adapt parts from it, let alone everything.</p><p><a href="https://www.w3.org/TR/UAAG20/" rel="noopener noreferrer nofollow">UAAG 2.0</a>, the standard with the goal to make browsers and other user agents accessible, did not even get published as a standard, but as a working group note. There was not enough consensus to make it a requirement for browsers.</p><p>Another standard that W3C/WAI develops is <a href="https://www.w3.org/TR/wai-aria-1.2/" rel="noopener noreferrer nofollow">ARIA (Accessible Rich Internet Applications)</a>[^ This is a link to the ARIA 1.2 Candidate Recommendation Snapshot. I <em>think</em> that means it is technically a draft, but is close to being a recommendation. Unfortunately, W3C changed the naming of the documents, and I find the changes hard to understand.], which provides roles, states, and properties to make rich user interfaces accessible. It is a whole different set of semantics that you can add on top of HTML to make your website more accessible. It can also be used in other technologies, like ePub or PDF.</p><p>While developers would have used ARIA initially to adapt their HTML to the API for screen readers in complex situations, these days ARIA is almost a must-have even on the simplest website. If you have two navigation areas on the page, let’s say a visually horizontal main navigation and a vertical sub-navigation, it’s common to give them names. There is no mechanism to do that in HTML, so you have to go back to ARIA for that.</p><h2 id="accessibility-got-complicated-and-unpredictable">Accessibility got complicated and unpredictable</h2> <p>To build an accessible product, you need to know how all of these technologies interact and how you can combine them to create an accessible experience. You have to know what an accessible name is and if the <code>aria-label</code> attribute overwrites the <code>aria-labelledby</code> attribute. (It does not.)[^ Thanks to Mitchell Evan for pointing out that I initially had mixed up the priority between <code>aria-label</code> and <code>aria-labelledby</code> — accidentally proving my point.]</p><p>W3C provides a host of additional specifications for that, like the <a href="https://w3c.github.io/aria-practices/" rel="noopener noreferrer nofollow">ARIA Authoring Practices</a>[^ Linking to the editor’s draft, because that is better aligned with ARIA 1.2.], which demonstrates how ARIA works. But its examples do not reflect HTML best practices, as it is technologically neutral.[^ See, for example, this <a href="https://w3c.github.io/aria-practices/examples/link/link.html" rel="noopener noreferrer nofollow">example of making a </a><code>span</code><a href="https://w3c.github.io/aria-practices/examples/link/link.html" rel="noopener noreferrer nofollow"> element a link</a>. I understand why this example is here, I also understand how people see this and come to wrong conclusions.] There is also <a href="https://w3c.github.io/html-aam/" rel="noopener noreferrer nofollow">HTML Accessibility API Mappings</a>, which explains the relationship of how HTML maps to accessibility APIs, especially when using ARIA. And the <a href="https://www.w3.org/TR/html-aria/" rel="noopener noreferrer nofollow">ARIA in HTML</a> specification, that gives advice on how to use ARIA in the first place when using HTML.</p><p>On top, you need to understand the capabilities of assistive technology and how it can actually use some of these technologies. Due to the vast market of assistive technologies, there is always uncertainty. And that HTML elements, like <code>&lt;input type="date"&gt;</code>, which are standardized for over a decade now, lack accessibility support in modern browsers does not make it easy for developers.</p><p>“Don’t use ARIA unless you have to” is a <a href="https://twitter.com/search?q=%22Don%E2%80%99t%20use%20ARIA%22&amp;src=typed_query&amp;f=top" rel="noopener noreferrer nofollow">common phrase</a> uttered by accessibility experts, but how are ordinary developers supposed to know when they have to? The education around accessibility is abysmal and instead of making sure that it is really clear what to use in what situations, we just leave it to designers and developers to make these critical decisions.</p><h2 id="wcag-3-will-not-fix-that-issue">WCAG 3 will not fix that issue</h2> <p>A lot of people have high hopes for WCAG 3 (the then likely renamed <em>W3C Accessibility Guidelines</em>[^ <strong>W</strong>3<strong>C</strong> <strong>A</strong>ccessibility <strong>G</strong>uidelines: WCAG.]). But accessibility testing is the least of our problems. Nothing will magically let developers understand how to achieve a certain outcome[^ WCAG 3’s version of a success criterion] when WCAG 3 gets to recommendation status. It won’t make any of the interplay of the technologies easier. (And the jury is out if it will actually improve accessibility testing.)</p><h2 id="we-need-a-combined-effort">We need a combined effort</h2> <p>There already is some wiggle room in accessibility: What alternative text is correct in what situation? Is something a <a href="https://yatil.net/blog/buttons-vs-links" rel="noopener noreferrer nofollow">button or a link</a>? It is good that we can make decisions depending on the context, as the web is such a complex medium.</p><p>But if something is in ARIA, it should have the defined result in the DOM and AOM[^ That’s the Accessibility Object Model, a parallel Accessibility-focused version of the Document Object Model (DOM).] and thus a predictable outcome in assistive technologies.</p><p>For example, if you currently specify <code>aria-haspopup="dialog"</code>, most screen readers will announce that a menu will pop up. That's not super useful.</p><p>This lack of predictability and interoperability hurts users. Developers cannot rely on the technology to work, which takes up resources that could be better spent elsewhere.</p><p>Initially, when we talked about ARIA, the plan was that most aspects of it would be converted into native HTML quickly. Combo boxes, dialogs, tab panels[^ Oh, looks like Open UI will have that covered soon, <a href="https://daverupert.com/2021/10/native-html-tabs/" rel="noopener noreferrer nofollow">Dave Rupert is looking into native tab panels</a>.]. The promised land of a world with natively accessible features right out of the box, it did not come to pass.</p><p>Instead, ARIA is now a meta language that sits between technologies, defining an accessibility vocabulary for them. This led to the interesting development that ARIA takes on features of HTML instead of the other way around. ARIA now even has a <a href="https://www.w3.org/TR/wai-aria-1.2/#paragraph" rel="noopener noreferrer nofollow">paragraph</a> role.</p><p>Who can blame developers when they skip over searching HTML and go directly to ARIA — it has accessible in the name, after all. But ARIA is a much less forgiving and can be much more damaging than a bad HTML element somewhere usually is. And it also is more complicated. Some roles must be inside other roles. Using certain roles demands implementing predictable keyboard navigation (and no, you do not get that for free).</p><h2 id="what-to-do">What to do?</h2> <p>I think we need to make sure that accessibility implementation is predictable, easy to understand and error tolerant. With the heavy reliance on ARIA, and barely any movement of getting accessibility into the core technologies[^ I’m counting on you, <a href="https://open-ui.org" rel="noopener noreferrer nofollow">Open UI</a>!], we made accessibility hard to understand for most developers and added more and more variables. And that is all before actual support for assistive technologies.</p><p>To make it easier to use, we have to bring accessibility back and modernize existing basic standards. It will simplify documentation, improve reliability, make errors easier to detect. And it will help to make accessibility easier to teach. </p><p>And browsers must do their fair share of it, too. Why is there no console warning, when a form field is missing a label? Why can I pollute my HTML with nonsensical ARIA attributes without the browser even raising an eyebrow? Every <code>role="link"</code> should yield a “Didn’t you want to use an <code>a</code> element instead?” message.</p><p>If we want the web to be “for everyone”, its tools must be for everyone, too. And that begins with accessible core ingredients like HTML.</p><p><strong><a href="https://steadyhq.com/en/yatil/about" rel="noopener noreferrer nofollow">Did you like this article? Support my independent work with just €5/month.</a></strong></p><p><em>Update 2021-10-20: Added footnote regarding Open UI tab panel explorations.<br>Update: 2021-10-23: Corrected </em><code>aria-labelledby</code><em> overwriting </em><code>aria-label</code>.</p> ]]>
    </description>
    </item>
    <item>
    <title>Buttons vs. Links</title>
    <link>https://yatil.net/blog/buttons-vs-links</link>
    <guid>https://yatil.net/blog/buttons-vs-links</guid>
    <pubDate>Thu, 07 Oct 2021 23:55:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Should some links look like buttons, or should some buttons look like links? Twitter was all up in arms about this issue this week. Let’s take a look to see what these two UI elements are and what they do, and then, how they can look.</p><h2 id="what-are-links">What are links?</h2> <p>Links are interactive elements that usually link to another document, for example: Click this link to go to <a href="https://knowbility.org" rel="noopener noreferrer nofollow">Knowbility’s website</a>. There is some additional functionality, like the ability to point to different frames in a “frame set” (yup, you can still do that!) or forcing a download of a file.</p><p>In essence, the link changes what the URL in the browser points to and then displays that website or file. If the browser can’t display the file, it gets downloaded.</p><p>Links give you also several additional options in the right click menu: Opening the target page in a new window or tab, download the linked page, copy the link. When you hover over the link with the mouse, you can also see the destination of the link in the status bar.</p><p>In addition, some links only bring you to a different section of the same page, which is useful, for example navigating footnotes[^ Footnotes are these small additional information section at the bottom of the page. Pretty much like this one. Actually, exactly like this one.]!</p><h2 id="what-are-buttons">What are buttons?</h2> <p>Buttons perform an action. When they were introduced as a variant of the <code>&lt;input&gt;</code> element, their sole purpose was to submit forms. They are still pretty great for that. Later, HTML introduced the <code>&lt;button&gt;</code> element, which allowed more versatility of buttons outside of forms.</p><p>While you can get redirected after a form submission, back in the day, the website would often just stay on the same URL and display a success message. With the <code>&lt;button&gt;</code> element, buttons can now be used for <em>functionality</em> all over the site that does not lead a user somewhere else.</p><p>Have a calculator on the site? A great use for buttons. Expand a navigation? Use a button. Show/hide something? A button can do that. Basically, a button would always be used either in a form or with JavaScript. Without JavaScript, the usefulness of buttons is severely limited.</p><h2 id="what-are-the-differences-between-links-and-buttons">What are the differences between links and buttons?</h2> <p>First, they have two different roles, so assistive technologies announce them differently. Links are (shockingly accurately) announced as “links”, while buttons are announced as (you might have guessed it by now) “buttons”.</p><p>Having these different roles means there are different user expectations. Not only that <em>links go somewhere</em> and <em>buttons do something,</em> but also their interactivity:</p><ul><li>Links can be activated by pressing the return key only.</li><li>Buttons can be activated by pressing return <em>or</em> space.</li><li>Screen readers have a function to present a list of links to their users. Buttons cannot be as easily reached.</li><li><a href="https://hiddedevries.nl/en/blog/2016-08-06-some-pointers-on-default-cursors" rel="noopener noreferrer nofollow">Buttons use the normal mouse pointer arrow, while links trigger the use of the pointing hand mouse pointer.</a></li></ul><p>As a developer, it is important to embrace that difference and know about it, as you can much easier meet user expectations that way.</p><h2 id="what-about-styling-links-and-buttons">What about styling links and buttons?</h2> <p>The same principles apply to links and buttons for styling. Users generally will have the expectation that…</p><ul><li>Underlined text goes somewhere.</li><li>Text in a pill or rounded rectangle shape does something.</li></ul><p>That said, on the web there has not been much of a separation of the two than on desktop operating systems. The power of CSS to make every element look any way you like blurred the lines here.</p><p>Call-to-action links (CTAs) often have a button-like shape. At the same time, we might have lists of links that look nothing like those in the body of our texts for navigation or in a tag cloud.</p><p>This is usually not a problem because context is a thing that can help users to identify what’s going on. In a teaser that has a pill-shaped link that reads “Read the full story”, people will not confuse it with a button to do something on the page.</p><p>Imagine a button that is styled to look like a text link, but has a pencil icon and reads “edit”. There’s a good chance users won’t be surprised when they trigger an inline editing mode, which does not lead them to another page to do the edits.</p><h2 id="conclusion">Conclusion</h2> <p>Buttons and links are functionally different, but their styling can be similar. Use the proper tool for the job and remember that <em>links go somewhere</em> while <em>buttons do something</em>.</p><p>If you style them similarly, make sure that the functionality is clear from the context. You can add other clues to differentiate:</p><ul><li>Make call-to-action links a more pill like appearance, if your action buttons are rounded rectangles; or the other way around.</li><li>Use iconography that supports the use. An arrow to the right on a call-to-action link is a great indicator to say, “this goes somewhere!” (To the left on right-to-left languages.)</li><li>Use meaningful descriptions as link or button text. “Download document”, “Submit form”, “Save progress”, “Read article” are all probably as or even more instructive to direct user’s expectations compared to the actual shape of the link or button.</li></ul><h3 id="you-should-care-about-the-difference">You should care about the difference</h3> <p>With both elements in a gray area, it might not make a huge difference on what to use. And that might be true for the occasional link that should be a button, or for the individual button that just redirects you somewhere. But if you depend on the role of the element every day, like screen reader or speech input users do, the reliability of these very common elements is key.</p><p>If you had a keyboard and your “e” key would only work 90% of the time, it would be infuriating. Reliability and trust in user interfaces is important to allow users to navigate content and application with ease. If you use the right elements, you support users.</p><section class="support" aria-label="Support Eric"> <h2>Support Eric’s independent work</h2> <p>I'm a web accessibility professional who cares deeply about inclusion and an open web for everyone. I work with <a href="https://axesslab.com">Axess Lab</a> as an accessibility specialist. Previously, I worked with <a href="https://knowbility.org">Knowbility</a>, the <a href="https://w3.org">World Wide Web Consortium</a>, and <a href="https://aktionmensch.de">Aktion Mensch</a>. In this blog I publish my own thoughts and research about the web industry.</p> <p><span class="buttons-support"><a class="plausible-event-name=Membership" href="https://steadyhq.com/en/yatil/about"><svg aria-hidden="true" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#291E38"/><g clip-path="url(#a)" fill="#fff"><path opacity=".5" d="M19.989 22.174v.003l-.937.192c-.883.174-1.567.507-2.052.999a2.41 2.41 0 0 0-.727 1.752c0 .23.024.449.072.655L12.13 27.07a6.615 6.615 0 0 1-.379-2.244c0-1.682.56-3.145 1.68-4.39 1.12-1.245 2.692-2.064 4.717-2.457.816-.12 1.429-.22 1.838-.3v-.001c.217-.042.543-.119.978-.23 1.655-.324 2.482-1.187 2.482-2.589a2.702 2.702 0 0 0-.084-.673l4.134-1.268c.245.702.367 1.461.367 2.265 0 1.704-.537 3.127-1.612 4.27-1.074 1.144-2.536 1.91-4.384 2.298-.833.197-1.459.338-1.877.423z"/><path d="M19.989 8c2.155.018 3.998.708 5.536 2.07.94.833 1.595 1.782 1.968 2.85l-4.133 1.268c-.138-.518-.443-.979-.914-1.383-.641-.55-1.457-.836-2.457-.857h-.093c-1.053 0-1.913.285-2.58.857-.666.571-.999 1.256-.999 2.054 0 1.402.828 2.265 2.482 2.589l1.188.23c.41.08 1.024.18 1.843.3 2.025.394 3.597 1.213 4.718 2.458 1.12 1.245 1.68 2.708 1.68 4.39 0 1.921-.749 3.598-2.246 5.028C24.485 31.284 22.51 32 19.99 32c-2.52 0-4.497-.715-5.994-2.146-.881-.842-1.503-1.77-1.866-2.784l4.216-1.294c.13.556.434 1.026.914 1.408.657.524 1.567.787 2.73.787s2.073-.262 2.73-.787c.657-.524.985-1.212.985-2.064a2.41 2.41 0 0 0-.727-1.752c-.484-.492-1.168-.825-2.051-1l-.937-.191c-.464-.093-1.162-.236-2.092-.426-1.849-.389-3.31-1.154-4.385-2.297-1.074-1.144-1.612-2.567-1.612-4.271 0-2.028.78-3.732 2.338-5.112S17.67 8 19.863 8h.126z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(11.75 8)" d="M0 0h16.478v24H0z"/></clipPath></defs></svg> <span>Sign up for a <strong>€5/Month Membership</strong></span></a> <a class="plausible-event-name=Newsletter" href="https://steadyhq.com/en/yatil/newsletter/sign_up"><svg aria-hidden="true" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h256v256H0Z"/><path d="M72 104h32v48H72Zm160-48v160 0c0 4.41-3.59 7.99-8 8 -1.25 0-2.47-.29-3.58-.85l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-2.26 1.12-4.91 1.12-7.16 0l-28.43-14.22 -28.43 14.21v0c-3.96 1.97-8.76.37-10.74-3.58 -.56-1.12-.85-2.34-.85-3.58v-160 -.001c.01-8.84 7.16-15.99 16-16h176v0c8.83.01 15.98 7.16 16 16ZM120 96v0c-.01-4.42-3.59-8-8-8H64v0c-4.42 0-8 3.58-8 8v64 0c0 4.41 3.58 7.99 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm80 48v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Zm0-32v0c-.01-4.42-3.59-8-8-8h-48v0c-4.42 0-8 3.58-8 8 0 4.41 3.58 8 8 8h48v0c4.41-.01 7.99-3.59 8-8Z"/></svg> <span>Subscribe to the Infrequent <strong>Newsletter</strong></span></a> <a class="plausible-event-name=Mastodon" href="https://yatil.social/@yatil"><svg aria-hidden="true" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7 -62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54v0c-.62-4.61-.92-9.26-.9-13.9 85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5Zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175Z"/></svg> <span>Follow me on <strong>Mastodon</strong></a></span></span></p> </section><p>That said, because of the complicated and diverse history of the web, in some instances there is no <em>one true way</em> to code or design something. Designs, development environments, approaches, and preferences can differ. Where I would have used a button and styled it that way, another user might have used a link. And that is totally OK.</p><p><em>Thanks to <a href="https://hiddedevries.nl" rel="noopener noreferrer nofollow">Hidde</a>, <a href="https://www.erikkroes.nl" rel="noopener noreferrer nofollow">Erik</a>, and <a href="https://incl.ca" rel="noopener noreferrer nofollow">Nic</a>, who reminded me about some things I forgot to mention in the first draft. Also, to everyone who shared their opinion and experience on Twitter. This is how we learn. And last, but not least, let me refer to Marcy Sutton’s talk <a href="https://speakerdeck.com/marcysutton/the-links-vs-buttons-showdown" rel="noopener noreferrer nofollow">“The Links vs. Buttons Showdown</a>”, in which she comes to similar conclusions as I do. <a href="https://twitter.com/carmacleod" rel="noopener noreferrer nofollow">Carolyn</a> reminded me of it via Twitter.</em></p> ]]>
    </description>
    </item>
    <item>
    <title>Media that helped me through 2020</title>
    <link>https://yatil.net/blog/media-that-helped-me-through-2020</link>
    <guid>https://yatil.net/blog/media-that-helped-me-through-2020</guid>
    <pubDate>Sat, 02 Jan 2021 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>We all needed distraction in 2020. Here are some of my highlights, so maybe you find something to enjoy from the list.</p><h2 id="podcasts">Podcasts</h2> <p>Unfortunately no podcasts listed have transcripts. The inaccessibility of podcasts is a really big problem.</p><h3 id="tech">Tech</h3> <ul><li><p><a href="https://www.relay.fm/" rel="noopener noreferrer nofollow">Relay FM</a>&nbsp;is a podcast network that hosts some of my favorite tech-related podcasts:&nbsp;<em><a href="https://www.relay.fm/upgrade" rel="noopener noreferrer nofollow">Upgrade</a></em>,&nbsp;<em><a href="https://www.relay.fm/connected" rel="noopener noreferrer nofollow">Connected</a></em>,&nbsp;<em><a href="https://www.relay.fm/automators" rel="noopener noreferrer nofollow">Automators</a></em>&nbsp;and&nbsp;<em><a href="https://www.relay.fm/mpu" rel="noopener noreferrer nofollow">Mac Power Users</a></em>.</p></li><li><p>Let me single out Relay FM show&nbsp;<em><a href="https://www.relay.fm/20macs" rel="noopener noreferrer nofollow">20 Macs for 2020</a></em>&nbsp;here, which looked back at the most notable Macs until now. There is a&nbsp;<a href="https://sixcolors.com/post/2020/08/20-macs-for-2020-an-introduction/" rel="noopener noreferrer nofollow">series of articles</a> and&nbsp;<a href="https://www.youtube.com/playlist?list=PLWicOOpLAfvEv7KODfZYuXS7jVprBDUJc" rel="noopener noreferrer nofollow">YouTube videos</a>&nbsp;that complement the podcast (or vice-versa?).</p></li><li><p><em><a href="https://nestedfolderspodcast.com/" rel="noopener noreferrer nofollow">Nested Folders</a></em>&nbsp;– A productivity podcast.</p></li><li><p><em><a href="https://atp.fm/" rel="noopener noreferrer nofollow">Accidental Tech Podcast (ATP)</a></em></p></li><li><p><em><a href="https://daringfireball.net/thetalkshow/" rel="noopener noreferrer nofollow">The Talk Show</a></em></p></li></ul><h3 id="non-tech">Non-Tech</h3> <ul><li><p><em><a href="https://theincomparable.com/" rel="noopener noreferrer nofollow">The Incomparable</a></em>&nbsp;is a popular culture network. I love their TV series recaps, the main show which has panels about a lot of topics and&nbsp;<em><a href="https://www.theincomparable.com/tpk/" rel="noopener noreferrer nofollow">Total Party Kill</a></em>, the Dungeons and Dragons podcast (start with the&nbsp;<em><a href="https://www.theincomparable.com/tpk/dragonforge/" rel="noopener noreferrer nofollow">Dragonforge &amp; Associates</a></em><a href="https://www.theincomparable.com/tpk/dragonforge/" rel="noopener noreferrer nofollow">&nbsp;campaign</a>&nbsp;or the ongoing&nbsp;<em><a href="https://www.theincomparable.com/tpk/deathhouse/" rel="noopener noreferrer nofollow">Dog and Pony Show </a></em><a href="https://www.theincomparable.com/tpk/deathhouse/" rel="noopener noreferrer nofollow">series</a>). They also do an incredibly funny&nbsp;<em><a href="https://www.theincomparable.com/gameshow/" rel="noopener noreferrer nofollow">Gameshow</a></em>. If you consume popular culture, you’ll find something that you like there.</p></li><li><p>Several <strong>Doctor Who</strong> podcasts, including&nbsp;<a href="http://veritypodcast.com/" rel="noopener noreferrer nofollow">Verity</a>,&nbsp;<a href="https://radiofreeskaro.com/" rel="noopener noreferrer nofollow">Radio Free Skaro</a>,&nbsp;<a href="http://www.realitybombpodcast.com/" rel="noopener noreferrer nofollow">Reality Bomb</a>&nbsp;and&nbsp;<a href="https://fiveyearsrapid.libsyn.com/" rel="noopener noreferrer nofollow">Five Years Rapid</a>.</p></li><li><p><em><a href="https://writingandbreathing.com/" rel="noopener noreferrer nofollow">Writing &amp; Breathing</a></em>&nbsp;is an interview show where writer Antony Johnston interviews other writers about their processes. It’s been a great inspiration to write more, and while that has not resulted in more blog posts, the scripts for my YouTube videos have been directly inspired by it.</p></li></ul><h2 id="tv-streaming">TV &amp; Streaming</h2> <p>All TV series have captions and many also have Audio Descriptions. The accessibility options on&nbsp;<em>Apple+</em>&nbsp;are especially plentiful, captions &amp; subtitles in many languages and audio description in about 10 languages.</p><ul><li><p><em><a href="https://www.doctorwho.tv/" rel="noopener noreferrer nofollow">Doctor Who</a></em>&nbsp;helped me in two ways: First, the new series that ran from January to March was really good. Second, the announcement of a “festive special” at the end of the year gave me something to look forward to. In addition, the animated miniseries&nbsp;<em><a href="https://www.youtube.com/playlist?list=PLKEzuOOEQvYOYZ35xuuR-bqIWC7j1Efjj" rel="noopener noreferrer nofollow">DALEKS!</a></em><a href="https://www.youtube.com/playlist?list=PLKEzuOOEQvYOYZ35xuuR-bqIWC7j1Efjj" rel="noopener noreferrer nofollow">&nbsp;was shown on Youtube</a>.</p></li><li><p><em><a href="https://www.disneyplus.com/series/the-mandalorian/3jLIGMDYINqD" rel="noopener noreferrer nofollow">The Mandalorian</a></em>&nbsp;on&nbsp;<em>Disney+</em>&nbsp;had two very good seasons released this year (because Europe got&nbsp;<em>Disney+</em>&nbsp;a few months late it was all released last year for us). In addition,&nbsp;<em><a href="https://www.disneyplus.com/series/disney-gallery-star-wars-the-mandalorian/2JXj6pZBPAyE" rel="noopener noreferrer nofollow">Disney Gallery</a></em>&nbsp;is the behind the scenes series that covers the fascinating technology used filming it.</p><p>Dan Moren published a fantastic recap podcast on&nbsp;<em>The Incomparable</em>called&nbsp;<em><a href="https://www.theincomparable.com/teevee/mandalorian/" rel="noopener noreferrer nofollow">A Complicated Profession</a></em>.</p><p><em>The Mandalorian</em>&nbsp;also let me to start watching the animated&nbsp;<em><a href="https://www.disneyplus.com/series/star-wars-the-clone-wars/1wYXzjabXGVZ" rel="noopener noreferrer nofollow">Clone Wars</a></em>&nbsp;series.</p></li><li><p><em><a href="https://tv.apple.com/de/show/ted-lasso/umc.cmc.vtoh0mn0xn7t3c643xqonfzy" rel="noopener noreferrer nofollow">Ted Lasso</a></em>&nbsp;on&nbsp;<em>Apple TV+</em>&nbsp;is a comedy and starts with the classical fish out of water tropes, but quickly allows peeks behind the curtains and then turns all the preconceived notions on their heads. It’s just 10 short 30 minute episodes, and I can’t wait for season two!</p></li><li><p><em><a href="https://tv.apple.com/de/show/for-all-mankind/umc.cmc.6wsi780sz5tdbqcf11k76mkp7" rel="noopener noreferrer nofollow">For All Mankind</a></em>&nbsp;is an alternative history that explores what would have happened if the USSR had won the race to the moon. Also&nbsp;<em>Apple TV+</em>.</p></li><li><p><em><a href="https://tv.apple.com/de/show/mythic-quest-ravens-banquet/umc.cmc.1nfdfd5zlk05fo1bwwetzldy3" rel="noopener noreferrer nofollow">Mythic Quest: Raven’s Banquet</a></em>&nbsp;is a comedy about the work in a game development studio and I enjoyed the humor in it quite a lot. They also shot a socially distanced special which is super heartwarming.</p></li><li><p><em><a href="https://en.wikipedia.org/wiki/Killing_Eve" rel="noopener noreferrer nofollow">Killing Eve</a></em>&nbsp;is a fascinating spy thriller series about a serial killer and an intelligence officer. When the two women’s paths cross, they discover what they have in common. It’s quite violent at times, but an incredible interesting story. (Unfortunately, the version of Killing Eve that I watched through the&nbsp;<em>Apple TV</em>&nbsp;<em>Starz</em>&nbsp;Channel had terrible captions.)</p></li></ul> ]]>
    </description>
    </item>
    <item>
    <title>Welcome 2021</title>
    <link>https://yatil.net/blog/welcome-2021</link>
    <guid>https://yatil.net/blog/welcome-2021</guid>
    <pubDate>Sat, 02 Jan 2021 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>I’m so glad we’re in 2021, and I hope it gets to be better than 2020. For me personally, 2020 was a successful year, especially considering the circumstances we all had to work with.</p><p>The year took off quite ordinary. My workshop at&nbsp;<a href="https://accessibility-club.org/" rel="noopener noreferrer nofollow">a11y.club</a>&nbsp;in Berlin the previous November went well, and I looked into how to do more of these seminars with people. Suffice to say that planning for in-person events was not the most useful thing at the time. Oh, how little did we anticipate.</p><p>In February, the signs of a worldwide crisis deepened, and while it was clear that these would be extraordinary times it felt save enough to do the yearly trip to CSUN in California in early March. By then many companies had withdrawn their travel but apart from the Conference itself, which was happening on a much smaller scale, the risk seemed low as long as we washed our hands and kept our distance.[^ I very much understand now that the risk level was probably higher than we could assess at the time. It is easy to second guess the decision in hindsight.]</p><p>That’s exactly what we did. And as the pre-conference meetings fell flat, I took a day off, and we took the opportunity to visit Disneyland. The park was relatively empty (during a weekday) and we had a good time stying in our bubble as much as possible and hand-sanitizing a lot.</p><p>Once CSUN was over, we traveled to the Anza Borrego Desert where we had rented a house for the week and wanted to continue to San Diego afterwards. During our hiking trip, California mostly locked down. As getting outdoor and away from people are one of the main reasons doing these trips to a mostly remote place, it did not impact us too much.</p><p>As it became clear that walking leisurely along the Beach in San Diego would not happen, we extended our stay in the desert. Ultimately, our flight back was cancelled, and we got rerouted through Boston and to Amsterdam, taking the train for the last leg of the Journey. I have never seen airports so empty. In Boston, our flight was the only non-cancelled flight on the schedule boards.</p><p>It was super lucky that we could have a trip like that. The timing worked out and we stayed healthy. That said, since arriving at home and with the growing consensus about masks and how the virus spreads, we isolated completely for the rest of the year, only leaving the house for groceries every 10 days or so.</p><p>March was also the last time I worked with W3C. Together with Knowbility I decided that it would be good to focus on Knowbility projects.</p><p>The next couple of months were a real rollercoaster, especially&nbsp;<a href="https://yatil.net/posts/2020/04/18/teleject/" rel="noopener noreferrer nofollow">losing Christopher</a>&nbsp;was a kick in the gut I have not really recovered from. I miss him dearly.</p><p>In May, Knowbility shifted their&nbsp;<a href="https://knowbility.org/programs/accessu/" rel="noopener noreferrer nofollow">AccessU conference</a>&nbsp;online, and it was a resounding success. At the same time, I was asked to lead the small-but-mighty tech team.</p><p>Saying that I was unsure if I could do it would be an understatement. But I was more than happy to try it and the response from the team and the work we did since then has assured me that I can guide them even as I am figuring all of it out myself.</p><p>After May, I did not do a lot of public speaking. With the nonexistent travel cost, I hope that people, that don’t have the resources, get more opportunities. I did a half-day online workshop for Knowbility about&nbsp;<a href="https://talks.yatil.net/XOIz1x/inclusive-design-the-big-picture" rel="noopener noreferrer nofollow">Inclusive Design in September</a>.</p><p>In the fall, I started a — in my opinion — successful venture into&nbsp;<a href="https://youtube.com/yatil" rel="noopener noreferrer nofollow">YouTube video production</a>. I’m delighted with the six videos I have created, with a combined 3.800 or so views, and with the response that I got so far from the community. The&nbsp;<a href="https://yatil.net/videos/" rel="noopener noreferrer nofollow">videos are embedded on this website</a>&nbsp;(in a privacy-respecting way). They have all closed captions and transcripts. It’s nice to have a project that is creative and helps me to reach a wider audience than through conference talks. I hope to further improve the videos and publish more of them.</p><p>I also signed up for&nbsp;<a href="https://micro.blog/" rel="noopener noreferrer nofollow">micro.blog</a>&nbsp;in an attempt to spend less time on Twitter. You can find my microblog here:&nbsp;<a href="https://micro.yatil.net/" rel="noopener noreferrer nofollow">micro.yatil.net</a>.</p><p>I have collected my&nbsp;<a href="https://yatil.net/posts/2021/01/02/media-that-helped-me-through-2020/" rel="noopener noreferrer nofollow">TV/streaming and podcast highlights in a separate post</a>. Those were wonderful distractions.</p><p>For 2021, I hope that everyone stays virus-free and that the vaccinations are successful and quick. I’ll hunker down as long as it takes — and you should do the same.</p> ]]>
    </description>
    </item>
    <item>
    <title>Updating Node.js on a Raspberry Pi Zero</title>
    <link>https://yatil.net/blog/node-on-pi</link>
    <guid>https://yatil.net/blog/node-on-pi</guid>
    <pubDate>Sat, 07 Nov 2020 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>As the&nbsp;<em>Raspberry Pi Zero</em>&nbsp;is based on an older processor technology, the Node.js core team does not provide compiled binaries of newer versions. Here’s a quick guide on how to update anyway.</p><p>I use my&nbsp;<em>Raspberry Pi Zero</em>&nbsp;mainly for&nbsp;<em>Homebridge</em>, a way to use non-<em>Homekit</em>&nbsp;devices from my iPhone, iPad and Mac.&nbsp;<em>Homebridge</em>&nbsp;is based on&nbsp;<em>Node.js</em>&nbsp;but as the&nbsp;<em>Pi</em>&nbsp;is based on&nbsp;<em>ARMv6</em>, there is no official version of&nbsp;<em>Node</em>&nbsp;since version 10.x. Newer plugins demand later versions of&nbsp;<em>Node</em>, so I had to find a way to install it.</p><p>Fortunately it is pretty straight forward to install it from an unofficial repository. I followed the&nbsp;<a href="https://www.thepolyglotdeveloper.com/2018/03/install-nodejs-raspberry-pi-zero-w-nodesource/" rel="noopener noreferrer nofollow">instructions on this web page</a>, but I replaced the source of the compiled build.</p><ol><li><p>Connect to your&nbsp;<em>Raspberry Pi</em>&nbsp;using SSH.</p></li><li><p>Find the latest build you want to install at&nbsp;<a href="https://unofficial-builds.nodejs.org/download/release/" rel="noopener noreferrer nofollow">unofficial-builds.nodejs.org/download/release/</a></p><p>When I tried it, the current version was&nbsp;<code>v15.1.0</code>. In the current directory find the version for&nbsp;<em>ARMv6</em>, which is the file that ends with&nbsp;<code>-armv6l.tar.gz</code>.</p><p>Make sure to use the correct version number in the commands below.</p></li><li><p>On the command line on the&nbsp;<em>Raspberry Pi</em>&nbsp;download that file using the following command:</p><p><code>curl -o node-v15.1.0-linux-armv6l.tar.gz https://nodejs.org/dist/v15.1.0/node-v15.1.0-linux-armv6.tar.gz</code></p></li><li><p>Extract the files by using the&nbsp;<code>tar</code>&nbsp;command:</p><p><code>tar -xzf node-v15.1.0-linux-armv6l.tar.gz</code></p></li><li><p>Move the files over from the extracted directory:</p><p><code>sudo cp -r node-v15.1.0-linux-armv6l/* /usr/local/</code></p></li><li><p>In case you are greeted with the following error message:</p><p><code>cp: cannot create regular file '/usr/local/bin/node': Text file bus</code></p><p>You need to remove the node file first:</p><p><code>sudo rm /usr/local/bin/node</code></p></li><li><p>Restart the&nbsp;<em>Pi</em>&nbsp;or&nbsp;<em>Homebridge</em>&nbsp;to make the changes stick.</p></li></ol><p>In the end, the whole process was not too bad and felt actually pretty straight forward once I found the unofficial builds.</p><p>They are unofficial and unsupported for a reason, so stuff might break in the future, but for now, everything looks good so far.</p> ]]>
    </description>
    </item>
    <item>
    <title>Inclusive Design Seminar</title>
    <link>https://yatil.net/blog/inclusive-design-seminar</link>
    <guid>https://yatil.net/blog/inclusive-design-seminar</guid>
    <pubDate>Sat, 22 Aug 2020 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>On September 3, I will hold an online seminar about Inclusive Design, hosted by Knowbility.</p><p>The subtitle is “The Big Picture” as it continues my quest to connect all the dots between accessibility, design, inclusion, and society.</p><p><a href="https://knowbility.org/services/online-training/inclusive-design/" rel="noopener noreferrer nofollow">Find a full description of the seminar on Knowbility’s website.</a></p><p>Initially, I wanted to do a re-run of my&nbsp;<em><a href="https://talks.yatil.net/niNGKD/connecting-the-accessibility-dots-full-day-workshop" rel="noopener noreferrer nofollow">Connecting the Accessibility Dots </a></em><a href="https://talks.yatil.net/niNGKD/connecting-the-accessibility-dots-full-day-workshop" rel="noopener noreferrer nofollow">workshop</a>&nbsp;that I did for&nbsp;<em><a href="https://accessibility-club.org/event/accessibility-club-summit-2019" rel="noopener noreferrer nofollow">Accessibility Club Summit</a></em>&nbsp;in Berlin in-person in fall of 2019. But it did not sit right for me. Back then we have not been in a global pandemic, and it was before the recent&nbsp;<em>Black Lives Matter </em>protests.</p><p>Not talking about how these circumstances must change our view of the world and our approach to how we create things would be out of touch. Hence, I want to take a more holistic look onto the web industry and technology as a whole for this seminar.</p><p>Inclusive Design embraces diverse viewpoints. They are used to creating products, services, and relationships that are better for all people. It is a human-centric design philosophy.</p><p>To promote,&nbsp;<em>Knowbility</em>&nbsp;interviewed me about my motivation:</p><p>I was raised with a strong sense of equity for everyone, and I saw how society can benefit some groups and let others down. I think my first eureka moment growing up was when a friend of mine, who was using a wheelchair, had to go to a “special” school here in Germany because other schools were inaccessible. He had exactly one option to participate in the education system, while I always had multiple options. […]</p><p>[W]hat keeps me going[?] My love for the internet as a medium, really. It is something that we as a society are so accustomed now, everyone uses it. And I just want to make sure that everyone can still use it forever, regardless of disability or age. And deep down, I, selfishly, don’t want to lose access. So, I work to keep it.</p><p><a href="https://knowbility.org/blog/2020/inclusive-design-interview/" rel="noopener noreferrer nofollow">Read the full interview on Knowbility’s website.</a></p><p>If you find this interesting, please&nbsp;<a href="https://www.eventbrite.com/e/inclusive-design-the-big-picture-powered-by-knowbility-tickets-116133150379?aff=yatildotnet" rel="noopener noreferrer nofollow">sign up for my seminar</a>. It will be fun, honest, conversational and, hopefully, insightful. A standard ticket is $149, with educators and students paying only $99.&nbsp;<a href="https://knowbility.org/services/online-training/inclusive-design/#scholarships" rel="noopener noreferrer nofollow">Scholarships are available</a>&nbsp;if you cannot afford it.</p><p><strong>All proceeds help Knowbility’s mission for equal access to technology for people with disabilities.</strong></p><p>Here’s what attendees of my past workshops had to say:</p> <embetty-tweet status="1196161740582588416"></embetty-tweet> <embetty-tweet status="1196030886417960960"></embetty-tweet> <embetty-tweet status="1196475216341413889"></embetty-tweet> ]]>
    </description>
    </item>
    <item>
    <title>Better Online Presentations</title>
    <link>https://yatil.net/blog/better-online-presentations</link>
    <guid>https://yatil.net/blog/better-online-presentations</guid>
    <pubDate>Wed, 13 May 2020 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Here are some tips I have gathered from doing online Zoom talks since 2015. I hope they help with your talk.</p><h2 id="sound">Sound</h2> <p>Zoom compresses the sound in meetings to send it to attendees more, so investing into sound gear should not be the highest priority. That said, clear, intelligible sound is much more important than everything else. If you’re hard to understand or if there’s a constant noise from your line, attendees might not be able to follow you.</p><p><strong>Always use headphones</strong>. I have seen guidance that headphones look amateurish, but that is not true from my point of view. You want to understand audience questions or your moderator. That’s much more reliable when they are in or on your ears.</p><p><strong>Microphones</strong>&nbsp;play a secondary role. You can use many laptops’ built-in microphones for your presentation. (But try it out beforehand!) It is very important to bring the microphone as close to your mouth as possible. You can do that with a&nbsp;<strong>headset</strong>&nbsp;or a&nbsp;<strong>table/podcasting microphone</strong>. But the wired headset included with your mobile should also work well.</p><p>I use a wired connection to my Mac to do my talks, but Bluetooth headsets or AirPods might work for your use case, too. Keep in mind that there is a brief delay with wireless options on top of the delay from the internet connection.</p><p>If you have a good microphone, Zoom gives you the option to send out non-processed audio in the settings.</p><h2 id="video">Video</h2> <p>On videos I strongly prefer my&nbsp;<strong>real environment</strong>&nbsp;from those virtual backgrounds that are so en vogue these days. That said, I have my office carved out to support the “talk to the computer” use case. You might not be so lucky. If there is no suitable place to hold the presentation, virtual backgrounds are an excellent alternative. (And that also includes socio-economic reasons for not showing one’s living conditions.)</p><p>When using&nbsp;<strong>virtual backgrounds</strong>, I have seen fewer artifacts with photos that contain a lot of details. Backgrounds with solid colors have been more problematic. A picture of a forest might be better than your corporate colors displayed behind you. Make sure to not have “virtual background dismemberment” happen during your talk. If you wave around your hands while talking, your arms might look cut off with a virtual background. The edges of the top of a high-back chair can glitch in and out the background even if you only move a bit. Finally, turning your head can lead to your nose looking cut off.</p><p><strong>Lighting</strong>&nbsp;is important, especially as laptops have mediocre cameras. (iPads and mobile phones are much better in that regard, but usually not suitable for many to do presentations on.) Make sure you have a&nbsp;<strong>bright light source</strong>&nbsp;in front of you. I have a daylight ceiling lamp that makes sure I have good lighting. Have as little light from behind you and from the sides. Light from behind you makes the camera overcorrect, so your face will be in the dark. Light from the side can lead to one half of your face almost dark while the other half is brightly lit. (And you don’t want to look like Two-Face, right?)</p><p>Try to look at the camera as much as possible. If your computer displays a (green) light where the camera is, try to look at it as often as possible to have “eye-contact” with your audience. It helps if your slides/notes are underneath the camera. Try to avoid having notes above the camera.[^ I think the use of teleprompters have trained us that someone looking down under the camera is more acceptable than someone looking over it. But then TV teleprompters are much further away from the speaker, so it's less noticeable that they are not looking into the camera.]</p><p>Position your head in the center of the frame, if possible with your eyes about a third from the top.</p><h2 id="internet-connection">Internet Connection</h2> <p>Issues can arise from your internet connection not being up to the task. If you’re doing a talk during the day, your neighbors will also use the internet heavily, putting stress on the connection. There’s little you can do. I have used tethering to my iPhone when I had a complete landline blackout[^ …and I also presented from my iPhone once, but that is a story for another time. I’ll just say, having a PDF version of your slides on your phone might save your talk.].</p><p><strong>Switch all heavy data users off.</strong>&nbsp;That includes Dropbox, Box, iCloud and those torrents that might run in the background. On Mac and Windows, you can use the app&nbsp;<a href="https://www.tripmode.ch/" rel="noopener noreferrer nofollow">TripMode</a>&nbsp;to only allow your presentation software and Zoom to connect to the internet (And Slack, if that is used to communicate).</p><p>If you have the possibility to connect to wired networking (“ethernet”), do so to cut out a potential issue. Yet, I do not have ethernet here and had no particular problems with wifi.</p><h2 id="computer-performance">Computer Performance</h2> <p>If you want to be sure that everything is going without a hitch, I recommend&nbsp;<strong>closing all apps you don’t need</strong>&nbsp;for the presentation. You might even want to do a fresh&nbsp;<strong>reboot</strong>&nbsp;to make extra sure it all works.</p><h2 id="presentation-display-setup">Presentation/Display Setup</h2> <p>While I’m certain your setup different, here’s what I do: I like to have one display dedicated to my slide deck that I share with to Zoom. That way if I need a browser window to show something, I can drag the window over there. You can share only a particular window in Zoom, which is useful if you don’t have an extra display and don’t want the attendees to see other information.</p><p>I recommend using a&nbsp;<strong>presentation remote (“clicker”)</strong>&nbsp;like in an offline presentation, even if you only hit the right arrow key to advance the slides. It prevents you from pressing a different button by accident or losing your place on the keyboard.</p><p>When you need to share the sound from your computer, do not forget to check the&nbsp;<strong>“Share computer sound”</strong>&nbsp;checkbox in Zoom. If you play videos, the “<strong>Optimize Screen Share for Video Clip</strong>” option should give you a better refresh rate. It should make videos less choppy for the audience. Both options should appear on the bottom of the “Share Screen” menu that shows up when you click on the share screen button.</p><h2 id="notifications">Notifications</h2> <p>Make sure your computer, phone, watch are in&nbsp;<strong>Do Not Disturb mode</strong>&nbsp;during the presentation.</p> ]]>
    </description>
    </item>
    <item>
    <title>Christopher Schmitt</title>
    <link>https://yatil.net/blog/christopher-schmitt</link>
    <guid>https://yatil.net/blog/christopher-schmitt</guid>
    <pubDate>Sat, 18 Apr 2020 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>My colleague Christopher Schmitt passed away. He was one of the most extraordinary people I have been allowed to meet.</p><p>I met Christopher in person for the first time when I spoke at&nbsp;<a href="https://twitter.com/teleject/status/598131873693306880" rel="noopener noreferrer nofollow">AccessU Online in 2015</a>. He was organizing the conference and his warm welcome made me immediately comfortable.</p><p>There I was, embraced by Christopher’s smile and his generosity to invite me to his event. Events, that I admired from afar and I only had a tiny bit of hope to be ever involved in. It was a busy day, so we did not get to speak a lot but his care and his passion really came through.</p><p>I was stoked when I learned that he was joining the team at Knowbility just a few years later. While his expertise and his knowledge of all things good HTML/CSS/JS were much appreciated and he helped with organizing our online events, his attitude and kindness had an even greater impact.</p><p>I cannot recall a meeting where he was not smiling, where he didn’t have a funny and/or insightful comment. He rarely took compliments for himself without highlighting the accomplishments of others in the team. He was just such a good person.</p><p>Christopher has touched so many of us with his kindness and positivity. The world needs more Christophers, not fewer. But here we are.</p><p>For an impression of how important Christopher was for all of us in the web community, read through&nbsp;<a href="https://twitter.com/ari4nne/status/1248703371177070592" rel="noopener noreferrer nofollow">the condolences on Twitter</a>.&nbsp;<a href="https://daverupert.com/2020/04/my-tall-friend-christopher/" rel="noopener noreferrer nofollow">Dave Rupert</a>and&nbsp;<a href="https://css-tricks.com/thank-you-christopher-schmitt/" rel="noopener noreferrer nofollow">Chris Coyer</a>&nbsp;have also written about Christopher.</p><p>My thoughts are with his partner Ari and their families. 💔</p> ]]>
    </description>
    </item>
    <item>
    <title>Hello 11ty!</title>
    <link>https://yatil.net/blog/hello-11ty</link>
    <guid>https://yatil.net/blog/hello-11ty</guid>
    <pubDate>Sun, 23 Feb 2020 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>As a web developer, it is incredibly hard to just be happy with one’s website. You want to improve, and you want to make it better, always.</p><p>When I worked on this site the last time — apart from content updates, of course — I moved from&nbsp;<a href="https://jekyllrb.com/" rel="noopener noreferrer nofollow">Jekyll</a>&nbsp;to&nbsp;<a href="https://getkirby.com/" rel="noopener noreferrer nofollow">Kirby</a>. Now I have decided to move on from Kirby to&nbsp;<a href="https://www.11ty.dev/" rel="noopener noreferrer nofollow">Eleventy</a>, a JavaScript-based static site generator.</p><p>There's no particular reason behind this change. I ran into some issues with the two languages on this site, and broke my Kirby installation briefly. And while it was quick to roll back, the overhead of a whole PHP application with Vue-powered backend felt wrong for a site that essentially publishes simple formatted hypertext.</p><p>So here we are. A simple theme, based on the&nbsp;<a href="https://github.com/11ty/eleventy-base-blog" rel="noopener noreferrer nofollow">eleventy-base-blog</a>&nbsp;and a new coat of CSS paint is all I needed to release it. And for the first time I dabbled in using a variable font: Working with&nbsp;<a href="https://www.recursive.design/" rel="noopener noreferrer nofollow">Recursive</a>&nbsp;was a lot of fun, and it turned out to be very versatile.</p><p>I plan to write about the extremely simple CSS file and how I used CSS Custom Properties to make my life easier.</p><p>Expect that some posts are broken, converting between different Content Management Systems is always a challenge. If you find something, let me know.</p><p><em>Update October 2021:</em> I changed back to Kirby.</p> ]]>
    </description>
    </item>
    <item>
    <title>ARIA Serious?! @ technica11y</title>
    <link>https://yatil.net/blog/aria-serious-at-technica11y</link>
    <guid>https://yatil.net/blog/aria-serious-at-technica11y</guid>
    <pubDate>Sun, 29 Sep 2019 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>On Wednesday, October 2, I will do an online talk for&nbsp;<a href="https://www.technica11y.org/" rel="noopener noreferrer nofollow">technica11y</a>. The talk will cover common ARIA pitfalls and how to avoid them. It is free, thanks to the support by&nbsp;<a href="https://tenon.io/" rel="noopener noreferrer nofollow">tenon.io</a>.</p><p>It is an updated talk from the one I gave several times before but it is always nice to document new and inventive atrocities.</p><p><strong>When:</strong>&nbsp;<a href="https://time.is/compare/1100_2_Oct_2019_in_ET" rel="noopener noreferrer nofollow">October 2, 2019, 11am ET</a><br><strong>Where:</strong>&nbsp;Online,&nbsp;<a href="https://zoom.us/webinar/register/WN_nphQlyQIRAue06stqz4oTQ" rel="noopener noreferrer nofollow">Register here</a></p> ]]>
    </description>
    </item>
    <item>
    <title>Connecting the Accessibility Dots</title>
    <link>https://yatil.net/blog/connecting-the-accessibility-dots</link>
    <guid>https://yatil.net/blog/connecting-the-accessibility-dots</guid>
    <pubDate>Sun, 29 Sep 2019 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>On November 17, 2019, I’ll hold a workshop in Berlin as a part of&nbsp;<a href="https://accessibility-club.org/event/accessibility-club-summit-2019" rel="noopener noreferrer nofollow">Accessibility Club Summit 2019</a>. Tickets are just €50.</p><p>In this new workshop I want to help people wo have an understanding of specific parts of accessibility to get a better understanding on where this fits in the general framework of designing, writing, and developing accessible websites. The learning outcome should be a holistic approach to accessibility that leads participants to anticipate accessibility-related issues earlier.</p><p>We look at the requirements for accessibility, the needs of people with disabilities, and how assistive technologies work. We’ll answer the important questions about accessibility: Why is it important? What are the important concepts? How do people with disabilities actually use the web? How can we create accessible websites without consulting WCAG at every step? When, and how, can we make sure that we don’t step into the same traps all the time again and again?</p><p>In the second half of the workshop I’ll then answer the specific questions of the audience (provided in advance), applying the approaches learned in the morning to practical use.</p><p><strong>When:</strong>&nbsp;November 17, 2019 (with Accessibility Club Summit Barcamp on Nov 16 and after beyondTellerrand, Nov 14 &amp; 15)<br><strong>Where:</strong>&nbsp;To be determined, Berlin</p><p><a href="https://accessibility-club.org/event/accessibility-club-summit-2019#workshop-tickets" rel="noopener noreferrer nofollow">Buy tickets for the workshop at accessibility-club.org!</a></p> ]]>
    </description>
    </item>
    <item>
    <title>“Open in Overcast” Bookmarklet</title>
    <link>https://yatil.net/blog/open-in-overcast-bookmarklet</link>
    <guid>https://yatil.net/blog/open-in-overcast-bookmarklet</guid>
    <pubDate>Tue, 27 Aug 2019 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>I use <a href="https://overcast.fm" rel="noopener noreferrer nofollow">Overcast</a> for my daily podcasting needs. Sometimes I stumble upon new podcasts and I quickly want to add an episode to Overcast for sampling the podcast.</p><p>Unfortunately there often is no link to the Overcast URL directly on the page despite Overcast having decent web integration[^ Which is one reason I switched back to Overcast twice after extended stints of trying out Castro where I prefer how podcast playlists are managed.]. Adding a podcast to Overcast in this case means copying the title of the podcast, open the web interface or the app, searching for the podcast, searching for the episode to sample. and adding this episode.</p><p>It’s not the end of the world, but it introduces some friction that seemed unnecessary to me.</p><p>Overcast accesses the <s>iTunes</s> Apple Podcast Directory and its podcast URLs take the same ID as is present in that directory. Due to the nature of Apple Podcasts, every podcast has a link to their entry on the page.</p><p><strong>JavaScript to the rescue!</strong></p><p>I have created the following JavaScript[^ Not really rocket science.] which searches for podcast links (two variations). If one is found, it extracts the ID using a regular expression, adds it to the Overcast URL and opens the URL in the current window/tab.</p><pre><code class="language-js">const regex = /podcast\/id([0-9]*)/i; var itunes = document.querySelector(&#039;a[href^=&quot;https://itunes.apple.com/&quot;][href*=&quot;/podcast/&quot;],a[href^=&quot;https://podcasts.apple.com/&quot;]&#039;); if (itunes) { var itunesid = regex.exec(itunes.getAttribute(&#039;href&#039;)); var overcasturl = &#039;https://overcast.fm/itunes&#039; + itunesid[1]; window.location.href = overcasturl; } else { alert(&#039;No Apple Podcasts link found. 😭&#039;); }</code></pre> <p>I then used&nbsp;<a href="https://mrcoles.com/" rel="noopener noreferrer nofollow">Peter Coles</a>’&nbsp;<a href="https://mrcoles.com/bookmarklet/" rel="noopener noreferrer nofollow">Bookmarklet Creator</a>&nbsp;to generate a bookmarklet.</p><p>To install the bookmarklet, drag the following link to your bookmarks/favorites bar:</p><p><strong><a href="javascript:(function()%7Bconst%20regex%20%3D%20%2Fpodcast%5C%2Fid(%5B0-9%5D*)%2Fi%3Bvar%20itunes%20%3D%20document.querySelector('a%5Bhref%5E%3D%22https%3A%2F%2Fitunes.apple.com%2F%22%5D%5Bhref*%3D%22%2Fpodcast%2F%22%5D%2Ca%5Bhref%5E%3D%22https%3A%2F%2Fpodcasts.apple.com%2F%22%5D')%3Bif%20(itunes)%20%7Bvar%20itunesid%20%3D%20regex.exec(itunes.getAttribute('href'))%3Bvar%20overcasturl%20%3D%20'https%3A%2F%2Fovercast.fm%2Fitunes'%20%2B%20itunesid%5B1%5D%3Bwindow.location.href%20%3D%20overcasturl%3B%7D%20else%20%7Balert('No%20Apple%20Podcasts%20link%20found.%20😭')%3B%7D%7D)()" rel="noopener noreferrer nofollow">Open in Overcast</a></strong></p><p>While searching for the episode and to add is still needed, I hope to try out to more diverse podcasts this way.</p> ]]>
    </description>
    </item>
    <item>
    <title>Accessible CSS Generated Content</title>
    <link>https://yatil.net/blog/accessible-css-generated-content</link>
    <guid>https://yatil.net/blog/accessible-css-generated-content</guid>
    <pubDate>Sat, 13 Jul 2019 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/content" rel="noopener noreferrer nofollow">CSS generated content</a> can have unintended side-consequences. As <a href="https://stuffandnonsense.co.uk/blog/css-generated-content-and-google-chrome-translate-scores-an-own-goal" rel="noopener noreferrer nofollow">Andy Clarke discovered recently</a>, <code>data-</code> attributes he used as a way to transfer content into CSS for visual purposes are not translated using built-in browser functionality.</p><p>His[^ Note that this is using Andy’s use case as an example. He immediately added a note to his article when I made him aware of the accessibility implications. I wanted to write this up as a lesson in how the web changes and how different aspects of the web can work together. After all the web is constantly evolving and we’re all learning all the time.] goal was to provide text effects by layering different styles of the same font on top of each other. Designers use this technique to extend a base font style with other flourishes of the same font. The final code he came up with is this HTML, using the <code>notranslate</code> class to prevent translation of the heading[^ Usually I would oppose to remove the ability for users to translate content to their language. In some circumstances, like proper names, this can be OK.]:</p><pre><code class="language-html">&lt;h1 class=&quot;type-family-jakob notranslate&quot; data-heading=&quot;France-Norv&egrave;ge&quot;&gt; France-Norv&egrave;ge &lt;/h1&gt;</code></pre> <p>The CSS looks like this:</p><pre><code class="language-css">[class*=&quot;type-family&quot;] { position: relative; } [class*=&quot;type-family&quot;]:before, [class*=&quot;type-family&quot;]:after { content: attr(data-heading); position: absolute; z-index: 1; overflow: hidden; left: 0; top: 0; font-size: inherit; font-weight: normal; }</code></pre> <p>Until a couple of years ago, the browsers did not treat generated content as “real” content. They did not expose it to assistive technologies like screen readers. That created an issue, for example when web developers used CSS to specify the file format of a document:</p><pre><code class="language-html">&lt;a href=&quot;link/to/an/interesting.pdf&quot;&gt; Get the Report &lt;/a&gt;</code></pre> <pre><code class="language-css">a[href$=&quot;pdf&quot;]:after { content: &quot; (PDF)&quot;; }</code></pre> <p>For visual users, the link text “Get the Report (PDF)” would have been clear. But “(PDF)” was not conveyed to screen readers and other assistive technologies and thus not their users. Most developers don’t intend that behavior, so <em>browsers started to treat generated content as actual content</em>.</p><p>Back to Andy’s example. The “accessible name” (the label that assistive technology uses) of his heading rank 1 would include the <code>:before</code> and the <code>:after</code> version of the contentand the content of the <code>&lt;h1&gt;</code> itself. The browser “sees”:</p><pre><code class="language-html">&lt;h1 class=&quot;type-family-jakob notranslate&quot;&gt; France-Norv&egrave;ge France-Norv&egrave;ge France-Norv&egrave;ge &lt;/h1&gt;</code></pre> <p>There is an ARIA attribute that we can use to <em>overwrite</em>[^ A note, because I see that in accessibility assessments all the time: If you use <code>aria-label</code>, the content of your element is <strong>not</strong> revealed to assistive technologies. Writing <code>&lt;a href="…" aria-label="opens in a new window"&gt;Visit our partner site&lt;/a&gt;</code> will result in a link that only says “opens in a new window”. Just don’t use it that way. OK?] the content of the <code>&lt;h1&gt;</code>: <code>aria-label</code>. So we could augment Andy’s code like this to avoid tripling the heading:</p><pre><code class="language-html">&lt;h1 class=&quot;type-family-jakob notranslate&quot; data-heading=&quot;France-Norv&egrave;ge&quot; aria-label=&quot;France-Norv&egrave;ge&quot;&gt; France-Norv&egrave;ge &lt;/h1&gt;</code></pre> <p>This would work, but having two attributes repeating the content of the heading feels wrong. As <code>attr()</code> can use any attribute, not only <code>data-</code>attributes[^ Indeed, <code>attr()</code> was invented long before <code>data-</code> attributes were a thing.], we can use it with the <code>aria-label</code> and remove <code>data-heading</code>:</p><pre><code class="language-html">&lt;h1 class=&quot;type-family-jakob notranslate&quot; aria-label=&quot;France-Norv&egrave;ge&quot;&gt; France-Norv&egrave;ge &lt;/h1&gt;</code></pre> <pre><code class="language-css">[class*=&quot;type-family&quot;]:before, [class*=&quot;type-family&quot;]:after { content: attr(aria-label); &hellip; }</code></pre> <p>This is where this story could end. And indeed this is where this story would have ended a couple of weeks ago. Yet, thanks to accessibility advocates, <code>aria-label</code> is now actually one of the attributes that <em>is</em>translated when using Google Translate through Google Chrome – but not in other browsers. If that is enough to remove the <code>notranslate</code> class from the heading depends on your circumstances. As the short clip of this <a href="https://codepen.io/yatil/pen/RzQXqv" rel="noopener noreferrer nofollow">example codepen</a> shows, the <code>aria-label</code> attribute translates nicely:</p><figure> <figcaption class="video-caption">ARIA label translates in Google Chrome [no sound]</figcaption> <div class="video" style="--w:16;--h:9"> <embetty-video video-id="4BVmeh0pNnQ" type="youtube"></embetty-video> </div> </figure> ]]>
    </description>
    </item>
    <item>
    <title>Much Ado About No Lists</title>
    <link>https://yatil.net/blog/much-ado-about-no-lists</link>
    <guid>https://yatil.net/blog/much-ado-about-no-lists</guid>
    <pubDate>Sun, 13 Jan 2019 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>In the past two days, people noticed that VoiceOver (VO) on top of Safari is not reading list semantics when the list is not styled in a list-like fashion. First things first: ## What does it mean for me as a web developer that Safari is not reading lists when it doesn&#039;t look like a list? **Nothing.** The first commits for &ldquo;layout lists&rdquo;[^I think that saying those lists are used as &ldquo;layout&rdquo; is quite a misnomer, the lists are used as a generic grouping mechanism.] have been committed to the [source in 2014](https://github.com/WebKit/webkit/commit/9ee768fd0a2fc2104c9a94542545f60e51421c07#diff-c0dfd1400d023854a36f3c70192c8968), the code for this particular functionality has [not changed since mid-2015](https://github.com/WebKit/webkit/commit/c484541d223f49c710cf5c8bfaeda672eeafe854#diff-c0dfd1400d023854a36f3c70192c8968). Considering that the issue just came up in 2019 probably means that it did not have a negative impact on users. Instead, according to [a comment made by James Craig](https://bugs.webkit.org/show_bug.cgi?id=170179#c1), &ldquo;Customers seem much happier in the 3 years since this change went in.&rdquo; ## But shouldn&#039;t browsers and screen readers respect semantics? That was my first [knee-jerk reaction on Twitter](https://twitter.com/yatil/status/1083736641737502720). In a perfect world where developers would code perfect code, this principle would hold true. However, in the diverse context of the web, browsers and assistive technologies have to make judgment calls. Back in the day that was mostly about repairing HTML (before the behavior was standardized in HTML5). Today those judgment calls revolve around how users actually use and want to read content on the web. When mobile browsers were introduced, the viewport was set to 960px by default to avoid breaking sites. It was a judgment call to not break the web. When Safari decides that it is better not to announce lists in certain circumstances, that is a judgment call they are allowed to make whether I agree with it or not. Indeed this already happens with tables where browsers (all of them!) make a determination of layout table, or not.[^This is an entirely different issue than the one that removes semantics from responsive tables.] Most screen readers also decide to not use `</p> <p>` or `</p> <p>` semantics, so they are usually not announced. In fact, even such useful elements as `</p> <p>` and `</p> <p>` usually have no recognition at all in browsers[^Which is a shame, they are so useful!]. ## So we need standards for screen reader output! Yes, and no. Users of screen readers are very diverse. Many screen reader users can see the screen. Some know every bit of the screen reader&rsquo;s settings, other users struggle with the essential functions. In the end, a screen reader is a highly personalized piece of assistive technology. In principle, I&rsquo;d personally prefer the behavior to be a setting in the screen reader (VoiceOver) itself, rather than Safari deciding what to do. On the other hand that has also ramifications: How would the browser communicate that it deems a list is used for &ldquo;layout&rdquo;? We generally don&rsquo;t want assistive technologies to access the HTML directly, because this lead to issues in the past. ## Next steps? Of course, we can yell at browsers and assistive technologies for making our lives more complicated, but the reality is that we are living in a complex world and there is not a black and white answer (yet!) on how to tackle issues like this. &gt; We really need an open conversation on what CSS is allowed to overwrite semantics. Apart from display:none/visibility:hidden, I personally think no CSS should alter the semantics of the page. The above paragraph was my hot-take two days ago. I&rsquo;m not sure if it holds up as much as I would want it to do. I think we need to define the expected or preferred behavior of user agents somehow but to flat-out forbid interpretation might be to the decrement of the users. We have come so far to agree that [websites don&rsquo;t need to look the same in every browser](http://dowebsitesneedtolookexactlythesameineverybrowser.com) mostly due to bugs in their rendering engines or preferences of the user. I think the same is true for screen readers and other assistive technology: **Websites don&rsquo;t need to sound the same in every screen reader.** The issue with &ldquo;listitis&rdquo;[^ Using lists to structure every little part of the content.] stems from HTML not having a lot of ways to structure content differently. Do we really need `</p><ul></ul> ]]>
    </description>
    </item>
    <item>
    <title>Leaving Facebook</title>
    <link>https://yatil.net/blog/leaving-facebook</link>
    <guid>https://yatil.net/blog/leaving-facebook</guid>
    <pubDate>Mon, 31 Dec 2018 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>I&rsquo;ll leave Facebook by the end of the day today[^This blog post was in the making for days, and I wanted to give advanced warnings, but it didn&rsquo;t work out sooner.]. I thought about this final step for several months. I have many reasons, including, but not limited, to Facebook&rsquo;s ongoing privacy issues. For me, as for many, Facebook has grown essential to be in touch with some relatives and colleagues. However, those contacts have been superficial, and Facebook is not the sole way to be in touch. My professional contacts have blogs and Twitter profiles. I can follow them using [Feedbin](https://feedbin.com/) which supports not only following RSS feeds but [also Twitter profiles](https://feedbin.com/blog/2018/01/11/feedbin-is-the-best-way-to-read-twitter/). This gives me a privacy-first way to read relevant information. Of course, where it gets hard are the private contacts. Some prefer Messenger, others just use Facebook as their social network of choice. Most of my contacts are, however, not very active on Facebook or live in a right-wing bubble. The latter leads to me not following them and they&#039;re not following me, so being active on Facebook is not broadening their horizon[^I try to read conservative views where I can. Right-wing propaganda is not conservative.]. While I will stop using Facebook, I&rsquo;ll continue to use some of their other properties, namely WhatsApp and Instagram. The former is the basis for communication with some close relatives, so that leaves me without much choice. The conversation is encrypted, and I don&rsquo;t share my contacts with the app, so it&rsquo;s ok for now. The latter is an excellent way to keep in touch on a very superficial level. However, I&rsquo;ve recently reduced publishing on Instagram and with Flickr&#039;s future in question, I hope to have a personal [Pixelfed](https://pixelfed.social/) instance running at some point. Lastly, I would rather not be a reason for people to stay on Facebook. Being a cog in the Facebook machine makes me an involuntary helper for their extremely addictive drug. And I don&rsquo;t want to be that. If you want to stay in touch, I recommend these ways to follow me: - [Mastodon: @yatil@yatil.social](https://yatil.social/@yatil) - [My presentations](https://yatil.net/talks-and-workshops) - [GitHub](https://github.com/yatil) If you would like to message me, email is the best way: [mail@yatil.net](mailto:mail@yatil.net)[^Mastodon or other social media DMs might also work, but I don&rsquo;t check them regularly.]. If you have my phone number (it hasn&rsquo;t changed in many years), feel free to ping me via iMessage, SMS, in WhatsApp, or Signal.</p> ]]>
    </description>
    </item>
    <item>
    <title>Sunday Seven for April 29, 2018</title>
    <link>https://yatil.net/blog/sunday-seven-for-april-29-2018</link>
    <guid>https://yatil.net/blog/sunday-seven-for-april-29-2018</guid>
    <pubDate>Sun, 29 Apr 2018 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>- [Swaziland king renames country Kingdom of eSwatini](https://www.theguardian.com/world/2018/apr/19/swaziland-king-renames-country-kingdom-of-eswatini) (The Guardian) Internationalization is hard, now you have to fit in a country with a lower case first letter. &gt; Meaning &ldquo;place of the Swazi&rdquo;, eSwatini is the Swazi language name for the tiny state landlocked between South Africa and Mozambique. Unlike some countries, Swaziland did not change its name when it gained independence in 1968 after being a British protectorate for more than 60 years. - [Hand tremors and the giant-button-problem](https://axesslab.com/hand-tremors/) (Axess Lab) In accessibility, we usually argue for large tap areas &ndash; but they can be a problem for users with certain motor impairments. &gt; The user is trying to place his finger between the news stories. He&rsquo;s hoping the space is unclickable, so that an accidental tap while trying to scroll will not activate a link. However, every part of the screen is linked. It&rsquo;s like the whole interface is one giant button &ndash; hey what a clever comparison, let&rsquo;s add that to the title of this article! - [The BBC is letting you download more than 16,000 free sound effect samples from its archive](https://www.musicradar.com/news/the-bbc-is-letting-you-download-more-than-16000-free-sound-effect-samples-from-its-archive) (MusicRadar) &gt; There can be few organisations that have used more sound effects than the BBC, so there&rsquo;s bound to be great interest in the news that the corporation has now made more than 16,000 of its FX available for free download. These are being released under the RemArc licence, which means that they can be used for &ldquo;personal, educational or research purposes&rdquo;. - [Time.is](https://time.is) A useful site for people who need to communicate across time zones. - [For everyone](https://hiddedevries.nl/en/blog/2018-04-20-for-everyone) (Hidde de Vries) &gt; It appears &lsquo;for everyone&rsquo; can have different meanings and I think it is important to see the difference between them, so that we are not fooled by for-profit companies that present themselves as charities. The web itself is a place where people are put first, and a place where power is not exercised on people, it is given to people. - [Bits Up!: Cache-Control: immutable](https://bitsup.blogspot.de/2016/05/cache-control-immutable.html) In recent months, I have been surprised about the amount and possibilities of HTTP headers. Immutable is certainly one to add to the tool belt. &gt; When a client supporting immutable sees this attribute it should assume that the resource, if unexpired, is unchanged on the server and therefore should not send a conditional revalidation for it (e.g. If-None-Match or If-Modified-Since) to check for updates. Correcting possible corruption (e.g. shift reload in Firefox) never uses conditional revalidation and still makes sense to do with immutable objects if you&#039;re concerned they are corrupted. - [gridtoflex.com](http://www.gridtoflex.com/) Good advice! (However, don&rsquo;t use emojis in your CSS: It&rsquo;s less understandable as you think it is, and there are likely weird edge cases in browsers.) &gt; CSS grid is AMAZING! However, if you need to support users of IE11 and below, or Edge 15 and below, grid won&#039;t really work as you expect (more info here). This site is a solution for you so you can start to progressively enhance without fear!</p> ]]>
    </description>
    </item>
    <item>
    <title>Hyphenation, Languages and Code</title>
    <link>https://yatil.net/blog/hyphenation-languages-code</link>
    <guid>https://yatil.net/blog/hyphenation-languages-code</guid>
    <pubDate>Tue, 10 Apr 2018 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Jeremy [posted a solution for multi-language sites](https://adactio.com/notes/13720) where you want to switch hyphenation on when the page language is set to (for example) German: ``` css [lang=&quot;de&quot;] { hyphens: auto; } ``` This works great until you have code on the page. Even if we have word-wrapping for code enabled (and we should on responsive sites), hyphenation is not what we want, usually. The same goes for code in sentences. So I&rsquo;d suggest adding the following to the CSS: ``` css [lang=&quot;de&quot;] pre, [lang=&quot;de&quot;] code { hyphens: none; } ```</p> ]]>
    </description>
    </item>
    <item>
    <title>On the #A11y Rules Podcast</title>
    <link>https://yatil.net/blog/on-the-a11y-rules-podcast</link>
    <guid>https://yatil.net/blog/on-the-a11y-rules-podcast</guid>
    <pubDate>Sun, 08 Apr 2018 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Nic [@vavroom](https://twitter.com/vavroom/) Steenhout ([Blog](https://incl.ca)) invited me to his #A11y Rules Podcast. We talked about my work with [Knowbility](https://knowbility.org) and the [W3C Web Accessibility Initiative (WAI)](https://w3.org/WAI/) and how I got into accessibility. Nic&rsquo;s podcast is short and sweet, so you don&rsquo;t have to listen to me waffling on for too long. Nic makes transcripts of the episodes available. [Episode 1 of the two-part interview is out now!](https://a11yrules.com/podcast/e35-interview-with-eric-eggert-part-1/) Thank you, Nic, for having me!</p> ]]>
    </description>
    </item>
    <item>
    <title>Sunday Seven for April 8, 2018</title>
    <link>https://yatil.net/blog/sunday-seven-for-april-8-2018</link>
    <guid>https://yatil.net/blog/sunday-seven-for-april-8-2018</guid>
    <pubDate>Sun, 08 Apr 2018 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>I&rsquo;ve been on vacation for a bit, which was incredibly relaxing. Some pictures are available on [Instagram](https://www.instagram.com/yatil/) (for now &ndash; I need an indie web solution for this). - Professionalism: [**Design&rsquo;s Lost Generation**](https://medium.com/@monteiro/designs-lost-generation-ac7289549017) (Mike Monteiro, Medium) &mdash; Everyone who helps to produce a product is a designer, every decision counts. It&rsquo;s important to make ethical design decisions. There are two words every designer needs to feel comfortable saying: &lsquo;no&rsquo; and &lsquo;why&rsquo;. - History: **[A Short History of WaSP and Why Web Standards Matter](https://thehistoryoftheweb.com/a-short-history-of-wasp-and-why-web-standards-matter/)** (Jay Hoffmann, thehistoryoftheweb.com) &mdash; Web standards wouldn&rsquo;t be widely implemented without the volunteer groups formed in the early days of the internet. - Indie Web: **[It&rsquo;s Time for an RSS Revival](https://www.wired.com/story/rss-readers-feedly-inoreader-old-reader/)** (Brian Barrett, Wired) &mdash; I firmly believe that the distributed web is the better model. But feeds aren&rsquo;t a solution for everything: I would not want to subscribe to a newspaper because of the huge output there. Also it only furthers the information bubble. We need solutions to surface a diverse set of news. - Communicating Ideas: **[Write it down](https://markboulton.co.uk/journal/write-it-down)** (Mark Boulton) &mdash; I often ask people to write down specifics of their problem or suggestions. It often helps me to better understand but also helps others to understand the complexity of their request or find better/other approaches. Conversations are great for brainstorming, but to nail it down, write it down. - Accessibility: **[Small Tweaks That Can Make a Huge Impact on Your Website&rsquo;s Accessibility](https://css-tricks.com/small-tweaks-can-make-huge-impact-websites-accessibility/)** (Andy Bell, css-tricks.com) &mdash; A broad overview over some accessibility techniques. See also the [W3C WAI Tips for Getting Started with Web Accessibility](https://www.w3.org/WAI/gettingstarted/tips/). - Malpractice on the web: **[Bei der &bdquo;S&auml;chsischen Zeitung&ldquo; wird Auschwitz zum Genuss-Moment](https://uebermedien.de/26546/bei-der-saechsischen-zeitung-wird-auschwitz-zum-genuss-moment/)** (Stefan Niggemeier, &uuml;bermedien.de, [English machine translation](https://translate.google.com/translate?sl=de&amp;tl=en&amp;js=y&amp;prev=_t&amp;hl=en&amp;ie=UTF-8&amp;u=https%3A%2F%2Fuebermedien.de%2F26546%2Fbei-der-saechsischen-zeitung-wird-auschwitz-zum-genuss-moment%2F&amp;edit-text=&amp;act=url)) &mdash; There&rsquo;s a new advertising form that content publisher can use: A swirly overlay that advertises a product inside the article image. It&rsquo;s just really bad when the article image depicts the Auschwitz entrance gate and there&rsquo;s no way for publishers to exclude sensitive material. (The whole ad form was disabled after the incident.) - Code examples: **[carbon](https://carbon.now.sh/)** &mdash; If you want to use images of code in your presentation, carbon adds a window frame around it. It looks very sharp. There is a way to export SVG, but I have not looked into the accessibility of it. (Provide a link to the code or add an alternative text.)</p> ]]>
    </description>
    </item>
    <item>
    <title>Sunday Seven for March 18, 2018</title>
    <link>https://yatil.net/blog/sunday-seven-for-march-18-2018</link>
    <guid>https://yatil.net/blog/sunday-seven-for-march-18-2018</guid>
    <pubDate>Mon, 19 Mar 2018 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>I&rsquo;m in San Diego where I&rsquo;ll attend the W3C WAI Education and Outreach WG Face-to-Face meeting, and CSUN, the biggest accessibility conference. It&rsquo;s always amazing to be able to work with my colleagues in one room and to meet all accessibility experts in one place. - Beta: [**W3C/WAI Website**](https://www.w3.org/WAI/beta/) &ndash; We managed to launch the beta for the new WAI site last week. There are still a few rough edges, but it is essential to get it in front of people. A lot of work from many people went into the site, from design, user testing, development. I made sure we can edit resources in their respective Jekyll projects on GitHub and then integrate it into one repository using git submodules. All repositories use one common theme, so changes to it will be reflected in all resource previews, hosted on GitHub pages. - Color: [**Colorblind Accessibility on the Web &ndash; Fail and Success Cases**](https://axesslab.com/colorblind-accessibility-web-fail-success-cases/) &ndash; An excellent overview of colorblindness and common pitfalls. - Principles: [**Accessibility Interview Questions**](https://scottaohara.github.io/accessibility_interview_questions/) &ndash; Everyone should have answers to the question collected by Scott O&rsquo;Hara. Most aim at general principles than specific techniques. - Notifications: [**Inclusive Components: Notifications**](https://inclusive-components.design/notifications/) &ndash; Another excellent write-up by Heydon Pickering. - Buttons: [**Designing Button States**](https://cloudfour.com/thinks/designing-button-states/) &ndash; Tyler Sticka on different aspects of button design. Sweating details like this can greatly improve the usability and accessibility of your website or application. - PWA: [**Minimal viable service worker**](https://adactio.com/journal/13540) &ndash; I don&rsquo;t know enough about Progressive Web Apps to implement them correctly, yet. However, Jeremy Keith&rsquo;s article feels like a good starting point to learn more about it. - Fonts: [**Shipping system fonts to GitHub.com**](http://markdotto.com/2018/02/07/github-system-fonts/) &ndash; Interesting article on a very particular approach to shipping fonts.</p> ]]>
    </description>
    </item>
    <item>
    <title>Sunday Seven for March 11, 2018</title>
    <link>https://yatil.net/blog/sunday-seven-for-march-11-2018</link>
    <guid>https://yatil.net/blog/sunday-seven-for-march-11-2018</guid>
    <pubDate>Sun, 11 Mar 2018 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>This was a long work week, so here are some games and apps instead of articles as I couldn&rsquo;t find time to concentrate on pieces. - TV: [**Jessica Jones**, Season 2](https://www.netflix.com/title/80002311) &ndash; While work was plenty, some of it was also repetitive, so I managed to watch the new Season of Jessica Jones. Very intense storytelling. - iOS: [**Altos Odyssey**](https://itunes.apple.com/de/app/altos-odyssey/id1182456409?mt=8&amp;uo=4&amp;at=1010lpy5) &ndash; When I downloaded Alto for the first time, I dismissed it as being too similar to its precursor. However, it has more facets, and it&rsquo;s easier to achieve goals. - Podcast: [**Playing for Fun** with Tiffany Arment and Myke Hurley](https://www.relay.fm/playingforfun) &ndash; Two people talk about the positive of a video game. It&rsquo;s refreshing and fun. Episode 2 is about &ldquo;Celeste&rdquo; which I have never played, but Episode one was about one of my favorite games&hellip; - Switch: [**Super Mario Odyssey**](https://www.nintendo.com/games/detail/super-mario-odyssey-switch) &ndash; Such a refreshing re-imagination of Mario games. Certainly one of the best titles on the Switch to date. - Version Control: [**Tower**](https://www.git-tower.com/mac/) &ndash; Tower is a fantastic app for git version control. The people behind the app also have published [a comprehensive learning resource for git](https://www.git-tower.com/learn/). - CSS: [**Third party CSS is not safe** by Jake Archibald](https://jakearchibald.com/2018/third-party-css-is-not-safe/) &ndash; Whenever you embed any resource from a third-party server, you are building a tunnel under your site&rsquo;s security. The same also applies to CSS. Great list of examples from Jake. - Browser: [**Firefox Developer Edition**](https://developer.mozilla.org/en-US/Firefox/Developer_Edition) &amp; its inspector &ndash; Working with grids and other newer CSS benefits from a good inspector and Firefox has stepped up the game. Especially inspecting grids is impressive. The browser also has a beautiful and distinct dark theme.</p> ]]>
    </description>
    </item>
    <item>
    <title>Is this thing still on?</title>
    <link>https://yatil.net/blog/is-this-thing-still-on</link>
    <guid>https://yatil.net/blog/is-this-thing-still-on</guid>
    <pubDate>Sun, 04 Mar 2018 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Let&rsquo;s wipe some dust off this old blog, shall we? There&rsquo;s a lot to do, including accessibility fixes, but sometimes you just have to start somewhere.</p> ]]>
    </description>
    </item>
    <item>
    <title>Sunday Seven for March 4, 2018</title>
    <link>https://yatil.net/blog/sunday-seven-for-march-4-2018</link>
    <guid>https://yatil.net/blog/sunday-seven-for-march-4-2018</guid>
    <pubDate>Sun, 04 Mar 2018 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>In _Sunday Seven_ I publish a list of seven links to things on the internet. The only criteria to make it in this category is that it is interesting to me. - Accessibility: [**Apple Park&rsquo;s Visitor Center** by twitter user @xarph](https://twitter.com/xarph/status/967652885604450305) &ndash; An interesting twitter thread about the many small details build for accessibility.[1](#fn-102264-0) (If you enjoy twitter threads as much as I do[2](#fn-102264-1), [read the whole thread as one article on &ldquo;Thread reader&rdquo;](https://threadreaderapp.com/thread/967652885604450305.html).) - AMP: [**&ldquo;Ends and Means&rdquo;** by Jeremy Keith](https://adactio.com/journal/13498) &ndash; Insightful post by Jeremy on how companies can act together to help good and how sometimes they go a step too far. To use new CSS properties in Firefox, websites need to support HTTPS before those are available to them. This behavior creates a whole layer of CSS that is harder to be used while learning. - Accessibility: [**&ldquo;WAI-ARIA Screen Reader Compatibility&rdquo;**](https://www.powermapper.com/tests/screen-readers/aria/) &ndash; An overview of ARIA support which is good, but there are always edge-cases. It also shows the tests used to determine support, so if you want to get an impression on how different ARIA roles or attributes are voiced, you can look it up here.[3](#fn-102264-2) - Layout: [**&ldquo;Layout Land&rdquo;** by Jen Simmons](https://www.youtube.com/playlist?list=PLbSquHt1VCf18lllS0C5quAaOcsuMAC70) &ndash; Lots and lots of short videos that describe how to create different layouts with the new capabilities in CSS &amp; Browsers. - TV: [**&ldquo;The Tick&rdquo;**](http://amzn.to/2Fec1eu) (Amazon Originals) &ndash; Sometimes, especially while coding, I need to distract parts of my brain while working. The Tick is funny and not hard to follow. I enjoyed it. - Podcast: [**Game Show** by The Incomparable](https://www.theincomparable.com/gameshow/) &ndash; I&rsquo;m late picking up this particular podcast because I dismissed the idea that game shows as podcasts could work. Boy, was I wrong! I love &ldquo;Random Pursuit,&rdquo; &ldquo;Inconceivable,&rdquo; &ldquo;Low Definition,&rdquo; and the text adventures and they had me spontaneously laughing out loud several times in the last few weeks. - Action: [**\#WHOagainstGuns**](http://www.realitybombpodcast.com/whoagainstguns/) &ndash; Over 40 Doctor Who podcasters are supporting actions for gun control in the U.S. and plan to produce an exclusive series of commentary podcasts for the classic story &ldquo;The War Games.&rdquo; Access to those unique recordings will be only available to donors. More info, including a list of possible organizations to donate to, is available on the [Reality Bomb website](http://www.realitybombpodcast.com/whoagainstguns/). - - - - - - 1. I don&rsquo;t necessarily agree with the marking of the AED which should arguably be easier to find, but all in all, it is a testament that accessibility does not need to look ugly. [↩](#fnref-102264-0) 2. Which means &ldquo;not very much.&rdquo; [↩](#fnref-102264-1) 3. Beware: As those test cases are there for testing ARIA attributes the code might not be an example of a best practice but of a possibility. [↩](#fnref-102264-2)</p> ]]>
    </description>
    </item>
    <item>
    <title>Web Accessibility Tutorials updated</title>
    <link>https://yatil.net/blog/a11y-tutorials-updated</link>
    <guid>https://yatil.net/blog/a11y-tutorials-updated</guid>
    <pubDate>Sun, 07 May 2017 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>As many of you might know, I have been the primary editor of the [W3C WAI Web Accessibility Tutorials](https://www.w3.org/WAI/tutorials/) which provide practical guidance on how to implement web accessibility. A few days ago, the Education and Outreach Working Group and I were able to publish a major update. We added three new tutorials (which were released as a draft before). A lot of thought went into framing the tutorials the right way, and we addressed one of the issues with WAI resources that we often hear about by making it very streamlined and not wordy. I am proud of the new tutorials: [Page Structure](https://www.w3.org/WAI/tutorials/page-structure/), [Carousels](https://www.w3.org/WAI/tutorials/carousels/), and [Menus](https://www.w3.org/WAI/tutorials/menus/). I hope they can be a valuable building block for learning about and teaching web accessibility. As always, we are happy to take suggestions via [GitHub](https://github.com/w3c/wai-tutorials/issues/); a [change log](https://www.w3.org/WAI/tutorials/changelog/) is available. I want to thank my colleagues in the Education and Outreach Working Group for helping me to shape the tutorials. It&rsquo;s invaluable feedback.</p> ]]>
    </description>
    </item>
    <item>
    <title>Teaching at AccessU 2017</title>
    <link>https://yatil.net/blog/teaching-at-accessu-2017</link>
    <guid>https://yatil.net/blog/teaching-at-accessu-2017</guid>
    <pubDate>Sat, 22 Apr 2017 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Next month I will continue the tradition of flying over to Austin, TX, USA to attend the annual [AccessU conference](https://www.knowbility.org/education/accessu/) and teach some classes. Organized by [Knowbility](https://www.knowbility.org/), the conference is a gathering of brilliant minds around accessibility and is an excellent opportunity to broaden your accessibility knowledge. Here&rsquo;s an overview of my four classes: - **Responsive and Accessible Images (March 17, 2017 &ndash; 2:15pm&ndash;3:45pm)**Images are an important part of the web. This course will give an overview of the considerations for accessible images and their alternative texts, but also take a look from a content strategist perspective on how to present pictures in a responsive context. You will learn how to write good alt text, when longer descriptions are necessary, using resolution-independent images, and how to use different images in different responsive contexts for art direction. - **Advanced Accessibility: Deep Dive for Developers (March 17, 2017 &ndash; 4pm&ndash;5:30pm)**This session gives a general overview of good development practices that ensure a more accessible web product. It includes ARIA, styling, and advice for making your website more semantic and thus more accessible to everyone. - **Use ARIA Responsibly (March 18, 2017 &ndash; 8:30am&ndash;10:00am)**How to build web components, websites, and web applications in a way that leverages the capabilities of HTML5. Add ARIA on top to enhance the user experience. You&rsquo;ll learn where to find information on how to implement ARIA correctly, and shows you a practical example. - **Simplify Your Development Life with Tools, Tests, and Procedures (March 18, 2017 &ndash; 10:15am&ndash;11:45am)**A condensed overview on how developers can simplify their life by making sure that procedures and tests are in place to ensure accessibility in every step. **[Tickets for AccessU](https://www.knowbility.org/education/accessu/#registration) are still available.**Also, Knowbility is organizing the [Inaugural Knowbility Accessibility](https://www.knowbility.org/education/knowbility-accessibility-leadership-symposium/)Leadership Symposium on May 15th and 16th: The opportunity for senior management to collaborate, confer and learn about accessibility challenges in the enterprise and how to address them, leading to a more diverse customer base. After AccessU, I&rsquo;ll attend the W3C [Education and Outreach Working Group](https://www.w3.org/WAI/EO/)&rsquo;s Face to Face Meeting on May 19 and 20.</p> ]]>
    </description>
    </item>
    <item>
    <title>:focus-ring</title>
    <link>https://yatil.net/blog/focus-ring-video</link>
    <guid>https://yatil.net/blog/focus-ring-video</guid>
    <pubDate>Sat, 25 Mar 2017 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Great video over at the [Google Chrome Developers channel](https://www.youtube.com/channel/UCnUYZLuoy1rq1aVMwx4aTzw) about the upcoming [CSS Level 4 `:focus-ring` selector (draft)](https://drafts.csswg.org/selectors-4/#the-focusring-pseudo). The focus is often removed for stylistic reasons when using the mouse, but then keyboard users also have no indication of where they are on the website. `:focus-ring` solves that issue. https://www.youtube.com/watch?v=ilj2P5-5CjI&amp;index=1&amp;list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g The video includes a shout out to this [handy polyfill](https://github.com/wicg/focus-ring) on Github. There are [other videos about accessibility](https://www.youtube.com/playlist?list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g), also presented by [Rob Dodson](https://robdodson.me), available on the channel as well. Captions are available.</p> ]]>
    </description>
    </item>
    <item>
    <title>My personal review of the 2016 MacBook Pro</title>
    <link>https://yatil.net/blog/the-2016-macbook-pro</link>
    <guid>https://yatil.net/blog/the-2016-macbook-pro</guid>
    <pubDate>Sat, 28 Jan 2017 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>In 2006 I got my first Mac ever, the [2006 Apple MacBook &ldquo;Core Duo&rdquo; 1.83 13&rdquo;](http://www.everymac.com/systems/apple/macbook/specs/macbook_1.83.html). After owning a humongous Acer 15&rdquo; Laptop in the previous years, the experience of owning this computer was something from another world. Since 2013 I owned a [13&rdquo; MacBook Air with 8GB RAM and an 1.7GHz Intel Core i7 processor](http://www.everymac.com/systems/apple/macbook-air/specs/macbook-air-core-i7-1.7-13-mid-2013-specs.html) and while I loved the portability of the device, I recently started to feel the limits of the processor and the disk space (just 128 GB). ## What I got I bought a [13&rdquo; MacBook Pro 2016 with a Intel Core i5 3.1 GHz processor and Touchbar](http://www.everymac.com/systems/apple/macbook_pro/specs/macbook-pro-core-i5-3.1-13-late-2016-retina-display-touch-bar-specs.html) and 16GB of RAM and 512 GB of SSD storage. In Space Grey. ## What I use it for I mainly do web development, lots of writing and editing &ndash; not something you necessarily need &ldquo;Pro&rdquo; hardware, to be honest. But then there are some operations, like optimising images and decoding videos, that happen often enough so I can use the power. It&rsquo;s also amazing how quickly Jekyll and Middleman projects build. I sometimes need to test websites in Windows, and firing up a virtual machine is now obviously less of an hassle. In addition, I occasionally play [Cities: Skylines](http://www.citiesskylines.com) and while there is a bug with the (unsupported) Intel graphics card, it is really cool to see houses and cars that are not just mushy blobs of textures. ## What I like - **The Screen** is just great. I never had a &ldquo;Retina&rdquo; screen before and this is really good. Type looks crisp and icons do, too. However parts of the web look awful as many people are not optimising their graphics. It&rsquo;s especially appalling with icons. Use SVGs, everyone! - **The Speakers** are phenomenal. I have never really used the built-in speakers in my previous Macs, and I don&rsquo;t really plan to use the ones built into this machine, but wow, they sound really good. - **The Touchbar** is a great gimmick. When apps support it, it shines, but without support it&rsquo;s only mildly useful. The Touchbar is empty in that case, so you got a gap on the keyboard. I usually don&rsquo;t need to use function keys and if I do pressing fn (like I used to do) brings them back. I have accidentally touched the Touchbar while typing and when it happens it is irritating. However it happens less and less. The bar is well integrated into Safari, so you can play and pause video playing in the browser from the bar and also scrub around the video which is much more intuitive and precise than using the touchpad and drag the handle. The only thing that is really annoying is that the Touchbar crashes occasionally &ndash; putting the computer to sleep and waking helps. - **TouchID** goes without saying. Unlocking the Mac or 1Password is blazingly fast. Now hurry to provide Apple Pay in Germany, Apple! - **The built quality and portability.** It&rsquo;s incredible how dense this computer is, when you put the Air and the Pro on top of each other, the Pro is much smaller. It is thicker, but not by much. The space grey color is stunning. ## Other observations - **The Keyboard** is right in my ballpark. It is clicky, it is responsive, it is totally fine. But I don&rsquo;t have a very specific taste in keyboards and I found every Mac keyboard that I typed on at least OK. Not having the inverted-T shape for the arrow keys is throwing me off however as it is hard to feel for the position of the arrow keys. - **The Trackpad** is working as expected. As a &ldquo;tap to click&rdquo; person it&rsquo;s totally good for me. I haven&rsquo;t used any force touch features a lot, but using it for the occasional dictionary lookup is useful. - **Thunderbolt 3/USB-C** works as expected. I can charge my Mac from either side, which is great, as the socket is on the right when I&rsquo;m sitting on my couch. I miss MagSafe though. I bought one USB-C to USB-A and one USB-C to VGA/USB-A/Power adapters from Apple. I also got a [two pack of the Aukey USB-C/USB-A adapters _(affiliate link)_](http://amzn.to/2iYicL3). My external display (that I only use for referencing stuff when needed) and microphone are plugged in into the VGA/USB-A/Power adapter all the time. I still need a good SD card adapter but did not find one that I think is worth buying. ## Migration - I chose to start fresh and not use Migration Assistant to move my data. - I migrated most apps via the Mac App Store and [SetApp](https://setapp.com) and downloaded others directly. - I moved my data almost exclusively by AirDrop, which worked very well for my 6GB [MailMate](https://freron.com) archive and my 10GB `~/projects` folder (yes, I need to clean that up at some point). - Other data was synced using iCloud (works well for me, ymmv), Dropbox (where I downgraded to the free plan after moving most of my data to iCloud), and iCloud Photo Library. - The most inconvenient part was installing all the command line tools, like Middleman, Jekyll and Gulp. In the end this was just a small portion of the migration experience which took about one day. ## Conclusion This is not a Mac for everyone. It might not be for you if you have special needs, or need more power. However I think it is very versatile and while the USB-A to USB-C transition is inconvenient, it is where the future lies. This might be my last PC-type of computer (if there comes more pro functionality to the iOS platform), so being future proof is important.</p> ]]>
    </description>
    </item>
    <item>
    <title>Tom Scott: The Little-Known Patterns on British Streets</title>
    <link>https://yatil.net/blog/tom-scott-tactile-pavement</link>
    <guid>https://yatil.net/blog/tom-scott-tactile-pavement</guid>
    <pubDate>Tue, 10 Jan 2017 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>[Tom Scott on tactile pavement](https://www.youtube.com/watch?v=cdPymLgfXSY): https://www.youtube.com/watch?v=cdPymLgfXSY</p> ]]>
    </description>
    </item>
    <item>
    <title>Aleppo</title>
    <link>https://yatil.net/blog/aleppo</link>
    <guid>https://yatil.net/blog/aleppo</guid>
    <pubDate>Wed, 05 Oct 2016 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>Over the last year, the name of a city is coming up in German news more often than I like it to be: Aleppo. It is not just a city involved in the war in Syria, it is the scene of a standoff that is lasting for months. This city, the mention of its name on the news, the descriptions of the cruelty that happens there, is especially painful for me. When I was in elementary school, we had Syrian neighbors who fled during the Gulf War. Mohammad and I shared a class. We were good friends, played football together, learned together. I still long for his family&rsquo;s traditionally baked bread sometimes. After a few years, that felt like a whole life for me as a child, they had to go back. Although quite well integrated, there was no way for them to get a permanent working permit, and they were happy to get back into their home country. (Of course I don&rsquo;t know if that was really really the case, but that was what I gathered as a child.) The children, Mohammad had a little brother and &ndash; I think &ndash; a baby sister, were not too happy to leave, having their friends in that small town where I grew up. One day, we said goodbye, and they made their way to their home city of Aleppo in Syria. The thought alone, that those people, including my elementary school friend, might be injured or dead is gruesome to me. Hearing from injured or dead children makes me think about the potential children of Mohammad and his siblings. For most, the war in Syria is far, far away. For me, it feels close. This is why I think getting to know other people, other cultures is so important. It allows us to be close with people and to not brush this conflict away as &ldquo;someone else&rsquo;s problem&rdquo;. Image: [Palmyra &ndash; Temple of Bel](https://www.flickr.com/photos/juan_llanos/21530827452): A cultural heritage that was destroyed during the war. Uploaded by [Juan Llanos on Flickr](https://www.flickr.com/photos/juan_llanos/). [See how that site looks today.](https://en.wikipedia.org/wiki/Temple_of_Bel)</p> ]]>
    </description>
    </item>
    <item>
    <title>Speaking at… Accessing Higher Ground</title>
    <link>https://yatil.net/blog/speaking-at-accessing-higher-ground</link>
    <guid>https://yatil.net/blog/speaking-at-accessing-higher-ground</guid>
    <pubDate>Tue, 04 Oct 2016 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>I&rsquo;m happy to announce here that I will be speaking at [Accessing Higher Ground](http://accessinghigherground.org) in November, representing [Knowbility](http://knowbility.org). The conference is in Westminster, Colorado and coins itself as an &ldquo;Accessible Media, Web and Technology Conference&rdquo;. I will do two three-hour long workshops: - **[Advanced Accessibility: A Deep Dive for Developers](http://accessinghigherground.org/advanced-accessibility-deep-dive-developers/) Tuesday, Nov. 15th, 9am** Focused on UI widgets, WAI-ARIA techniques and semantics, with some JavaScript as a garnish, this workshop will teach how to implement complex widgets in an accessible way that is true to the nature of the web. - **[Simplify your development life with tools, tests and procedures](http://accessinghigherground.org/simplify-development-life-tools-tests-procedures/) Tuesday, Nov. 15th, 1:30pm** Developers are lazy. I know this because I am one. So having tools, tests and procedures in place that help developers to produce accessible templates and widgets is helping everyone. This workshop will give a broad overview about the possibilities and will also show how to implement some of the provisions in day-to-day work. Also, I will give two talks: - **[Semantic Subtleties](http://accessinghigherground.org/semantic-subtleties/) Thursday, Nov. 17th, 8am** This talk takes some of the semantic particularities that come also up in the workshop and will put them under the microscope and examine their meaning. - **[ARIA Serious?](http://accessinghigherground.org/aria-serious/) Thursday, Nov. 17th, 4pm** Here, I will presumably give a few good and lots of bad examples of ARIA implementation and show where the pitfalls and chances of using ARIA are. If you are still thinking about going, maybe the [fantastic lineup of speakers](http://accessinghigherground.org/conference-schedule/) can lure you in. Register now at [accessinghigherground.org](http://accessinghigherground.org/registration/).</p> ]]>
    </description>
    </item>
    <item>
    <title>The web accessibility basics – Marco's Accessibility Blog</title>
    <link>https://yatil.net/blog/the-web-accessibility-basics-marcos-accessibility-blog</link>
    <guid>https://yatil.net/blog/the-web-accessibility-basics-marcos-accessibility-blog</guid>
    <pubDate>Sun, 24 Jan 2016 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>&gt; I always thought that it is not so difficult to find resources about these basics, the recurrence of that question prompted me to finally write my own take on this topic. So here it is, my list of absolute web accessibility basics every web developer should know about. A very solid overview of basic web accessibility techniques by Marco Zehe.</p> ]]>
    </description>
    </item>
    <item>
    <title>My Facebook Time-Out</title>
    <link>https://yatil.net/blog/my-facebook-time-out</link>
    <guid>https://yatil.net/blog/my-facebook-time-out</guid>
    <pubDate>Sat, 23 Jan 2016 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Over the past years my social web interaction shifted from Twitter and this very blog more and more to Facebook. I have so many contacts and interactions there that it feels very overwhelming and occupying a good chunk of my free time that I would love to spend otherwise: Hiking through the sun, having random thoughts and ideas, read long-form articles or play video games. I was under the impression that engaging on Facebook &ndash; and to a lesser extend on Twitter &ndash; would allow me to relax, to have social interactions and would be worth the time. I have realized that this became less and less the case. Either things are fairly irrelevant for me, or there is in-depth political discussion. This made Facebook feel like a burden for me now, and the only way to reevaluate my usage is to stop using it almost completely. While I had a pinned tab with Facebook open at all time, as well as the mobile app installed, I have now closed that tab and removed the app from my iPhone. I have disabled all notifications. This is day three and I only had brief looks into Facebook on the mobile web version to check for important notifications. I also allow myself to syndicate content to Facebook &ndash; like this blog post and via an iOS extension called [Linky](https://pragmaticcode.com/linky) (which doesn&rsquo;t currently support sharing to WordPress, e.g. this blog _hint hint_) but also using custom [Workflow](https://www.workflow.is)s. Although my brain doesn&rsquo;t yet know what to do with those free cycles, it _feels_ like a change for the better. I want to continue at least for another week or two. Then I probably need to make significant changes to the websites and people I follow to reduce the load. The [experiments of CGP Grey](http://www.cgpgrey.com/blog/dialing-down) and Myke Hurley inspired me for this time-out. They outline their methods of [&ldquo;Dialing Down&rdquo;](https://www.relay.fm/cortex/17) in an Episode of their (much recommended) [Cortex podcast](https://www.relay.fm/cortex/17). (Image by [Jonathan Bean via Unsplash](https://unsplash.com/photos/ywnnwzcdR5o).)</p> ]]>
    </description>
    </item>
    <item>
    <title>2015 in Review</title>
    <link>https://yatil.net/blog/2015-in-review</link>
    <guid>https://yatil.net/blog/2015-in-review</guid>
    <pubDate>Sun, 03 Jan 2016 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>Wowza, that was a densely packed year 2015 for me. Here is my short,long, personal review of the year: ## January Slow start into the year, attended a reading by [Max Goldt](https://en.wikipedia.org/wiki/Max_Goldt) at [Zeche Carl (Carl Mine)](https://en.wikipedia.org/wiki/Zeche_Carl), a former mine and now event location, and even got a poster signed (yes, I&rsquo;m used to my name being misspelled with a &ldquo;k&rdquo; in Germany): ![Max Goldt signature for Sandra and Erik](https://yatil.net/wp-content/uploads/2016/01/16101397668_a1dbf4dfbd_o-e1451849063826-768x1024.jpg)A week later we&rsquo;ve been back to Zeche Carl to see the &ldquo;[Terje Rypdal](https://en.wikipedia.org/wiki/Terje_Rypdal) Trio&rdquo;. It was a nice evening of jazz music and very relaxing. Then winter happened: some snow fell from the sky on the 24th and we decided to do a nice hike through the snow: \![Gull on a post](https://yatil.net/wp-content/uploads/2016/01/16169378300_8b6932363c_o-1024x768.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157650445571352).\[/caption\] ## February February started with a huge disappointment: We had tickets for [Tenacious D](https://en.wikipedia.org/wiki/Tenacious_D) in the Paladium in Cologne. The concert itself was fine, but the venue is built in a way so that you are unable to see anything from farther back in the room. It felt like the money for the tickets was pretty much wasted. The weather on Valentine&rsquo;s day was really nice and as it was a Saturday, we used the opportunity to do a hike and then had our traditional Valentine&rsquo;s menu. \![A walkway with trees](https://yatil.net/wp-content/uploads/2016/01/17384231420_59e2cf4430_o-1024x768.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157662943555652).\[/caption\] The month concluded with an intercontinental flight to one of my most favorite cities: San Diego, CA for CSUN. As one of the best ways to cope with jet-lag is to just continue as if it is a loooooong day, we didn&rsquo;t pass up the opportunity to visit a [Nukem](https://www.facebook.com/NukemOfficial) show in the Brick by Brick venue to see Norman Leggio of [Psychotic Waltz](http://psychoticwaltz.com) play and have a chat with him. ## March It was quite cold and rainy in the first days in San Diego, but I have been at the CSUN conference all day anyway. I met all the nice accessibility folks and it is always refreshing to speak to people face to face instead of over the phone. The conference went swiftly by, including my two panel appearances and a lot of small meet-ups and 1:1 discussions. Afterwards we rented a car and got out to the [Anza Borrego Desert State Park](http://www.parks.ca.gov/?page_id=638). It was beautiful, with all the nice landscape, cactus blossoms and animal wildlife. We even got to see some of the endangered Bighorn Sheep. I am always blown-away by the sheer size of the park. I got to drive a nice SUV for the week and it came in really handy when navigating the dirt roads. \![Cactus blossom](https://yatil.net/wp-content/uploads/2016/01/17385048000_c556e7c49b_o-1024x768.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157662977814021).\[/caption\] For one day only, we returned to Ocean Beach in San Diego, saying goodbye to the Pacific. \![Sea-Gull on the Ocean Beach Pier](https://yatil.net/wp-content/uploads/2016/01/17548421896_5de3d71d13_o-1024x768.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157663061125066).\[/caption\] The rest of the month, we were occupied getting out of jet-lag and adjusting to the freezing temperatures in Germany&hellip; ## April Slow-starting April had its first highlight with a [Damian Wilson](http://www.damian-wilson.net) concert in D&uuml;sseldorf, which was really funny and entertaining, we will certainly visit again. ![Damian Wilson](https://yatil.net/wp-content/uploads/2016/01/17106672271_5744d4b015_o-576x1024.jpg)![Damian Wilson](https://yatil.net/wp-content/uploads/2016/01/17105806282_1cd71bdb0c_o-1024x768.jpg)Then I hopped on a plane again, to Austria this time. I attended [BarCamp Graz](http://barcamp-graz.at) and met the students of the Content Strategy program that I lectured in the following weeks. As the master program is directed at people who are already in jobs, the lectures were on the evenings or weekends, so it had little impact on my usual work. It was a fun time and I think the students really took something away regarding multi-screen design and accessibility. To close off the month we needed to make up for the disappointing _Tenacious D_ concert in February. Good that _Kyle Gass_ visited with _[Kyle Gass Band](http://thekylegassband.com)_, this time playing in the [Turock](http://turock.de) venue in Essen. We got premium spots on the staircase and could see very well. An enjoyable evening. ![Kyle Gass Band](https://yatil.net/wp-content/uploads/2016/01/16681064994_d8194f03bc_o.jpg)## May In May we visited the local botanic garden called [Grugapark](http://www.grugapark.de/) where we saw ducklings and goslings. \![A Duck](https://yatil.net/wp-content/uploads/2016/01/17159512220_4af04db958_o-1024x576.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/albums/72157652255226086).\[/caption\] Just a few days later, I hopped on a train to Paris to attend the W3C@20 symposium, set in one of the nicest venue I&rsquo;ve been to, and AC meeting. Another great opportunity to get into contact with the W3C members. \![Thalys train to Paris](https://yatil.net/wp-content/uploads/2016/01/17189955320_df607fde91_o.jpg) More photos on [Flickr](https://www.flickr.com/photos/yatil/sets/72157656568845704/).\[/caption\] And to continue the maniac travel, I again took the plane to the US, shortly after arriving from France. The destination this time: Austin, Texas. I was invited to give two presentations at the lovely AccessU conference and we did some light user testing of the _How to Meet WCAG 2.0_ prototype I worked on. In addition we had a two-day Education &amp; Outreach Working Group meeting. I had half a day off and got to see a nice squirrel: ![Squirrel in a tree](https://yatil.net/wp-content/uploads/2016/01/17652666932_357dbc20ab_o-1024x768.jpg)Of course there needed to be some more live music that month as well, and thus we attended the [Rock Hard Festival](https://web.archive.org/web/20150526012921/http://www.rockhard.de/festival.html), which is conveniently located just around the corner in the Amphitheater Gelsenkirchen. It was really awesome, three days of Metal and the festival allows for strolling around in the surrounding Nordsternpark. ![Venom @ Rock Hard Festival](https://yatil.net/wp-content/uploads/2016/01/17790490470_a77f19baec_o.jpg)## June In early June, we took the opportunity to attend a [Jan Delay](http://www.jan-delay.de/home/) concert that was &ldquo;free and outside&rdquo;. The concert was given at the nice world cultural heritage site of Zeche Zollverein here in Essen. ![Jan Delay at Zeche Zollverein](https://yatil.net/wp-content/uploads/2016/01/18535764021_44ea95d7ab_o.jpg)Also in June, I got my Apple Watch (finally!). I still find it useful and wear it every day, but it is not as indispensable as a smartphone. Of course I also got onto a train that month. this time my destination was Utrecht in the Netherlands where I attended the face-2-face meetup of the [AutoWCAG CG](https://www.w3.org/community/auto-wcag/2015/06/19/successful-auto-wcag-workshop/). I again collected user feedback sessions on the _How to Meet WCAG 2.0_ redesign. Afterwards another train ride brought us to my home town for a few days where we also attended [Everyman](http://www.pfalztheater.de/cms/?p=293&amp;s=pt_schedule&amp;f=1&amp;id=527&amp;), a reinterpretation of the classic play in a rock-opera style with support of the there-local band _[Vanden Plas](http://www.vandenplas.de)_. I can&rsquo;t recommend seeing this enough. \![Everyman at Pfalztheater Kaiserslautern](https://yatil.net/wp-content/uploads/2016/01/11351979_1860387397519073_1288669253_n.jpg) [Photo by @screenorigami.](https://www.instagram.com/p/4M5nNKJZFb/)\[/caption\] ## July&ndash;August The month of the Sankt Peter Ording and Wacken Open Air vacation in a camper came. Luckily I have already [blogged about this muddy mess](/?p=101681), so no need to repeat that here. Shortly after coming back from the vacation, the annual Turock Open Air was in full swing. I think we only attended the Sunday because we had to harvest our field that was neglected while we were away. The week after that another short-range trip to Hamm where we stayed in the vegan hotel next to the Kurpark, where we got to watch the reggae night featuring _[Gentleman](http://gentleman-music.com/)_ and _[Jahcoustix](http://www.jahcoustix-music.com)._For me, that was a welcome change to the whole Metal this year. ![Stage at the Kurpark Hamm](https://yatil.net/wp-content/uploads/2016/01/21039709346_cab531668e_o-1024x768.jpg)## September In early September I attended the [NightlyBuild](https://www.nightlybuild.io) conference which had a few interesting talks. ![NightlyBuild.io Conference is about to go](https://yatil.net/wp-content/uploads/2016/01/20954508369_880566c887_o-1024x768.jpg)The day before speaking at [A-Tag in Vienna](http://atag.accessible-media.at), we had planned to attend a concert in Hamburg, so I took Thursday evening off and we traveled to Hamburg, had a look at the Speicherstadt and then attended a concert of the band [Eclipse](http://www.eclipsemania.com). It was totally worth the hassle to take the really early flight to Vienna the next morning. ## October &hellip;or [Fronteers](https://fronteers.nl/) month, as I prefer to call it. I did my usual talk at the Jam session and attended two extraordinary great days of talks in the main conference. The week after Fronteers, I started going to the gym and do exercises. I am still rolling with it although a medical annoyance has forced me to pause my efforts over the holiday break. ![View on the display of a cycling device in a gym](https://yatil.net/wp-content/uploads/2016/01/Unknown-1024x1024.jpeg)In the same week, we hit the Turock again to attend the concert of _[The Poodles](http://www.poodles.se)_. The concert was so great that we decided to attend the concert the following day in Cologne. The venue was also a bit smaller and thus the whole concert more intimate. On October 21st there was a showing of all three [Back to the Future](http://backtothefuture.com) movies in the historic local cinema called [Lichtburg](http://lichtburg-essen.de) which we attended, it was lots of fun and I enjoyed seeing all three back to back. The cinema also hired someone who parked a historic DeLorean in front of the cinema: ![DeLorean in Front of the Cinema](https://yatil.net/wp-content/uploads/2016/01/22365953362_314397e1d7_o-e1451851802342-768x1024.jpg)As my working groups did not meet, there was no need for me to travel all the way to Sapporo, Japan to meet my colleagues, which was a bummer, but honestly, I was traveling enough that year anyway&hellip; Instead we went to Bochum to see [Eric Martin](http://www.ericmartin.com) of [Mr. Big](http://www.mrbigsite.com) play a nice solo concert. ## November We attended a show of the very entertaining comedian [Willy Astor](http://www.willyastor.de/servus/) in Cologne, and watched [James Bond: Spectre](https://en.wikipedia.org/wiki/Spectre_(2015_film)) in the aforementioned Lichtburg cinema. I flew to Graz, Austria (and back) to speak at [UX Day Graz](https://uxdaygraz2015.iicm.tugraz.at), which was a very well organized event with great speakers. I can&rsquo;t recommend it enough. ![Uhrturm Graz](https://yatil.net/wp-content/uploads/2016/01/23033587026_9e0ed23b9b_o-1024x1024.jpg)![Sunset as seen from Graz Airport](https://yatil.net/wp-content/uploads/2016/01/23046115152_6e72c9d50b_o-1024x768.jpg)Then I flew to Vienna (and back) to speak at [DrupalCamp Vienna 2015](https://2015.drupalcamp.at), which was also a very good event with a very diverse audience and very diverse speakers. I also took the opportunity to visit my colleague [Shadi](http://www.w3.org/People/shadi/) and talk face to face about work. Somewhere in between I celebrated my birthday&hellip; ![Vienna Subway Train](https://yatil.net/wp-content/uploads/2016/01/22956546849_204fa52a50_o-1024x768.jpg)## December December was rather uneventful, I made it through without travel of any kind. I was published in the [24ways and Webkrauts advent calendars](/?p=101828) which made me quite happy. Of course we watched [Star Wars: The Force Awakens](http://www.starwars.com/films/star-wars-episode-vii-the-force-awakens). We also took advantage of the good weather over the holidays and hiked a lot through the sun. ![Kettwig M&uuml;hlengraben with the market church](https://yatil.net/wp-content/uploads/2016/01/23400204404_b33d74f474_o-1024x768.jpg)![Mintarder Ruhrtalbr&uuml;cke over the river Ruhr](https://yatil.net/wp-content/uploads/2016/01/23398119123_1df59ac054_o-e1451852639513-768x1024.jpg)![](https://yatil.net/wp-content/uploads/2016/01/24096719616_f2a9799efd_o-e1451852756608-768x1024.jpg)We also played the [Thrash&rsquo;n Roll board game](https://www.kickstarter.com/projects/1655592267/thrashn-roll-board-game), which has been tremendous fun. ![Thrash&rsquo;n Roll board game](https://yatil.net/wp-content/uploads/2016/01/23722501749_412f429614_o-e1451852911633-768x1024.jpg)## Review &amp; Outlook I have the feeling that I have forgotten to mention so many of the little things that happened. 2015 was a really dense year but it was totally worth it. Let&rsquo;s see what 2016 brings.</p> ]]>
    </description>
    </item>
    <item>
    <title>The Incomparable on “Star Wars Episode VII: The Force Awakens”</title>
    <link>https://yatil.net/blog/incomparable-force-awakens</link>
    <guid>https://yatil.net/blog/incomparable-force-awakens</guid>
    <pubDate>Wed, 23 Dec 2015 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>My personal thoughts about &ldquo;The Force Awakens&rdquo; are very well mirrored by the discussion on last week&rsquo;s [The Incomparable, Episode 277: Stormtroopers Are People](https://www.theincomparable.com/theincomparable/277/index.php). The panel consists of Jason Snell, Serenity Caldwell, Dan Moren and the [hypercritical](http://hypercritical.co/about/) John Siracusa. I think that Siracusa&rsquo;s characterization of the movie (around the 2h45 mark) is especially noteworthy, where he states that he managed to judge the movie for its own merits and not to have unfair expectations.</p> ]]>
    </description>
    </item>
    <item>
    <title>Line-On-Sides Headers Reloaded</title>
    <link>https://yatil.net/blog/line-on-sides-headers-reloaded</link>
    <guid>https://yatil.net/blog/line-on-sides-headers-reloaded</guid>
    <pubDate>Sat, 19 Dec 2015 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ I read the [Webkrauts advent calendar article by Jens Grochtdreis](http://webkrauts.de/artikel/2015/ueberschrift-ueber-durchgestrichener-linie) earlier today, it is about headers with lines on the side, like in the article image. (There is a similar [article by Chris Coyier on CSS-Tricks](https://css-tricks.com/line-on-sides-headers/) for English-speaking people out there.) He presents a solution with one or two pseudo-elements and an extra `` in both cases, and has a pretty simple code for it as well. I wondered if there is an even simpler solution, and I believe I have found one that doesn&rsquo;t need the second `` and just uses the pseudo-elements. One warning: the solution depends on [Flexbox](http://caniuse.com/#feat=flexbox), so older browsers are out of luck and you might need some prefixes. But yeah, progressive enhancement! ## Heading &ndash; oh look, no span! ```css h2 { display: flex; align-items: center; color: rebeccapurple; } h2::before, h2::after { flex: 1; height: 3px; content: &#039;&#039;; background-color: currentColor; } h2::before { margin-right: 10px; } h2::after { margin-left: 10px; } ``` We define the heading as a flex container, `align-items` centers the pseudo-elements. The `::before` and `::after` pseudo-elements are set to the height that defines the width of the line. Using `flex: 1` distributes the pseudo-elements evenly, and as they are before and after the text, they push it to the center. Margins help to have a gap between the text and the lines. To add the left and right variants, these two &ldquo;modifier classes&rdquo; (also known as layout classes) can be defined: ```css .left-aligned::before { flex: 0; margin-right: 0; } .right-aligned::after { flex: 0; margin-left: 0; } ``` Voil&agrave;! The effect works perfectly, is scalable and works when you don&rsquo;t have tight control over the HTML, such as when you get output from a CMS WYSIWYG editor. You can play with the code in the following CodePen: <p>See the Pen <a href="https://codepen.io/yatil/pen/RraBxW" rel="noreferrer"> Line-On-Sides Headers with Flexbox</a> by Eric Eggert (<a href="https://codepen.io/yatil" rel="noreferrer">@yatil</a>) on <a href="https://codepen.io" rel="noreferrer">CodePen</a>.</p> See the Pen [Line-On-Sides Headers with Flexbox](http://codepen.io/yatil/pen/RraBxW/) by Eric Eggert ([@yatil](http://codepen.io/yatil)) on [CodePen](http://codepen.io). ## Addendum Of course, while writing this article, [Gunnar Bittersman](http://bittersmann.de/) had already posted the [Flexbox approach to the article comments](http://webkrauts.de/artikel/2015/ueberschrift-ueber-durchgestrichener-linie#comment-5255). He knows everything. But while reading the comments, the topic of more words per line came up and how the solution looks when there are more lines involved. Turns out: Not too good. The lines shrink to 0 and the only thing you see is the margin. Flexbox to the rescue. Again! The `flex` shorthand can take the values of three other properties: `flex-grow`, `flex-shrink`, and `flex-basis`. If we set `flex-basis` to `20%`, this is the default width of the element. `flex-shrink` is set to `0` to avoid shrinking below those `20%` but the `flex-grow` is set to `1` to allow growing larger than `20%`: ```css h2:before, h2:after { flex: 1 0 20%; height: 3px; content: &#039;&#039;; background-color: currentColor; } ``` And a CodePen for you to play around with this solution: <p>See the Pen <a href="https://codepen.io/yatil/pen/NxNejB" rel="noreferrer"> Line-On-Sides Headers with Flexbox and minimal lines</a> by Eric Eggert (<a href="https://codepen.io/yatil" rel="noreferrer">@yatil</a>) on <a href="https://codepen.io" rel="noreferrer">CodePen</a>.</p> See the Pen [Line-On-Sides Headers with Flexbox and minimal lines](http://codepen.io/yatil/pen/NxNejB/) by Eric Eggert ([@yatil](http://codepen.io/yatil)) on [CodePen](http://codepen.io) And here is another example. This time we use `border-image` and a gradient around the heading: <p>See the Pen <a href="https://codepen.io/yatil/pen/VeaoMP" rel="noreferrer"> Line-On-Sides Headers with Flexbox and border images</a> by Eric Eggert (<a href="https://codepen.io/yatil" rel="noreferrer">@yatil</a>) on <a href="https://codepen.io" rel="noreferrer">CodePen</a>.</p> See the Pen [Line-On-Sides Headers with Flexbox and border images](http://codepen.io/yatil/pen/VeaoMP/) by Eric Eggert ([@yatil](http://codepen.io/yatil)) on [CodePen](http://codepen.io). ]]>
    </description>
    </item>
    <item>
    <title>On 24ways & Webkrauts advent calendars</title>
    <link>https://yatil.net/blog/advent-2015</link>
    <guid>https://yatil.net/blog/advent-2015</guid>
    <pubDate>Thu, 17 Dec 2015 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>I was asked to write an article for 24ways.org, the well known web advent calendar, this year. It was published today! Hop over and read about [The Accessibility Mindset](https://24ways.org/2015/the-accessibility-mindset/). Thanks for all the good work behind the scene, [Drew](http://allinthehead.com/), [Brian](http://suda.co.uk/), [Anna](http://maban.co.uk/), and [Owen](http://fullcreammilk.co.uk/)! If you prefer to read the article in German, don&rsquo;t shy away and see [Accessibility im Sinn](http://webkrauts.de/artikel/2015/accessibility-im-sinn), published on the Webkrauts Adventskalender. Thanks to [Matthias](http://yellowled.de), [Jens](http://grochtdreis.de), [Nicolai](http://textformer.de), [Kerstin](http://www.barrierefreie-informationskultur.de/), and [Nils](http://pookerart.de) for their continuous efforts to bring those articles to the German speaking audience.</p> ]]>
    </description>
    </item>
    <item>
    <title>Facebook music challenge: Buffy</title>
    <link>https://yatil.net/blog/facebook-music-challenge</link>
    <guid>https://yatil.net/blog/facebook-music-challenge</guid>
    <pubDate>Mon, 07 Dec 2015 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ <p>&gt; &ldquo;The idea is to fill Facebook with music, breaking the monotony of selfies and sensationalism. If you &lsquo;like&rsquo; this post you will be assigned a letter for a musician, band, artist or song for you to post on your timeline with this text.&rdquo; I liked [Sandra&rsquo;s post](https://www.facebook.com/ScreenOrigami/posts/1111049902246990) a few days ago and she assigned the letter &ldquo;B&rdquo; to me. I don&rsquo;t have a lot of music I like and even less music that starts with the letter B. However there is one episode of a TV series I have warm feelings for and that is music related: The musical episode of &ldquo;[**B**uffy, the Vampire Slayer](https://en.wikipedia.org/wiki/Buffy_the_Vampire_Slayer)&rdquo;. It is called &ldquo;[Once more, with feeling](https://en.wikipedia.org/wiki/Once_More,_with_Feeling_%28Buffy_the_Vampire_Slayer%29)&rdquo; and I watched it first when it first aired in October 2002 in Germany. While the rest of the series was dubbed in German, they decided to broadcast the songs of the musical episode in English with German captions. All the actors sung their own parts, and there was also a lot of dancing going on, which made the episode stand out. Wikipedia has a [nice section](https://en.wikipedia.org/wiki/Once_More,_with_Feeling_%28Buffy_the_Vampire_Slayer%29#Music_and_style) on why the episode is so special. In Germany, the episode is available on [Amazon Prime](http://www.amazon.de/gp/product/B00LXOECU6/ref=as_li_tl?ie=UTF8&amp;camp=1638&amp;creative=19454&amp;creativeASIN=B00LXOECU6&amp;linkCode=as2&amp;tag=yatildehomepa-21)\*, but I don&rsquo;t think that the episode is too fascinating without knowledge of the Buffy canon. \*Affiliate link</p> ]]>
    </description>
    </item>
    <item>
    <title>OnceMoreWithFeelingPoster</title>
    <link>https://yatil.net/blog/oncemorewithfeelingposter</link>
    <guid>https://yatil.net/blog/oncemorewithfeelingposter</guid>
    <pubDate>Mon, 07 Dec 2015 00:00:00 +0100</pubDate>
    <description>
    <![CDATA[ ]]>
    </description>
    </item>
    <item>
    <title>Phil Hawksworth – Static Sites Go All Hollywood #fronteers15</title>
    <link>https://yatil.net/blog/phil-hawksworth-static-sites-go-all-hollywood</link>
    <guid>https://yatil.net/blog/phil-hawksworth-static-sites-go-all-hollywood</guid>
    <pubDate>Fri, 09 Oct 2015 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>- Simplicity is not dumbing down. - There is room for creativity even in relatively simple things. - Let&rsquo;s focus on what matters. - Helps to provide the right optimizations for users. - Benefits about static sites - cheaper, simpler hosting - fewer points of failure - fewer vulnerabilities - easier compliance - greater portability - sandboxed environments - attrition avoidance - Credibility of static sites - Just for simple things? That&rsquo;s not the case - Campaign for Obama &ndash; $250 million dollars donated - Static sites perfect for large audiences - baked with jekyll - large audience - rapid iterations - hosted statically - Google project - Content on Github - baked with jekyll - served staticly by google - Reduced risk - Google year in search - Annual retrospective - large audience - infrequently updated - long life - 40 stories, 52 languages - 2.6B social impressions - content abstracted - baked with &ldquo;goro&rdquo; - served staticly by google - Static sites are already mainstream - Enablers: - Front end tooling is a key part - Generators and templating -&gt; staticsitegenerators.net - Style guides as a side effect&hellip; as an artifact&hellip; as a process - Styleguide driven development - How to have a style gide as a secondary output for your site - Modules + Templates + Content built site through generator - Style guide also built there - Unless a style guide is part of your built, it is just more documentation to maintain - Automation - Gulp grunt, brunch, belch, burp, cough, sneeze ;-) - deploy faster, safer - update faster - feels dynamic - surge is good tool to do this deploy - We need a developer mindset and people want to manage content themselves. - traditional web development is very complex with dev, staging and live stages - also server side logic - Static sites are simpler - Dev environment: Site generator &amp; build tool -&gt; Production -&gt; User - Content as a service that cares about the admin interface. - Additionally you could use deployment as a service - Is that simplifying?! - It&rsquo;s about shifting/outsourcing complexity. Distance between user and complecity. - Source content at build time, not execution time - Jekyll data - [contentful](https://www.contentful.com) is Content Management as a Service - Hosted CMS interface - Exposes content via an api - Supports translations - user roles &amp; management - Environments &amp; versions - Decouples content administration from the production invironment - integrates into jekyll: jekyll-contentfull - [roots.cx](http://roots.cx) - [netlify](https://www.netlify.com) for deployment - commit hooks - command line interface - portable configruration, can be in a config file in the repo - notification - control of headers - basic auth - A lot of control - Limitations: - personalization - very very large sites - user generated content - Need to find the best fit for the project - It depends -</p> ]]>
    </description>
    </item>
    <item>
    <title>Rachel Andrew – But what about old browsers?!? #fronteers15</title>
    <link>https://yatil.net/blog/rachel-andrew-but-what-about-old-browsers-fronteers15</link>
    <guid>https://yatil.net/blog/rachel-andrew-but-what-about-old-browsers-fronteers15</guid>
    <pubDate>Fri, 09 Oct 2015 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>- Lots of old techniques out there have been outdated. - Layout methods have not. - Still using the same techniques as we did years ago. - Increasingly we&rsquo;re using frameworks. - Add markup. - CSS processors. - Hopes for layout: - Flexbox - CSS Grid Layout - Box alignment module - Give us source oder separation from visual layout - precise alignment control - relationships to each other - Remember Faux Columns? (2004) - people jumped at display:table; give us a relationship between columns - Separation of content and markup - Separation of source and display - A bit of a failed promise - Need compromises, usually - Flexbox and Grid Layout helps to display items in every order - Default positioning - grid-auto-flow helps to fill gaps maisonette.js style - Kind of scary, especially if you think about accessibility. - Got a lot to learn - Good = Creating the best source with the best markup and then displaying it best for the breakpoint - Bad = So, I don&rsquo;t need to care about the source order - Terrible = Flattening out the source order and do everything using CSS grid and flexbox - Relationship of the items but independent from source order - Control of alignment - Box alignment module level 3 - flexbox alignment to use for other specs - VERTICALLY CENTER ALL THE THINGS! - Distributed alignment - justify-content - align-items - stretch - center - justify-self - align-self - In CSS grid layout - Chrome canary - align-items center in a css grid with repeated columns - instead of stretch - Responsive by default - Flexbox: - flex-grow - flex-shrink - flex-basis - flex shorthand property recommended - flex: 1 1 200px means grow or shrink as you see fit but the optimal width is 200px - - CSS Grid: - fr (fraction) unit &ndash; similar to flex grow - grid-template-columns: 1fr, 1fr, 1fr -&gt; same width - grid-template-columns: 600px, 1fr, 1fr -&gt; remaining space is shared between column 2 &amp; 3 - grid-template-areas -&gt; ASCI Art building of layouts - But what about old browsers?! I can&rsquo;t use that stuff! - We must to cater for the web of today, but we need to look forward and use progressive enhancement. - No layout is not an option. - Need to think about feature support differently in a world of evergreen browsers. - Business case: How long will the website that you build right now be active, the site will be updated when users upgrade. - CSS Grid Layout - Early implementation in IE10,11 &amp; edge - Current spec in Chrome, Opera (experimental flag) - Prefixed in Webkit Nightlies - Partial in Firefox Nightly - In near future - High priority on edge - This is not all or nothing. You can begin with small UI elements, use the modern methods for finessing - Flexbox in the real world: [Zoe M. Gillenwater Enhancing Responsiveness With Flexbox](https://www.youtube.com/watch?v=_98SE8WUvLk) - Check stats and compare feature support, for example that is supported by gaug.es - Separate mobile and desktop stats &ndash; mobile might be more advanced - Use such tools for prototyping &ndash; you learn how they work, and you immediately can work with it while it is developed - You can give feedback to the Working group and it has an effect and they get implemented. - It is too late to comment when the things are out in browsers. If you want to be involved, do it now. - [gridbyexample.com](http://gridbyexample.com) - Slides &amp; more information:</p> ]]>
    </description>
    </item>
    <item>
    <title>Remy Sharp – The Art of Debugging #fronteers15</title>
    <link>https://yatil.net/blog/remy-sharp-the-art-of-debugging-fronteers15</link>
    <guid>https://yatil.net/blog/remy-sharp-the-art-of-debugging-fronteers15</guid>
    <pubDate>Fri, 09 Oct 2015 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>- Personal debugging workflow - Don&rsquo;t Write Bugs! - Although&hellip; - the opposite is true - the artifact of writing software is fixing bugs - gives you experience - no silver bullet to debugging - you need to pick and chose the right tools - debugging helps you to identify issues earlier - Disclaimer 1: Frameworks? - Don&rsquo;t have a project that required frameworks. - Tools I use are not for frameworks - For react: It brings it own debugging tool, because it has to as it is so abstract. - Disclaimer 2: I rarely do x-browser testing - Current work is not requiring it, mostly doing JavaScript - The art of debugging (says wikipedia) - The parts to debugging 1. Replicate - Hardest and most important part - Bug report: Saving doesn&rsquo;t work. - I know saving works. - But it doesn&rsquo;t work for them. - Wontfix is no solution. - Litmus-Test to see if it happens at the URL that the user is using. - Likely: Series of event happens to the bug - Debugging is the end of the process, it should have been caught in tests, right?! - Caching and browser add-ons mess with pages 2. Isolate - Pair down to the simplest form where the bug occurs 3. Eliminate - That makes fixing the bug much easier - But what is if you have a Heisenburg bug? (A bug that changes its shape while you&rsquo;re debugging.) - Clean the environment as much as possible - State - All debugging comes out of state. - Two types: passive state - What happens? - Literally looking how the canvas was built - Memory history. - Interactive state - Fixing in the browser to not lose context - no back and forth to the editor and back - The stack - Two methods: - Inside out - When something changes and you have no idea where in the stack is the error introduced. - Outside in - You know where the bug is and you go in and edit the file. - You can import your local source in the Chrome devtools debugger and link it to the running files - Timeline mode is also useful to find performance bugs - DOM breakpoints allow you to stop the script when an element changes and shows the code snippet - Debug memory leaks with profiles. The memory should be on the level where it started. Snapshot help - Red background in profiles: Garbage collection didn&rsquo;t work out right. - There is no silver bullet!</p> ]]>
    </description>
    </item>
    <item>
    <title>Sally Jenkinson – An Introduction to Open Data #fronteers15</title>
    <link>https://yatil.net/blog/sally-jenkinson-an-introduction-to-open-data-fronteers15</link>
    <guid>https://yatil.net/blog/sally-jenkinson-an-introduction-to-open-data-fronteers15</guid>
    <pubDate>Fri, 09 Oct 2015 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>- Open data - Big data buzzwords - 90% of the world&rsquo;s data was created in the last 2 years - Several ways to use data in your work - Tea tracker for personal tea consumption - Data is often restricted - Only certain data is displayed - Can&rsquo;t use data freely - restricted - You sometimes can&rsquo;t get your hand on the data that you want - Data sharing - Restrictive data sharing to restricted set of people - Open data means to not be confined to the data provider&rsquo;s conditions - Opendefinition.org - Open data and content can be freely used, modified, and shared by anyone for any purpose. - Data spectrum: http://theodi.org/data-spectrum - Re-publish - Derive new content or data - make money by selling products - charge a fee for access - data needs to be open, but the delivery access (API) can be restricted - Licensing similar to the known content licence, not just Creative comments, for example Open Government Licence or OS Open Licence ect. - Dbpedia &ndash; Wikipedia data in RDF - Data.gov.uk - MusicBrainz - plaidplug.com - [awesome-public-datasets](https://github.com/caesar0301/awesome-public-datasets) - Consuming open data is pretty easy - data is not special - download periodically or via API - Sometimes data is released as PDF, &ldquo;openly&rdquo; - d3js.org &ndash; Data-Driven Documents - Example: Mark up fire hydrant violations in NY, top grossing hydrant was actually very confusing for parkers, almost a trap. Reaction from administration: Make clear where not to park. - open data -&gt; may generate 3 million dollars - Transparency - Not only access - but also analyze and visualize - combine with other data - freely to use - open by default would save so much time - Data and User Experience - mapumental.com answers the time to work in minutes instead of miles. - How accessible is our nearest school, post office or hospital? - How quickly could fire engines reach a given postcode? - Improved efficientcy, effectiveness, measure impact - Improved products - Not just digital, also in the real world, for example as art - Internet of things - opensensors.io - dougmccune.com &ndash; Artistic projects based on open data - stevanie posavec - Linked data - timbl doesn&rsquo;t only want us to share documents but also the data - new knowledge from combined data sources and patterns - Misinterpretation: - Some sites don&rsquo;t allow it because they don&rsquo;t want to have their data in the wrong context - spurious-corelations - Combining data sets &amp; licenses - Publishing open data - People use it in ways you never dreamt of - Step one: Identification &amp; planning - Clear licensing &amp; usage information - Structure &amp; quality - A plan for support &ndash; data needs to be maintained - Accuracy - Step two: transform and clean data - data privacy &amp; the individul - openrefine - cleansheet - Step three: Sharing - http://5stardata.info/en/ - think about your data from the beginning - https://certificates.theodi.org - In conclusion: - We collect and share data and it is a component to the web, just like documents. - Slides:</p> ]]>
    </description>
    </item>
    <item>
    <title>Soledad Penadés – Hands-On Web Audio #fronteers15</title>
    <link>https://yatil.net/blog/soledad-penades-hands-on-web-audio-fronteers15</link>
    <guid>https://yatil.net/blog/soledad-penades-hands-on-web-audio-fronteers15</guid>
    <pubDate>Fri, 09 Oct 2015 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>- You can generate audio using JavaScript - Tiny new language - small vocabulary - few grammar rules - couple of ideoms - AudioContext - like canvas - toolbox - instance factory - Nodes Taxonomy - Generation - Manipulation - Analysis - Audio Context as audio graph - Modular routing - Sound modulation - connect() helps you to modulate from one node to another - Gain nodes - &hellip; - Don&rsquo;t keep nodes - stop and disconnect sound sources - load binary data - decode into a buffer - create buffer source and use it - you can even bend the pitch of the audio live - place sounds in 2D space &ndash; StereoPanner - Place to left change pan attribute to -1, to right to +1 - For 3D space, for example in Games, use Panner - update position for accurate placement - tries to be realistically physical, so the unit is meters - BiquadFilter - Let certain frequencies pass - Analyser for Visuals - Real time frequency and time-domain information - Getting creative - Real time input + processing - Get user media + echoing - Web audio is minimal and powerful - many built-in nodes - one graph, simple connect rules - sound generation, processing and analysis - great for games, VR and interactive applications - it&rsquo;s also fun! - Web audio meetups in London &amp; Berlin - Slides: [github.com/sole/howa](http://github.com/sole/howa)</p> ]]>
    </description>
    </item>
    <item>
    <title>Wes Bos – Modern Workflow + Tooling for Front-end Developers #fronteers15</title>
    <link>https://yatil.net/blog/wes-bos-modern-workflow-tooling-for-front-end-developers</link>
    <guid>https://yatil.net/blog/wes-bos-modern-workflow-tooling-for-front-end-developers</guid>
    <pubDate>Fri, 09 Oct 2015 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>- Lets compare tooling to plumbing - new type of fitting: Sharkbite - Lego for plumbing - snaps together instantly - can connect any material to copper - can be redone - less prone to leaks - more expensive - less error prone - plumbers: too expensive, too new - changes the industry competely. - Some people write off tooling as over-engeneering, others see the benefits - Fine line between tooling for tooling&rsquo;s sake and tooling to get work done - Let&rsquo;s be smart about the tools that we&rsquo;re using - Investments need to pay beck - Overwhelmed? Crying? 😭 - This talk: 😭-&gt; 😃 - Build tools: - biggest barrier to entry - a lot - what are they for - compiling + converting styles - concatenation - test running - deployment - anything, really - two big: grunt, gulp - npm as a built system by using the CLI commands directly using scripts in the package.js, takes bash - But probably best used with simple sites - hard to maintain - Webpack - javascript modules focused - gulp meets browserfy - bit of a hard to learn api - react community likes it - What should I use? - Pick one. Whatever is best for you. - Personally like gulp - built speed - packages available - easy to understand and author - overall industry acceptance - 47% use gulp, 20% don&rsquo;t use anything - Sass brought people to the built train - Performance - Critical: First paint is important - Purify: Removes unused CSS - Looks at JS and CSS and finds unused CSS - Much smaller CSS files - ImageMin: common interface to 17 different image compression libraries - Recommendation: MOZJPEG - Uglify.js: Minifies, compresses and mangles code - Dependency + Module Management - We&rsquo;re seeing a huge shift on how we manage frontend dependencies - Problem: Many scripts, duplicated, different versions of the same file - The solution: Modules for javascript - How does it work 1. Install your libraries, ex. npm/bower install jquery 2. Write your code, ex. var$ = require(&#039;jquery&#039;); or in IE6: import $ from jquery 3. Compile into a single or multiple bundles - Browsify - simple, quickest setup - WebPack - handles css - JSPM - client side, close to JS spec 4. Stop?! What about Gulp/Grunt? - They are task runners, one of the tasks will be &ldquo;bundle javascript&rdquo;, they can call those bundlers. - Small modules that do one thing, and one thing well - Only need ajax, npm install fetch - Pick and chose from lodash - Is coded in a way that you can access all methods individually, exports only that module to use - NPM or Bower? - Libraries, similar - NPM for everything! - Ecosystems coming soon to NPM, helps categorize the modules - The Future - JS + CSS evolve rapidly - Don&rsquo;t need to wait with future code today - Wasn&rsquo;t possible before - JavaScipt - ES6/7/Next - Arrow functions - let and const for variable declarations - template strings - many more - Babel - Allows you to write IE6 code but will then compile it to code that will work today. - gulp-babel - What about new language features? - polyfillable require babel/polyfill - CSS4 - Everyone 😍 SASS, comes to browser - Nesting - Scoping - Variables - CSSnext allows to write in CSS4 and compiles to CSS3 - part of postCSS ecosystem - quantityQueries helps to work with those, also a postCSS plugin - Workflow treats - Browsersync &ndash; like live reload but actually works - Instant reload - Includes server with cert for easy local HTTPS - Proxies existing applications/servers: Wordpess, ruby, python - Exposes server via local IP, can test on multiple devices - Syncs clicks, submits, scrolls - MAGIC - Sourcemaps - Code goes through several transforms before it is in the browser - If there is an error that needs to be traced back - Sourcemaps is standardized - Can be used with a lot of plugins - Tooling is extremely important - Everyone should have built process - Sky is the limit - Better code</p> ]]>
    </description>
    </item>
    <item>
    <title>Primate – Walking the Tightrope Between Mediocrity and Bankruptcy #fronteers15</title>
    <link>https://yatil.net/blog/primate-walking-the-tightrope-between-mediocrity-and-bankruptcy-fronteers15</link>
    <guid>https://yatil.net/blog/primate-walking-the-tightrope-between-mediocrity-and-bankruptcy-fronteers15</guid>
    <pubDate>Thu, 08 Oct 2015 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>- Create a company that is not a web dev dactories - Challenge: How to do creative work and still get paid. - Clients &amp; 💩 - Getting work: If you don&rsquo;t have clients, there&rsquo;s no business. - You need to find good clients. - Really challenging. How to find good clients? - You need to balance two things: - Build relationships - Tedious pitching - Love all(most) all clients, fired one client &ndash; this is tough - You have certain views of how your clients should be. - But sometimes you wake up and the client is not as easy to work with as you imagine. - Pitching is fun, but the idea is crazy. - You have to stand in front of someone and present your work, often unpaid. - You need to balance the time. - You don&rsquo;t want to be under or over prepared. - Example: Pitched for hotel chain in brussels, had good feeling, well prepared. Budget 130.000&euro; - About 6 or 7 other agencies did also pitch, didn&rsquo;t win. Client went with a agency they have had a personal connection with. - Best client that just wanted to have a talk about the project approach. - Only payed once for a pitch. - Project management - Working in agile way: not directly building the car, but building a bike first and then a motorcycle - People don&rsquo;t read specs, don&rsquo;t do too much of them. - Agile is tricky. - Bad experience, clients don&rsquo;t understand what the concept of agile is. - Clients often do not prioritize their features properly. - They use sprintr + basecamp together with transparency and communication. Do more work and less management. - **Be honest.** - Design &amp; 💩 - Design is about communicating an idea, the user journey. - Not talking about implementation. - Design should be brief but an idea needs to be conveyed. - Struggle with &ldquo;content&rdquo; and &ldquo;best practice&rdquo; - Content - Really, really important - Designers and content creators working together in print to deliver a proper design for the content. - Nowadays templates are designed without knowing what the actual content is, the content is added later. - This idea of designing distracts from what the developer should actually think about. - Atomic design is the idea to start with the small things. But that is just design assets, there is no real creativity in there. - Of course having a designer for every article is too expensive for most projects. - Content needs to play a central role in the design. - Avoid the handshake of death. - Copywriting can make it better: &ldquo;We don&rsquo;t do secret handshakes&rdquo; - This is missing from online at the moment. - Copy text can be very simple and dull, for example Synergy. An image of a bee and a flower could help to enforce the message. - Sometimes things are like rules &ndash; Don&rsquo;t define line-height in pixels, don&rsquo;t do this and that. - But some times you need to do that stuff anyway, it depends on your context. - For example the smartphone is like a huge carousel. - F\*\*k the rules. Responsibly. - If you think something is best for the audience, do it. - Create for content. - Development &amp; 💩 - Design &ndash; Developing relationship &ldquo;interesting&rdquo;. - We need to deliver projects in time and budget and &ndash; like architects &ndash; need to work in the boundaries of what is necessary. - Client&rsquo;s don&lsquo;t care about a certain frontend tech. - With technology, you have to move fast to keep up with the quick evolving technology. - Massive explosion of new tools in the last year. - To survive in an ever-changing environment you have to move faster than everyone else. - Developers have to think and understand everything: designers, the business and clients. - Balancing between being &ldquo;Jack of all trades&rdquo; and being &ldquo;the master of one&rdquo; - Tech is disposable after a few years. Have the courage to dump things that don&rsquo;t work anymore. - Everyone fails at something. - Embrace progress - Stakes are getting higher, projects get bigger. - What&rsquo;s the point to keep that balance. - The journey is more important than the destination. - Aim: To have not a factory but a family. - Work affects our families and the other way around. So a good work environment is really needed to be happy.</p> ]]>
    </description>
    </item>
    <item>
    <title>Scott Jehl — Delivering Responsibly #fronteers15</title>
    <link>https://yatil.net/blog/scott-jehl-delivering-responsibly-fronteers15</link>
    <guid>https://yatil.net/blog/scott-jehl-delivering-responsibly-fronteers15</guid>
    <pubDate>Thu, 08 Oct 2015 00:00:00 +0200</pubDate>
    <description>
    <![CDATA[ <p>- The web is a hostile environment. &ldquo;It is a continuum.&rdquo; (Jeremy Keith) - Viewport sizes have become fluid, and they don&rsquo;t need to be the same as the device&rsquo;s screen size. - Now we need to difference between simple and enhanced use cases. - Many people use proxy browsers like Opera Mini &ndash; that often breaks JavaScript and doesn&rsquo;t support icon fonts. - There are so many input and output methods &ndash; and you can&rsquo;t deduct from the screen size the input method, touch is now everywhere. - 2013 60% of the people on the web were on sub-3G (Edge). - In Western Europe, still 60% on 3G, LTE takes a while to come up to speed, especially outside of Europe and the US. - Google services like fonts, translations and hosted JavaScript are 100% blocked in China. - We ususally don&rsquo;t think as progressive enhancement as for people who disable JavaScript, but there are Content and Ad blockers that block requests and JavaScript. JavaScript is still enabled, so won&rsquo;t work. Also @font-face can be blocked now very easily. - People won&rsquo;t think they did something wrong when the site doesn&rsquo;t work because of those blockers. - These factors don&rsquo;t make our jobs harder, **it is our job**. - Not just a matter of empathy. Access is our job. - Some of the JS frameworks of today rely on JavaScript. Often the content of the site is perfectly useful without JavaScript, yet we built on the web&rsquo;s most fragile layer. - And we &ndash; as developers &ndash; work under optimal conditions, as we need good connection if we want to work efficiently. - Sites grow all the time, the avg. page weight is over 2 MB.[ http://whatdoesmysitecost.com](http://whatdoesmysitecost.com) - We need to stop developing for the best cases but for the real world, for example by setting an artificial low connection speed. - But we can&rsquo;t simulate everything, we need functional testing on real devices and using tools. Everyone needs a device lab. - We need to build with resilience. - We have developed tools that helped us to polyfill our lacking infrastructure. - But there are structure changes, for example http2 &ndash; some of our best practices are not needed with it: - Concatination - Spriting - Inclining CSS,JS, Images - Still important: - Optimizing files - Avoid unnecessary requests - HTTP2 doesn&rsquo;t work with all browsers, but the support on browsers is quite good, but not so good on the servers. - We need to prioritize things for today and tomorrow. - Optimize - Minify - Gzip - Offer different versions of the images, based on the needs in the site. - The new image standards (srcset, picture) are working in browsers &ndash; including built-in fallbacks. - Client hints is a new kind of header where the server gets to know some things from the browser, for example viewport-width, width and dpr. - Server can make an informed decision on what file to send out. - Optimizing the critical rendering pipeline. - Latency is responsible for bad performance but not bandwidth. - We want to minimize roundtrips &ndash; and one way to do it is to carry more at each request. - Identify and inline the CSS necessary to render above the fold content. - But there is no fold, yet pages are viewed from top to bottom, so it makes sense to render the top of the page first. - There are tools to identify the critical CSS &ndash; e.g. - Do this for every template, identifies the CSS, ready to inline that CSS. - Then render the full css, but a usual link doesn&rsquo;t work as browsers block rendering. to the rescue &ndash; which is unsupported right now. - Need to be polyfilled, so we need to inline critical javascript as well. - It makes sense to have an async css and script loader, like loadJS &ndash; Native support for async and defer work well. But the script loader allows us to see if we really want to load the script at all - Cutting the mustard: Only load javascript if it is useful to enhance. - What changes with HTTP2? - Inlining is not needed anymore. When the browser requests an HTML, the server can say oh, and here is the critical CSS, too. - Major perceived performance issue is font loading - Most browsers hide the text until the font is loaded. - 30s in iOS, 3s in other browsers until the fallback text appears. - Alternative using a font loader. Start with a fallback font and there will be a class to the body that is set once the font is loaded, so no you get a progressive font rendering. - Coming soon: font-display: swap; (used to be font-rendering &ndash; name still in discussion) - There are also other options that might suit other people more, for example don&rsquo;t use custom font at all unless it is in cache. - Case study: Wired article dropped 9s on 3G &ndash; and that is just with HTTP1. - There is a lot to think about. We can build broadly accessible websites even if we want to leverage the latest techniques.</p> ]]>
    </description>
    </item>
    </channel>
    </rss>