
The Tools of a Blind Programmer - parham90
https://www.parhamdoustdar.com/2016/04/03/tools-of-blind-programmer/
======
taddeimania
I was incredibly lucky enough to recently do a live broadcasted interview
where Parham (op) talked about his experience in tech, his country (Iran), and
even showed us some of his tools to write and debug code. It was an incredible
interview and can be viewed here:

[https://www.livecoding.tv/parham90/videos/z8MoB-how-do-
blind...](https://www.livecoding.tv/parham90/videos/z8MoB-how-do-blind-
engineers-write-and-debug-code)

edit: you may have to fast forward about 17 minutes in to get past the intro
buffer.

Also part 2 is where all of the demo stuff is:

[https://www.livecoding.tv/parham90/videos/nD1Er-how-do-
blind...](https://www.livecoding.tv/parham90/videos/nD1Er-how-do-blind-
engineers-write-and-debug-code-2)

~~~
mwcampbell
At least in the part of the demo I watched, I didn't hear his screen reader.
But I know that it's difficult to make a screen reader's speech output audible
over a VoIP program like Skype, without causing a nasty feedback loop. The
last time I attempted it, several years ago, I had to use a USB audio device
in addition to my computer's built-in audio output, with an analog audio cable
between the two.

By the way, what version of Windows do you use, Parham? I ask because it looks
like you're using the Windows Classic theme, which isn't available in versions
after Windows 7 as far as I know. I know that using this theme used to improve
compatibility with screen readers like JAWS and Window-Eyes, but as far as I
know, it doesn't matter with NVDA, though I suppose using the simpler theme
would still reduce CPU and memory usage.

~~~
parham90
Yes, I'm using Windows 7. I use that theme because my screen reader is more
responsive the less CPU and memory usage I have. So for example, if I open a
heavyweight IDE, the fact that it's using so much CPU will make my screen
reader lag.

------
staticelf
Cool, there is also a stackoverflow thread which is pretty interesting:
[http://stackoverflow.com/questions/118984/how-can-you-
progra...](http://stackoverflow.com/questions/118984/how-can-you-program-if-
youre-blind)

What I think stinks is that companies seldom thinks of accessibility. In many
cases, there are more people in need of special accessibility tools than
support for lower web browsers, yet all focus is on the latter when it comes
to web development.

A good thing can be to follow the standard:
[https://www.w3.org/standards/webdesign/accessibility](https://www.w3.org/standards/webdesign/accessibility)

~~~
sotojuan
I wonder what is stopping accessibility from being as popular as backwards
compatibility... none of the resources I used when I started learning web
development ever mentioned it (aside from alt text in the image tag). You
really have to seek out information about it purposely.

~~~
Fradow
There are several things that stop accessibility from being popular, here are
the few I think about :

\- developers generally don't need it, can't easily test it, and aren't even
that aware of it

\- "accessibility" can mean a lot of things. Are we talking about blind
persons, daltonism, low visibility, limited motor skills, or something else I
don't even know about? Each one has their challenge, and it's difficult to
address all of them on purpose

\- accessibility is often regarded as "niche" by stakeholders (unless one of
them requires it or you really have a big scale), and thus not important.
Unlike backward compatibility, it's not easy to have accurate numbers on how
many of your users require it too.

That is not to say accessibility is not important.

Generally, the first steps to get it right is NOT to design anything specific
for them, but instead to adhere to standards, semantic HTML (or whatever your
platform use if you do a native app), have enough constrast, big enough fonts,
and take user-settings into account (generally it's as easy as not overriding
anything like zooming and scrolling).

The good thing about accessibility is if your app/website is accessible, it
also benefits all your other users, in some ways.

------
lr4444lr
Fascinating. We programmers live by our eyes, and I've had a few frightening
flights of fancy about losing my sight, and what employment would be like in
this field. I still wonder though how you'd go about reading other people's
(bad) code, since there isn't any prior memory about what it was _supposed_ to
do, and how you perform major refactors that just appear so "visual" to my way
of thinking, e.g. hollowing out a function body into two smaller functions and
adding a tail call.

~~~
parham90
Actually, a lot of things you may perceive as visual are not visual, at least
if you imagine "visual" as something I (a blind person) cannot understand.

I do a lot of refactoring, maybe even more than you do, simply because I can't
understand functions that have two indentation levels (like two if statements
inside each other), or functions that go above 15 lines. I'm saying that I may
do it more than you because, unlike sighted people, we can't glance at 6 lines
at once; we have to look at the code one line at a time. So, the smaller each
section (whether it's an if statement, a loop, or a function, depending on the
language itself), the better for me.

~~~
scrupulusalbion
> depending on the language itself

Are there any languages or language families that you find easier to use?
(inb4 COBOL is the easiest)

------
chris_wot
I wonder if it might be worthwhile for sighted developers to set up a system
that a blind person would use and then blindfold themselves, and start using
the system...

Perhaps that would make it easier for us to develop software that works well
for blind people?

~~~
melling
I imagine that if we tried to make programming by voice more practical, that
would help solve part of the problem. A few developers have made it work but
it requires a lot of setup.

[http://ergoemacs.org/emacs/using_voice_to_code.html](http://ergoemacs.org/emacs/using_voice_to_code.html)

More resources here:

[https://github.com/melling/ErgonomicNotes/blob/master/progra...](https://github.com/melling/ErgonomicNotes/blob/master/programming_by_voice.org)

~~~
taddeimania
i think coding by voice is solving a different challenge than blind developers
are facing. Blind developers have no issue with manipulating a keyboard. I
feel the most immediate accessibility issue facing blind and low vision
developers is quickly being made aware of context changes and making sure the
element you expect to have selected is actually selected.

An IDE is pretty much useless to a blind developer if the screen reader cannot
adequately relay the current context to the developer.

------
DrFunke
As a blind programmer I am thrilled at the progression of Amazon's Echo. The
accessibility functions are all too often overshadowed by issues of privacy.

------
azhenley
There is a professor at University of Washington that researches tools for
blind programmers.

For example:, StructJumper for code navigation:
[http://dl.acm.org/citation.cfm?id=2702589](http://dl.acm.org/citation.cfm?id=2702589)

~~~
x404
Do you have the professor's homepage or name?

~~~
jdmichal
Not OP, but I did find from the linked paper Richard Ladner, whose bio
indicates a primary focus on accessibility:

[https://www.cs.washington.edu/people/faculty/ladner/](https://www.cs.washington.edu/people/faculty/ladner/)

Lauren Milne and Catherine Baker are both graduate students of his, so I'm
going to guess that he was the professor mentioned. He is also one of two
professors at the "Taskar Center for Accessible Technology":

[https://tcat.cs.washington.edu/people](https://tcat.cs.washington.edu/people)

~~~
x404
Thanks

------
nunobrito
Good article. Only when we first had a visually impaired end-user asking for
accessibility is that we understood what was wrong.

As result, the next generation of our tooling runs from the command line
without a mouse. Solved two problems, 100% accessibility (no mouse involved
nor graphs, just log files or console output) and automation (make things
easier to deploy without user input).

Accessibility doesn't need to be an after-thought. When planned ahead can
actually make tooling simpler.

------
e19293001
Blind people had exceptional memory because they've done intensive mental
exercises and use their memory a lot that they had surpassed how a normal
person thinks.

------
kriro
Great post as it made me realize how ignorant I am at times. The idea that it
must be really hard to understand data visualization, graphs and some chunks
of mathematics if you're blind has been in the back of my head but I never
really thought about the real life implications. Thank you for the post and
the linked "Autobiography of a Blind Programmer".

I also noticed the "15 minute read" under the date. Haven't really seen that
much but it must be pretty valuable if you're blind since you can't estimate
the reading time from glancing at the scrollbar etc. [Even though I guess this
could be automated as a feature in screen readers with a wordcount?]

This quote from the end of the article is a fantastic general attitude towards
life: """There are a few things I love about being blind. One of them is the
need to carve out your own path most of the time."""

------
tetraodonpuffer
how would a blind programmer deal with something like python? it seems that
having indentation be part of the syntax would make it difficult to figure
out, unless the screen scraping software was made to understand same
indentation = same block

~~~
parham90
This was a problem years ago. however, nowadays almost all screen readers have
a setting to report the indentation of the current line. This was popularized
when NVDA (a Windows screen reader) and Orca (a screen reader for Linux) were
written, since they are both in Python.

~~~
tetraodonpuffer
thanks for chiming in, I was really wondering about it

btw, if you read this, do you have any recommendations for ways we can make
sure our sites are accessible? Say for my blog I have alt= tags for everything
and tried to organize things meaningfully in terms of H tags, I would like to
also add aria tags but I am not sure how I can check that they were done
correctly, as even if I installed a screen reader it I don't have any
experience with it so I am not sure if what I hear is correct or not.

Do you have any suggestions?

~~~
mwcampbell
(Not the OP, but I have experience in this area too.)

You're on the right track. As a finishing touch, you should add role="main" to
whichever element contains the main page content (in this case, the article or
the most recent articles). That way, screen reader users can easily skip past
all the navigation links and other auxiliary elements that are common to every
page.

~~~
tetraodonpuffer
thanks for the tip!

~~~
parham90
Sorry for being late to this thread.

You can also use some accessibility evaluation tools. I would suggest that you
go here, and check the box that says "WCAG 2.0" to get some tools that check
accessibility in general:

[http://www.w3.org/WAI/ER/tools/](http://www.w3.org/WAI/ER/tools/)

If you fix stuff that these evaluation software show you, I think your blog
will be among the very well thought-out websites in terms of accessibility.
WAI-ARIA is for times that your application does a lot with Javascript, such
as updating a region of text, or when you start using non-semantic elements
for stuff they are not meant for (for example using the i tag for an icon, or
the span tag as a link, etc).

~~~
tetraodonpuffer
thanks for the extra information

------
Zecc
Is it really that hard for a blind person to intuit geometry? I would have
figured one does not require working eyes to understand space.

~~~
chris_wot
I'm genuinely curious how you would think of three dimensional objects without
ever being able to see them...

I guess you would have to describe them. As a suggestion - and not an attack
in any way because I'm not sure how I'd do it! - without reference to anything
you can see with your eyes, how would you describe space?

~~~
gchpaco
As a counterpoint it's routine in topological mathematics to work with 8 or 12
or 11 dimensional objects.

~~~
chris_wot
Good point! But is this done without any reference to 3 dimensional objects,
or does it take the principle and not make any assumptions, or describe it in
such a way that the concept is explained without any aspects related to sight?

Genuinely curious...

~~~
gchpaco
It is ... difficult for me to describe just how dangerous it is to try to use
3 dimensional intuitions in a higher dimensional space. As the number of
dimensions increases the amount of "space" there is for things to get weird
get much more complicated; for example any knot that exists in 3 dimensions
can be untied trivially in a 4 dimensional space.

Suffice to say if you try to use your ordinary everyday life intuitions doing
higher dimensional mathematics you will continuously embarrass yourself until
you learn not to. Some folks develop the necessary adjustments and have higher
dimensional intuitions; I do not and have to do the math anywhere higher than
around 4.

