Day 18 - #adventOfIOSAccessibility. When building custom components, or if not relying on UIControl's attributes to configure state, it can be easy to forget to specify the right accessibility traits. These are indispensable for a good experience with VoiceOver, Switch Control, Voice Control, Full Keyboard Access...

#365DaysIOSAccessibility

in reply to daniel:// stenberg://

Great to see you recorded for posterity. How do you feel about being part of future research for a few generations?

A similar thing happened to Digital Art a couple of decades ago with the Digital Art Museum. It spurred a few awards for excellence, most notably Vera Molnar who received the Dam Digital Art Award before her death last year:
digitalartmuseum.org/history/i…
ddaaward.org/

Sharkey: un progetto Fediverse bello dentro e fuori! Il post sul software del Fediverso ergonomicamente più interessante a cura di @Elena Rossini ⁂

@Che succede nel Fediverso?

c'è una piattaforma di microblogging Fediverse che è assolutamente meravigliosa e piena di caratteristiche di design brillanti che rendono il suo utilizzo un vero piacere. Il suo nome è Sharkey, è un "soft fork" di Misskey , e merita sicuramente la vostra attenzione

blog.elenarossini.com/sharkey-…

Both Eloquence 4.7 and 4.2 received updates in the drivers:
(common): Properly call DLL handle termination after switching away from either synthesizer. Previously you would fry your NVDA by switching from one to the other, as they both leave traces for one another if doing consecutive initializations. This was a problem of the past, no longer, we take care of it in both drivers for you.
- Eloquence 4.7: Updated it from the 4.2 driver to also have the bgPlay function accept onDone, attempt multiple tries to feed audio, and use a lock to ensure thread-safe access to player.feed(). While this does not solve issues with Wasapi, it (slightly) improves it while keeping things more thread-safe for the older-style single callback.
eurpod.com/OldEloquence2024.nv… (v 4.20)
eurpod.com/Eloq47-2024.nvda-ad…
Done for the night, exhausted now from reviving 2 more synths in a single day.
in reply to Tom Grant the tincel

was there ever a 1.0 or 2.0? Wonder if we would have recordings of it somewhere. I wish there was a way to pinpoint down when the voice so drastically changed, clearly there must have been other versions developed between those that slowly got it there. The more you unravel about that product the more fascinating history it has :D
This entry was edited (1 year ago)
in reply to Tom Grant the tincel

3.3 also appears to accept the current community dictionaries, although don't think these can be language specific like newer Eloquence. I renamed them to main.dic and root.dic from the community dictionaries, loaded them and surprisingly that worked. I don't see a way to disable abbreviations as this appears to be built-in to the language and I couldn't find a function in 3.3 that toggles them off or a speech parameter, would be nice to add that as a setting if it's ever found.
This entry was edited (1 year ago)
in reply to Tamas G

@TomGrant91 @KaraLG84 From what I remember, dictionary loading for multiple languages wasn't implemented in that code, and the release notes for Eloquence 5.0 claimed that all languages shared a single dictionary set in older versions. Recordings of 1996-era versions of Eloquence can be found in this article. archive.nytimes.com/www.nytime…

Tamas G reshared this.

in reply to Tamas G

There probably were many intermediate versions between that which aren't publicly available, or at least not in the known sources. ETI was known to produce lots of minor versions of major releases, example: Eloquence 5.0. That version was officially released on February 8, 2000 according to the release notes, with the earliest build I can find being version 5.0.000.0004, compiled on March 31, 2000, and the last known builds were of version 5.0.3.8, compiled on December 10, 2001.
This entry was edited (1 year ago)
in reply to Mohamed Al-Hajamy 💾

@MutedTrampet @KaraLG84 aaah I love your eloq research. It's been super helpful and I added the abbreviation setting into Eloq 3.3 driver. I'll see what I can do about the other PP tags for the shorten pauses, it may be that I add the setting as a choice slider like the IBM drivers and people can just choose then in both 3.3 and 4.7. Even if the tags add some broken punctuation for 3.3, at least folks can decide.

K vanocum jsme vam pripravili maly darek. Videa z konference jsme nahrali na peertube, takze muzete svatky vyuzit k jejich sledovani bez reklam.

vhsky.cz/c/openalt_konference/

Muzete je taky sledovat primo pres mastodon @openalt@vhsky.cz

reshared this

A Coast Guard Commander Miscarried. She Nearly Died After Being Denied Care.

U.S. service members have long faced strict limits on abortions, even when used to resolve miscarriages. Under federal #law, the #military will only pay for abortions in cases of rape, incest or to save the mother’s life.

#News #Abortion #Health #Government #Healthcare #Insurance

propub.li/3ZGoIJQ

Nedávno jsem si tu stěžoval, že je federovaná tajmlajna kvůli některým botům prakticky nepoužitelná. Stačilo ale poměrně málo a zase se používat dá!

Stačilo ztlumit pár účtů…

- @cesko
- @feedit
- @HCSpartaPraha
- @JanCulik
- @kyberzpravy
- @RubikonPR
- @rychlofky
- @slovensko

…a voila, máte použitelnou federovanou tajmlajnu.

P.S.: Dá se to udělat z profilu - viz obrázky.

Nemáte zač…d8-D

#tip_mastodon

John’s Updated Review of the Choyong LC90 Multi-Band & Internet Radio swling.com/blog/2024/12/johns-…

FediMeta, blocklist update

FediNuke transparency update:

  • Added drinkanddrive.africa. See receipts on my receipt archive.
  • Removed three dead domains (catgirl.life, vtuberfan.social, natehiggers.online). They have no DNS records, or redirect to a subdomain with no DNS records. Will properly comb through for dead domains at some point later.

#FediNuke

I think maybe I need to put #rustlings aside for a bit and read up a bit more.

I'm hitting the point where I am perma-stumped on some of the exercises.

Like, I really don't understand map_err or why I would want it. The examples aren't making much sense yet.

Not giving up, just changing tactics :)

My latest sticking point:

github.com/rust-lang/rustlings…

Eloquence 4.7 driver for NVDA: Used in older JAWS versions (35, 3.7): eurpod.com/Eloq47-2024.nvda-ad…. Modernized indexing : On end-of-utterance (0xFFFF), flush once, then send all indexes and None, and set speaking = False. Similar to BeSTspeech logic, the code stores intermediate indexes (currentIndexes) during the utterance and only sends them all at the end. For me, it was interesting to see how older and newer Eloquence drivers were different: The newer V6.X DLLs schedule tasks like flushing audio, sending indexes, or finalizing utterances via a background thread. Older Eloquence did a lot more just from the Callback thread alone, huh.
also: Instead of sending indexes as soon as they appear, the newer ECI stores intermediate indexes for the entire duration of the utterance. Only after the utterance fully completes does it send all intermediate indexes, followed by a "None" signal to mark the end. This prevents premature indexing events and ensures that the indexing data sent to NVDA accurately reflects the final audio and why I was stuck for 3 hours debugging it.
This entry was edited (1 year ago)
in reply to x0

@x0 Thanks for pointing that out. I really appreciate the detailed insight into how indices should be handled. I’m still learning how to integrate everything correctly, and updated both drivers with what you mentioned: Removed storing indexes in currentIndexes for both drivers. Instead, we now Call onIndexReached(lp) immediately when we get an intermediate index (lp != 0xFFFF) in the callback. Also, the final utterance index (lp == 0xFFFF) still triggers a flush and then a finalization, but doesn’t involve delayed indexes anymore. It meant I could Simplify finalizeUtterance() since we’re not handling a queued list of indexes so it cleaned up the older driver quite a bit. Not sure if people will notice any user-facing differences, but nevertheless this is great info to have.
@x0
in reply to Tamas G

Glad I could help, that's my understanding anyway but pretty sure it's correct, that's why indices exist, to give immediate, real-time updates of exactly where the synth is. NVDA itself actually injects index marks into the stream to help with synchronization, say between sentences so it can move the cursor in say all. Phonetic punctuation uses them to decide where it should inject sounds into the stream, asking the synth to pause at the same time. So that has to be precise, and buffering, as IBMTTS does, throws that off.
This entry was edited (1 year ago)
in reply to Tamas G

@nick @x0 it's yet another packaged eloquence. IBMTTS never gave you the binaries so had a feeling of legality about it. Threshold was just installable and worked.
github.com/pumper42nickel/eloq…
in reply to Tamas G

7.0 was really obscure, I can't even find a changelog for it and I also had to rip it out of various installers. Its main features seem to be the introduction of version 3.2 of the Torrent engine which was used by the 22 kHz concatenative voices, and for US English, a bunch of DLLs that seem to be some kind of heavily rewritten synth engine with individual DLLs for different components, with names like enuparser.dll, enuphonetizer.dll and enuprosody.dll, which are oddly never used by enu50.syn and I can't seem to find how exactly they were meant to be used. Version 7.0 actually completely fixed the stability issues of 6.7 with the June 2005 build of ibmeci.dll, but it never made it to the assistive technology market for some reason and 6.7 ended up being the last update that would ship in AT products, even though that version is extremely unstable.
This entry was edited (1 year ago)
in reply to Tamas G

@x0 @matt @cachondo NVDA still dies after registering that DLL when trying to load ibmeci66. I don't recall installing any particularly weird Eloquence/IBM versions (or any versions at all) on this machine so not sure where I went wrong. This is exactly what I remember from every time I tried to get anything nonstandard about IBM to work before hahaha
in reply to x0

@matt @cachondo @nick Though that one goes by the name viavoice, which is IBM's version of that engine, and its rules are different, including its internal dictionaries. Mohammed's repo actually has a special dictionary set for it because of some words it fixed and others that it broke. Jake's site has it as a giant 7z file called viavoice something or other.
in reply to x0

@nick That may have been mitigated by now, there were some changes to threshold itself that changed buffer intervals to try and make it a bit less floody, and then WASAPI happened. I've got an open issue on IBMTTS to integrate this behavior now that it's feasible, they're still using index buffering. THey don't buffer until the end of the stream, they buffer by larger chunks to avoid short feeds. This is likely the performance difference you're noticing, as I think threshold is sending the chunks immediately, whereas IBMTTS actually sends a chunk after receiving the next one, unless it's less than the normal chunk size, then it sends them both at once. The old NVWave really didn't like being sent a tiny chunk at the end.
in reply to x0

@nick Threshold is here. Also take note of how it handles pauses, in ECI, pauses, the `p annotation usually triggered by the break command, are dependent on rate! At least in 6.1 it is, impirical testing would be needed for the others. github.com/pumper42nickel/eloq…
This entry was edited (1 year ago)

Salesforce says it will hire 2,000 people to sell AI software, a month after saying it would hire 1,000 for the task and two years after laying off 7,000 staff (Jordan Novet/CNBC)

cnbc.com/2024/12/17/salesforce…
techmeme.com/241217/p31#a24121…

SCOTUS rejected ISPs' challenge to a NY law requiring ISPs to offer $15 or $20/mo. services to low-income customers, by refusing to revisit a lower court ruling (Jon Brodkin/Ars Technica)

arstechnica.com/tech-policy/20…
techmeme.com/241217/p28#a24121…

Rebuilding much of my infrastructure in NixOS again because I'm sick of shit breaking and being hard to fix. In the process I've been revisiting services I run to ask whether they're worth maintaining or whether a simpler alternative would do.

Started poking Nextcloud today and oh wow is its app ecosystem extensive. I thought it was just a nerdy contact/calendar/file-syncing app but no, you can really build out your own household-specific portal with it.

Right now for instance I'm playing with the Cookbook app. So far I've pasted in a few recipe URLS and have gotten back nicely-accessible, no-fluff copies of those recipes, saved locally, linking back to the originals, with spinners that seem to scale them by serving size. That's really neat.

So I don't think I'll be replacing it with Radicale quite yet. It can apparently somehow parse emails and extract travel itinerary data into calendar events with kitinerary but I'm not sure how. That's one more proprietary service down.

Peter Vágner reshared this.

in reply to Dickson Tan

Right now each service like Gitea and Nextcloud gets its own native NixOS container. Nix config assumes things like one instance per server for many of those. Fortunately it's pretty easy to spin up a Nix config in a container vs. directly on the host, and Docker/OCI containers are pretty easy to declaratively build and run in your engine of choice if Nix containers/services don't work.

I totally subscribe to this... Great point of view!
writing.mariusz.cc/ux-design-a…
This entry was edited (1 year ago)

I like this snippet from the article: "Just like the rest of our image and video generation models, Veo 2 outputs include an invisible SynthID watermark that helps identify them as AI-generated, helping reduce the chances of misinformation and misattribution."
blog.google/technology/google-…

🚨help ginny pay for necessities—she lost her rented house and many things to flooding and theft. she needs continued funds for a place to stay, and care for herself and her animals. the stress (and the impact on her health) has put her in and out of the hospital.🚨

she is an amazing person who has suffered greatly. she is disabled, an orphan, and was targeted by the Proud Boys.

she survives on community support,
so please support her 💖

paypal.me/ginnymcqueen

ko-fi.com/ginnymcqueen

patreon.com/ginnymcqueen

pay.ginny.today

:sharesloved:

#MutualAid #DisabilityCrowdfund #DisabilityMutualAid

Today's #SongInMyHead
🎵 Sixteen Tons
⭐ Geoff Castellucci
youtube.com/watch?v=fzlT80jQ3l…

I discovered this version in my Discover Weekly playlist on Spotify few days ago and I can't get rid of it since...

in reply to Diligence Jones

#PeakDesign CEO is Peter Dering: “Of course, my instinct would be to do whatever is possible to help track this person down.”

They are headquartered in San Francisco with a brick and mortar in the Hayes Valley neighborhood.

I own an obscene amount of their stuff - apparently it’s all serial-numbered to me so the CEO can exercise his class solidarity instincts.

nytimes.com/2024/12/05/nyregio…

Con la nuova release 7 PeerTube rinnova completamente l'interfaccia!


@Che succede nel Fediverso?

Il comunicato di Framasoft:

Con il suo nuovissimo design, la nuova interfaccia di PeerTube non è solo più bella (anche se lo è). È anche più semplice, più facile da usare e da capire e più accessibile. Benvenuti in una nuova era di questo software che consente ai creatori di ottenere, controllare e connettere le proprie piattaforme video.

Riflettiamo sulla crescita dell'ecosistema PeerTube

Sette anni fa, PeerTube era principalmente uno strumento con cui gli appassionati di FOSS esperti di tecnologia erano felici di giocare. Poi è diventato popolare tra i creatori di contenuti che volevano uno specchio auto-ospitato dei loro canali YouTube/Twitch; e tra le comunità che volevano creare e regolamentare il loro spazio sicuro (persone sorde, persone queer, ecc.)

Oggigiorno, PeerTube sta riscuotendo un successo crescente tra i creatori di contenuti che pubblicano contenuti originali (o contenuti esclusivi per la loro comunità), media alternativi e istituzioni: college, ministeri dell'istruzione, archivi televisivi e radiofonici nazionali, ecc.

Le strutture pubbliche hanno spesso bisogno di condividere contenuti video senza meccanismi di cattura dell'attenzione o di sfruttamento dei dati.

Per noi si tratta di un nuovo passo nell'evoluzione del pubblico di PeerTube.

Ecco perché quest'anno abbiamo chiesto a La Coopérative des Internets di condurre una ricerca UX approfondita (completa di interviste, test, ecc.) e di aiutarci ad avviare una riprogettazione completa dell'interfaccia. Il nostro obiettivo era migliorare PeerTube in modo che si adattasse meglio alle esigenze di quel nuovo pubblico. Avevamo chiaro che tutto era sul tavolo: colori, vocabolario, layout...

Bene, siamo orgogliosi di rilasciare questa v7 di PeerTube , che getta le basi per una completa riorganizzazione dell'interfaccia.

Anteprima: temi, nuovi colori e vocabolario

Il design di PeerTube, gli schemi di colori, il vocabolario, ecc. sono stati costruiti in sette anni, mentre andavamo avanti, imparando, ricevendo aiuto dalla comunità. Questo nuovo design è stata un'opportunità per fare un passo indietro e ottenere alcune intenzioni dietro l'interfaccia.

Il nuovo tema predefinito di Peertube Light/beige è più calmo e piacevole alla vista rispetto all'originale Black & orange. Abbiamo anche aggiunto un tema Dark/brown nel core per gli amanti della modalità scura. Entrambi mirano a facilitare la navigazione video

Il nuovo tema predefinito Light/beige è più calmo e piacevole alla vista rispetto all'originale Black & orange. Abbiamo anche aggiunto un tema Dark/brown nel core per gli amanti della modalità scura. Entrambi mirano a facilitare la navigazione video.

Creare quei nuovi temi è stata un'opportunità per ripulire e semplificare il modo in cui è codificata l'interfaccia (in particolare: ripulire il CSS, concentrandosi sulle variabili), limitando al contempo le rotture con temi personalizzati preesistenti. Ora è davvero più facile creare nuovi temi per PeerTube e speriamo che condividerete le vostre creazioni!

Il tema scuro di Peertube

Abbiamo anche aggiornato il gergo di PeerTube. C'è un motivo per cui ora stiamo usando il termine "piattaforma(e)" per parlare di tutti i server in cui è stato installato PeerTube.

Sì, chiamarli "istanza(i)" è stata la norma nel mondo esperto di tecnologia degli appassionati di activity-pub. Ma, per coloro che non sono abbastanza privilegiati da conoscere il fediverse e il suo protocollo, la parola piattaforma è autoesplicativa e facilita l'inclusione.

Godetevi layout più semplici e pertinenti

Ci sono molte informazioni da visualizzare su qualsiasi pagina di PeerTube. I layout e i menu sono cresciuti organicamente durante sette anni di sviluppo... e avevano bisogno di qualche potatura! Abbiamo rimodellato quei menu e quelle pagine per portare avanti informazioni rilevanti e presentare un modo più intuitivo per scoprire cosa stai cercando.

Una schermata che mostra i miglioramenti nell'ergonomia di Peertube

Ad esempio, i creatori di contenuti accedevano ai loro canali e caricavano video nella loro libreria (dove qualsiasi utente di PeerTube può accedere alle proprie playlist, cronologia, ecc. dei video guardati). Ora in PeerTube v7, c'è una nuova sezione chiamata "spazio video" specifica per le esigenze di chi carica video.

Allo stesso modo, le pagine "admin" per gli amministratori delle piattaforme PeerTube sono state ora separate in una pagina Panoramica (per ottenere maggiori informazioni sugli utenti, sui video ospitati, ecc.), una Moderazione (per gestire abusi, blocchi, registrazioni) e una Impostazioni (per accedere a configurazioni, runner, ecc.).

Le diverse pagine che presentavano i video sulla piattaforma PeerTube (Aggiunti di recente, Video locali, Di tendenza) sono state unite in una pagina "Sfoglia video" , che include filtri rapidi per visualizzare le stesse selezioni di contenuti in modo più diretto. Lo stesso intento ha guidato il nuovo layout della pagina "Scopri video": ci auguriamo che possa dare spunti agli utenti curiosi.

Le diverse pagine che presentavano i video sulla piattaforma PeerTube (Aggiunti di recente, Video locali, Di tendenza) sono state unite in una pagina "Sfoglia video" , che include filtri rapidi per visualizzare le stesse selezioni di contenuti in modo più diretto.

Lo stesso intento ha guidato il nuovo layout della pagina "Scopri video": ci auguriamo che possa dare spunti agli utenti curiosi.

Ovviamente, la barra di sinistra e i menu dell'intestazione sono stati riorganizzati per riflettere tali modifiche e rendere la navigazione ancora più intuitiva. Ora puoi accedere alle impostazioni del tuo account e alle notifiche dal menu dell'intestazione , come è consuetudine su altri siti web.

Visualizzazione di informazioni rilevanti per mostrare la diversità dei video

Uno dei commenti più frequenti dei nuovi utenti è stato che la vecchia interfaccia era confusa, ovvero era difficile per un utente capire dove si trovava e da dove provenivano i video.

Ecco perché, in PeerTube v7, abbiamo aggiunto più modi per consentire ai proprietari di piattaforme di personalizzare e identificare le proprie piattaforme : aggiungere facilmente un banner (utilizzato nelle pagine, nell'esplorazione delle app mobili e nel nostro motore di ricerca SepiaSearch ) e un'icona della piattaforma (utilizzata dall'applicazione mobile). Inoltre, il nome e la descrizione della loro piattaforma vengono ora visualizzati agli utenti non registrati nel menu di sinistra.

il nome e la descrizione della loro piattaforma vengono ora visualizzati agli utenti non registrati nel menu di sinistra.

Abbiamo anche cambiato il modo in cui le miniature dei video appaiono in tutte le pagine che elencano i video . Gli avatar dei canali sono sempre visualizzati, quindi è più facile identificare i creatori, i titoli sono evidenziati, la data e il numero di visualizzazioni del video sono presenti ma attenuati. Queste modifiche rendono le pagine che elencano i video più facili da leggere e facilitano l'identificazione del video che vuoi guardare.

Accessibilità in prima linea

La riprogettazione è stata anche l'occasione per dare priorità all'accessibilità dell'interfaccia (per le persone con disabilità). Nel 2023, abbiamo preparato il codice e lavorato su ciò che sapevamo ... così l'audit di accessibilità completo pianificato per il 2024 (grazie al consorzio NGI Entrust) avrebbe portato quanti più miglioramenti nuovi e dettagliati possibili.

Grazie all'audit, abbiamo migliorato moltissimi aspetti : abbiamo sistemato i contrasti e i temi dei colori, la barra di avanzamento, diversi componenti e vari problemi con lo screen reader. Abbiamo aggiunto etichette mancanti sugli elementi interattivi, link "salta menu", sottolineatura dei link. Abbiamo anche migliorato la navigazione tramite tastiera e reimplementato componenti di una dipendenza non accessibile.

abbiamo sistemato i contrasti e i temi dei colori, la barra di avanzamento, diversi componenti e vari problemi con lo screen reader

Crediamo sinceramente che PeerTube abbia risolto i problemi di accessibilità e dovrebbe essere all'altezza degli standard ... ma sappiamo, ora, che c'è sempre spazio per miglioramenti e per imparare direttamente da chi è interessato .

Modifica dei sottotitoli, promozione dei video e molto altro ancora...

Con il nuovissimo strumento di transcodifica remota che abbiamo introdotto l'anno scorso, ottenere una trascrizione o sottotitoli per il tuo video è più facile che mai. Ma lo strumento di modifica dei sottotitoli era... ehm... diciamo "barebone". Ora stiamo introducendo una nuova modalità che rende la modifica dei sottotitoli davvero comoda .

Gestione dei sottotitoli

Abbiamo accolto e integrato a monte un contributo della comunità su SEO (ottimizzazione per i motori di ricerca), per aiutare a promuovere i contenuti ospitati da PeerTube sui motori di ricerca. Un avatar della piattaforma ora appare nei tag opengraph, gli account e i canali vuoti sono nascosti dalla mappa del sito, mentre ora sono presenti tag video aggiuntivi.

Infine, PeerTube è stato tradotto in slovacco .

Vorremmo davvero prenderci del tempo per ringraziare la comunità che contribuisce alle traduzioni di PeerTube: non avremmo mai pensato che un giorno il nostro software sarebbe stato disponibile in più di 38 lingue.

Un enorme ringraziamento a tutti voi, persone meravigliose, che avete dedicato tempo e cura per contribuire al nostro strumento di traduzione: siete straordinari.


(grazie ad alephoto85@livellosegreto.it per la segnalazione)

#AndroidAppRain at apt.izzysoft.de/fdroid today brings you 15 updated and 1 added apps:

* SoundRemote: Listen to audio from your PC and control it from your phone (server component for Windows only) 🛡️

At apt.izzysoft.de/magisk 1 #Magisk module was added:

* Adaway: Will make the latest version of AdAway as a system app via systemless.

Enjoy your #free #Android #apps with the #IzzyOnDroid repo(s) :awesome:

Canadian dollar dips below 70 cents US for first time since March 2020 | CBC News

Canada is not an ally of the USA, it is a vassal state.

Just the posturing of an incoming POTUS is enough to cause severe damage to our economy.

We are suddenly spending $1 billion more on defending our border, not on preventing the flood of guns FROM the US, but on preventing the trickle of drugs and migrants TO the US.

Trump couldn't force Mexico to pay for the wall but he is forcing Canada to pay for border patrols to prevent smuggling into the US, which is surely the job of the USA.

#CDNPoli

cbc.ca/news/business/canadian-…

Exciting news! Envision has been nominated for the David Goodwin Award by AppleVis, recognizing developers who empower people who are blind or have low vision. We’re honored to be in the running and would love your support. Cast your vote here: applevis.com/blog/cast-your-vo….

"Adrian Roselli - The Many Faces of Digital Accessibility", A11y Bytes keynote. Video: youtube.com/watch?v=_6Tu3TOMzQ… Slides: adrianroselli.com/2024/10/a11y… #a11y
#a11y

It is easy to be cynical about the do-gooding motivations of a $3 trillion company, but Apple’s commitment to accessibility is admirable. This music fan bought Airpods Pro and nearly cried after learning they were also hearing aids. threads.net/@andycandy45/post/…