"I will never use Flatpaks because I have to type `flatpak run com.example.Application`. It's insane Flatpak developers don't change it!"

Except you can add `/var/lib/flatpak/exports/bin` to your $PATH. This way, you can type `com.example.Application` in your terminal, dmenu, everywhere. Also if you aren't using completions and insist on doing everything in the terminal, you have bigger problems.

Shout out to the Evil Skeleton (@TheEvilSkeleton) , who blogged about this 3 years ago. tesk.page/2022/09/28/what-not-…

This entry was edited (1 week ago)

Do not underestimate the power of boredom+frustration. Paperback was born after I got progressively more and more frustrated with reading on Windows, and finally one day got bored and got on TeamTalk with one of the most intelligent hackers I know, and started bouncing ideas off of him. And look where it is now.

Thanks to my recent accessibility changes, and my first contribution to an Open Source project other than my own, Auto Claude is now the most screen reader accessible front-end UI that extends Claude Code with features like a changelog generator, creating roadmaps, and feature ideation. At its core, it has tasks, spec, and review workflows built in. github.com/AndyMik90/Auto-Clau…

reshared this

in reply to Josh

So I'm currently trying it, reauthorized my Claude account already, updated claude code but still, created a new task and every minute or so it crashes with this:
RESEARCHStarting phase 6: CONTEXT DISCOVERYStarting phase 7: SPEC DOCUMENT CREATION05:00:13 PMAPI Error: 401 {"type":"error","error":{"type":"authentication_error","message":"Invalid bearer token"},"request_id":"XXX"} · Please run /login05:00:15 PMAPI Error: 401 {"type":"error","error":{"type":"authentication_error","message":"Invalid bearer token"},"request_id":"XXX"} · Please run /login05:00:17 PMAPI Error: 401 {"type":"error","error":{"type":"authentication_error","message":"Invalid bearer token"},"request_id":"XXX"} · Please run /loginPhase 'spec_writing' failed: Attempt 1: Agent did not create spec.md; Attempt 2: Agent did not create spec.md; Attempt 3: Agent did not create spec.md05:00:17 PMPhase spec_writing failed
in reply to Dmytri

i humbly disagree, at least in the u.s. context. the national framework (reinforced by media) is to pull oneself up by one's bootstraps and work 50-60-70 hours a week. be the first one in and the last one out... movies with the executive class taking phone calls at all hours in all places, lower rung employees buy the gifts for weddings and birthdays, caregiving for children and elders is for the low class, spouses are for show not caring for, marriages are not partnerships they are for decoration... the morbidly wealthy ever busy scamming each other for the next big deal.
in reply to Dmytri

what about virtuous rich communities tho, don't we want everyone to be rich? How do we do that?

no such thing, no, we do not.

my version of we wants:

everyone to contribute meaningfully without the unknown, unseen suffering of others. in a global context. no cheap chinese goods made by slave labor, no dumping toxic waste for indian children to sort through, no oppression anywhere for the convenience of any one, at all.

it is the work of generations. generations of colonial exploitation built and continue to reify the current unjust systems, locally and globally.

our inheritances (you and i and every human who will see this conversation) include debts to others. to those who physically construct the digital tools we use, to those who have less clean water and more polluted air to support our lifestyles, to the nonhuman living world that has been destroyed and continues to be mined and clear cut and mutilated for our daily life to continue.

honorably making amends is our entire life's work.

1/2

in reply to ❣️a standard deviantifa +/- gravy

accepting our responsibility to work, of proactive reciprocity, and then doing that work is how we have a virtuous life.

richness in community, in living in harmony with the humans and nonhuman world locally, in the love with share, in expanding our capacity to love... in recognizing the abundance in existence, wallowing in the pleasure of service to the life all around us.

this is my favorite framing at the moment:

theecologist.org/2025/may/28/p…

2/2

This entry was edited (5 days ago)
in reply to ❣️a standard deviantifa +/- gravy

@melioristicmarie lots of great ideals there, but there does seem to be an anti-commercial bias. I'm definitely not comfortable with and do not agree with the phrase "cheap Chinese goods made by slave labour," but I wont say any more about that, I would rather focus locally. I honestly don't see what way forward you imagine there is for people who need money to survive, or for the kind of communities you want to build resources they don't have. Ideals are important, but my comments are not about ideas as such, but about how considering commercial activity as being vulgar is a trap. We need to make money to make change. And we need to do so at scale to make significant change. Bourgeois ideology makes it emotionally uncomfortable for us to admit we need to make money at scale, but we do.
in reply to Dmytri

i'm not sure what you mean by anti-commercial. commerce, like profiteering and the stock market, i work against. trading goods and services with informed consent in a just, regulated system? i am for.

adverts forced and snuck into daily life, i am against. adverts where folks go looking to buy things, in and around market places, i am for.

capitalist-extractive practices, i work against. worker-driven practices, i support. a fully informed and consent based supply chain, with just practices, i work for.

serving the needs of a community through labor (services / production) is often commerce.

the enslaved humans doing forced labor in china i refer to: (en.wikipedia.org/wiki/Xinjiang…)

in reply to ❣️a standard deviantifa +/- gravy

@melioristicmarie you can assune I can find common anti-china material on my own, you could also find contradictory material, but I'll also let you do that on your own, if you want to. I'd preffer to focus locally, no shortage of cheap goods or exploited labour in our countries. Without sales and marketing how would you find out about good products produced by fairly treated workers? Wthout money how would these workplaces come to exist? How would the compete on the market to create sufficient scale to viable employers and suppliers for the greater population?
in reply to Dmytri

what do mean without? adverts, is what i mean by marketing. places for sales is what i mean by market place. we have newspaper delivery four days a week and there are adverts there, where our community expects them to be.

without money? why would we stop using currency? the market places in my city use money, in both brick and mortar and pop-up markets (we have both a weekly "farmers" market that pops-up / blocks out a portion of the parking area in one of ours and a monthly speciality vending event).

workplaces... ? i've lived in a few different cities and states in the u.s. and all have human-owned (non publicly traded) workplaces, most have co-ops, some worker owned.

i have no interest in colonizing a "greater population". i am invested in serving my local community... in buying from and selling to humans i am accountable to and who i hold to account.

edit: it is a process of generations to shift from exploitation to informed consent. doing the work, is the work of my life.

This entry was edited (5 days ago)
in reply to Dmytri

activists that i know and counter-culture folks working for system change are not anti-commercial, they are anti-capitalist, anti-exploitation. they are paying a living wage to service workers and using collective non-hierarchal models, buying from consignment and resale shops and new books from human owned bookstores or indiebound.org.

they don't build a business to cash out to chains and live off the profits (which harms the community). mastodon for example... is moving to a nonprofit model instead of being sold to a media company.

i guess if i'm understanding your thread, i'm hoping to shift your framework towards incremental prosocial change as a viable option for making one's living.

This entry was edited (5 days ago)
in reply to ❣️a standard deviantifa +/- gravy

@melioristicmarie well, technically what you are describing is not outside of capitalism, but for sure more social, less exploitative practices is the goal.

However growth is also a factor, especially if the goal is supporting all humans.

You mention Mastadon, currently my favourite social platform despite my technical concerns, however it's import to understand that Facebook acquires more users every couple of weeks than Mastadon has in total, in all it's history, it's growth rates and daily usage rates trail facebook by even worse margins. Mastadon employs, maybe, a couple of hundred people world wide. Facebook employs 10s of thousands.

This is important.

Of course, Mastadon is not the best example, since it's not really selling anything, but I in general projects that avoid scale struggle to become engines of change, and in the end, many people just decide that liberating everyone is too hard, and they're ok just having things they like. But the risk is that slips into lifestylism, not an engine for change, just a privileged cul-d-sac, sheltering some lucky communards from the storm, often temporarily.

in reply to Dmytri

british empire, pro-colonization sort of thinking? one idea is the best for a fictional universal human? so better to subjugate all for their own good, patriarchy?

i can see better why your original toot had a burke's peerage flavor of leisure as a signal for wealth... the whole breeding program system definition of landlords and such.

i do not believe that any person can know what any is best for a person in another part of world. i believe informed consent is the only moral interaction method, and in a person's right to self-determination.

facebook is an marketing site based on deception. i studied it in grad school. it is a social harm, not a pro social system.

i prefer small and honest over authoritarian paternalism.

in reply to ❣️a standard deviantifa +/- gravy

@melioristicmarie I'm not sure I understand any of that, so guess we will leave it there. It's clear we differ in our understanding of what needs to be done, and we probably don't share a theoretical framework, eg veblan, marx, etc, I've read your response a few times, and honestly have no clue what even a single sentence means, feels like a lot of bad faith projection and zero curiosity.
in reply to ❣️a standard deviantifa +/- gravy

@melioristicmarie I've been discussing peer production, free software, decentralization, etc for decades and am often cited by people and communities working on these topics. What are you asking me exactly?

Here are some slides on a presentation of mine about facebook specifically.

dmytri.surge.sh/spark

in reply to Dmytri

earlier you stated that facebook was a preferred platform to mastodon due to the number of new account sign-ups.

i am asking what you understand to be the difference between them, other than new account sign-up.

from my perspective (also a researcher and co-author in a.c.m. conferences who has been cited for my work on facebook), i understand them to be fundamentally different.

my example of the transfer of mastodon "ownership" to a nonprofit was to cite a case where selling out for the benefit of the creator at the expense of the community was the path not chosen. an example of a prosocial business transition model.

in reply to Dmytri

"...it's import to understand that Facebook acquires more users every couple of weeks than Mastadon has in total, in all it's history, it's growth rates and daily usage rates trail facebook by even worse margins. Mastadon employs, maybe, a couple of hundred people world wide. Facebook employs 10s of thousands.

This is important.

Of course, Mastadon is not the best example, since it's not really selling anything, but I in general projects that avoid scale struggle to become engines of change, and in the end, many people just decide that liberating everyone is too hard, and they're ok just having things they like. But the risk is that slips into lifestylism, not an engine for change, just a privileged cul-d-sac, sheltering some lucky communards from the storm, often temporarily."

specifically, you seem to be suggesting that an engine of change needs to scale. i disagree.

in reply to ❣️a standard deviantifa +/- gravy

@melioristicmarie stalability maters if our goal is to include everyone, if consider facebook harmful, then we need an alternative or set of alternatives that ca scale. We need to compete directly against facebook. If our goal is a priviledged cul-du-sac, then we already have many for those able to access. Please read the slides.
in reply to ❣️a standard deviantifa +/- gravy

@melioristicmarie I generally agree with this paper btw, we both seem do advocate a dialogical aproach. When I have had discusions with people involved in anti-colonial struggle, the issue of how to confront the toxic enclosure of communications by facebook has been a central theme. For the most part, discussions circulated around how they could free their communities from facebook at scale, not just help some small groups find alternatives, because mobilazation for anti colonial struggles happen at scale, and so the challange is reach. A great deal of such mobilaization happens on facebook today, and this a problem, the slides I shared where from a talk and discussion I originally gave at a gathering of global south activists.

Accessibility isn't just about compliance, it makes email better for everyone.

accessibilitychecker.org/blog/…

#Email #a11y #Accessibility

A man goes to his doctor and tells him that his wife hasn't had sex with him for 6 months:
The doctor tells the man to bring his wife in so he can talk to her.
So the wife comes into the doctors office and the doctor asks her what's wrong and why doesn't she want to have sex with her husband anymore.
The wife tells him. "For the past 6 months, every morning I take a cab to work. I don't have any money, so the cab driver asks me. 'So are you going to pay today or what?' so I take a 'or what'. When I get to work I'm late so the boss asks me, 'So are we going to write this down in the book or what?' so I take a 'or what'. Back home again I take the cab and again I don't have any money so the cab driver asks me again, 'So are you going to pay this time or what?' so again I take a 'or what'. So you see doc when I get home I'm all tired out and I don't want it any more."
The doctor thinks for a second and then turns to the wife and says "So are we going to tell your husband or what?" 🤣

@Tutanota - I'm a paid customer of your e-mail service. And I noticed that using your e-mail app through web, is completely impossible by a screen reader user. Since last year it has become worse and worse, no way to intercept e-mails. Inbox doesn't show messages to screen reader users (Windows-based) it's a nightmare to navigate your web interface #accessibility

The text mode lie: why modern TUIs are a nightmare for accessibility — The Inclusive Lens xogium.me/the-text-mode-lie-wh… #Accessibility #CLI #TUI


The text mode lie: why modern TUIs are a nightmare for accessibility


The mythical, it's text, so it's accessible


There is a persistent misconception among sighted developers: if an application runs in a terminal, it is inherently accessible. The logic assumes that because there are no graphics, no complex DOM, and no WebGL canvases, the content is just raw ASCII text that a screen reader can easily parse.

The reality is different. Most modern Text User Interfaces (TUIs) are often more hostile to accessibility than poorly coded graphical interfaces. The very tools designed to improve the Developer Experience (DX) in the terminal—frameworks like Ink (JS/React), Bubble Tea (Go), or tcell—are actively destroying the experience for blind users.

The Architectural Flaw: Stream vs. Grid


To understand the failure, we must distinguish between two distinct concepts often conflated under “terminal apps”: the CLI (Command Line Interface) and the TUI.

  1. The CLI (The Stream): This operates on a standard input/output model (stdin/stdout). You type a command, the system appends the result below, and the cursor moves down. This is linear and chronological. For a screen reader, specifically kernel-level readers like Speakup, this is ideal.
  2. The TUI (The Grid): This treats the terminal window not as a stream of text, but as a 2D grid of pixels, where every character cell is a pixel. It abandons the temporal flow for a spatial layout.


Case Study: The gemini-cli Madness


Let's look at a concrete example: gemini-cli, a tool written in Node.js using the Ink framework. On the surface, it looks like a simple chat interface. But underneath, Ink is trying to reconcile a React component tree into a terminal grid.

When you use this tool with Speakup (Linux) or NVDA (Windows), the application doesn't just fail; it actively spams you.

Because the framework treats the screen as a reactive canvas, every update triggers a redraw. When the AI is “thinking,” the tool updates a timer or a spinner. To do this, it moves the hardware cursor to the timer location, writes the new time, and moves it back.

For a sighted user, this happens instantly. For a screen reader user, this is what you hear:“Responding... Time elapsed 1s... Responding... Time elapsed 2s... [Fragment of chat history]... Responding...”

It drives the screen reader mad. The cursor is teleporting all over the screen to update status indicators, spinners, and history. Speakup tries to read whatever is under the cursor at that exact millisecond. You end up hearing random bits of conversation mixed with timer updates, making it impossible to focus on what you are actually typing.

Worse, lets pretend that you've somehow managed well with speakup so far, but that you want to do some work with nvda. Maybe paste an error you're getting on windows. So you open your terminal, ssh into your linux box, attach to your screen session and paste your text.

The result is an immediate crash of the screen reader (NVDA) or massive system instability. Why? Every time you type a character or paste text, the application triggers a state change. The framework decides it needs to re-render the interface. Because the conversation history is part of that state, the application attempts to redraw or re-calculate the layout for thousands of lines of text instantly. The more messages you have in a conversation, the more this will happen. And no, you can't just avoid this by using insert+5, the key combo supposed to avoid announcing dynamic change of content.

The Lag Loop


Furthermore, frameworks like Ink running on single-threaded environments (like Node.js) suffer from massive performance degradation when the history grows. If you paste a large block of text, the system has to calculate the diff for thousands of lines.

This causes input lag. You press a key, and you wait. You can wait up to 10 seconds for a single character to echo back. The system is too busy calculating how to redraw the screen to actually process your input.

Why The “Old Guard” Works (nano, vim, menuconfig)


Sighted developers often ask: “If TUIs are bad, why do you use nano, vim, or menuconfig?”

The answer is not that these tools handle the cursor perfectly by default. The answer is that they allow you to hide the cursor entirely.

1. Hiding the Cursor (nano, vim)


In tools like nano or vim, usability depends on turning off features that track cursor position. If you run nano with options that show the cursor position (like --constantshow), or if you use vim without specific configuration, the experience is broken.

When the cursor is visible and tracking is active, Speakup prioritizes the cursor's location update over the character echo. Instead of hearing the letter “a” when you type it, you hear “Column 2”. You type “b”, and you hear “Column 3”.

These older tools succeed because they allow you to disable this noise. You can configure them to suppress the visual cursor or status bar updates, forcing the screen reader to rely on the character input stream rather than the noisy coordinate updates. Modern frameworks rarely offer a “no-cursor” or “headless” mode; they assume the visual cursor is essential.

2. Single Column Focus (menuconfig)


Tools like the Linux kernel's menuconfig work because they enforce a strict, single-column focus. Even though there are borders and titles, the active area is a vertical list. The cursor stays pinned to that list. It doesn't jump to the bottom right to update a clock, then to the top left to update a title. The spatial complexity is kept low enough that the screen reader never gets “lost.”

3. The Lost Art of Scrolling Regions (Irssi)


Irssi is the gold standard for accessible chat, but not because of luck. Irssi was built over 20 years with a custom rendering engine that utilizes VT100 Scrolling Regions.

When a new message arrives in Irssi: 1. It tells the terminal driver: “Define a scrolling region from line 1 to 23.”2. It sends a command: “Scroll up.” The terminal moves the bits up. 3. It draws the new text at the bottom of that region.

Crucially, it handles this in a way that minimizes interference with the input line. It relies on the terminal's hardware capabilities rather than rewriting every character on the screen manually. Modern frameworks ignore these hardware features in favor of “diffing” the screen state and rewriting characters, which is computationally heavier and hostile to accessibility.

The “Stale Bot” excuse: A Case Study in Neglect


Google and the maintainers of gemini-cli pretend to care about accessibility. “Pretend” is the operative word here. If you look at the repository, critical accessibility regressions like Issue #3435 and Issue #11305 have been left to rot. There is no discussion, no roadmap, and no fix. Even worse is the fate of Issue #1553, which was supposed to track these accessibility failures. It didn't get solved; it got silenced. It was closed automatically by a bot with this generic dismissal: > Hello! As part of our effort to keep our backlog manageable and focus on the most active issues, we are tidying up older reports. It looks like this > issue hasn't been active for a while, so we are closing it for now.”

This is unacceptable. Closing an accessibility report because the maintainers haven't touched it in months is not “tidying up”; it is hiding evidence. It effectively says that if a bug is ignored long enough, it ceases to exist. It boosts the project's “Closed Issues” metric while leaving the actual software unusable for blind users.

Conclusion


If you are building for the terminal and care about accessibility, stop using declarative UI frameworks that treat the terminal like a canvas.

The “modern” TUI stack has optimized for the developer's ability to write React-like code at the expense of the machine's ability to render text efficiently.

If you cannot guarantee that your application allows the user to hide the cursor, or if you rely on aggressive redrawing to show spinners and timers, you are building an inaccessible tool.

For the blind user, a dumb, linear CLI stream is infinitely superior to a “smart” TUI that lags, spams, and scatters the cursor across the screen.


reshared this

As someone who uses Eloquence on all my devices, this was a very educational article on the state of Eloquence itself. This also includes other contenders which, at this moment in time, don't really exist. Sam's Stuff - The State of Modern AI Text To Speech Systems for Screen Reader Users stuff.interfree.ca/2026/01/05/…

reshared this

RE: mastodon.social/@Tutanota/1158…

Update: Office has not been renamed to, "Microsoft 365 Copilot App"

Like everyone else on the internet Microsoft also has us confused.

Thanks to @tomwarren we now understand what's changing.

You can find out here: theverge.com/tech/856149/micro…


🚨 BREAKING: Microsoft just renamed Office to "Microsoft 365 Copilot app"

All users are now "AI users"

And this will lead to higher prices: tuta.com/blog/microsoft-365-pr…

#Microsoft #Copilot


✏️ 5 accessibility checks to run on every component zeroheight.com/blog/5-accessib…

I guest-posted on zeroheight's blog about accessibility of components!

(note: WCAG compliance is claimed on full pages/processes only)

I just got this response from NVDA's AI content describer addon, the addon that's uh, you know, supposed to describe images for people? "I’m not able to view images, so I can’t describe it directly. If you can either paste the image text or give me a brief summary of what’s in it, I’ll gladly help craft a detailed description for you." You had one job

reshared this

This one is a bit specific, but who knows. For the Dutch techies in the energy sector, Alliander is looking for an Open Source Specialist! ⚡

#fedihire #fossjobs #getfediHired

werkenbij.alliander.com/vacatu…

Do you know someone who quietly makes the Django community better every day? Or maybe that someone is you? 👀✨

The Django Software Foundation appoints Individual Members to recognize contributions of all kinds: code, docs, reviews, teaching, events, community care, and more 💚

You can nominate someone you admire or self-nominate (yes, really!) 🙌

Members list: 🤗
djangoproject.com/foundation/i…

Nominate here: ✅
docs.google.com/forms/d/e/1FAI…

CC @django

#Django #DSF #Community #Python #OpenSource

This entry was edited (5 days ago)

#IzzyOnDroid is about community. That's why we don't want our #FOSDEM visit to be just about us, but also about all the amazing apps that make IzzyOnDroid so great.

Do you have an app that's available on IzzyOnDroid? Bring some stickers with you to FOSDEM and drop them off at our booth! We'll make sure to display them so your users can pick some up!

Sylvia reshared this.

Is see Danish citizens online are now proposing to invade USA and MAAG. (Make America Actually Great)
Under occupation they would ensure Americans got.
Universal healthcare
Fairer wages + lower income inequality
Paid parental leave
Bike-friendly cities
Free college options
Fewer work hours
Reliable public transportation
Stronger social safety net
-
#Denmark #USA #USpol #Politics

RE: mastodon.social/@Tutanota/1158…

Microsoft just turned all Office users into AI users. Lmao. It’s now called the "Microsoft 365 Copilot" app. Get ready for fee increases and having your data opted into training by default with confusing settings. Enshittification has peaked.


🚨 BREAKING: Microsoft just renamed Office to "Microsoft 365 Copilot app"

All users are now "AI users"

And this will lead to higher prices: tuta.com/blog/microsoft-365-pr…

#Microsoft #Copilot


I wish I could just start texting people. Be it just a hey how are you, what did you do yesterday etc, but I feel like that's not common anymore because it has been taken up by Instagram, SnapChat and what not other stuff. I don't want that. I don't want all this image based crap. Just give me back good old text messages. But why would people text stuff to one random person if they can share everything they want with one inaccessible image to all their friends?
This entry was edited (3 days ago)

I cancelled my Zoom subscription today.

Not for some higher reason, but the client I used it with mostly before is switching to Google Meet (yeah…) and so I am looking into alternatives.

I’ll probably do @OpenTalkMeeting as it is hosted in Germany and has fun functionality like the talking stick and coffee breaks. Also half the price for a year.

docs.opentalk.eu/25.4/user/en/…
docs.opentalk.eu/25.4/user/en/…

in reply to Marco Zehe

@marcozehe Dial-in by phone is certainly listed as a feature. I’d rather have a dedicated app instead of a browser-based solution, but apparently I’m alone in that. What will be annoying is no Calendar integration (Fantastical).

opentalk.eu/en/product/feature…

Bahnfahren leichter gemacht: Erste Stufe der Online-Buchung für Menschen mit Schwerbehindertenausweis jetzt live bsvh.org/nachricht/bahnfahren-…