Was surprised to learn that there are apparently no command line tools for poking around the Linux accessibility tree, so I made Acsh, the Accessibility Shell. With Acsh you have both a CLI and REPL, in which you can do things like:

/> ls # Lists all top-level apps
/> cd firefox-1.26 # cd into Firefox, with tab completion. REPL only
/firefox-1.26> cat 0 # Get more information on the first child by index, if you're fine with the possibility that index might change before the command is processed--not likely at this level. Paths are referenced by name or index
/firefox-1.26> watch 0 # Get stream of events for the first child
/firefox-1.26> search -r button ok # Find all OK buttons in this Firefox instance
... # and more

The future, though, is probably acsh mount. This makes the accessibility tree available as a FUSE mount under ./a11y by default. ./a11y/README.md gives a better overview of the layout, but in brief, directories are apps/accessible objects with their children as subdirectories. Properties are either files containing their raw values or .json files with richer structure. There's an events.json.sock Unix socket in each directory below the root that lets you watch events for an accessible object and all its children, and you can use standard filesystem tooling to search/filter/stream. It's probably slow because there's no caching--it's meant to be a debugging/introspection tool, after all. I'll probably rename this to acfs and drop the CLI/REPL soon--it was great for prototyping and the idea to use FUSE only occurred to me after I realized I was slowly re-inventing all of a filesystem anyway.

Thoughts? I'm sure it has bugs, but what doesn't? dev.thewordnerd.info/nolan/acs…

in reply to Ritchie

Heh yeah, I spent a bunch of time getting cd .. working before I realized that if I made folks too comfortable working in this REPL, they'd probably eventually demand a full embedded BASH shell. :P So yeah, definitely try FUSE. If you need an example of how to do something, ask and I'll work it into the FUSE README.md. I don't want to make it super specific but I do want to make it scriptable and as user-friendly as a FUSE filesystem can possibly be.

Boycotts aren't enough.

A boycott doesn't tell a company that they've pissed you off: it tells a company that you have the option to not consume their products. It's very hard to boycott the electricity company or the water company, because you need their products.

This is why Google and Amazon are who they are. You want to boycott Google products? Good luck living in the modern world. Google have intentionally made themselves too important and ubiquitous to be successfully boycotted. It's not just the tech companies either. If you live in a town which only has one supermarket - and many people do - then you can't realistically boycott them.

We, and by we I mean the masses, are too weak to boycott these companies. Consider that for a moment. Consider the staggering power inequality that this demonstrates. We need stronger weapons.

Using acsh mount with Claude Code and holy shit is it a gamechanger. Mounting my accessibility tree as a filesystem and letting the LLM use tools it is trained on has made identifying accessibility issues so much easier.

I've wanted to play with Godot's AccessKit-based accessibility for a while now but it has enough rough edges to make it just difficult enough to have fun with. I know there are additional accessibility plugins but they're just not enough to make the experience one I want to have

A couple hours in and I've already A) labelled unlabelled controls in the New Project dialog B) turned a status area into an auto-updating live region and C) identified and fixed an off-by-1 bug in single-line text edit fields making them present as blank if the cursor position is at the end. And the only reason it took that long is due to some weird scons cache corruption where the labeling fix required 2 full half-hour builds, which is now fixed. I've also identified several other accessibility issues I plan to work on over the next few days to hopefully create a first-class accessibility experience in the editor and game UIs.

I remain conflicted about the harms generative AI/LLMs cause, because for me they're very much an assistive technology. Could I technically have trawled through all the event logs, widget information, and code to make these changes? Sure. Would I have? Not if I wanted a life outside of fixing accessibility issues. Could someone else have done this. Sure, but where's the overlap between the folks with the time to fix these issues and the lived experience of using a screen reader and finding all the edge cases, like labels speaking twice or text presenting as blank if you happen to be on the last character? Should I stop using it this way because thousands of others use it to generate unsupervised slop? Should I take a bus instead of a plane to travel back home today?

Legitimately not sarcasm, it's just hard to put all of this in perspective sometimes. If I had a spare 30K or so in the couch cushions, I'd buy my own GPU machine and call it an assistive tech expense.

What I'm not at all conflicted about is letting these things run amuck, dumping the slop onto someone else, and passing that off as somehow virtuous because the AI can do no wrong. I've seen it do plenty wrong that I would not leave it unsupervised and uncaged, just as I wouldn't leave my cat unsupervised around a plate of food. Nor would I just dump the results on anyone without taking the time to read them first, and to at least make sure nothing overtly silly is being done in my name. But where most folks can just glance at a window or a screen of logs and fairly easily spot errors or issues, I can ask Claude to take a screenshot or skim logs, and something that would either have been impossible or extremely time-consuming for me is done in under a minute. I don't know what to do about the fact that a bunch of jackasses want to do bad things with that same tech.

If the AI bubble burst tomorrow I'd shed exactly 2 tears and go on with my life. I just wish society's impulse with generative AI/LLMs wasn't to use them for just about every shady thing imaginable such that it's so hard to talk about the ways that they can help without worrying about the can of worms I'll open or the hate I might get. Yes they can be wrong. Yes they can hallucinate. So do humans, but I don't happen to have a helper human in my back pocket every time I need one.

reshared this

in reply to Matt Campbell

So far just Godot. The off-by-1 seems to be in their code--some sort of attempted workaround to treat single-line text inputs like multi-line text inputs by appending a newline, which caused arrowing past the last character of a single-line input to speak "blank" as if the field was empty. Need to verify the fix in multi-line inputs but that involves generating an actual project so I have a testcase, which I'll get to when I'm back home. At least Claude flagged that, so it didn't just slop it out and hope for the best.

Right so:

* Mac text processing and spreadsheet accessibility is essentially useless and not getting better.
* I need text processing for work and studies.
* I need Windows for text processing and spreadsheets because, as much as it is not great, at least it isn't Mac
* Parallels is subscription-based and has been getting progressively worse at working efficiently and without turning an M1 Macbook Air into a furnace.
* VMWare Fusion is free, but it took about half an hour to download because I had to realize my VMWare account was not migrated to a Broadcom account, realize that the Broadcom login page does not link to the register page, find the register page, register, verify my email, click on the "DOWNLOAD RIGHT NOW NO SERIOUSLY WE MEAN LIKE ACTUALLY RIGHT THE HELL NOW LIKE THIS INSTANT" buttons again, find the product in the support downloads portal thingy, agree to terms, go through additional screening to download the product which included giving them an address (notice I didn't say my address because apparently "123 My Street, My City, My Province" is valid), press the "HTTPS download" button (this one does not include the word now or all-caps even though it's actually the final boss of the encounter), copy the app into my drive, open the app, agree to terms again and uh... Presumably be able to use it, though I expect additional screening to be required when trying to create a VM. So I'm just slightly miffed on principle.
* Buying a Windows Mini PC seems like a logical option, but it's expensive even at the half-decent lower end and I work on the go like all the time.

I think that's it. I think I'm switching to Linux. Ahahahahahahahahahahahahahha funny joke. Anyway yeah I'm a little disillusioned with the state of things. Tra la la it's almost Christmas let's not get dragged down.

Zach Bennoui reshared this.

in reply to Guillem Leon

Bro my Brain like physically hurts after reading that lol. I feel your pain though. Parallels seems like the best option, I tried UTM and it didn't go well. Was installing Windows, and then like right as it was about to be done Mac OS just decided to crash and restart on it's own. I don't know what the hell that was about. I'm assuming it's fixed now, but I'm scared of UTM and will never install it again lol.

So I want to download VMWare Fusion. So I press the big "DOWNLOAD NOW (opens in new window)" (note the all caps) link on the product page. I get sent to another page explaining the many wonders of Fusion with a big "DOWNLOAD NOW (opens in new window)" link which I press. I'm sent to a log-in page.

Can you imagine being so conscious of the fact that your download process is so insanely convoluted and full of corporate bullshit that you have to all-cap the names of the two links that lead to the very first step of the actual download and make sure they include the word "NOW" so that people don't realize you're leading them onto this field of corporate bullshit?

Jonathan reshared this.

in reply to Guillem Leon

I wouldn’t bother. I helped someone set it up yesterday, someone who just couldn’t afford parellels but needed a VM with graphics hardware acceleration. By far the most serious issue that returned recently is that if VoiceOver is running, any VM that’s running inside fusion crashes. On top of that many features just don’t exist that used to exist back in the Intel days, such as easy install so you have to install Windows of OCR because narrator is broken right now, and there is no support at all for shared folders.

📣 Do-It-Blind (DIB) online Besprechung am Montag, 1. Dezember, um 19:00 Uhr. Du bist eingeladen! bbb.metalab.at/rooms/joh-szv-o… Wöchentlich am Montag besprechen wir neue Formen der digitalen und inklusiven Zusammenarbeit. Mach mit! 🛠️ #make #blind #inklusion

DMA crackdown for the win! 🙌 #WhatsApp is becoming interoperable in the EU

What does this mean?

✅ WhatsApp users in the EU can message people on other apps
✅ More #freedom for you
✅ Better chances to compete for smaller apps

➡️ Find out more here: tuta.com/blog/whatsapp-interop…

„Chtěli bychom změnit společenskou normu. Síla té výzvy má být právě v tom, že se k ní připojí co nejvíce rodičů. Aby se dítě bez mobilu nebo s tlačítkovým telefonem necítilo mezi ostatními spolužáky nepatřičně. Spoustě rodičů dnes vzrůstající problémy vadí, ale nemají odvahu jim takto čelit, když cítí tlak ostatních.“ denikn.cz/1904895/chytry-telef…
in reply to Luboš Račanský

@banterCZ Tak neposílá Googlu IDčka, to jsem poplet, jenom utužuje duopol, takže bez Googlu nebo Applu přestane EU fungovat. github.com/eu-digital-identity…
This entry was edited (3 weeks ago)
in reply to Honza Javorek

@honzajavorek @banterCZ přitom by to šlo jednoduše i bez zamykání lidí v platformách. Vlezu na web nebo do aplikace, co má věkové omezení, jsem tam nově tak to chce zjistit zda jsem dosáhl patřičného věku. Přesměruje mě na evropskou webovou službu s dotazem "bylo mu 16?". Evropská webová služba mě vyzve k přihlášení eidentitou, pak se zeptá zda může sdělit webu/aplikaci jestli jsem dosáhl 16 let. Dávám ano, vrací mě to zpět na původní web nebo do původní aplikace s true/false informací. O uživateli se aplikace dozví čistě jen to co potřebuje. Je to skoro jak oauth, tzn implementovat by to uměl každej.
in reply to Štěpán Škorpil

Není to složitější? V kontextu registrace do sociálních sítí ti nestačí vědět, že tomu člověku bylo 16. To by si všichni mohli pozakládat účty na kámošovu občanku. Potřebuješ nějaký identifikátor: tohle je uživatel X a už mu bylo 16. Pokud to ID bude stabilní a svázané s uživatelem, bude prozrazovat nějaké soukromé informace. Pokud bude náhodné, jsme zase zpátky u scénáře „puč mi občanku, založím si účet“. Možná stabilní ID uživatele jedinečné pro službu?
This entry was edited (2 weeks ago)
in reply to Štěpán Škorpil

Tohle je třeba v Bank ID. Zjednodušeně - uživatel se pomocí Bank ID přihlašuje to nějakého systému. Bank ID vrací unikátní a stabilní identifikátor uživatele pro ten systém. Jiný systém dostane jiný identifikátor.

Problém by to byl u systémů ala Mastodon. Každá instance by měla jiný identifikátor pro stejného uživatele takže by se daly zakládat účty na jednu občanku na různých instancích.

in reply to Zdeněk Merta

@zdenek @honzajavorek @banterCZ to za mě není špatně. Jak říkám někde ten dosah dohledu vždycky končí. Zakládat účty na cizí občanku sice půjde, ale ve velkém se to asi dělat nebude a je tam psychologicky ten akt, že sis tu registraci vzal na vlastní triko.
Je to jako když jsem si v 17 koupil alkohol na nějakou akci, a když mě u pokladny vyhmátli, vzal za mě pán co stál za mnou ve frontě. Vzal si to na svou zodpovědnost.

Wie versprochen der Blogbeitrag über mein neues #Homelab "Konzept".

teqqy.de/selfhosted-setup-2025…

#selfhosted #komodo #gitops @homelab_de

This entry was edited (3 weeks ago)
in reply to daniel:// stenberg://

Interesting! Thanks for sharing. Sequoia received 74 reports this year on yeswehack and we've confirmed 6 vulnerabilities. Of those, none were serious. Two had to do with wasting resources on specially crafted input. Two were out of bounds array accesses that result in a panic (we're using rust). One was a terminal injection, because we forgot to escape attacker controlled data that we print. And the last one was forgetting to check that the value returned from malloc is not NULL.

The Winter Sale has officially started! ❄️

Enjoy 50% off Cryptomator and protect your files with secure, zero-knowledge encryption. Want to know how long the sale runs and what’s included? All details are in our newest blog post 👇

cryptomator.org/blog/2025/12/0…

#WinterSale #CyberSecurity #DataProtection #Encryption #EncryptedCloud #SecureYourData #SecureCloudStorage #ZeroKnowledge

I didn't realize that Swiss trains apparently also adhere to the "schedule for 80% of capacity rule".

Apparently trains in Switzerland go around 80% of the top speed possible on the track. The 20% overhead is used to make up time in the case of delays.

The thinking is: stable and predictable operation is more important than going faster. Because the cost of passengers regularly missing layovers is much higher than the benefits of trains being 20% faster.

in reply to miki

@miki this scenario rarely happens on Swiss rail. The manjority of routes are "monotonic", that is, a train ahead in schedule will also be ahead In arrival time. This is due to at least three factors:

  • no express service (if everything is the same speed nothing can catch up to each other)
  • redudnant connection network (a delayed train might get cancelled but the connections are still available through different routes)
  • single tracks and limited infrastructure (can't design for different speeds when there is only one track)

There are scenarios where it happens, those are when regional trains interact with intercity trains. In that case, a track change is made to allow the intercity trains to pass a regional train at a station, but those cases are the other way around: the regional train is delayed such that the intercity unexpectedly caught up.

What's key here is that it's not necessarily a product of infrastructure and more a result of careful planing and inter-operator cooperation.

@miki

I've just put out Codestats 0.4.0, renaming the binary to the much easier to type cs, sporting 410 supported programming languages, HTML and Markdown output formats, the ability to customize the presentation of numbers, how many decimal places percentages get rounded by, and even letting you sort the results by things such as the total number of lines, the file size, or even the number of comments! Cargo install codestats should get you there if you have Rust, but if you don't, I've put up Linux and Windows binaries here: github.com/trypsynth/codestats…. Enjoy!

It's December first, and you know what that means:

Show off your advent calendars if you have them! 😊

Mine is shared by the family, with different surprises for everyone. For me there are tarot cards that I traded with other people. They were blind trades so I have no idea what's in store!

I quite like the first one 😊

#advent #AdventCalendar #tarot #MagpieTarot

in reply to R.L. Dane 🍵

That server had absolutely zero open ports to the internet and only acted as a transparent network traffic shaper with IPFW/ALTQ. It provided 10 years of service providing rock solid performance in this environment. I don't recall there being any CVEs that affected IPFW/ALTQ or any other TCP/IP functionality that it exposed.

I'm also an ex-infosec grump :)

Why is having a 10 year uptime on a FreeBSD network appliance so much different than a 10 year uptime on a Cisco switch/router? That is not uncommon either. If a CVE is only exploitable if you can somehow access the private management network I generally don't care so much because if they can access your management network you have much much bigger problems to deal with

This entry was edited (3 weeks ago)
in reply to R.L. Dane 🍵

> although the warnings they spoke of were valid.

I think they're a little confused because they seem to think that pkgbase means base comes from the ports tree and it's not stable anymore but rolling release instead. That's not what's even happening here.

Though they are correct at alluding to a more rapid development future being possible where we could have desktop users targeting STABLE or even CURRENT quite easily

Nexus Client


Hi, around two weeks ago I started making Nexus, a Matrix client.

In these two weeks, I've made great progress, as you can see in the progress list.

However, I'd love some help implementing some features, or help with UI design, as it takes me quite a while to design a UI.

If you're interested, please reply!
Boosts appreciated! ❤️

#Flutter #FOSS #Help #OpenSource #Matrix #Design

reshared this