Hacker News .hnnew | past | comments | ask | show | jobs | submit | more Lrigikithumer's commentslogin

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


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.


Audibly 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


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


There 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


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


I'm pretty sure a screen reader could be configured to understand significant whitespace, even if it's not a trivial task.


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


I've personally helped TV 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)


TV Raman was in a numerical optimization class with me in grad school. He kept up with blackboard lectures, which were densely mathematical, along with everyone else, just by listening to what the professor was saying. He was one of the outstanding students in the class. An amazing person.


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


I 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


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


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


Maybe it suffices to just say "end if/for/def/class/etc" at the end of each block.


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


To be fair, I think a lot of sighted people would agree with you on both points.


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


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.


Being blind doesn't mean you don't conceptualize things visually, or at least spatially.

When I was younger and being taught how to get around a new area, I had a hell of a time trying to get my instructors to draw me a map. Not sure if I wasn't explaining myself well or if those instructors just decided to play stupid, but I had to fight to get even a simple drawn tactile map, and once I had one everything more or less clicked into place. Now that we have accessible touchscreens on just about every modern mainstream OS, I'd love a shared whiteboard app that could accessibly render UML diagrams or whatever else drawn on one tablet to a roomful of connected phones, laptops and tablets. You couldn't necessarily convey shapes and such exactly, but if you could position a shape meaningfully and add some sort of access hint metadata (I.e. "downward-pointing arrow") I could spatially explore a UI or system diagram and everyone else can have their pretty pictures.


Are 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/


Check 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


come talk to me on IRC. your questions are too involved to answer in one comment


To be very honest with you, I never really think about the stack and the heap. I know the concepts, but I tend to zoom into my code far closer. I work with the current function only, its inputs and outputs. Someone on Twitter recommended TDD to me, which indeed is only a small logical step from what I am already mentally conceptualizing


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.


I've got a solution but it involves an old priest and a young priest


Is the board continuously flashing for anyone else? Mac OSX 10.10.1 Safari.


What exactly do you mean? I didn't find anything on the screen too intense, overwhelming or unnecessary.


Well I mean it kind of is. C's my favorite language but it's like a machete, simple enough, fairly easy to use and useful in a lot of places but if you don't know how to use it properly it's very easy to cut yourself with.


I'm pretty sure that was removed, the case insensitivity.


Or maybe the long living civilisations never existed, or we aren't knocking on the right doors, or in the right areas?


A lot of people consider nuclear annihilation a big threat but I'm not too worried about tbh. I mean if you think about it, every major player has got a trigger to end all life at any given point, doesn't it seem reasonable that at some point you invest a lot of money into systems that can safeguard and prevent this type of catastrophe. I know a lot of people may consider the governments dangerous and selfish but they aren't stupid, major players have definitely got systems in place to neutralise these threats.

At least they do in my optimistic viewpoint.


I would like to share your optimism. But then I read about things like the US nuclear launch codes being set to 00000000 for quite a few years, or an incident when survival versus Armageddon depended on the judgment of one man [1], and I have to conclude that human governments should not be in possession of nuclear weapons.

[1] http://en.wikipedia.org/wiki/Stanislav_Petrov


Nuclear weapons are hard enough to build that they require a coordination of resources and knowledge, so there is an amount of level headedness among those that build them. A pessimistic view follows that, if some technology in our future is as destructive yet it be simple to build then that is a candidate for a filter. In essence, if it exists then we are just sitting ducks.


Why are people getting downvoted for saying coq is not exactly a great name. It's not, no matter it's definition it sounds like cock, not a great name to advertise the language.

I mean if someone created a programming language called vagina, labia, penis or sphincter it would be ridiculed, cause it's not an appropriate name for a language.


"Cock" in English means exactly the same thing as "coq" in French. So, yes, the language is called "cock". Do you have anything against this beautiful bird?


I personally don't care about the bird, I am just into coq.


I prefer this beautiful bird:

http://en.wikipedia.org/wiki/Great_tit


Because they are concern trolling. However, if they were really offended by something so minor, then they deserve ridicule.


That's certainly what the title implies, perhaps "Stack Overflow on Emacs" would have been a better title.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: