HNHacker News
TopNewBestAskShowJobs

jscholes

1,114 karma · joined July 19, 2015

I'm James Scholes, a web/app accessibility and usability testing engineer. Email: james@jamesscholes.com
submissionscomments
jscholes··on Annoying website features I face as a blind person
> But I’m going to put that link to the full diagram in the figcaption, because I want it to be there for sighted users also. Now what?

We're now entering the realm of what represents a caption and what doesn't. Given my earlier point that the figcaption text is mapped as the accessible name or description for screen reader users, interactive elements inside the caption should be avoided because they don't make sense when spoken inside a flattened, plain text string. So to answer the specific question, "now what?" Don't put the link inside the figcaption, put it inside the <figure> as a sibling of the image (or inside a container which is a sibling of the image).

To look at it another way: I might be inclined to say that caption text should make sense when presented with the accompanying image in a non-web context (e.g. a printout). This is why captions are often used for credit lines, attribution info, etc.

> I’m not convinced that there is a properly correct solution here.

Without a more specific use case, it's difficult to make a recommendation. However, I will say one thing that I've found to be universally true: the power of the image description is often underrated. I've had many conversations with designers, developers, content editors et al, where the assertion has been made that there's not much to describe in a particular image. And then as a blind user, I have multiple questions about what it shows, the answers to which can make it into the descriptive text.

This is often a lightbulb moment for many, as they realise that actually, all those details I asked about were subconsciously filled in/processed, and they just didn't think about them. Data is the same.

jscholes··on Annoying website features I face as a blind person
> For a concrete case, let’s say you have a bar chart in a <figure> with the figcaption “Figure 3: results of Benchmark Q, showing X to be 40% faster than Y.” What alt attribute would you give the <img src=benchmark-results.svg>?

In this case, the bar chart most likely should be accompanied by an accessible textual alternative. For example, a link to a textual version/download of the results, a disclosure button you can hit to view a textual description, a table, whatever. If that is included, the img itself can be marked decorative, because the figure contains an accessible body element as well as the caption. For me, that would most likely be enough to pass my semantic and accessibility requirements.

On the other hand, if you're not going to provide that or feel that the caption already sufficiently describes the data, you could provide a straight visual description of the image for the img's alt. For example, which data is shown on which axis? Not all screen reader users will find that helpful, but there are two things to keep in mind:

1. If a screen reader user moves into the figure with certain keystrokes, the text of the figcaption will be announced as the figure's accessible name or description. So the presence of alt text need not in any way block them from getting to the data.

2. Are you catering for all possible screen-reader-using audiences? Okay, if I'm reading an article about the benchmarks between two databases or something on a blog, it's more personal/for work and I just want the data. But what if I'm in a classroom setting and need to tell my students how to read this chart? If I don't know anything about the layout of the data, I can't do it.

jscholes··on Annoying website features I face as a blind person
> I test my own creations on Linux with Orca

Thank you for carrying out testing. I should note that, unlike the probable majority of HN readers, MacOS and Linux are nowhere near as popular among blind users as Windows. MacOS has a decent market share (around 10-12 percent or so), but the number of screen reader users on Linux is almost insignificant.

jscholes··on Annoying website features I face as a blind person
> What is the most used/popular desktop (web) screen reader out there?

On Windows, JAWS[1] and NVDA[2] are the most popular, the latter of which is open source. On MacOS, the only choice for GUIs is VoiceOver[3].

[1] https://www.freedomscientific.com/products/software/jaws/ [2] https://www.nvaccess.org [3] https://www.apple.com/voiceover/info/guide/_1121.html

jscholes··on Annoying website features I face as a blind person
> If I were blind, I would try to do as much of my interaction with the web as possible in "edbrowse", a browser designed and written by a blind programmer:

I beg you, please don't test your website for accessibility by using edbrowse.

jscholes··on Annoying website features I face as a blind person
> Or potentially aria-role="presentation"

There is no such attribute as "aria-role", only the single word "role".

> aria-hidden="true" will make the element completely invisible to the screen reader software, whereas setting role will tell the screen reader "hey there is something here but it's job is purely aesthetic", and then the screen reader can determine what it wants to do with it.

This is accurate, but you should also ask yourself about design intent if you have the knowledge to do so (or can consult with someone who does). If you have decided that something should be hidden from a screen reader user, and have verified that your intentions are correct, aria-hidden is the way to go. Many accessibility bugs are caused by people using something like role="presentation" because they wanted to leave it up to the browser and/or screen reader to make a decision. The problem is, those software decisions are often wrong and inconsistent, leading to support requests and hard-to-track-down bugs.

Note: the above applies across the board, not just to images. The correct way to mark an image as decorative is via alt="" on the img, and you should be careful applying aria-hidden to anything as it can be extremely destructive. No ARIA is better than bad ARIA.

jscholes··on Annoying website features I face as a blind person
> Hiding the image in this way because it has been fully described is thus perfectly reasonable.

I disagree as a screen reader user. To be clear, I completely support your assertions around describing complex imagery, e.g. the alt text is a completely inappropriate place to describe a graph, chart, etc. But a figcaption with no accompanying figure content is semantically wrong. If you have a figure with a textual description or semantic representation of the data displayed in an image, e.g. a table behind a disclosure button, then fine: the figure body is meaningful, as is the caption. But if I'm testing a site and find cases of figures where the only screen-reader-accessible element is the figcaption, that is an antipattern that I will insist be addressed.

jscholes··on Annoying website features I face as a blind person
> I would prefer to add role="presentation" instead.

This doesn't always do what you think it does. The presentation role is for negating any accessible role implied by the use of a particular HTML element, not for hiding it entirely. For example, you've used an unordered list for appearance/styling, but it only contains one child item. In those circumstances, a list of one thing is semantically meaningless and role="presentation" on the ul is completely appropriate.

The fact that applying the presentation to an img removes it from the page for screen reader users shouldn't be relied upon.

jscholes··on Annoying website features I face as a blind person
> What we need in web pages is a way to mark an image as purely decorative

Setting the alt attribute to an empty string already accomplishes this task. If you find there are cases where it shouldn't, as well as reporting it as a bug to the appropriate browser and/or screen reader vendor, you can use aria-hidden="true" on the img. This is useful e.g. for inline SVGs which don't have an alt attribute.

jscholes··on Annoying website features I face as a blind person
> Of course a stock image in an article is not really important and may not add much value

Not sure if anybody has mentioned this, but a super common case is that stock and other images (photos especially) require attribution. Working in the digital accessibility space, I see a huge number of examples of an image being marked as decorative (or worse, being implemented as a background image in the CSS) with an inline credit line. So as a screen reader user, I'm reading an article and keep spotting these notices all over the place, with no hint of what they accompany. In those cases, the image must have a description, even if it is thought that it doesn't add value.

jscholes··on Annoying website features I face as a blind person
> "The dam burst on Saturday, inundating the local town. Photo of burst dam with rubble and uprooted trees at the side. The mayor said that they were lucky nobody was injured..."

In your example, the "rubble and uprooted trees" aren't mentioned in the surrounding text. So this image description, while a bit short and vague, does add something.

jscholes··on Annoying website features I face as a blind person
> But in any case, provide some alt text! If it just says "divider", "logo" or "decoration", that is still better than nothing for someone who can't see it at all.

This is a generalisation and one that many screen reader users wouldn't agree with. People who can only read through audio or braille are already facing certain disadvantages, such as not being able to quickly scan a piece of content in the same way visual readers can. Polluting the content with meaningless alternative text makes for an overly verbose user experience.

> Empty alt text means no image description. Think about that. You are blind. Your Screen reader tells you "image", nothing more.

This is factually incorrect. Using an empty string as the alt attribute on an image is the correct way to mark an image as decorative, and as such a screen reader user will never be informed about its presence. If the alt attribute is omitted entirely, that's when screen readers try to guess by announcing the filename and/or URL (or on iOS, actually trying to perform object recognition on its contents).

jscholes··on The harmful impact of Audible-exclusive audiobooks
> It seems faster/easier just to pirate from the get go.

Others have pointed out that authors won't get paid that way. But I also disagree that it is faster or easier to pirate. First you have to have a decent source (or multiple sources) to search for the books, hope that they are decent enough quality, hope that they have enough peers that you don't have to wait a day to download the book, etc. By contrast, on Audible you press one button to buy and another to download. Even when you take into account any DRM removal, the necessary time and effort are much lower.

jscholes··on The harmful impact of Audible-exclusive audiobooks
You can use this to get your activation bytes from Audible servers:

https://github.com/inAudible-NG/audible-activator

Or this, to crack the activation bytes in an existing .aax file, offline:

https://github.com/inAudible-NG/tables

Both methods are easy. It's then a case of using FFmpeg with an -activation_bytes parameter to convert to MP3 or whatever (or just remux into an M4A/M4B without transcoding). Tutorial here:

https://www.kylepiira.com/2019/05/12/how-to-break-audible-dr...

There are a bunch of other tools (both commercial and free) which use the above techniques but add either a nice CLI or GUI. The original was Inaudible itself, which can be found on your favourite torrenting site. Alternatively you can grab it from here, but I'm not sure how up-to-date it is:

https://github.com/rmcrackan/inAudible

jscholes··on Americans Aren’t Making Babies, and That’s Bad for the Economy
Could you provide more details on this (Spanish sources are fine)? I'm living in Mexico and not aware of it.
jscholes··on Edge install undermines Microsoft’s argument that automatic updates are critical
> I think the problem here is that they installed it without user consent.

That depends. The post doesn't clarify whether Edge was already installed in its legacy incarnation. If so, and they received an update, that's not ""installing without user consent".

I recently installed the Chromium version of Edge manually and didn't encounter any of this behaviour. It's a shame that Microsoft are doing something Windows Update-specific, although maybe people who are the most averse to this behaviour are the more technical crowd who will have already grabbed an installer for themselves anyway?

jscholes··on iMessage for Windows: A labor of love that will never see light of day (2018)
I feel like there was probably a way to publish this. Maybe the author couldn't brand it with their name, logo and other identifying information, and clearly that's a compromise they weren't comfortable with. That is, of course, their choice, but the large number of screenshots of the resulting application felt like a bit much. This work could increase accessibility to iMessage e.g. for those with physical or other disabilities were there a way to use it, and the post just ended up feeling like an exercise in navel-gazing to me.
jscholes··on Rclone – Sync files and directories to many cloud storage providers
For only 100GB, DigitalOcean Spaces has 250GB for $5 per month AFAIK. Includes some bandwidth also. It's S3-compatible and I can vouch that it does work with rclone as I use the two together several times per week.
jscholes··on Rclone – Sync files and directories to many cloud storage providers
> even recommended it to some customers for data migration purposes when I worked at Dropbox

Hah, I love this. I was having Dropbox sync issues a while back which support couldn't help with, and used rclone to prod and poke the state of my files and folders back into a state the DB client wouldn't choke on.

jscholes··on Configs suck? Try a real programming language
> exec(Path('config.py').read_text(), config)

I'm guessing that this is in place of just importing the config module, because of this line:

> You can even import the very package you're configuring.

Which sounds like a recipe for circular import disaster.

jscholes··on Client IP address disclosure in smtp.gmail.com
April Fool's was yesterday...
jscholes··on Azure cracks, AWS strong: Covid-19 stress-tests the cloud
Yeah, really weird statement for the author to make, particularly given that at the top of the very same section they list a bunch of cloud-based MS products.
jscholes··on Tell HN: Zoom truncates passwords to 32 chars
Oh absolutely. I'm not trying to downplay the serious nature of the vulnerability, particularly because it also lead to the possibility of remote code execution. Just want to keep the record straight that at no point did this vulnerability allow people to actively spy on your legitimate meetings.
jscholes··on Tell HN: Zoom truncates passwords to 32 chars
> unauthenticated web server bound to localhost so that any website could make requests to it and get the video stream

I read the linked article. At no point did it (or as far as I can recall any of the coverage at the time) say that the video stream data could be accessed via the local web server. The problem was already bad; no need to make spurious claims to make it worse.

jscholes··on Zoom’s Use of Facebook’s SDK in iOS Client
So did they just... remove Facebook login? Doesn't seem that likely. Maybe the FB SDK has some flags you can set.
jscholes··on Zoom needs to clean up its privacy act
You are clutching at straws here. Zoom fires an alert when somebody joins a meeting. If you're not paying attention, that's not Zoom's problem. If the alert isn't surfaced very well, that's an UX issue, but not a creepy privacy invasion. And if you expect to be able to use a platform which your employer has provided without any oversight whatsoever, I don't even know what sort of problem that is. Do you also expect to be able to lock the door to a physical meeting room, on your employer's property, and use it for your own private purposes unchallenged?
jscholes··on Zoom needs to clean up its privacy act
I'm not a MacOS user, but I'm having a really hard time getting my head around this:

1. You download an installer.

2. You activate that installer.

3. Your system tells you that the installer can run some code.

4. You agree to the installer running some code.

5. The installer installs some software, via the code that you said the installer could run.

Seems perfectly acceptable to me. If you literally cannot open up the archive file to inspect its contents without running some code inside it, that's not Zoom's problem. It's just a really stupid decision on the part of Apple.

jscholes··on A detailed look at the router provided by my ISP
Enjoyed this write-up, but most of the exploration seemed to be facilitated by someone having already leaked the CLI root password online. Anyone have suggestions on how you might otherwise obtain that information?
jscholes··on In praise of S3
Thanks for the heads-up, looks great and is S3-compatible too.
jscholes··on In praise of S3
> Blackblaze B2, Wasabi, Digital Ocean Spaces are three that come to mind.

Seconded on the last two in this list. I use both, for completely personal storage needs. I was lucky enough to get Wasabi's older, cheaper pricing model for the lifetime of my account, but even so it's a hugely attractive option for storing large amounts of data without worrying about local equipment and all the rest of it.

← PreviousPage 3 of 9Next →