views:

19665

answers:

17

Sight is one of the senses a programmer take for granted. Most programmers would spend hours looking at a computer monitor (especially during times when they are in the zone).

I know there are blind programmers who can program (such as T.V. Raman who currently works for google).

If you were a blind person (or slowly becoming blind), how would you set up your development environment to assist you in programming?

(One suggestion per answer please. The purpose of this question is to bring the good ideas to the top. In addition, screen readers can read the good ideas earlier)

+1  A: 

I think that this would work well in extreme programming using the pair programming principle. If you're making software for blind people, who better to make it then someone who would literally be in touch with the business requirements, so I don't think it's very far fetched at all.

As for writing code, well unless there was some kind of feedback I think a person may struggle with syntax. Audio feedback may help to a point though.

Odd
If I was making software for blind people, I'd just close my eyes.
John Millikin
If you write web pages you probably ARE developing for blind people!
Aidan
I worked (indirectly) with a blind programmer at my last co-op at IBM in the early 1990s, on ScreenReader/2 (extension to help blind people use OS/2). It can be done, and no pair programming is required.
M1EK
@John Millikin: While that is pithy and amusing, you are probably far less familiar with how to interpret the prompts of their screen reading software and what constitutes an intuitive handicapped accessible interface than the actual blind user. I do try to involve a blind user in user acceptance testing when I do web design. That said, blind developers can do far more than just UAT.
Edward Kmett
interesting idea about auditory feedback. Maybe a system that went beyond just reading the words on the screen would be helpful.
Seamus
@Edward: Going from a graphical to an audio interface is actually not that difficult. While (obviously) a fully blind person will have more experience interacting with assistive technology, "normal" people can do pretty well by just turning off their monitors.
John Millikin
+2  A: 

How about "Speech to Text"?

Curtis Inderwiesche
maybe speech to text?
Jurassic_C
@Jurassic_C: You might think so, but a keyboard is still a much more efficient input device. The only blind user I ever met who used speech to text also had the terrible misfortune of being quadriplegic.
Edward Kmett
That makes sense.
Curtis Inderwiesche
A: 

Here is a suggestion for coding and building...

  1. Braille Keyboard
  2. Compiler/Linker with speech feedback. So the build gives feedback using pre-recorded text on failure conditions.

iterative tests?

Maverique
+20  A: 

Emacs has a number of extensions to allow blind users to manipulate text files. You'd have to consult an expert on the topic, but emacs has text-to-speech capabilities. And probably more.

In addition, there's BLinux:

http://leb.net/blinux/

Linux for the blind. Been around for a very long time. More than ten years I think, and very mature.

Chris
+4  A: 

This blog post has some information about how the Visual Studio team is making their product accessible:

Visual Studio Core Team's Accessibility Lab Tour Activity

Many programmers use Emacspeak:

Emacspeak --The Complete Audio Desktop

Arthur Vanderbilt
+5  A: 

One place to start is the Blinux project:

http://leb.net/blinux/

That project describes how to get Emacspeak (editor with text-to-speech) and has a lot of other resources.

I worked with one person who's eye sight all but prevented them from using a monitor - they did well with Screen reader software and spent a lot of time using text based applications and the shell.

Wikipedia's list of screen reader packages is another place to start: http://en.wikipedia.org/wiki/List_of_screen_readers

Kyle Burton
+16  A: 

Hanselman had a really interesting podcast with a blind developer recently.

Dave Ward
Isn't this the same guy who posted an answer above? (Saquib)
UpTheCreek
Here's the link straight to the podcast: http://www.hanselminutes.com/default.aspx?showID=143
UpTheCreek
+19  A: 

Keep in mind that "blind" is a range of conditions - there are some who are legally blind that could read a really large monitor or with magnification help, and then there are those who have no vision at all. I remember a classmate in college who had a special device to magnify books, and special software she could use to magnify a part of the screen. She was working hard to finish college, because her eyesight was getting worse and was going to go away completely.

Programming also has a spectrum of needs - some people are good at cranking out lots and lots of code, and some people are better at looking at the big picture and architecture. I would imagine that given the difficulty imposed by the screen interface, blindness may enhance your ability to get the big picture...

DGM
+2  A: 

What in the world would a braille keyboard even be??

There are such things as braille writers but you would never use one as an input device for a computer.

If you're simply talking about a keyboard with the braille symbols on it this would also be a very bad idea. You're going to have a lot more keys to reach while typing and it would still be slower.

Touch typing is NOT a visual skill, a blind person can do it just as well as a sighted person.

Loren Pechtel
A Braille keyboard has six keys, each representing one of the six dots that make up a Braille character. Most Braille keyboards also have extra keys for things like space, delete, forward, back, etc. Lots of pictures of Braille keyboards can be found in Google Images.
Barry Brown
That's the controls of a braille writer. You use that to produce braille output, you would never use such a device as an input device as it's *MUCH* slower than an ordinary keyboard.
Loren Pechtel
there is no need for a braille keyboard, braille writer exist to write braille, not print. My dad was blind and could touch type faster than most sighted people. Braille *output* keyboards exist as it's easier than speech output in some situations. complex punctuation springs to mind in this context
geocoin
I knew a few blind users in the late BBS era who used to use a "Braille 'n Speak" plugged into a modem to get access to bulletin boards, but I haven't seen one of those since 1992 or so and none of those people were developers. Touch typing is vastly more effective.
Edward Kmett
+351  A: 

I am a totally blind college student who’s had several programming internships so my answer will be based off these. I use windows xp as my operating system and Jaws to read what appears on the screen to me in synthetic speech. For java programming I use eclipse, since it’s a fully featured IDE that is accessible.

In my experience as a general rule java programs that use SWT as the GUI toolkit are more accessible then programs that use Swing which is why I stay away from netbeans. For any .net programming I use visual studio 2005 since it was the standard version used at my internship and is very accessible using Jaws and a set of scripts that were developed to make things such as the form designer more accessible.

For C and C++ programming I use cygwin with gcc as my compiler and emacs or vim as my editor depending on what I need to do. A lot of my internship involved programming for Z/OS. I used an rlogin session through Cygwin to access the USS subsystem on the mainframe and C3270 as my 3270 emulator to access the ISPF portion of the mainframe.

I usually rely on synthetic speech but do have a Braille display. I find I usually work faster with speech but use the Braille display in situations where punctuation matters and gets complicated. Examples of this are if statements with lots of nested parenthesis’s and JCL where punctuation is incredibly important.

Update

I'm playing with Emacspeak under cygwin http://emacspeak.sourceforge.net I'm not sure if this will be usable as a programming editor since it appears to be somewhat unresponsive but I haven't looked at any of the configuration options yet.

Jared
truly amazing . congratulations !
lurks
Having had a blind father, who was very computer aware, knowing what he went through to get windows accessable, your setup astounds me. congrats! :)
geocoin
Assuming you use laptops too: do you ever turn the display off to extend battery life? Because that would be made of so much win.
Jens Roland
I've checked into it but I can't figure out a way to turn off the monitor on my laptop and keep it off when I press keys. If anyone knows how to do this on a del Vostro 1500 I'd appreciate it google isn't helping.
Jared
I suppose that opening the case and pulling out the ribbon cable that runs to the display might do the trick.
Edward Kmett
This is the first time on SO that an answer has made my jaw drop.
yodaj007
Opening the case and pulling out the ribbon cable that runs to the display is a pretty hard trick to do even *if* you can see. But I guess you could always get someone to help. Heck, I *can* see, and *always* ask for help when it comes to hardware!
Daren Thomas
+1 for determination. I have never had to work without my sight, but I'm sure it would be easier to give up than to keep trying. Thanks for sharing Jared.
typoknig
I feel inspired... Thanks Jared! Jared++;
lucifer
I had no idea that this was possible. No longer shall I forget about accessibility.
ChaosPandion
WOW amazing. we are defo moving forward, congrats
getaway
You should do a TED talk, this is inspiring material!
Trufa
i had never till date heard any achievement in computers as i see u talking about it,i must say this was something i would always keep in mind that abilities are just within u and u need to explore it.
Nagaraj Tantri
+8  A: 

I can't recall the source, but I've heard/read about a form of audible syntax "colouring" - so that instead of a string assignment being read as

foo equals quote this is a string quote

the string part would be read with a different pitch or voice to make the separation of elements clearer.

Cebjyre
Emacspeak will do this.
Edward Kmett
+132  A: 

I'm blind, and have been programming for about 13 years on Windows, Mac, Linux and DOS, in languages from C/C++, Python, Java, C# and various smaller languages along the way. Though the original question was around configuring the environment, I think it's best answered by looking at how a blind person would use a computer.

Some people use a talking environment, such as T. V. Raman and the Emacspeak environment mentioned in other answers. The more common solution by far is to have a screen reader which runs in the background monitoring OS activity and alerting the user via synthetic speech or a physical braille display (generally showing somewhere from 20 to 80 characters at a time). This then means a blind person can use any accessible application.

So, I personally use Visual Studio 2008 these days, and run it with very few modifications. I turn off certain features like displaying errors as I type since I find this distracting. Prior to joining Microsoft all my development was done in a standard text editor like Notepad, so once again no customisations.

It is possible to configure a screen reader to announce indentation. I personally don't use this, since Visual Studio takes care of this, and C# uses braces. But this would be very important in a language like Python where whitespace matters. Finally, Emacspeak does make use of different voices/pitches to indicate different parts of syntax (keywords, comments, identifiers, etc).

Saqib
Notepad, wow. Did you ever use a physical notepad to write code (with a Braille stylus, say?) Do you use IntelliSense? How fast does your screen reader talk?
Kragen Javier Sitaker
Hi Saqib, I enjoyed your interview on hanselminutes (assuming you are the same guy :) . The ctrl-shift-escape tip was new to me!
UpTheCreek
+7  A: 

I worked for the Greater Detroit Society for the Blind for three years running a BBS tailored for blind access and worked with a number of blind users on how to better meet their needs, and with newly blind users to get them acclimated to the available hardware and software offerings that were available at the time. If nothing else, I at least learned to read Braille as a hedge against the case where I ever wound up in the same situation!

The majority of blind computer users and programmers use a screen reader of some sort. Jaws in particular is popular. Fortunately, most major applications these days offer some form of handicapped access. You may have to tune your environment slightly to cut down on the chatter, e.g. consider disabling Intellisense in Visual Studio.

A Braille display is less common and is comparatively much more expensive and can show 40 or 80 columns of text, and can be used when exact positioning/punctuation is important. While a screen reader can be configured to rattle off punctuation, a lot of people find it distracting, and it is easier in many cases to feel your way through it. Jaws can be configured to drive the display, so you're not juggling accessibility applications.

Also, a lot of legally blind users still have some modicum of sight left to them. Using high contrast backgrounds and the magnification functionality can help a lot of these users.

Using ToggleKeys in Windows will let you hear when you accidentally tap one of the modal 'caps lock', 'num lock', 'scroll lock', etc. keys as well.

I know at least one Haskell programmer who uses a screen reader and who explicitly programs without using Haskell's layout rules, and instead opts to use the rather non-idiomatic, but supported {;}'s instead, because it is easier/less distracting for him to get his screen reader to read off punctuation than for him to figure out exact indentation that complies with Haskell's layout rules. On that same note, I've heard some grumbling from a couple of blind programmers about when they have to write Python.

Ultimately, you learn to play on your strengths.

Edward Kmett
+3  A: 

When I was in grad school, we had a member of our research team who was blind. He was a bit older, maybe mid-40s. He told us about how he programmed his first computer (which was well before text-to-speech was common) to output the contents of the screen in Morse Code. To overcome the obvious chicken-and-egg problem, he had to completely rewrite the code each time through from scratch until it was working well enough for him to have it read back to him.

Now he uses text-to-speech, though he plans the code very thoroughly before actually writing any of it, to minimize the debug loop.

He was also pretty good at giving PowerPoint presentations that, despite his lack of sight, were just about as well formatted as any sighted presenter's.

tghw
+2  A: 

Back in New Zealand I knew someone who had macular degeneration, so was partially sighted. He's a very talented programmer and wound up using Delphi because he could work by recognizing word shapes This was easier to do with a Pascal-like syntax than a C-ish squiggly bracket one. He has a web site, but doesn't seem to mention macular degeneration at all, so I won't name him.

ConcernedOfTunbridgeWells
+1  A: 

A group of students from Southern Illinois University Edwardsville and Washington State University are working on a programming language for the blind:

http://www.youtube.com/watch?v=lC1mOSdmzFc

Kyle Slattery
+1  A: 

harald van Breederode (http://prutser.wordpress.com/ )is a well-known Dutch Oracle DBA expert, trainer and presenter who is blind. His blog contains some useful tips for visually impaired people.

Alexis Gil