Hello all,
after few veeks of hard work, I am happy to announce, that I managed to develop new code editor for blind programmers called Ride.
And in what is this editor different from many others? I will copy here a part from the documentation, sorry for my english.
@1.1 What is Ride
There is a problem that many programmers in the blind community face. Experienced developers struggle with it, beginners still forget to use it correctly, making many errors they can't understand.
I am talking about indentation and programming languages that require it, especially about Python. If you have been coding in Python for some time, you probably know how annoying this is.
It's common to encounter the situation where you are moving along the sixth or even deeper level and must denote many lines with six or more leading tabs. When using space, it can also be a lot more, not to mention using spaces for indentation where everything is multiplied by 2 or 4.
Another problem in programming is that when you write lots of code, you can't see the forest because of the individual trees, so to speak. Browsing the code with the arrow keys, you come across many lines you are not interested in. For instance, in the part that deals with intercepting keyboard input, every single key has its own code block, but when editing them, the only block that matters to you would be that one you want to edit, not a bunch of code for other keys which are distracting you while navigating through them because you don't have an overall picture about how the program works on a higher level, but rather only specific commands.
So, my idea was: Is it possible to take these two problems and join them together in a way that could actually provide an advantage to us?@1.2 Description
As a result of that idea, Ride was developed. It's a very simple code editor meant to use indentation to make the code clearer to the programmer. And it works!
But how does it work? It is simple, as i sayd. Indentation isn't there for no reason. Sighted programmers use it to recognize constituent program levels, they can see the distance from the left edge and ignore everything they don't want to see.
This is also the reason why Python depends on indentation; many sighted programmers used it a lot in other languages as well, so braces began to be useless and Python removed the need for them by utilizing the already frequently used indentation to recognize code blocks. And we can do just as the sighted programmers, ignoring everything we don't want to see, now with the help of Ride.
Because of this, Ride's most crucial feature is indentation-level-based navigation. The editor always knows which level of code you are moving along, making use of indentation. Based on this, you can move around the code but you always see only the content at your current indentation level, nothing deeper, because that wouldnn't probably matter to you at the moment anyway. Or would it?
Note: Indentation level will be referred to as IL in this document from now on.
While (true): And you want to see its contents? No problem, just expand it, and you will see everything you need.
That's it. You can imagine code as a large computer tree where everything belongs under something else - all the contents of the while loop are under it, the while is under a method, the method under a class, and so on.Basically, Ride enables movement in this tree. All the while, you are only going to see things in your current part of the code.
For example, take a small piece of code in BGT:if (key_pressed(KEY_UP))
{
alert("You pressed up", "");
}
if (key_pressed(KEY_DOWN))
{
alert("You pressed down", "");
}
if (key_pressed(KEY_SPACE))
{
alert("You pressed space", "");
}Yeah, it's a little stupid to use blocks of code for just a single command, but imagine there were a hundred lines in there. Earlier, when you wanted to navigate to if (key_pressed(KEY_DOWN)), you needed to press down arrow four times from the top of this small code piece. Not too hard, but if there were 100 lines? Now, it becomes 103, and that is in deed harder.
But not with Ride.
Browsing the above code in Ride gives you something like this:
if (key_pressed(KEY_UP))
if (key_pressed(KEY_DOWN))
if (key_pressed(KEY_SPACE))Nothing more. If you want to see and edit what would happen after pressing key down, you should navigate to it by pressing down arrow once from the top of the code, and expand it. Then, you will see something like this:
if (key_pressed(KEY_DOWN))
{
alert("You pressed down", "");
}And again, nothing else, the line with the right brace is the bottom of the available area in this very case, so you will not be able to get out of this branch and can therefore fully concentrate just on it.
The line with the condition at the top is on a lower IL but it's also available for better orientation, in case you forget where you are, as well as to provide better editing possibilities.To put all of the above in other words, Ride allows you to skip hundreds of lines that you aren't interested in and dive precisely and solely into the areas that are currently important to you.
And why did I write that it worked?
When developing Ride's options window, I encountered a problem. I wanted to make events for buttons, checkboxes etc, but I found out that it was not possible because all window related variables and objects were local, enclosed in a single method, not available from the outside, which also included helper methods. The only solution was to declare them all in that single form management method.
I did not want to struggle with messy code.
So I developed it in Ride.
I hope it explains all needed. But if not, one demonstration is often more than thousand words. If you're interested, feel free to download Ride from:
https://rastisoftslabs.com/?smd_process … oad_id=252
I will be happy to hear your feedback and opinions, I will try to make Ride as good as possible.
Happy coding!
Rastislav