matt

@matt@toot.cafe

Software developer, formerly at Microsoft, now leader of the AccessKit open-source project (https://accesskit.dev/) and cofounder of Pneuma Solutions (https://pneumasolutions.com/). My current favorite programming language is Rust, but I don't want to make that part of my identity.

Music lover. Karaoke singer. Science fiction fan. Visually impaired (legally blind). Secular humanist

This profile is from a federated server and may be incomplete. Browse more on the original instance.

matt, to random

Question for blind macOS users: Is Apple's Terminal app the only terminal that works with VoiceOver, or are there others? Yes, I know it's common for blind macOS users who rely on the terminal to use an in-terminal screen reader like tdsr (https://github.com/tspivey/tdsr), but I have a specific reason for asking about terminal access with VO.

glyph, to random
@glyph@mastodon.social avatar

I get a little wistful at retrocomputing aesthetics, but the nostalgia is mostly melancholy and not exciting. When I think about the future of cool, weird software stuff, Textual and Rich are great examples of empowering, cross-platform weird and nerdy tools that are nevertheless powerful and futuristic
https://mastodon.social/@willmcgugan/110430900132509356

matt,

@glyph Is there an established convention for adding new terminal escape codes without clashing with anyone else's extensions?

matt,

@glyph Ah, thanks. Software like screen or tmux would screw up a terminal accessibility protocol anyway.

matt,

@glyph Right, screen or tmux would need to participate.

matt,

@glyph And, honestly, I'd rather start with textual because it's Python rather than C.

matt,

@glyph And, to answer a question that nobody has asked yet but people are probably wondering about, tools like dialog and whiptail weren't great either. I need to dig up a recording I made in 2000 where I walked through installing Debian using the TUI-based installer with the Speakup screen reader. At least whiptail (or was it dialog back then?) didn't have complex, split-screen layouts.

matt,

@glyph I mentioned an old recording of mine on installing Debian using the TUI installer with the Speakup screen reader. But then I recalled that someone else, who was better at recording tutorials than I was, did the same thing with Slackware, also in 2000. In this excerpt he covered partitioning with cfdisk (a TUI). This was made available as part of a weekly audio program on technology from a blindness perspective called Main Menu. https://mwcampbell.us/a11y-history/joe-norton-slackware-speakup-partitioning.mp3 Definitely retro in a bad way.

matt,

@glyph @feoh To me, mimicking a GUI in a terminal is definitely retro in a bad way. I discussed the accessibility problem at length on another subthread, but when you add to that the limitations of fixed-width fonts, particularly for internationalization, I don't see the character grid as an advantage in any way, except I guess that it's easier to implement in pure Python than a new GUI.

matt,

@glyph I could make a quick recording of doing something in a GUI with a screen reader, involving a complex layout with a table view, if that would help.

matt,

@feoh Fair enough. I'm partially blind (or partially sighted, if you prefer) as well, and I do use my limited vision quite a bit when programming. And in that context, I prefer to use a full-screen terminal where the font is large enough that only about 80 columns can fit on the screen.

But if I ever make the leap to coding with a screen reader, e.g. so I can be truly productive on a laptop without requiring a desktop monitor, I'll probably use VS Code rather than vim.

@glyph

matt, to random

I'm trying to remember why, 12+ years ago, I thought it was a good idea to use Mercurial rather than Git for source code version control. Supposedly better Windows support? Anyway, I'm moving an older project to Git.

matt,

@TheQuinbox Hell, I still use SA for some web browsing, because I still like the use of tones for links that I implemented way back when, and some other small things about the feel of it. And we're not entirely done with SA, though I don't know when I'll get back to it.

matt,

@TheQuinbox One of the things that Mike and I want to work on is actually a way to switch screen readers on the fly based on what app you're running.

matt,

@TheQuinbox I mean, based on which app is in the foreground.

matt,

@TheQuinbox @Brynify LOL! Now I feel less bad about that name.

matt,

@Brynify @TheQuinbox I honestly didn't do anything special for NeoSpeech, besides having access to their native API rather than SAPI. In the case of RealSpeak, I recall implementing some code to trim silence.

matt,

@TheQuinbox @Brynify How what works?

matt,

@Brynify @TheQuinbox System Access proper doesn't use C#, Java, or Python. Sero (the online service, formerly SAMNet) is a big ugly mongrel.

matt,

@Brynify @TheQuinbox Oh right, the OCR component of DocuScan Plus.

matt,

@Brynify @TheQuinbox DocuScan Plus, by the way, was written in Python, but using the SWT GUI toolkit for Java. SWT is like wx, but without the annoying inconsistencies like having to use different control types for an accessible list view on Windows and Mac. I used SWT from Python using the lightweight Avian JVM (now abandoned) and a Python/JVM bridge called pyjnius.

matt,

@TheQuinbox @Brynify Yeah, liked Python better, had some existing code I wanted to reuse for converting to a couple of different document formats, and I found it easier to interface with native code from Python using ctypes, PyObjC, etc.

matt,

@TheQuinbox @Brynify Yes, originally SA was all Python, using the pyAA and pyHook libraries. I started bringing in C++ and Lua before SA even hit 1.0 though, so I could have some semblance of an off-screen model and an in-process virtual buffer for IE.

matt,

@TheQuinbox @Brynify I don't know the actual ratio of C++ to Lua code. I did try to do as much as possible in Lua, including a big chunk of code that's injected into every application process, including the virtual buffer. I tried to limit C++ to bindings and low-level API hooking (what Microsoft calls detours). The lower layer of the off-screen model is in C++; it gathers info from GDI and queues up records to be handled by the higher-level Lua code.

matt,

@miki @TheQuinbox @Brynify I never got that low-level with SAPI 5, but I think I did with SAPI 4.

matt,

@TheQuinbox @Brynify If Rust existed in late 2004 when I started writing the in-process code for SA, I totally would have used it.

matt,

@TheQuinbox @Brynify I even looked briefly at OCaml and Haskell when I was in college, in like 2002, but they were just too different for me to really get my head around and put to practical use.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • everett
  • InstantRegret
  • thenastyranch
  • magazineikmin
  • khanakhh
  • rosin
  • Youngstown
  • slotface
  • mdbf
  • cisconetworking
  • kavyap
  • cubers
  • DreamBathrooms
  • megavids
  • ngwrru68w68
  • Durango
  • osvaldo12
  • tacticalgear
  • modclub
  • normalnudes
  • Leos
  • ethstaker
  • GTA5RPClips
  • tester
  • anitta
  • provamag3
  • lostlight
  • All magazines