Starting today, every time I feel like ignoring accessibility in my applications because "no blind person is likely to use them", I'll remember this blog and punch myself in the face.
Holy shit, I admire that guy so much. Being able to program whilst lacking sight astounds me. I wonder how he got into it.
Becoming blind is one of my biggest fears and I consider programming to be one of my favourite activities on the planet, I'm happy that if the worst were to ever happen to me, I wouldn't be completely screwed. However I gotta wonder how well he's able to hold all his code in his head just off hearing it, whenever I program I often go back and read and re-read parts I've already written, I imagine having to hear it over just glancing over it would slow the whole process down a lot. I know he mentioned that he's gotten very good at mentally conceptualising his code which no doubt takes a lot of training but damn, a really large codebase would throw me for a tizz.
I'm a programmer by profession, but at one stage there were no such jobs available, so I went back to teaching. Teaching office computer skills (typing, Microsoft Office, drawing apps, ...) to kids who were "*-challenged", i.e. blind, deaf, mentally impaired and disturbed, and others.
The most exhausting, and rewarding, job I've ever had.
Vincent (one of the blind guys) ran into trouble with Word. Can't remember what the problem was, but I solved it with a simple Word macro. His flabber was gasted - not only did he then grok the fact that all the programs had code behind them, but the code was all plain text, hence was often easier to comprehend in a screen reader than what he heard from most programs. Even text in Word can be a pain to hear when every font change is also announced.
Of course the text might be easier to hear, but the logic behind can also tougher to grasp. But Vincent loved it and wanted to learn, and I much preferred teaching VB than teaching Word, so we soon had a programming class going within the office skills class. Some found it interesting, but Vincent found it easy and got a City & Guilds 425 Application Programming cert from the course. Went on to get a job programming before I did.
So I'd say he got into it the same way as me - one day I sat down in front of a terminal and wrote some code, which eventually worked, and I was hooked!
It was just easier for me because the terminal was more accessible and no-one thought it was "obvious" that I wouldn't be able to use it.
I imagine to some extent, due to the speed of his reader, he can audibly browse his code. This is just a guess.. My mind is actually getting all sorts of accessibility ideas for coders. If you could have hot keys to call out the function your in, call out all the methods in the current file(structure/class view etc). Jump to files. I have no idea what the current state of the art is, but I bet it could be streamlined a ton.
LISP's might make an interesting language of choice to due to the simplicity of their syntax and the ease of navigation through forms. Hmmmm.
A large codebase is a pain if its not organized properly ...I like MVC a lot for that reason :) if people adhere to the conventions, its easy to find what's what
A blind friend of mine is a programmer, and honestly can hold the structure of his code in his head far better than I can. The same is true of just about anything else - he's quite capable of holding the state of an entire game of Scrabble in his head while still playing better than I can.
This brings up a really interesting point - how do blind people visualise code, conceptually? When people talk about stacks, heaps, lists etc, there's generally a visual representation that goes along with it. I wonder what kind of abstractions blind people use.
>Fortunately, some fellow campers at the Free Code Camp were sympathetic towards my plight and volunteered to transcribe all these slides for me. This offer left me 'flabbergasted', as our dear western neighbors across the sea would say.
Many ions ago, I volunteered for an organization called "Recordings for the Blind and Dyslexic" (now known as Learning Ally - http://www.learningally.org/). Groups of individuals (mostly retired professors and other students) would record textbooks for college students. It was all volunteer and donation based. It would typically take days to weeks from starting a book until the recording was ready.
I loved almost all of it. The one thing I didn't like was that we would read a book in shifts and you wouldn't always be working on the same book from shift to shift, so you might read scene three of a play one shift, then the next day read chapter seven of a calculus 2 textbook. Regardless, it was always interesting and we always knew that there were students benefiting from our effort. As an extremely nearsighted child, one of my fears growing up was that I would grow to be so nearsighted I would be functionally blind, so it was a little personal for me.
Since then, I've been in charge of 508 conformance on many different websights [1]. I have always appreciated the sensory-challenged sharing how they are, or are not, able to use websites. I never cease to be amazed at the human ability to adapt and overcome such challenges!
[1] Freudian slip that I noticed but decided was worth sharing ;-)
Thank you so much for the link to learning ally. That is going to solve so many problems for my wife. We've been searching for audio versions of some of the text books they have listed there for months.
I'd like to know: what is the most comfortable posture for coding once you no longer have to look at a screen? I've wondered whether a syntax-sparse language like iolanguage might allow you to code entirely by voice and ear, with no need for keyboard. For those of us with vision, imagine having a lounge with a large screen on the wall. You can talk into your headset as you pace around, or lie on the couch.
Technically I can already sort of do that in any language. Do keep in mind that all I need to interact with a computer is a keyboard and some way to hear audio ...so I can in fact lay back on the couch with a keyboard on my lap and code away. In fact ... I do that all the time ;) I can't check my work using braille that way though, which is kind of essential with very complex code
About coding by voice, there was an article some time ago about a programmer who developed a bad case of RSI and came up with a system to code by voice: https://news.ycombinator.com/item?id=6203805
A friend of mine, a programmer, lost his sight. He was an Emacs user and could more or less continue programming thanks to Emacspeak, a package for Emacs that alters the voice depending on the syntactic construct of the word it is reading. It goes without saying that without Emacs and Emacspeak he would have had an uphill struggle returning to his job.
Wow ...so many questions ...I'm not sure where to begin answering all of these :) HN is throttling me, so please come find me on #zersiax on freenode to discuss this if you have more questions :) I hope this goes through ...
As a web developper, I would LOVE if you could compile a list of things I should do to make your life easier. I have read the best practices. However, I would love to have a list that comes from you. What are some websites that are doing it well?
I never had a chance to talk to somebody who was blind all his life and I've always been curious about that. It seems pretty obvious, that blind person can be dreaming, because hearing or smell are senses as much as eyesight is. I cannot comprehend the opposite: does person, blind all his life actually understand what "seeing" means? Of course he knows from the communicating with the others, that he lacks some ability, which most people have, but does he "feel" it somehow? Especially it is interesting with well-read people: writers often spend quite a large portion of the book describing how something looks. So, literate blind person must be well aware of words like "color", "beauty" (addressing the look of something), "bright", "dark", "dull", "picture" and such. But if he never ever saw — do all these words mean anything to him? Does he have idea of what it is like "to see"?
I have been almost totally blind all my life. I have some light perception and from talking to people the nearest I can come up with for colors is that black is when it is totally dark, gray is a normal room with lights turned on, and white is looking directly at the son. I associate colors with objects such as grass being green, brown being dirt, blue being the ocean etc but this isn't actually useful information.
The sort answer to your question is no. Just like dreams being unable to use any visual imagery, the same goes for concepts like bright, dull, color, etc. are abstract concepts that I really can't put any particular image to. Rule of thumb is that if you can't fully describe it in words that don't involve referring to visual cues, I don't know what it is :) As for feeling it ...it depends. I myself can still see differences between light and dark, as long as they are different enough. Think lightning at night, a lamp turning on in a dark room etc There's no color, shape or anything like that when I see that though. I therefore kind of know what seeing is, but only a very small portions of it. For people who are even more blind than I am, meaning ...no vision at all ... they wouldn't really 'feel' it, its oftencompared to imagining you have a sense that you actually don't have, like a dolphin's ability to always know where north is ...at least ...it was dolphins that coulddo that, no?
Maybe it's like picturing 4D objects is for us? I mean, you can study a lot 4D geometry etc, you can answer questions about it, but none is able to (afaik) "see" 4D objects. We just don't have a 3D matrix of receptors that would be the analogue of 3D vision, nor the processing region for that.
The questions you asked are answerable in this framework I guess, although even adding a new dimension is less than getting a full new sense.
This audio is the most unintelligible block of sound I've ever heard, but it made my day much happier to know you can understand it and use it nicely.
I will try to use the HTML5 accessibility tags and attributes whenever I can from now on (I currently don't even know what is there about accessibility to be implemented).
What a nice chap. I like and adhere to the opinion prevalent in this thread that we should pay more attention to Accessibility. I personally find I'm conditioned to ignore people with different needs than me when I design products, and this is an eye-opening example.
> I therefore have to keep looking for tutorials, programs and tools that are accessible, and cannot simply pick up any off-the-shelf IDE.
Another advantage of the ruby community's general commitment to produce a language that can be written in any old text editor. I think Java long past that point, you really need an effective IDE with certain features that it knows about Java to be effective in Java.
Making sure things are still doable with a plain text editor gives developers a lot more options (including for developing new editing environment improvements), instead of locking them in to certain IDEs. A lot more options for accessibility reasons or any reasons.
I helped rewrite Narrator, the Windows built in screen reader, for Vista. After we had a basic version working I tried turning off my monitor and using it to write code. I gave up quickly.
Several years back I worked with a team that had a blind developer. The team was transitioning to Java. The blind developer told me in a meeting that she was having trouble doing something in Eclipse. I told her that I would go with her to her desk to help diagnose the problem. Watching a blind person use Eclipse with a screen reader was simultaneously awe-inspiring (the screen reader part) and horrifying (the Eclipse part). Needless to say, Eclipse was not well suited for the blind.
Please, elaborate on this. I tend to use Eclipse as my primary IDE and am wondering what the blind person had trouble with, what screenreader they were using and how long ago this happened.
I turned on OS X's built-in screen reader, then set the rate to 100 (the fastest it goes). It's still not as fast NVDA.
It's interesting that he's using Windows 8 and I'd have liked if he'd talked about that briefly. I'd always thought that Apple was way ahead of the other vendors on this accessibility, but perhaps with third-party software available on the desktop for screen reading that's not the case.
Even though the built-in screenreader mac OS X uses blows Narrator out of the water currently, it has a long way to go to compete with 3rd-party screenreaders on the Windows platform, especially when it comes to productivity and actually getting work done. The advantage of VoiceOver is that it is baked into the OS and therefore also the recovery media, making it far easier to reinstall the entire OS from scratch. Thiscan be done in Windows as well, but only recently were the tools created to actually allow this semi-reliably. On the mobile front, Apple does outperform the competition by a rather broad margin.
A decade ago, I got to visit one of the accessibility labs at Microsoft. I'm not terribly surprised that Visual Studio works well as there are ocularly impaired developers at the company. I had the opportunity to speak with those who ran the lab and observe how someone used these screen readers first hand.
A friend of mine is a blind developer. He built his own screenreader for Android ( https://play.google.com/store/apps/details?id=info.spielproj... ), because he was unhappy with the existing options. I haven't yet gotten over being amazed, but I always knew he was really bright, so I should just get over assuming not having sight would prevent him from being an effective developer.
He has ambitions to do hardware hacking, but has been thwarted by difficulties with identifying parts (i.e. resistors are color-coded), among other things. I've been meaning to sit down with him sometime and work on something.
The absolute limit of comprehension for sighted people is 10 syllables per second. Blind people, however, can comprehend speech sped up to 25 syllables per second.
Thank you so much for your insightful post and prospective.
I have a question on how you imagine/think. People with eye sigh often think with pictures. Even thinking about abstract things like programming. I often visualize how a data structure looks and how it interacts with other code. I have found it tremendous useful as I can replay/test such scenario in my head.
Do you have similar experience when you think? Do you construct mental picture (such as circle, a binary tree) in your head? What is it like?
that question is both very easy and incredibly difficult to answer. Yes, I visualize code the way you guys do, but not with pictures. Let us take a 2-dimentional array as an example. I tend to visualize this as a table. A table, for me, is a construct with columns and rows. Naturally, I do not have a spacial picture of this, the closest I can get is a tactile representation of either a chess board or a scrabble board. In both cases, a single array index becomes a tile, which makes me able to visualize it. But just like dreams, I would not use a visual frame of reference here because that simply isn't an option, it is a tactile representation that I somehow translate into a mental ...'picture' for lack of a better word. If you think that is tough, think of how incredibly tough it is for me to visualize CSS ;)
Related: BSDTalk episode with a blind BSD user[1]. It's about many things, not how blind people deal with computers, but it offers some great insights nevertheless. She finds VAXen much easier to deal with than PCs, and CLIs much more accessible than GUI screen readers.
I imagine a purely text-based terminal set up running on a specially crafted host OS/VM that does the text-to-speech would be a fantastic solution. You can browse the web, email, twitter! I'm not sure how CLI browsers handle JS?
If this existed would there any good reason to be using a GUI at all (for a Visually Impaired Person)?
I think Emacspeak is close to what your talking about.
http://emacspeak.sourceforge.net/
The reason I don't use it is because I could never get it to work quite right so just continued using Windows. It's a lot easier to use Windows, Eclipse, Outlook, Office, etc even if it is somewhat less productive then Emacspeak would be. The amount of time I'd have to spend working around how to integrate with my co-workers Windows based setups if I used Linux with no GUI makes it a non-starter.
Mainly if you are working with others, this approach would fall on its face rather quickly. People actually do this, doing all their work using emacs modes and Emacspeak. It can be done, but in this day and age it is not the most elegant solution especially with web 2.0-based websites
The only command-line screenreader-compatible browser I know of that also supports JavaScript is edbrowse, which is not so bad to use if you’re already familiar with ed.
Really curious about how a linux environment compares in terms of usability for the blind. zersiax, are you using windows primarily because of the toolchain you need for work / school, or did you find linux lacking in terms of its support for your needs?
Are there frameworks to automatically analyse html for accessibility and perhaps provide a certain rating based on set guidelines? I think that might be a very interesting project to work on if such a thing does not exist.
There are automated tools, but in my experience they mostly pick up the easy things (missing alt attributes, etc.) The harder bits are focus and notification in SPAs. Read the WCAG docs [1] and the and WAI ARIA docs [2] stick to them. Then test with a screenreader.
I actually had an idea for this. What if blind users could wear little braille terminals? Like, braile is constructed of a series of dots, so why not have like a bracer that has a array of dots that poke the skin?
it might work, but the nerves found in the fingertips are far more sensitive than anywhere else on the body. This might be trainable though, I don't know
Yes! I guess I'm experiencing an awe at symbolic prowess comparable to that of only-functionally-literate people staring for the first time at the syntax-colored/indented walls of text used by programmers.
I had to download the audio example and lower the playback speed to a third of what it was before it started making sense! It is a reading of an earlier draft of the first bit of the post, btw, so there are several divergences which make it even harder to try to match text to speech.
A housemate of mine works with a blind web dev. The only real problem she has with is making sure certain css divs appear correctly on the screen, which she overcomes by asking friends, etc if it looks correct.
It's a shame that so many programs don't follow the accessibility guidelines, but it's just too damn easy to forget about the disabled if you aren't. But this article was an eye-opener for me (no pun intended).
I'm installing a screen-reader today ... and I'm going to listen to everything I create on it (at a slower speed - at least to start). We have stringent accessibility guidelines, tools to help find accessibility problems and a person in charge of making sure we adhere to those principles, but wouldn't it be more real to close your eyes and experience your creation yourself?
Since he has a whole occipital lobe to devote to parsing that, I don't feel so bad that my auditory processing isn't quite up to snuff. Reminds me of speed reading, though. What is the wpm on that? Maybe I'll ask him on freenode.
I would compare this to using something like Spritz (http://www.spritzinc.com/) for a sighted person. At first the higher speeds feel too fast but your brain quickly adapts, especially with daily practice. Given that he's used a screen-reader his entire life when dealing with computers, I'm sure his brain has deeply entrenched pathways for parsing audio like this.
I found that it was easier to catch a few words from that file when I closed my eyes to shut out other distractions. I still couldn't understand much, but I could see how there would be a progression to build to that level.
Indeed, I used NVDA for a while when I was working on accessibility for a web app and after a week I could turn it up pretty fast, but nowhere near that fast.
It might. You are putting your finger on a rather experimental way of browsing through code, something which Emacspeak currently does reliably as the only editor I am aware of. Rather than using sound fx, it uses difference in the TTSvoice to denote different syntax properties, kind of like audible syntax highlighting
lovelearning|11 years ago
ianlevesque|11 years ago
Lrigikithumer|11 years ago
Becoming blind is one of my biggest fears and I consider programming to be one of my favourite activities on the planet, I'm happy that if the worst were to ever happen to me, I wouldn't be completely screwed. However I gotta wonder how well he's able to hold all his code in his head just off hearing it, whenever I program I often go back and read and re-read parts I've already written, I imagine having to hear it over just glancing over it would slow the whole process down a lot. I know he mentioned that he's gotten very good at mentally conceptualising his code which no doubt takes a lot of training but damn, a really large codebase would throw me for a tizz.
jalanb|11 years ago
I'm a programmer by profession, but at one stage there were no such jobs available, so I went back to teaching. Teaching office computer skills (typing, Microsoft Office, drawing apps, ...) to kids who were "*-challenged", i.e. blind, deaf, mentally impaired and disturbed, and others.
The most exhausting, and rewarding, job I've ever had.
Vincent (one of the blind guys) ran into trouble with Word. Can't remember what the problem was, but I solved it with a simple Word macro. His flabber was gasted - not only did he then grok the fact that all the programs had code behind them, but the code was all plain text, hence was often easier to comprehend in a screen reader than what he heard from most programs. Even text in Word can be a pain to hear when every font change is also announced.
Of course the text might be easier to hear, but the logic behind can also tougher to grasp. But Vincent loved it and wanted to learn, and I much preferred teaching VB than teaching Word, so we soon had a programming class going within the office skills class. Some found it interesting, but Vincent found it easy and got a City & Guilds 425 Application Programming cert from the course. Went on to get a job programming before I did.
So I'd say he got into it the same way as me - one day I sat down in front of a terminal and wrote some code, which eventually worked, and I was hooked!
It was just easier for me because the terminal was more accessible and no-one thought it was "obvious" that I wouldn't be able to use it.
Rapzid|11 years ago
LISP's might make an interesting language of choice to due to the simplicity of their syntax and the ease of navigation through forms. Hmmmm.
zersiax|11 years ago
jon-wood|11 years ago
dsuth|11 years ago
thret|11 years ago
yaddayadda|11 years ago
Many ions ago, I volunteered for an organization called "Recordings for the Blind and Dyslexic" (now known as Learning Ally - http://www.learningally.org/). Groups of individuals (mostly retired professors and other students) would record textbooks for college students. It was all volunteer and donation based. It would typically take days to weeks from starting a book until the recording was ready.
I loved almost all of it. The one thing I didn't like was that we would read a book in shifts and you wouldn't always be working on the same book from shift to shift, so you might read scene three of a play one shift, then the next day read chapter seven of a calculus 2 textbook. Regardless, it was always interesting and we always knew that there were students benefiting from our effort. As an extremely nearsighted child, one of my fears growing up was that I would grow to be so nearsighted I would be functionally blind, so it was a little personal for me.
Since then, I've been in charge of 508 conformance on many different websights [1]. I have always appreciated the sensory-challenged sharing how they are, or are not, able to use websites. I never cease to be amazed at the human ability to adapt and overcome such challenges!
[1] Freudian slip that I noticed but decided was worth sharing ;-)
steveax|11 years ago
[1] https://www.bookshare.org/
steverb|11 years ago
cturner|11 years ago
zersiax|11 years ago
palmer_eldritch|11 years ago
madethemcry|11 years ago
The speed of the screen reader Zersiax uses is unbelievable fast. I can't understand a single word:
https://soundcloud.com/freecodecamp/zersiaxs-screen-reader
sergiosgc|11 years ago
If that rate were the norm, I'd be classified as hearing impaired. I can't identify a single word.
cjfont|11 years ago
nothrabannosir|11 years ago
Florian @zersiax 2 hours ago
mate, could you comment on there that I created a channel on freenode called #zersiax if peeps have questions?
Florian @zersiax 2 hours ago
seems I posted too many comments on HN , its blocking me from sending more :) and I do want to reply o all these
https://twitter.com/zersiax/status/560810466789044224 https://twitter.com/zersiax/status/560810548263407617
---
There's something beautiful about a typo from a visually impaired person :)
mickeyp|11 years ago
zersiax|11 years ago
Raphmedia|11 years ago
krick|11 years ago
jareds|11 years ago
zersiax|11 years ago
darkmighty|11 years ago
The questions you asked are answerable in this framework I guess, although even adding a new dimension is less than getting a full new sense.
fiatjaf|11 years ago
I will try to use the HTML5 accessibility tags and attributes whenever I can from now on (I currently don't even know what is there about accessibility to be implemented).
simi_|11 years ago
apologies for the horrible pun
jrochkind1|11 years ago
Another advantage of the ruby community's general commitment to produce a language that can be written in any old text editor. I think Java long past that point, you really need an effective IDE with certain features that it knows about Java to be effective in Java.
Making sure things are still doable with a plain text editor gives developers a lot more options (including for developing new editing environment improvements), instead of locking them in to certain IDEs. A lot more options for accessibility reasons or any reasons.
dugmartin|11 years ago
neverartful|11 years ago
zersiax|11 years ago
js2|11 years ago
It's interesting that he's using Windows 8 and I'd have liked if he'd talked about that briefly. I'd always thought that Apple was way ahead of the other vendors on this accessibility, but perhaps with third-party software available on the desktop for screen reading that's not the case.
zersiax|11 years ago
waynecochran|11 years ago
https://github.com/wcochran/accessiblesudoku
Apple usually has fantastic documentation, but we had to experiment a lot to figure out the accessibility API.
chinpokomon|11 years ago
SwellJoe|11 years ago
He has ambitions to do hardware hacking, but has been thwarted by difficulties with identifying parts (i.e. resistors are color-coded), among other things. I've been meaning to sit down with him sometime and work on something.
V-2|11 years ago
bellacodes|11 years ago
This sample is playing at 16 syllables per second and it already sounds like COMPLETE gibberish to me: https://rdouglasfields.files.wordpress.com/2010/12/speech16-...
(http://www.scientificamerican.com/article/why-can-some-blind...)
Makes you wonder who the "impaired" ones are.
queryly|11 years ago
I have a question on how you imagine/think. People with eye sigh often think with pictures. Even thinking about abstract things like programming. I often visualize how a data structure looks and how it interacts with other code. I have found it tremendous useful as I can replay/test such scenario in my head.
Do you have similar experience when you think? Do you construct mental picture (such as circle, a binary tree) in your head? What is it like?
zersiax|11 years ago
4ad|11 years ago
http://bsdtalk.blogspot.co.at/2008/03/bsdtalk143-bsd-hobbies...
LeonM|11 years ago
blackRust|11 years ago
If this existed would there any good reason to be using a GUI at all (for a Visually Impaired Person)?
jareds|11 years ago
zersiax|11 years ago
evincarofautumn|11 years ago
ckuttruff|11 years ago
20kleagues|11 years ago
steveax|11 years ago
[1] http://www.w3.org/TR/WCAG20/
[2] http://www.w3.org/WAI/intro/aria.php
r00nk|11 years ago
zersiax|11 years ago
darkFunction|11 years ago
elzr|11 years ago
I had to download the audio example and lower the playback speed to a third of what it was before it started making sense! It is a reading of an earlier draft of the first bit of the post, btw, so there are several divergences which make it even harder to try to match text to speech.
k__|11 years ago
We always joked he did our UI.
Sanddancer|11 years ago
fiatjaf|11 years ago
Throwaway1224|11 years ago
I always wondered what happened to that dude.
bobosha|11 years ago
lohengramm|11 years ago
lsiebert|11 years ago
mattmurdog|11 years ago
ruben94|11 years ago
Kenji|11 years ago
It's a shame that so many programs don't follow the accessibility guidelines, but it's just too damn easy to forget about the disabled if you aren't. But this article was an eye-opener for me (no pun intended).
smoyer|11 years ago
superobserver|11 years ago
arb99|11 years ago
If someone can understand at that speed, listening to audiobooks must be a very quick activity...
fiatjaf|11 years ago
steveax|11 years ago
[1] http://yuiblog.com/blog/2007/05/14/video-intro-to-screenread...
jacinda|11 years ago
I found that it was easier to catch a few words from that file when I closed my eyes to shut out other distractions. I still couldn't understand much, but I could see how there would be a progression to build to that level.
trishume|11 years ago
(I'm not blind)
franklinho|11 years ago
gcb0|11 years ago
you have a bug there :)
also, why not use different sounds for ( [ { etc?
would a different beep for each instead of "left paren" make life easier?
zersiax|11 years ago