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 After June 28, 2021, we will no longer support MOBI files when publishing
> The current file format for Kindle purchases, AZW, is just MOBI + DRM.

Not these days it isn't. They built a custom format to support additional features some time ago, KFX[1].

[1] https://wiki.mobileread.com/wiki/KFX

jscholes··on Higher quality audio makes people sound smarter
> For those who are not looking to spend a fortune, a simple Apple earpod (wired) is still better than most headsets out there.

I don't disagree, but the results are widely variable with different TRRS I/O across different soundcards. E.g. on a MacBook, the EarPods probably sound great, with a good level of gain and plenty of headroom. On a Lenovo Thinkpad, they sound hissy and terrible because you have to turn the gain all the way up.

> I think my yeti actually sounds worse at it cost 3 times as much.

Something is probably wrong if this is the case. Which is understandable; a USB microphone that's not attached to your person requires some positioning and mic technique that you don't have to think about with the inline mic on the EarPods.

jscholes··on FFmpeg 4.4
> Extract audio from a video

If you use `-vn` and `-acodec copy` (I use both although not sure `-vn` is strictly necessary), you can demux the audio from the video in the same format it is already in. Of course, you're extracting to wav so not transcoding, but copying may be faster/use less space.

jscholes··on GitHub's Web Component Collection
> I think it's done to decouple versions.

From the repo's README:

> We have 16 open source custom elements:

It's feasible that GitHub also have some components that are temporarily or permanently private. Having one repo per component may help to remove the need for that distinction among GitHub developers, who don't have to first check whether to import a component from a public or internal repo.

jscholes··on Linus and Pull Requests (2012)
> (I'll have to trust your answers since I don't have a Windows machine, let alone a Visual Studio license)

You don't need a Windows machine or Visual Studio license to use VS Code, which is both cross-platform and free.

jscholes··on Lyra: A New Very Low-Bitrate Codec for Speech Compression
I suppose this is subjective. But listening to the short samples, I found the 6kbps Opus audio easier on the ears than Lyra. In the first sample ("pot of gold"), Lyra made the speaker sound like they had a condition which was disrupting their ability to naturally form sounds (incl. a slight slurs). Granted, it sounded a lot better than Speex which sucks.
jscholes··on How Uber Deals with Large iOS App Size
> That sounds so weird to me... What do you mean cars don't have seat belts?!

I can confirm the OP's experience albeit in a different country (Mexico). In some regions, I haven't been in a single street taxi with working seat belts. Indeed, I've been in some private cars without them as well, or with more physical space for passengers than there were seat belts available.

Uber vehicles, though, have always provided those safety features. Some drivers work as both street taxi and Uber drivers (as they frequently cross into or live in regions without Uber but drive people to places that have it), so that quality assurance can trickle down in some cases. It honestly goes beyond seat belts though; a Uber car is more likely to have AC, electric windows, etc. than your average taxi, even in ridiculously hot parts of the country.

jscholes··on It's time to port your extension to Firefox
It's not clear which version of the extension was initially submitted for Firefox approval: the one with the redundant permission or the one without. If the latter, even though I'm inclined to believe Mozilla probably do have a more developer-friendly process in place, it's not really a fair comparison.

> So we created a Firefox developer account, submitted our extension, and girded ourselves for another rough ride.

Again, if the permissions had been fixed by this point, and Google had accepted it, why would you assume a rough ride from Mozilla?

jscholes··on CircuitPython: Programming Hardware in Python
> Out of curiosity, what about this particular project made you opt for CircuitPython?

It was a nonprofit-style project without much wiggle room. We wanted to prove that an idea would or would not work in a small amount of time, which happily overlapped with the fact that the target environment for the device wouldn't require long periods of battery life. I'm happy to say that the project was a success so who knows, maybe one day we'll have someone port it to C and continue from there.

Sorry I can't be more specific.

jscholes··on CircuitPython: Programming Hardware in Python
I've used CircuitPython for one production hardware project which is in the wild. Safe to say that the increased draw on the included battery and higher memory usage weren't a concern here, but they are both significant. Developer productivity is through the roof though.

I'd say the biggest pain points for me (unless I'm missing something/they've added more stuff recently) were created by the lack of support for what feel like production standards in software development. For example, the logging library is a toy, and unit testing is non-existent unless you isolate all your CircuitPython-specific code and run tests on your dev machine using CPython.

jscholes··on Replacing Dropbox in favor of DigitalOcean spaces
> To use this on Windows I suggest using Subsystem for Linux or Cygwin.

Unless you live inside these environments, an easier option would be rclone[1]. I use it on a regular basis to sync large loads to Digital Ocean Spaces, including its bandwidth limiting schedule to avoid saturating the residential uplink at inconvenient times.

[1] https://rclone.org

jscholes··on Be My Eyes
> I wonder if at least some of that might someday be done equally well by a computer which would be available 24/7

It already is to some degree. E.g. I have an application on my iPhone which reads the value of bills (in various currencies) with no noticeable delay, and another that can act as a colour detector although that is less reliable; maybe more useful if you want to know which is the light vs dark thing.

jscholes··on My ISP Is Killing My Idle SSH Sessions
> This happened one day while I was transferring a VM image in the hundreds of gigabytes from one server to another using netcat like so: > ... > my SSH connections had died yet again. And sshd had taken netcat down with it, killing the transfer midway.

As somebody who has experienced the described behaviour, I can empathise because it is super annoying. But this isn't a particular good point with which to illustrate it. If you're doing any sort of work on one or more remote servers that shouldn't be accidentally terminated like a large data transfer, you should be backgrounding it with screen or similar. Even for users without the idel connection dropping as described, the Internet can still fail.

jscholes··on A developer's perspective: the problem with screen reader testing
> Is there some software library that turns websites into text, that these screen readers all use, or do they implement their own?

They implement their own. But the browser also has responsibilities in this area, to construct an accessibility tree from the DOM which screen readers can parse.

jscholes··on A developer's perspective: the problem with screen reader testing
> There are a number of browsers that run in Docker and that I can remote control (using Selenium, Playwright, Puppeteer or whatever) ... > > Does anyone know if something like that is available for screen readers - at least for a free and open source one?

Nothing in this space is really mature yet, but there are some efforts to make it a reality. The ARIA-AT project[1], which aims to test assistive technology support for various WAI-ARIA and HTML constructs, is aiming to automate its testing across multiple screen readers [2]. NVDA, the free and open source screen reader mentioned in the article, also includes some integration-style tests[3].

[1] https://github.com/w3c/aria-at [2] https://github.com/w3c/aria-at/issues/349 [3] https://github.com/nvaccess/nvda/tree/master/tests/system

jscholes··on A developer's perspective: the problem with screen reader testing
> well, the fact is the use of a screen reader (or at least most) can be detected relatively easily by having an element in the screen reader flow that is hidden from sighted users

This isn't true, at least not enough to be useful. The majority of screen readers present web pages in a kind of virtual buffer, which users can browse with the arrow keys and other shortcuts (e.g. H to jump by heading). In this mode, the majority of screen readers don't fire focus events to let you know, "hey, your screen-reader-only element has been hit". You would be limited to:

1. users operating a screen reader which does fire focus events;

2. trying to highjack scroll events for this purpose; and

3. less technically-inclined users (read: beginners) who move through the page with Tab/Shift+Tab before they've learned the other keystrokes their screen reader offers.

jscholes··on A developer's perspective: the problem with screen reader testing
> I’m genuinely asking here out of lack of experience — Is it separate but equal, or is it customizing the user experience?

It's separation, because it introduces the chances of an inequitable experience being created as the "customised" version for screen reader users drifts out of sync. This may not even be down to anything malicious; plenty of companies create mobile-friendly versions of websites and apps, only to find that as years go by, they no longer have the budget to facilitate their upkeep. Far from assigning them to the trash heap of history, these often continue to be provided, offering a substandard experience, and this is despite companies having so much data available about high mobile usage. The chances of it happening to an accessibility-specific version are higher because the likely user take-up is lower, and as this post and thread indicate, speciality skills are often required to make a good job of it. Not like responsive web design, where experts are ten a penny.

There are other reasons this approach is flawed, of course:

1. Screen reader users aren't the only disabled people out there. Heck, even within that group, there are those who use the software as an absolute necessity, and others who use it in addition with other assistive tech like speech recognition or a magnifier. Nobody in their right mind is going to create a separate experience for every subset of disabled users. Even if they did, how would they be surfaced?

2. Some people are only temporarily disabled, e.g. because of an injury. They don't have the lifelong feel for how to look for accessibility settings or separate modes, so they aren't likely to benefit from a shiny accessible version. Making your main product inclusive prepares for this.

3. The aim should be to allow customisations to be included which aren't intrusive to those who don't need them, e.g. via techniques like WAI-ARIA[1] which allow additional context to be added for screen reader users while remaining invisible to everyone else.

[1] https://www.w3.org/TR/wai-aria-1.2/

jscholes··on A developer's perspective: the problem with screen reader testing
> Do you also take exception to braile translations replacing "red button" with "third button down"?

This is a different case for two significant reasons:

1. Utilising purely sensory references in web materials is a violation of WCAG success criterion 1.3.3, Sensory Characteristics (level A)[1]. Naturally, if you're physically brailling something, it's probably not web content but the point still stands: if your web page tells people to press the red button on the left it's not accessible to some.

2. By including alternative instructions in some form/format (or just making them inclusive from the start), you're not asking anybody to out themselves as having a permanent or circumstantial disability. You're just preparing for the case that they do. This is assuming the alternative option is available to everyone (e.g. on a web page or as a physical braille sign), rather than as something that is locked away and must be explicitly requested.

[1] https://www.w3.org/WAI/WCAG21/Understanding/sensory-characte...

jscholes··on A developer's perspective: the problem with screen reader testing
> Still, mainstream developers make decisions based on data. So if we want them to serve our community, shouldn't we help them by giving them data on how we use their sites and apps?

Quite possibly. But there is an argument for that being voluntary rather than mandatory, even if that decision is provided via a switch in OS-or-screen-reader-level settings. But then there are questions such as:

- Should such a setting be switched on by default?

- What sort of users are likely to enable/disable it?

- If there is any correlation between level of technical skill and privacy awareness, will results be skewed towards the users with lower levels of technical knowledge?

- If a product team uses the data to solicit feedback from users who are detected to be running an assistive technology, but quote "power users" unquote have turned off that detection, again, will that feedback be representative?

Anecdotally, I will say that after working with some iOS development teams where this behaviour is natively available, cases which rely on an explicit detection of VoiceOver still seem rare. Whereas, use of features like accessibility label overrides without an explicit check are used a lot. On the other hand, it's becoming much more common to perform explicit checks for more visually-oriented accessibility features, like reduced motion or high contrast, some of which can even be carried out on the web now.

jscholes··on A developer's perspective: the problem with screen reader testing
> I’m absolutely certain there are plenty of NFB members who will gladly provide free screen reader accessibility testing for apps they use if the developer is responsive to feedback.

You could be right, but keep in mind that this may not significantly lower the amount of time required for developers to understand and remediate problems. Users have wildly differing levels of technical experience, so you may end up with plenty of feedback that you then have to spend hours understanding, sorting, de-duplicating and following up on.

Not to mention the fact that, bluntly, users who aren't being paid as "experts" just may not be that willing to shit all over your product. I have encountered more than one case of a limited subset of screen reader users reporting a positive experience with a component which broke every rule in the book, and caused very real problems for users outside of that core group.

jscholes··on A developer's perspective: the problem with screen reader testing
> I can't imagine websites doing anything but dropping screen reader users into a separate experience; rather than doing the work to design for accessibility in all their experiences

I agree with this. I will say that developers who are 100% unwilling to entertain changes to their "main" UI to accommodate accessibility are in the clear minority. But even the most well-meaning devs and designers will ask questions like, "could we just do this for screen reader users ...?". It's a slippery slope from there, with technical debt, legacy implementation and ghetto user flows all the way down.

jscholes··on A developer's perspective: the problem with screen reader testing
> In addition, I wish screenreaders had a text mode, where they print what they say and maybe provide cues on possible actions.

NVDA, mentioned prominently in the article as a free and open source screen reader, has a floating-window-style speech viewer. I sometimes use it when demonstrating a screen reader user's experience of a particular component when asked to share my audio, because slowing down the screen reader to a rate that everyone on the call will understand will also make the meeting much longer.

JAWS also has a speech history viewer, and there are keystrokes to dump VoiceOver speech as text and audio files.

jscholes··on A developer's perspective: the problem with screen reader testing
> When it comes to screen reader version fragmentation, there is very little in the way of either documentation or support for developers. Fixing issues often comes down to a case of trial and error, retesting and hoping for the best.

The author may be interested in the ARIA-AT project[1], which aims to thoroughly test assistive technology support for WAI-ARIA and HTML constructs. It's still a relatively young effort, but the community group is open and always happy for participation.

[1] https://github.com/w3c/aria-at

jscholes··on HomePod has been jailbroken with checkra1n
> Alright, being limited to certain devices seems less bad than being limited to specific apps like Sonos

Sonos also supports AirPlay, as well as DLNA/UPnP rendering. So for example you can set a Sonos speaker as the output device, wirelessly, in the latest nightly builds of VLC[1].

[1] https://shaleenjain.com/blog/vlc-dlna-support-2/

jscholes··on FreeYourMusic lets users migrate their playlists off Spotify
> As we don’t use the official Spotify SDK, we’re not bound to their Terms of Service.

I'm not sure how this can be true. Their terms of service specifically ban users from reverse engineering unofficial parts of the product.

Either way, I'd be interested to know how it actually works.

jscholes··on Dual-flush toilets 'wasting more water than they save'
> I actually don't recall ever seeing a human do dishes that way except on TV.

I have an unusual interest in this topic. I grew up in the UK, and that's just how people do the dishes. Or at least, the people in my orbit. So when I see that on TV, it's completely normal.

But, I now live in Mexico and everybody uses some variation of your method (again, everybody with a "people I've observed washing the dishes" qualifier). I find it completely bizarre.

jscholes··on How marketers convinced America to eat fish sticks
> Where else but in this nation could one freeze processed whitefish into a brick, ...

Probably plenty of places. E.g. UK has the fish finger:

https://en.wikipedia.org/wiki/Fish_finger

jscholes··on Cory Doctorow is fighting back against Amazon's Audible
> Can any English speaker remember the name of the interpreter of their favourite audiobook?

I can, but that's probably because I partially rely on audiobooks (in addition to eBooks with text-to-speech) because of blindness.

> There were once radio plays, but with the demise of radio, audio plays barely exist nowadays in English

Agreed that unfortunately, the amount of radio plays being produced has dramatically decreased (excuse the pun). But I mostly notice this in English speaking nations other than the United Kingdom like Canada and the US. In the UK, radio drama is still very much alive, with the BBC and third parties like Big Finish producing a ton of great content.

jscholes··on Annoying website features I face as a blind person
> it just that you don't want that to be a substitute for testing using a screen reader and a mainstream browser. Do I have that right?

For sure. If your website does work in edbrowse, it may imply that you have a decent chance of making it accessible because it doesn't use a ton of dynamic interactions or page updates etc. But it doesn't guarantee it. You could still have issues with heading hierarchy, communication of control state and other factors. In some cases, edbrowse may even lull someone into a false sense of security, because it simply can't present certain aspects of your page. But when displayed in a mainstream browser, they may be inaccessible.

In a nutshell, it's unlikely that you can draw any meaningful conclusions after testing with edbrowse, be they about the accessibility of the page or the typical experience of a blind user on the web.

jscholes··on Annoying website features I face as a blind person
> I'd argue that the figcaption can't contain an adequate description in pretty much every case.

Completely agree with this (and your other comments re: interpretation). In the real world, it's rare for content and data to be as simplistic as the example described here, and presenting it in an inclusive fashion which allows all users to make their own conclusions is the key.

← PreviousPage 2 of 9Next →