Re: Seeking feedback from speech users of Python

  • From: Jamal Mazrui <empower@xxxxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Sat, 15 Dec 2007 06:42:11 -0500 (EST)

A few points I forgot to mention.

The default IndentUnit setting of EdSharp is two spaces.  To change it to
a tab character, press Alt+Shift+C for Configuration Options, Alt+I for
IndentUnit, and enter \t as the value.

If text is selected and you press Alt+LeftBracket for PyDent, or
Alt+Shift+LeftBracket for PyBrace, the selected text is converted to the
target coding style.  On the other hand, if no text is selected, EdSharp
assumes you want to replace all text in the file being edited.  As a
precaution, it creates a new editing window rather than replacing
existing text.  The new window uses the same file name in its title
except for the extension.  PyBrace code is given a .pyb extension and
PyDent code is given (the normal) .py extension.

One problem I have discovered with this approach is that an error
message by the Python interpreter will correspond to the PyDent code
that was run, but not necessarily the PyBrace code that was the original
source, so one has to search for the offending code mentioned in the
error message, knowing it is close to the line mentioned.  This argues
for making PyBrace correspond line for line with PyDent, but that is
more of a challenge that I have not yet tackled.

To further explain the motivation for this experiment, I have observed
that Python is both an excellent programming language and one that is
inherently visual for speech users.  Speech communicates information in a
serial manner, whereas the code structure in Python is conveyed by
two-dimensional spatial organization that a sighted person readily
understands.  I incorporated features in EdSharp (and TextPal before it)
to help read and write indented code more efficiently with speech.  Those
features are still available, and hopefully useful.  Despite them,
however, I have still felt less in touch with Python code -- wondering if
I was missing indentation when either EdSharp or JAWS was not set to
verbalize indentation changes, and trying to avoid nested code blocks when
programming so I did not have to track precisely how much indentation was
required on any particular line.  Converting the same code to PyBrace
format has made me feel more in touch with the code, and more likely to
consider programming in Python.  As mentioned, this is still experimental,
however -- feedback, suggestions, and contributions welcome.

On Fri, 14 Dec 2007, Jamal Mazrui wrote:

> Date: Fri, 14 Dec 2007 22:36:01 -0500 (EST)
> From: Jamal Mazrui <empower@xxxxxxxxx>
> Reply-To: programmingblind@xxxxxxxxxxxxx
> To: programmingblind@xxxxxxxxxxxxx
> Subject: Seeking feedback from speech users of Python
> I have included an experimental feature in EdSharp
> In seeking a more efficient way of managing the indentation requirement, I
> am trying a coding style called PyBrace, where the colon and indented
> block are replaced by a set of curly braces surrounding the block.
> Alt+Shift+LeftBracket (think of the brace character) turns either all or
> selected text into this style of code, which makes it easy to understand
> the structure with speech.
> The inverse command is called PyDent, Alt+LeftBracket, which converts from
> PyBrace format to the equivalent indentation required by the Python
> interpreter.
> PyBrace assumes that the opening brace will be at the end of the line of
> text that starts the block, and the closing brace will be on a line by
> itself.  Also, PyDent assumes that a single tab character is used for each
> level of indentation -- though I intend to support other indentation
> conventions as well if this approach seems productive.
> I have been able to convert to and from PyBrace and run a Python script
> successfully (the Python fruit basket program).  If anyone else can try
> this approach, and let me know your results as well as any other ideas for
> improvement, that would be helpful.
> Jamal
> __________
> View the list's information and change your settings at
View the list's information and change your settings at

Other related posts: