top | item 8965048

How a Blind Person Programs

429 points| am391 | 11 years ago |blog.freecodecamp.com

135 comments

order

lovelearning|11 years ago

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.

Lrigikithumer|11 years ago

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.

jalanb|11 years ago

> I wonder how he got into it.

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

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.

zersiax|11 years ago

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

jon-wood|11 years ago

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.

dsuth|11 years ago

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.

thret|11 years ago

Me too! I've always thought losing my legs would be nothing compared to losing my eyesight. Good to know even that doesn't prevent you coding.

yaddayadda|11 years ago

>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 ;-)

steverb|11 years ago

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.

cturner|11 years ago

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.

zersiax|11 years ago

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

madethemcry|11 years ago

That blog post is very interesting. I really enjoyed the reading and must admit that I should spend more time on accessibility.

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

Wow! Just, wow! I had skipped hearing the screen reader on my first pass on the article. It is amazing how human audition can parse that speech rate.

If that rate were the norm, I'd be classified as hearing impaired. I can't identify a single word.

cjfont|11 years ago

Listening to that blew my mind to the point where I was convinced the audio wasn't being played through my speakers the way it was intended.

nothrabannosir|11 years ago

Hey guys a note from the author on Twitter:

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

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.

zersiax|11 years ago

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 ...

Raphmedia|11 years ago

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?

krick|11 years ago

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"?

jareds|11 years ago

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.

zersiax|11 years ago

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?

darkmighty|11 years ago

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.

fiatjaf|11 years ago

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).

simi_|11 years ago

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.

apologies for the horrible pun

jrochkind1|11 years ago

> 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.

dugmartin|11 years ago

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.

neverartful|11 years ago

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.

zersiax|11 years ago

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.

js2|11 years ago

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.

zersiax|11 years ago

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.

waynecochran|11 years ago

A blind student took my programming tools course last spring and together we wrote an accessible sudoku app for the Mac:

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

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.

SwellJoe|11 years ago

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.

queryly|11 years ago

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?

zersiax|11 years ago

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 ;)

4ad|11 years ago

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.

http://bsdtalk.blogspot.co.at/2008/03/bsdtalk143-bsd-hobbies...

LeonM|11 years ago

That download link seems to be broken, can anyone upload that cast somewhere?

blackRust|11 years ago

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)?

jareds|11 years ago

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.

zersiax|11 years ago

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

evincarofautumn|11 years ago

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.

ckuttruff|11 years ago

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?

20kleagues|11 years ago

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.

steveax|11 years ago

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.

[1] http://www.w3.org/TR/WCAG20/

[2] http://www.w3.org/WAI/intro/aria.php

r00nk|11 years ago

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?

zersiax|11 years ago

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

darkFunction|11 years ago

Wow, the audio example... It's like a solid wall of pure data.

elzr|11 years ago

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.

k__|11 years ago

I knew a blind programmer back in the days.

We always joked he did our UI.

Sanddancer|11 years ago

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.

Throwaway1224|11 years ago

I was in an ACM programming competition in 2004(?) where one of the competitors was blind. It was hosted by LSU.

I always wondered what happened to that dude.

bobosha|11 years ago

Thanks for sharing, learned something valuable today

lohengramm|11 years ago

Really interesting, specially the audio. I can't understand a single word. In fact, im far from it!

lsiebert|11 years ago

Yeah, I will definitely try to do more to implement screen reader accessibility in web apps I build.

mattmurdog|11 years ago

Really cool. Thank you for sharing.

ruben94|11 years ago

wow, respect.

Kenji|11 years ago

Wow! Those screen readers are fast (his example https://soundcloud.com/freecodecamp)! I barely understood a word. I didn't know that.

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

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?

superobserver|11 years ago

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.

arb99|11 years ago

I actually thought it was a corrupt file or something - it doesn't sound like anything I'd be able to pick out and understand.

If someone can understand at that speed, listening to audiobooks must be a very quick activity...

fiatjaf|11 years ago

SoundCloud is evil and started playing bad songs right after this audio stopped.

jacinda|11 years ago

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.

trishume|11 years ago

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.

(I'm not blind)

franklinho|11 years ago

No kidding. The speed of that is incredible.

gcb0|11 years ago

> If left paren x equals five

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

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