6 ms·
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
by Lrigikithumer 12y 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.
- Rapzid 12y agoI 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.
- kuschku 12y agoThere was another post about this months ago, and the blind poster said that while C is usable (thanks to brackets), python is completely unusable or unreadable to them.
- danielbarla 12y agoI'm pretty sure a screen reader could be configured to understand significant whitespace, even if it's not a trivial task.
- qznc 12y agoIt should basically read the token stream instead of the text. For Python that includes indent and dedent tokens, which are equivalent to open and close brackets.
- kryptiskt 12y agoMaybe it suffices to just say "end if/for/def/class/etc" at the end of each block.
- socksy 12y agoThis article had me thinking — what if the different levels of scope were represented by reading the text at different pitches? Kind of like rainbow parentheses with lisp for sighted people. It'd be really interesting to try out a technique like that with a lisp, I think.
- samatman 12y agoUse pentatonics! Most other choices will sound poor. How would you render (do (blah bler) (bip bop)) to make it different from (do (blah bler bip bop))? Emphasis?
- socksy 12y agoPentatonics is a good idea. Maybe to distinguish in this case you might have a 'blip' type noise go down to the sound of the do block's tone?
- zersiax 12y agoI actually had to go through that line by line to even see the difference since as I said I tend to ignore braces, brackets and parens unless I need them. For this, working with audio only would just be a bad idea and braille display would make this a lot easier
- zhengyi13 12y agoI've personally helped TV Raman (http://en.wikipedia.org/wiki/T._V._Raman http://en.wikipedia.org/wiki/T._V._Raman) re-setup his screenreader and Emacs stuff multiple times when his local PC required re-installation. He hacks on emacs code pretty effectively when he's not doing other things. IIRC different emacs fonts/faces are rendered via the reader as slightly different tones to the voice. (I also helped introduce him to stumpwm when he absolutely had to have a GUI to do some specific testing; he was shocked and pleased that such a thing existed)
- andreasvc 12y agoWhile it makes sense that it would be unusable without proper treatment of the indentations, I don't think it would be hard to adapt the screen reader. Note that the Python parser itself converts indentations to begin / end tokens, which are exactly like braces, so those can be read out loud to make the indentations explicit.
- zersiax 12y agoThere is absolutely nothing preventing blind coders from using Python. Indentation can easily be reported by any screenreader I am aware of and it is a very clean, screenreader-friendly language for the rest. I really enjoy working with that language
- zersiax 12y agoAudibly browsing through lines of code is something I do all the time, yep :) Also checking it using braille helps, its a bit more ...hmm ...direct in some ways. As for calling out functions and such, a lot of IDE's can already do that. Have a look at the outline view in Eclipse, as well as the annotations you can skip between using hotkeys which is useful for finding errors in your code
- thret 12y agoMe 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.
- dsuth 12y agoThis 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.
- qznc 12y agoAre there any blind compiler/interpreter hackers? A programming language optimized for the blind would make an interesting esolang [0]. I guess a REPL works great. Does Forth or Lisp read better to the blind? Can you do syntax "coloring" in sound? Are static types helpful or is type inference prefered? Would they like an editor like ed? So many questions ... [0] http://esolangs.org/ http://esolangs.org/
- ndarilek 12y agoCheck out Emacspeak[0] for one of the best audio coding environments I've worked with. Not a big fan of Raman's "ignore decades of accessibility work and run Emacs apps for everything!" approach, but based on my recollections of 15 years or so ago, it was one of the best coding environments I've worked with. It did a sort of audio syntax highlighting with different voices for different tokens, and more or less nailed auditory bracket/paren matching. I can't for the life of me code in any Lisp-like language. Too much nesting, and whereas speech synthesis inserts pauses at commas and other punctuation marks, Lisp's lack of them makes it hard to parse a heavily-nested function call by ear. This is true to a lesser extent with Haskell and its emphasis on ., $ and other operators that change how a function call is structured. As always, opinions expressed are my own, and shouldn't be taken as a statement of how collective blind people do X. I'm one of many, so please don't walk away from this thinking Lisps are hard for blind folks. They're tough for me, and above are my particular reasons why. 0: https://emacspeak.sf.net https://emacspeak.sf.net
- zersiax 12y agocome talk to me on IRC. your questions are too involved to answer in one comment
- 12y ago
- jon-wood 12y agoA 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.
- jalanb 12y 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.
- zersiax 12y agoA 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
- happimess 12y agoTo be fair, I think a lot of sighted people would agree with you on both points.
- ghurtado 12y agoThank you so much for writing this amazingly inspirational article. You have so much to offer to sighted coders. Reading about your experience almost makes me wonder how much better all software would be if by some fluke of history we would have never invented visual representations of code, and we were all required to write code just like you do. It seems to me that like all the important abstractions of software engineering take on a much higher priority when you can't rely on your sight to make sense of the mess. "Less is more" indeed! Please keep sharing your experience with the community, I think your input can bring about more benefits to sighted developers than you may have realized.