How to write software if you're blind
As a programmer I stare at a screen almost all day every day and have done so almost my entire life, starting at age 5 with playing games and then moving on to programming at age 8. The most important tools for my job are my fingers and my eyes. But what happens if one of those tools suddenly stops working. What if your vision is impaired so much glasses don't cover it any more, or worse, if you suddenly go completely blind?
Photo by José Antonio Alonso, licensed CC BY 2.0
Thankfully, there are a few good tools available so that being blind doesn't have to mean you can't program, there are quite a few blind programmers working successfully in big IT companies.
While I don't have to resort to using this kind of software myself, I've always found the topic of programming or just the general use of a computer when blind interesting and it's probably not the worst idea to be prepared in case this ever happens to you or someone close to you so that you can help them out.
So when I saw someone on Hacker News asking for tips on how to deal with worsening eyesight and even blindness as a programmer, I had to write a post about it here.
I'll highlight some of the interesting information from the Hacker News thread and give an overview of the available software, with links so you can check the apps out yourself, but if you do find this interesting I recommend reading the full thread over on Hacker News yourself so that you can read the full comments from blind developers.
The most interesting piece of information first: It looks like you will get the best experience on Windows on the Desktop and iOS on mobile. macOS, Linux and Android are not anywhere near as accessible. That was very surprising to me, I thought Linux would offer the best tools here as the Open Source community usually is so good when it comes to social issues.
If you absolutely do want to use Linux, one good way of doing it seems to be to use Windows and run Linux in a virtual machine. If you don't want to use Windows at all, and want to use Linux directly, your best bet is to just the command line or the Gnome desktop environment, Gtk apps seem to have the best accessibility support, Qt and therefore KDE not so much.
The Hacker News user mltony, a blind developer and the author of the top comment, gives a nice overview of the tools available for both vision impaired and completely blind people (I quote only the relevant lines):
There are basically two types of tools: screen magnifiers for those with low vision and screenreaders for those who don't have any usable vision.
I am not that familiar with Magnifiers, but I've heard that the most popular one is called ZoomText and it is for Windows.
In the world of screenreaders you have NVDA and JAWS for Windows, VoiceOver for Mac, ORCA for Linux and also EmacsSpeak, which is an accessibility extension for Emacs.
You can also use phones with screenreader: there is VoiceOver for iPhone and TalkBack for android.
Trying out a screenreader
I've tried Orca out on my own computer to see what it's like and if you're interested yourself, it's very easy to use, you just turn it on or off and Orca does the rest, so if you're a Linux user give it a try.
When Orca is activated, it will read to you whatever is focused on the computer right now. For example, if I open the system settings window, Orca says "System settings frame. Search text. Search settings" because the search field is selected by default. I can then use the TAB key on my keyboard to move around the different controls of the window and every selected item is read by Orca, for example a list view "A list with 6 items. Audio", with audio being the currently selected item in the list. When I move back over to my text editor to write this article, every key I press is read out loud. Since I type rather quickly it sounds weird, but you get used to it.
There is an article written by a blind software developer which includes sound snippets of what it sounds like for him when he writes software at 450 words per minute. It sounds like an alien language to me, I can't make out any of the words, but he has adapted and gotten even more productive than I am with full eyesight.
Overview of the available tools
JAWS
JAWS was for a long time the best screenreader for blind computer users and according to their website is still the most popular tool, but it has two major drawbacks. It only works on Windows and it costs a ton of money.
$900 for personal use, $1100 for commercial use. The prices used to be even higher from what I heard and there is an annual subscription of $99 available now but only for non-commercial use, so you cannot use it to develop software for a living if you're blind.
NVDA
Due to the high price of JAWS, an Open Source competitor has gained a lot of traction. It still only works for Windows, but at least it is free and is supposedly the best free screenreader available.
Orca
Orca is the Open Source screenreader that comes with most Linux distributions. It cannot compete with NVDA and JAWS on Windows, but is the best software available on Linux.
EmacsSpeak
Vim users sometimes joke about Emacs being a very good operating system without a good text editor. There is of course a kernel of truth there, Emacs can do a lot more than just edit text. You can do pretty much everything in Emacs. Browse the web, read and write emails, browse newsgroups, read PDFs, browse your filesystem. Oh and of course play tetris. It's really the only application you need on your computer, although most people would find it's text based interface too archaic to use it for everything. For accessibility however, that a text editor that is completely keyboard driven can do all these things is awesome.
It means that a project called EmacsSpeak can turn Emacs into a desktop environment that is fully voiced while also being fully aware of the context you're in right now, one big advantage over general purpose screenreaders like NVDA, JAWS and Orca that generally have no idea about the task you're currently doing.
Hardware solution: Refreshable braille display
Photo by Sebastian Delorme licensed CC BY-SA 3.0
There isn't just software that reads text to you, there is also a piece of hardware called a refreshable braille display that forms the little dots known as braille that blind people can read with their fingers. The costs for even a small braille display are even higher than JAWS however, I saw a 40 character display for $6000. For programming you'd probably want a 80 character display so it's going to cost even more, which is really unfortunate. Making hardware cheaper sadly isn't as easy as making software cheaper (or free).
All links from this post
Hacker News discussion
Article of a blind programmer describing how he works
Software
- ORCA Linux: https://help.gnome.org/users/orca/stable/
- NVDA windows Open source alternative to JAWS: https://www.nvaccess.org/about-nvda/
- JAWS windows commercial: https://www.freedomscientific.com/Products/Blindness/JAWS
- ZoomText https://www.zoomtext.com/
- EmacsSpeak http://emacspeak.sourceforge.net/
This is interesting. Since using mouse is in conjunction with vision, what editor/IDE you can recommend to write code effectively for blind people?
Yeah blind people don't use a mouse, I didn't even think of that before I read the article I linked to from a blind developer, but of course the mouse is just a device to move the cursor around, a visual element you can't see when you're blind, so the keyboard is really the only thing you use. You tab through all the different elements on the screen, listening to the computer tell you what element is currently selected, until you finally find where you want to go.
Due to the availability of EmacsSpeak, Emacs would seem to be a good choice as an editor and IDE. Emacs is known to have more keyboard shortcuts than you can possibly learn in a lifetime, you don't need a mouse for anything, which is great in this case and with EmacsSpeak the screen reader knows how Emacs works so can give you much more relevant information than a general purpose screen reader.
And Visual Studio on Windows. Microsoft products are supposedly the most accessible, including Windows itself, and the Visual Studio team has invested a lot of time in making sure it works with screen readers. On Linux you will have an issue with all Electron based editors like Visual Studio Code and Atom since Electron isn't accessible on Linux yet I believe, on Windows it is.
So your best bet is really to use Windows for now until the situation on Linux and macOS improves, and use Visual Studio, Visual Studio Code and Emacs. Say what you want about Microsoft, but when it comes to accessibility they seem to be doing a better job than any other tech company judging by the comments from blind developers I've read, followed by Apple who are doing a great job on iOS.
Ah, I've been thinking a minimal distro Linux (with only terminal or tiling window as the interface) should be enough. But seems Windows has a better text2speech program than Linux. What about Vim (or neovim), is it also suitable for blind people?
I've seen a few comments saying that vim doesn't work that well with screen readers. But you could probably use a Vim plugin for Emacs so that you can still make use of EmacsSpeak. The other famous Emacs joke is that it's the best Vim editor :) I just read that Eclipse is supposedly also a nice choice for blind people. I wonder how Intellij compares, their website says it's best to use it with Windows, only works "to some extend" on macOS and Linux isn't even mentioned, so on Linux Eclipse might be the better choice.
Congratulations! Your post has been selected as a daily Steemit truffle! It is listed on rank 12 of all contributions awarded today. You can find the TOP DAILY TRUFFLE PICKS HERE.
I upvoted your contribution because to my mind your post is at least 4 SBD worth and should receive 94 votes. It's now up to the lovely Steemit community to make this come true.
I am
TrufflePig
, an Artificial Intelligence Bot that helps minnows and content curators using Machine Learning. If you are curious how I select content, you can find an explanation here!Have a nice day and sincerely yours,
TrufflePig