Bring your karma
Join the waitlist today
HUMBLECAT.ORG

Blind and Visually Impaired Community

Full History - 2015 - 12 - 22 - ID#3xv2j3
5
Are there any blind programmers here? (self.Blind)
submitted by FreakyCheeseMan
Hello, all. I'm a (non-blind) computer science student, and for my honors thesis I was interested in attempting to create a set of development tools for blind programmers. If there are any blind programmers here, I'd love to hear your thoughts on what sorts of tools or structures would be useful for you.

My basic idea gets into a little bit of compiler theory, but it involves skipping the source code stage and having a menu and command based set of tools for operating directly on the Abstract Syntax Tree (something the compiler builds as an intermediate step towards code generation). At any point while programming, your IDE would be "Pointed" at some node of this tree (For instance, "Class A/Member Variable List", "Class B/Method foo/Code Block Two(for Statement)", etc. You'd then have commands for navigating the tree and local resources ("List all member variables, List all local variables, follow referenced type, etc").

My hope is that this would mean less visual searching to find needed information or context. Does this sound at all helpful? Are there tools/writing on this I should know about?

Thanks for the help!
fastfinge 3 points 7y ago
I do some programming in PHP and C# as part of my day job, though I wouldn't call myself a full-time programmer. Personally, I find working with debuggers to be much more difficult than the actual programming portion of things. However, I think this has more to do with the fact that people don't bother to make the tools accessible, than it does anything else. At first blush, your idea just sounds more confusing than helpful. Writing code is the easy part of programming while blind. It's everything else, from laying out winforms to designing logos and icons to profiling and debugging that's hard. And as I say, that's only hard because people have no interest in making sure the tools are accessible, as the subset of people who program and are also blind is, sadly, much smaller than it should be.

Edit to add: you might find $1 (in post 46 of that thread) from someone who is a full-time programmer useful. Perhaps consider getting in touch with him directly.
FreakyCheeseMan [OP] 1 points 7y ago
Huh, interesting. I hadn't considered tasks outside of direct code creation, since that's generally all I do. Putting work into debugging tools might be a task I could work on somewhere down the line, but it's past the current range of my experience. But, what sort of features or interface would you want in a debugger?

The rant is interesting, especially for the comment on command-line tools. That's a lot of what my design philosophy in this was - creating a language/IDE that would be similar to modifying a linux directory through the command line, except instead of just having "Directories" and "Files" you'd have nested categories like "Classes", "Methods", "Statement Blocks", etc. Ideally, it would be easy to explore this structure through quickly-typed queries. Ideally, it would also be relatively easy to write/share tools to automate tasks or queries.
WhatWouldVaderDo 1 points 7y ago
It sounds like your interests coincide pretty nicely with the work done by $1 over at UW. For some of his work in this area, look up publications of his student Catherine Baker.
CaseyBurkhardt 1 points 7y ago
Greetings, I'm a legally blind software engineer. I'd suggest looking into a project known as $1, which aims to provide an audio-based interface for various common desktop computing tasks, including an extensive suite of audio-based developer tools. The project is maintained by blind computer scientist and Googler T.V. Raman.
fastfinge 1 points 7y ago
The problem with Emacspeak is that it's nice in theory, but impractical for daily use. Unless you're lucky enough to find work in a Linux shop, like Google I guess, you just can't convert a machine entirely over to Linux. Also, last time I tried it, it fell seriously, seriously short on the web-browsing front. We live in a day where the vast majority of tasks are moving into the browser, like it or not, so that's a killer. But I'd agree that it's something that should be investigated from an academic perspective. I just wish someone would get to moving some of those revolutionary concepts out into the real world where the rest of us could make some use of them. :-(
modulus 1 points 7y ago
I'm blind and I write code. I don't think addressing the AST is likely to be a very good way of going about it for a number of reasons. The AST is built on the basis of the needs for the compiler, and, in a sense, the final output. For example let us say that you have a class, which is further modified on the code. The AST will just contain the final result of that modification without regard to how the source is organised. And the way the source is organised is indicative of intent. So AST is usable, but it removes the possibility to understand intent.

I would say the things that would make life considerably easier are:

* A good accessible editor with good navigation (previous function, next function, folding of blocks...).
* Commands to present autocomplete information accessibly. For example a command that would present (in a way the screen reader can grab) which methods on a class begin with what we have on the cursor, or which variables in scope exist beginning that way, etc.
* Direct documentation access, so that one can place oneself on an identifier and get type, and if there's associated docstrings those too.

Some tool to help laying out GUIs would also be handy. How I envision this is having a tree view where you can add objects (lists, edit fields, menu items) and another frame where the GUI is previewed.

FreakyCheeseMan [OP] 1 points 7y ago
So, my thought was that the AST could be modified with some supplemental information, to make it more readable/understandable., and to (as you say) convey intent. Effectively, this would be a language that has a "Source Tree" rather than "Source Code." I think this would allow for a minimalstic and simpler compier, but it wouldn't quite be the same as just saying "Here's the AST that would have been generated anyway, have fun with that." (One obvious flaw that just ocurred to me is that the structure would be completely different from what normal coders worked with, though. So even if this idea did work for blind people, it wouldn't be good for any projects that weren't worked exclusively by blind people.)

The tools you describe make sense to me, though it sounds like it's further away from my specialty, and further from something I could contribute to in an academic context. Thanks for the feedback, though.
This nonprofit website is run by volunteers.
Please contribute if you can. Thank you!
Our mission is to provide everyone with access to large-
scale community websites for the good of humanity.
Without ads, without tracking, without greed.
©2023 HumbleCat Inc   •   HumbleCat is a 501(c)3 nonprofit based in Michigan, USA.