Just learned about GridReader, a free tool for Blind programmers that might make it easier to explore complex nested code. My #Python experience is limited to experimenting with the BBC Microbit, and so far i've just set my screen reader to report indentation level. #Blind coders: how do you handle indentation and navigating complex code bases? Does GridReader seem useful? https://www.psu.edu/news/information-sciences-and-technology/story/new-coding-tool-could-aid-computer-programmers-who-are/?fbclid=IwAR1AFWy5E5XrPF8u__Lh3dke6AqTuhiNReqCIip0sarmGT1MppdFwHx4h74
@ChanceyFleet In #MacOS Ventura with #VoiceOver, I can now have both leading tabs and spaces announced with an indentation count, making things much easier when encountering code indented with spaces. I have activities set when coding in Xcode or TextEdit that announces all characters and punctuation and repeated punctuation with counts, making it quick and easy for me to read through code, plus using comments like bookmarks to jump to different code blocks as things get more complex.
@Marconius @ChanceyFleet On Windows using NVDA, similar setup could be achieved with app profiles. I have a specific Notepad++ profile with indentations and punctuations announced for instance.

@ChanceyFleet Honestly no, from reading the article. I know blind programmers that can fly when compared to sighted programmers, so saying that we often fall behind simply is not true. In fact, this is exactly why a lot of programmers (me included) have our speech rate up well past 800 words a minute (so we don't fall behind).

I've familiarized myself with loads of codebases over the years, and I think present tooling is plenty sufficient. VSCode is now fully accessible, meaning blind people now have access to a mainstream IDE. We also have tools for our screen readers to help us code better. As you mentioned, indentation with tones, and a handy little add-on called Indent Nav, that lets you treat indented code like a tree view.

This feels like another case of the Quorum programming language (obviously being a tool instead of a language), but same concept. A bunch of researchers that did some searching into how blind people code, and decided to make a hole new tool, without checking if alternatives are accessible/already exist. I appreciate the intent, but this is a really long winded way of saying no, I don't think its that useful.

@TheQuinbox Thank you so much for that context. Is IndentNav an add-on? And yes, some of the framing and assertions in this article were uncomfortable to read.

@ChanceyFleet [email protected] Yep, indent-nav is an NVDA add-on. Basically the way it works is this: if I'm in a text field, on a function, called do_work, and there's a function right below it, called work_harder, I can press alt+NVDA+down arrow to jump down to that function, and alt+NVDA+up arrow to jump back to where I was previously. It skips all the indentation between, and gives me audible feedback to indicate this. It also changes how long this sequence of sounds goes on for to reflect how much code I've skipped over, and how indented it is. Perhaps an audio demonstration would allow me to explain the feedback a bit better.

Now, lets say I want to go into the do_work function, but just see what's on the first indentation level. So, I press alt+NVDA+right arrow, and I'm put inside it (moved to the next block with more indentation than my current line). I can then use the aforementioned commands of NVDA+Alt+up/down to navigate statements, and I can keep doing this to find what I want really quickly. Its remarkably similar to a tree view.

Also, because we now have access to VSCode, a mainstream IDE, we get so many more tools. Want to know what a function expects? Control+shift+space, and its spoken. Want to see a definition? F12, boom. Etc.

@TheQuinbox @ChanceyFleet I never knew about this it sounds super useful! I occasionally try and learn how to code but I always give up 'cause the lift seens too large. I know other people do it but it feels too much like work to me which I am against. I know it would help me solve problems though so maybe I'll take a crack at it one day (like if I get laid off, probably)
@objectinspace @ChanceyFleet If you're ever interested, here's the add-on in question. The author is receptive to changes (in fact I've done a few minor things to it myself). https://github.com/mltony/nvda-indent-nav/
GitHub - mltony/nvda-indent-nav

Contribute to mltony/nvda-indent-nav development by creating an account on GitHub.

GitHub
@TheQuinbox @ChanceyFleet The fact that VS Code is fully accessible I believe is one of the best things that has happened to blind programming for a really, really long time. I think it's almost impossible to overstate just how great it actually is, and how receptive the team is to suggestions and ideas. I've been programming for much longer than VS Code has been around, but nowadays I can't really imagine going without it.
Other IDE's like Jetbrains stuff and Visual Studio are also accessible, as well as XCode, but so far, none of them beat VS Code. Especially with features like outline explorer, which I end up using much more than I expected, the sounds for errors on a line and folded code and so on that just come with VS Code out of the box and automatically get enabled if you're using a screen reader, the fact that hints like parameter hints, auto completion, the actual errors, etc. all get read, it's great. I would never want to miss it.
I see some really cool new ideas happening with code editing nowadays, but sadly, none of them seem to take accessibility as seriously as VS Code.
Sorry if I didn't add too much to the thread. I just wanted to rave about how awesome I think VS Code is.
As for languages, most of them are quite workable. I personally get lost in symbol noise, so I like a little bit of explicitness, but I know people who're the exact opposite of me, so I believe we have opinions that are based on quite similar things as sighted programmers. I don't think blindness has ever prevented me from using and enjoying a language. And if everything else fails, screen readers usually have quite capable speech altering support through the use of word or phrase dictionaries, symbol processing, etc. So you can customize it how you'd like. Things like turning "semicolon" into "semi", "left/right brace" into lace or race, () into NoParams instead of (left parenthesis right parenthesis", "exclamation mark" into "bang", etc etc.
@talon @TheQuinbox @ChanceyFleet Still haven't gotten used to VSCode yet. Tried it a few times, but always having to mess with browse mode or non-browse mode with NVDA and alot new keystrokes to learn distracted me from the actual coding work that I put it aside and continued as usual. I still have it on my todo list though, will have to get to it some day, although i'd really love to see a productivity list somewhere (all keystrokes gathered etc).
@ToniBarth I rarely have to use browse mode. I'd say a good 99 percent of what I do is done in focus mode. Using it with browse mode is a real pain, but it's also not designed to be used that way.
@talon Yeah, figured that out already, NVDA just seems to like switching back into browse mode from time to time for whatever reason and I haven't found a way to prevent that for at least VSCode only.
@ToniBarth for NVDA, there are settings under settings, browse mode. Automatic focus mode for focus changes, and automatic focus mode for caret movement. If you disable all this automatic stuff, it will stay in whatever mode you put it. Then add that to a configuration profile that activates for VS Code, and it should give you a lot less trouble.
@talon @TheQuinbox @ChanceyFleet VS Code is actually the piece of software that allowed me to work at my current job at all, and I'm hugely grateful. JetBrains' IDEs accessibility is kinda meh, I tried them, didn't like at all.
@TheQuinbox @ChanceyFleet From the article: "Participants used both a plain text editor and Grid Editor to complete various coding tasks." I mean, how could they possibly think that blind people were stuck with plain text editors? Or is this word just being used to mean anything else than this grid thing? In either case, it bugs me that research could actually be used to help us, but the researchers won't bother looking in to how the best blind programmers are doing their craft and starting from there.
@TheQuinbox @ChanceyFleet I actively work with the Quorum team. I'm interested in what you mean by tool versus a language? There's the IDE, Quorum Studio, but there is also the language, which from experience, I find a great starting language for people of many ages and abilities. I have used it with blind, low vision, autistic, and multi-diagnosed middle school students, as well as college bound high schoolers. As well as it being the language I first learned to code in, as an adult.

@rodda @ChanceyFleet I recommend against learning Quorum as a first language, actually. It doesn't seem to make it easy once you go beyond the framework, primarily because it wasn't meant for that, so that basically puts it into the same category as BGT, and we all saw how that ended -- people absolutely hating writing their games in it, having to write C++ wrappers to convert C interfaces to something BGT's extremely limited FFI support can understand, and not rewriting just because of how big their games are. I haven't tried this, but how hard is it to write truly performant software in Quorum? I'd assume extremely so, as as you need asynchronous IO, or parallelism similar to Go or Rust to make that a possibility.

Also, it uses all sorts of weird terms for actual programming stuff. repeat 10 times as opposed to a standard for loop? That just increases the curve when you hit a wall and want to try another language.

@TheQuinbox @ChanceyFleet Interesting. I have had no problem going from Quorum to Java. I see it as no more or less confusing than block languages, that are taught in schools as a first language. Students all seem to grasp basic concepts- variables, loops, repeats, objects, actions (methods), and arrays. The "repeat 10 times," comes from a study on why syntax made more sense, and led to fewer errors, for both novice and professional users. Most syntax in the language is from such studies.
@TheQuinbox @ChanceyFleet
As far as using Quorum for commercial grade applications, I have no idea, as I am "just" a CS teacher, and not in the working field. From my view as a teacher, the language is great for middle and secondary students.
@rodda @ChanceyFleet Fair enough. I personally see no harm in teaching a mainstream programming language to students (especially because there are no Quorum jobs and Quorum is kind of a blindness-specific thing), as well as the fact that my school taught us Python and it went quite well, but I can see that I suppose.
@TheQuinbox @ChanceyFleet I think it depends on the student. I have had students who did not need a step stone, and had I been able to teach it, would have done well in any basic language. And then I've had students who got to learn the logic with less complex syntax. I used Quorum and Lego robots with a group of multi-diagnosed high school students. They loved it, and were able show some math and logic skills in a more meaningful way.
@TheQuinbox @rodda Very cool! I didn't know it extended to robotics. Have either of you played with the Micro:Bit Python web editor? It's pretty accessible and has a lot of fun built-in documentation and code examples. We were donated 20 Micro:Bits and now i have to take the plunge and plan a first library lesson!
@ChanceyFleet @TheQuinbox Yes, the team made adaptations for Ev3s, so students could participate in First Lego League. Leso has changed the robot this year, so I'm not sure where a11y stands there.
MicroBits are on my list! I am no longer at a school for the blind, and have a very small BLV caseload, so progress has stalled a bit. But I have 30+ microBits I won at CSTA, and I plan to put them to use!
@TheQuinbox @rodda I work mostly with adult learners (although sometimes i get to work with youth) and i prefer to teach mainstream options, because it's easier to get peer support, find things online etc when the community is large and enthusiastic. That said, i've never done a Quorum deep dive and maybe i'm missing out. What are some fun /engaging projects your students have done with it?
@ChanceyFleet @TheQuinbox Besides robots, students have made video games, a stat rolling app for RPGs, a writing prompt app, and started a language translation app. Mostly video games. And most of my classes have been AP CSP, so they get about a semester of programming. Or they were classes that only met 2 or 3 times a week. So progress was slow.
@ChanceyFleet I never used that tool in my life, in stead I make sure to organise my code in such a way that the nesting is reduced to about two, three, at most four levels, anything else is refactored into functions or classes. When that's the case, I can use the vscode outline view, symbols explorer and all that good stuff to quickly navigate between classes, methods, even modules, everything visible from the current scope defined by the unit opened in the editor. In short, I use most of the tools sighted people use, but perhaps more creatively. For example, I rely much more on outline views and the quality of my extension of choice to provide them than your average sighted person would. Also, there are vscode specific extensions that help with navigating faster based on indentation, many of them actually. The best one I found is indent nav
https://marketplace.visualstudio.com/items?itemName=TonyMalykh.indent-nav
the docs are a bit outdated, but it works well enough for its intended purpose.
IndentNav - Visual Studio Marketplace

Extension for Visual Studio Code - Indentation navigation.

@bgtlover @ChanceyFleet Sounds like good practices makes life better for everybody! I think these practices tackle complexity much more to the core than just editor UI or tooling.
@Shelly @ChanceyFleet I use the report indentations as beeps option in NVDA and keystrokes to move to previous/next line with the same indent, but will check this out as well.