This is a set of answers to frequently asked questions (FAQ) on the subject of software development by people who are blind or visually impaired (blind programmers). It is edited by Jamal Mazrui, who may be reached at the address
mailto://jamal@EmpowermentZone.com

Corrections, elaborations, and new topics are solicited for inclusion in the FAQ. Indicate the question and answer being addressed. Your name and email address will be listed as a contributor unless you specify otherwise. Contributors include Bill Cox (waywardgeek@gmail.com, on Linux distributions and programming languages).

This 1.2 version of the FAQ was posted on
May 20, 2010
at
http://EmpowermentZone.com/NonvisualDevelopmentFAQ.htm

----------

Contents

Where can I find introductory examples for programming in a particular language?

Blind programmers have contributed to a project intended for this purpose. Specifications and samples of a "fruit basket program" are at the web site
http://FruitBasket.QuantumMyst.com

A fruit basket program is intended as a simple but nontrivial graphical user interface (GUI), exhibiting how a developer may employ a particular programming language and platform, and how a user may experience the result. The length and complexity of code may be considered from a developer standpoint; the accessibility and performance of the program may be considered from a user standpoint.

Basically, the user interface contains an edit box for entering a fruit name (e.g, apple), a listbox for collecting the fruit (the basket), and buttons to add or delete items. Obviously, such a program is not inherently useful, but it does offer an informative example of a development approach, with comparisons possible to other programs meeting the same criteria. Fruit basket samples are available for many development approaches.

Are screen reader configuration sets available for the Microsoft Visual Studio integrated development environment (IDE)?

Blind programmers have developed a set of JAWS scripts for Visual Studio (VS), which work with either VS 2005 or VS 2008. They do not work with VS 2010, which uses Windows Presentation Foundation (WPF) controls rather than Windows Forms controls.

The executable installer for the scripts works with 64-bit Windows and Windows 7, as well as earlier versions of Windows. It is available at
http://EmpowermentZone.com/msenv2005.exe

Pick your JAWS version in the installer dialog -- the default is the latest version found on your computer. Otherwise, just press Enter to accept all defaults of that dialog.

A zip archive is also available for a manual install at
http://EmpowermentZone.com/msenv2005.zip

Documentation for the scripts is in the file msenv2005.htm. It gives steps for manual installation. It also includes a list of hotkeys and a tutorial on developing a fruit basket program with C# and VS.

Is a free version of Visual Studio available?

VS comes in various versions with increasing amounts of developer tools and corresponding costs. The "Express Editions" may be freely downloaded and used, even in commercial projects. Each Express Edition is oriented to a particular language or platform: C#, Visual Basic, Visual C++, or Visual Web Developer (for developing web sites with ASP.NET). These are available at
http://www.microsoft.com/express/Windows/

Are there tips for using Visual Studio with a screen reader?

A collection of tips has been gathered from blind programming lists, called "Nonvisual Development with .NET," posted at
http://EmpowermentZone.com/ndn.htm

Are other IDEs available for .NET development besides Visual Studio?

Sharp Develop is an open source, cross platform IDE for .NET languages, available at
http://www.icsharpcode.net/opensource/sd/

Eclipse is an open source, cross-platform IDE for Java and other languages, available at
http://eclipse.org

A plug in for C# development with Eclipse is called Emonic, available at
http://emonic.sourceforge.net/

Is it possible to build .NET programs without Visual Studio?

C#, Visual Basic, and JScript .NET command-line compilers are part of the .NET Framework 2.0 Software Development Kit (SDK), which is freely available at
http://msdn.microsoft.com/en-us/netframework/aa731542.aspx

Later versions of the .NET Framework include these command-line compilers in the distribution of the Framework, itself. Usually, a shortcut is put on the Windows Start Menu for opening a command prompt with PATH and other environment variables set so that these tools are found when run. You could also search your hard disk for the C# compiler, csc.exe, and then add its directory to your search path.

What accessible text editors may be used for programming?

Boxer
http://TextEditor.com

EdSharp
http://EmpowermentZone.com/edsetup.exe

NoteTab Pro
http://NoteTab.com

TextPad
http://TextPad.com

What tools are recommended for developing with the Java language?

Install the Java Development Kit (JDK) from
http://JavaSoft.com

Also there is the Java Access Bridge (JAB), which should be installed for each Java Virtual Machine (JVM) on your computer. A direct download URL for the JAB is
http://www.renovation-software.com/files/tgsdk/accessbridge-2_0_1.exe

Eclipse is an accessible IDE especially tailored for Java development. It is available from
http://eclipse.org

Also there is the Standard Widget Toolkit (SWT), a Java package that produces accessible GUIs on Windows and Linux.

What tools are recommended for developing with the Python language?

Install Python from
http://python.org

Install the wxPython package for creating accessible GUIs from
http://wxPython.org

For Windows development, install the Python for Windows extensions at
http://sourceforge.net/projects/pywin32/

Also install py2exe, a package for building stand-alone executables from
http://py2exe.org

In Python, code indentation is syntactically required rather than stylistically optional. The EdSharp editor includes features that help screen reader users manage indentation efficiently, available at
http://EmpowermentZone.com/edsetup.exe

Is a simpler language available, e.g., one that does not involve object oriented programming (OOP)?

AutoIt is a Visual Basic-like language that is freely available from
http://AutoItScript.com

What tools are recommended for building installation programs?

Inno Setup
http://InnoSetup.org

NSIS (Nullsoft Scriptable Install System)
http://nsis.sourceforge.net/Main_Page

Is there an IDE designed with screen reader support?

Sodbeans is being developed at
http://sodbeans.sourceforge.net/

What distributions (distros) of Linux are accessible?

You can use a screen reader on another computer to log into any distro remotely, and then use it accessibly in a console mode session. Some mainstream distros can be made to come up talking, without sighted assistance. There are blind programmers who love Debian, Arch, Knoppix, and Gentoo, for example. Ubuntu Lucid currently holds a small lead over other main-stream distros in terms of default accessibility on the Gnome desktop, though more experience hackers often prefer other distros.

Specialized distros for the blind are also available. For beginning computer users, you probably can't beat Knoppix Adrian, which boots into a talking menu. It can be downloaded from mirrors like the one at
http://www.kernel.org/pub/dist/knoppix/

There are other distros for the blind, but Vinux may have the most users at present, available at
http://vinux.uk.org

Being based on Ubuntu Lucid helps the Vinux community feed improvements they make into a mainstream distro quickly.

Linux has just about every kind of programming environment. There is not, however, a solid and highly integrated IDE like Visual Studio, though progress is being made on Eclipse accessibility, and other IDEs are also progressing.

Blind programmers on Linux are encouraged to learn to control it through a shell, like bash, which is similar to a Windows command shell, but better. You can log in from a Windows box and make Linux do just about anything remotely. You can also boot into Linux directly, and control it from the command line using console readers like Speakup, available at
http://www.linux-speakup.org/

or Yasr, available at
http://yasr.sourceforge.net/

Shells are highly accessible, through programs like Speakup, and most programming is done directly in shell-based editors. The GNU debugger also works well in a shell.

Alternatively, you can boot into Gnome, the most popular Linux desktop, and use the Orca screen reader, available at
http://live.gnome.org/Orca

Orca works with FireFox, mail, Open Office, and various GUI-based administration utilities. Gnome is fairly accessible, but not as good as Windows or Mac OS X.

Many blind programmers prefer the Emacspeak environment, which is a powerful audio desktop built on top of emacs, available at
http://emacspeak.sourceforge.net/

In Linux, you have many choices, and are free to choose what works best for you. You can also improve any part of the system, and working with open source communities, you can make them better.

What programming languages are most useful on Linux?

To contribute to the community, it is helpful to know one or more of the following languages:

* Bash schell scripting. This may be the easiest language to learn in Linux, and it is very powerful. Bash scripts are used throughout most Linux systems to control practically everything.

* C. Most programs in Linux are written in C, including atk, at-spi, and speech-dispatcher, which are used for connecting screen readers to the system. Speakup, and GTK+, the Gnome GUI library, are also written in C.

* Python. Many programs in Gnome are written in Python and use the pygtk bindings if they need GUIs. Orca, the Gnome screen reader, is written entirely in Python.

* C++. Some applications, like espeak, the default TTS engine, are written in C++. Some GUI engines, like Qt and wxWidgets, are also in C++.

Before developing on Linux, make sure you like programming. Linux is considered by many hackers to be the happiest place to code. It is a wonderful operating system (OS) for hackers, where you will experience freedom unlike anything in Windows. However, unless you absolutely love programming, Linux may just drive you nuts.

There are suggestions elsewhere in this FAQ for getting started in programming on Windows, which you should probably follow first. Right now, while Linux is fairly accessible, it's currently better for blind programmers than for general blind users. Once you feel you've learned enough to start contributing, then feel free to jump right into almost any Linux project. There are literally thousands of them, and being blind will not hold you back from contributing in most cases.

Decide how you want to interact with Linux. For example, if you're going to use JAWS to controll a shell, JAWS email lists can help. If you want to boot directly into a Linux console and do your work there, you can get help on the speakup list. If you want to use the Gnome desktop, the Vinux mailing list is friendly to newbie questions, and generally can help you get started. If you want to help improve Linux accessibility, the Vinux project is looking for volunteers.

What screen readers may be customized for applications via scripting languages?

Hal
http://yourdolphin.com/productdetail.asp?id=5

JAWS
http://freedomscientific.com/products/fs/jaws-product-page.asp

Mobile Speak
http://www.codefactory.es/en/products.asp?id=316

Nonvisual Desktop Access
http://www.nvda-project.org/

Orca
http://live.gnome.org/Orca

VoiceOver
http://www.apple.com/accessibility/voiceover/

Window-Eyes
http://www.gwmicro.com/Window-Eyes/

Is there job training specifically for blind programmers?

Lion's World Services For the Blind has a curriculum called Enterprise Solutions Programming -- a 10-month course which prepares clients to work in a wide range of programming environments including .NET and others. Exams for Microsoft Certified Professional Developer (MCPD) are offered through the program.
http://www.lwsb.org/enterprise_solutions_programming.asp

What mailing lists exist for blind programmers?

Blind Geeks -- Where Blind People Learn Programming
http://BlindGeeks.org

BlindWebbers -- List for blind and visually impaired web authors
http://tech.groups.yahoo.com/group/blindwebbers/

dev-accessibility -- Accessibility of Mozilla products to those with disabilities
https://lists.mozilla.org/listinfo/dev-accessibility

Dolphin Scripting Forum -- Discuss scripting speech, braille, or magnification with Supernova
http://www.yourdolphin.com/scripts/scripting_forum.asp

GW-Scripting -- Discussion list for information regarding the development and use of Window-Eyes scripts
http://www.gwmicro.com/Support/Email_Lists/

Java Accessibility
http://archives.java.sun.com/cgi-bin/wa?A0=java-access

JAWSScripts -- For scripting and configuring JAWS
http://www.freelists.org/list/jawsscripts

LibLouis and LibLouisXML -- List for the discussion and development of the liblouis and liblouisxml braille translation, back-translation, and formatting software
http://www.freelists.org/list/liblouis-liblouisxml

NVDA Developers -- List for development of the Nonvisual Desktop Access screen reader
http://www.nvda-project.org/wiki/Community

Open A11y of the Linux Foundation
http://www.linux-foundation.org/en/accessibility/email

program-l -- Discussion group for visually impaired computer programmers
http://www.freelists.org/list/program-l

ProgrammingBlind -- Programming while blind
http://www.freelists.org/list/programmingblind

What web sites have resources for blind programmers?

AbilitiesSoft -- Developing software for people with disabilities
http://www.AbilitiesSoft.com/

Blind Geeks -- Where Blind People Learn Programming
http://BlindGeeks.org

Inthane's Grab Bag -- Blind programming assistance
http://GrabBag.AlacornComputer.com

NonvisualDevelopment -- promoting software development without visual dependencies
http://NonvisualDevelopment.org

What sources of standards and APIs support development of accessible applications?

Adobe, Accessibility Resource Center
http://www.adobe.com/accessibility/

Apple, Accessibility
http://www.apple.com/accessibility/

IBM, Accessibility
http://www.ibm.com/accessibility/us/en/

The Linux Foundation, Open Accessibility
http://a11y.org/

Microsoft, Accessibility Information for Developers
http://www.microsoft.com/enable/developer.aspx

Mozilla Foundation, Accessibility Project
http://www.mozilla.org/access/

Oracle, Accessibility
http://www.oracle.com/accessibility/index.html

Sun, Accessibility
http://www.sun.com/accessibility/index.jsp

United States Government, Section 508
http://section508.gov/

World Wide Web Consortium, Web Accessibility Initiative
http://w3.org/wai/

Change Log

Version 1.2 on May 20, 2010
Added material by Bill Cox on Linux distributions and programming languages.

Version 1.1 on May 19, 2010
Made urls to scriptable screen readers more specific, pointing to the web page of the screen reader, itself, rather than to the company web site. Added Mobile Speak, Orca, and VoiceOver to that screen reader list. Added Dolphin scripting forum to the mailing lists section. Added the following sections: recommended tools for building installation programs; sources of standards and APIs for developing accessible applications; and this change log.