Ask HN: I'm a software engineer going blind, how should I prepare?
I know there are blind software engineers out there. My main questions are:
- Are there blind frontend engineers?
- What kinds of software engineering lend themselves to someone with limited vision? Backend only?
- Besides a screen reader, what are some of the best tools for building software with limited vision?
- Does your company employ blind engineers? How well does it work? What kind of engineer are they?
I'm really trying to get ahead of this thing and prepare myself as my vision is degrading rather quickly. I'm not sure what I can do if I can't do SE as I don't have any formal education in anything. I've worked really hard to get to where I am and don't want it to go to waste.
Thank you for any input, and stay safe out there!
Edit:
Thank you all for your links, suggestions, and moral support, I really appreciate it. Since my diagnosis I've slowly developed a crippling anxiety centered around a feeling that I need to figure out the rest of my life before it's too late. I know I shouldn't think this way but it is hard not to. I'm very independent and I feel a pressure to "show up." I will look into these opportunities mentioned and try to get in touch with some more members of the blind engineering community.
496 comments
[ 4.3 ms ] story [ 365 ms ] threadMigrate from front end development to backend...
Learn to live in the command line.
Take car of your soul
It's a circular but effective way to coupe
https://www.youtube.com/watch?v=b_RL_Q8CR78
From 2015, a blind engineer uses emacspeak to write C++.
https://www.businessinsider.com/how-blind-google-engineer-wr...
I have read some HN comments in the past from blind engineers. Not sure if they are frontend.
Hope to see some cool suggestions, tools, and software posted in this thread!
Gradually have it turned off for longer periods without turning it on to see what's happening until you can do it without seeing it at all.
Here's the Apple doc for anyone interested: https://support.apple.com/en-us/HT201443
I'm not sure where you're based, but I've heard of Usher's Syndrome after hearing a talk from someone named Molly Watt, who also has Usher's Syndrome. It might be worth dropping her a line, as in her line of work she might be able to either give some advice, or point you towards someone in your situation that can help.
https://www.mollywatt.com/
Google: https://www.businessinsider.com/how-blind-google-engineer-wr...
Visual Studio: https://www.youtube.com/watch?v=94swlF55tVc
Forzano (Amazon) https://www.youtube.com/watch?v=57P_dCEPtRw, https://blog.aboutamazon.com/working-at-amazon/blind-since-b...
Wishing you the best, J
i find this interesting. is it due to the space significance thingy?
They have really good resources and training around accessibility for the web, and some of the software they develop[2] is incorporated into Google Lighthouse.
Their guides and videos might help you get a sense for how other people use alternative access methods to interface with the web.
With both the skills to write software and a deeper understanding of the use cases you'll be well-positioned to help improve things for a lot of people - I'm sure it could be tough at times, but stick with it, and best of luck to you.
[1] - https://www.deque.com/services/accessibility-empathy-lab/
[2] - https://github.com/dequelabs/axe-core
I have also written some plugins for using Vim (text editing) and Weechat (IRC chat) with speech synthesis:
https://git.sr.ht/~sircmpwn/dotfiles/tree/master/lib/vim/vim...
https://git.sr.ht/~sircmpwn/dotfiles/tree/master/.weechat/py...
And I have a script for Sway (a tiling window manager) which also gives you audible cues:
https://git.sr.ht/~sircmpwn/dotfiles/tree/master/bin/swaytal...
All of this is somewhat incomplete, but it's a good starting point if you want to get used to them and work on improvements while you're still sighted. Good luck, and let me know if I can be of service.
I have a different philosophy and approach to using computers than most, and that affects my views on accessibility. Stapling a screenreader onto a graphical application, for example, to me seems like the wrong approach. Text-based applications are much more accessible, and these are my bread and butter. To this end, my work on accessibility involves making more information available as text, organized logically rather than spatially, and making it easier to access and manipulate that information with vision impairments (and other sorts of impairments, too).
I've found that, counter-intuitively, a fully accessible GUI program with a good GUI screen reader is easier to use than a screen-oriented terminal program with a screen reader. The trouble with the latter is that the user has to understand visual concepts like highlighting, the meaning of special characters, etc.
Of course, an application or plugin that's tailor-made for doing a particular task with speech output is better than either of those other choices -- as long as you don't have to use an application that's overall inferior (e.g. using the Emacs/W3 web browser with Emacspeak as opposed to a mainstream browser).
Poorly. I want to improve aerc in this respect. For the time being, I use a mix of my braille reader (brltty) and piping emails into vipe so I can use my vim plugin to read them.
I can understand that. I think many of us have just accepted that it has to be this way, because we're a minority and we want to have all of the advantages of using mainstream applications (economies of scale, active development, not being at an extra disadvantage compared to sighted peers, etc.).
Of course, you don't fit the profile of a "mainstream consumer" when it comes to computers. In particular, I gather that you take full advantage of the hackability of free software. So using custom TTS plugins as opposed to a clunky generic screen reader is just an extension of that overall approach to using computers.
Even 20 years ago the limitations of those options were clear to anyone who was willing to face reality. I was in denial for a while. (Note: I have limited vision, but I spent a lot of time helping blind people use Linux back then.)
Of course, Lynx and Emacs/W3 aren't the only alternatives. I think an interesting option would be a specialized browser UI based on headless Chromium.
In any case, I'm guessing Drew won't give up his free-software ideals easily, if at all. And he's a capable enough hacker that I'm sure he'll come up with a solution that works well for him.
Braille is easy, I could read it reasonably well with just a couple of days of study.
I also use VIM because it feels like the best case of voice integration or braille integration...but I have no source for how to actually do this properly. Are there good reading materials on this?
Currently I am trying to build a semantic web browser, also with the intention to filter out all legacy crap CSS that prevents interaction with the content [1] and the idea of being able to train CNNs with the content... but when it comes to code, my memory of it seems to suck so hard that I always have no clue of what I wrote the day before.
[1] still alpha as hell: https://github.com/cookiengineer/stealth
(Also a long time observer of your work here. You are one of the good guys. Stay awesome!)
Check out Emacsspeak: http://emacspeak.sourceforge.net/
It’s written by T.V. Raman, a blind engineer at Google by way of Cornell.
Among other things, with it you can just use the built-in Emacs browser!
As for how to actually rig up braille readers on Linux, check out BRLTTY. It's pretty straightforward. I was working on an Alpine Linux spin which was more accessible out of the box, but I got discouraged by various circumstances and shelved it.
Also, do you run brltty on a Linux text console, or in a terminal window in your Sway session?
The most difficult thing for me would be learning advanced levels of braille, which involves memorizing shortened forms of many words, but I reckon I can get away with just using long-form for a good long while.
I totally switched my workflow to Test Driven Development due to the last 6 months parsing CSS and http1.1 responses.
It’s amazing how much server infrastructure violates w3c specs and recommendations. Something like partial content (206) is mindblowingly crappily implemented on servers these days when it comes to keep alive sockets and multiple range requests. Some servers reply only with chunked encodings, even for frames with less than 256 bytes (looking at you, cloudflare dns), some only send back a single stream...some just send back ranges without headers...
And I only support http1.1 as of now, because http2 and 3 are both kinda undebuggable and there’s no reference-class testsuite to test against implementations.
Still, it seems like a very worthwhile project. I'm fed up with modern browsers myself (the "megabar" on Firefox 75 is, somehow, the last straw for me.)
I'm going to keep an eye on Stealth because it sounds like the perfect browser/proxy engine for an experimental UI I'm working on.
Cheers! Good work and good luck. :)
Just thought of as nice tiling editor.
It's quite hard for us, as we relay on browser extensions to test and tell us whether we are doing accessibility right or not, before we send the app to be tested by our co-workers/users.
These tools lack somewhat, they are not easy to integrate in the build process, and instead developers have to remember to run them, and check different things (e.g. there are multiple types of color-blindness, EU vs. USA regulations for accessibility, ARIA roles/labels where possible for screen readers etc).
So you could definitely start working on something in that area. Maybe more tools, more information, services for testing, consultancy.
BTW, I don't know if asking the internet for advice on this subject is a good idea. I imagine it's gonna be mostly speculation. I'd seek out other people that have firsthand experience (i.e. they went blind) and ask what they did and how they're doing...
https://www.reddit.com/r/emacs/comments/bh0vm0/emacspeak_how...
https://stackoverflow.com/questions/118984/how-can-you-progr...
and also contact some individual programmers with visual impairments.
I don't have particular expertise in this area but I remember meeting a completely blind software developer in 1995 or 1996 (when presumably the tools available were much more limited!). He said that he had successfully pursued this career for a number of years already at that time. However, I think the things he was working with would be things that you'd consider more to be backend engineering.
I also know a computer scientist who is blind and who has continued researching, publishing, and teaching, but as he works in theory, his work might also feel more backend-like.
> - Besides a screen reader, what are some of the best tools for building software with limited vision?
If you decide to learn Braille well, Braille terminals are still a thing:
https://en.wikipedia.org/wiki/Refreshable_braille_display
(You might have seen one used in the movie Sneakers!)
Some fluent Braille readers can use these terminals at very high speeds (although people who use screen readers also often get used to using their screen readers at extremely high speeds).
> - Are there blind frontend engineers?
I know you might not want to pigeonhole yourself and work specifically on disability-related projects, but a lot of companies are trying to ensure accessibility of their web sites and so are interested in having developers with specific disabilities to help make sure that that works out properly. I believe there are consultancies of people with specific impairments who develop (and test) UI for accessibility to users with similar disabilities.
Have you considered that maybe you don't want to be doing software engineering and with this precious remaining time would rather prepare for something entirely different? Not sure what your financial situation will be or if you live somewhere with sufficient social support, but if you're going to be blind for life (and you're very young), optimizing for employment (ie. "I'm already a software engineer, may as well commit to that") might not be the best way to live a full and fulfilling life.
What would be your suggestion for the best way to live a full and fulfilling life?
I think many 24 year olds have spent so much of their recent years thinking about their career that they might miss the fact that there's so much more to life. This time might be better spent in other ways too. I just want to nudge this individual towards considering those things too.
If he thought being a software engineer was what he wanted to do to live a fulfilling life before his diagnosis, why would that change now?
Basically, the GP is telling the OP to consider all of his options and not to box himself into software engineering just because that's what he does now.
I'm blind myself, and I consider software-engineering to be one of the nicest options out there, at least in my country. Sure, there are difficulties, but not as many as in other fields. Computers can be accessible, and accessible tools can usually be found.
A blind person becoming a software engineer is a realistic option. a blind person becoming... almost anything else is not. As a blind person, career prospects are pretty limited, and someone who already is a software engineer has a huge advantage, compared to someone who i.e. invested n years of his life into becoming a surgeon.
> This code turned out to be a lot more complicated than I anticipated. The patch ended up adding a hundred lines of Arc. A hundred lines of Arc! Do you have any idea how many lines of Arc that is? I just looked through the history and the last commit that added that many lines of code was over two years ago when we got Arc to compile to JS. [1]
Clojure is quite well documented, and you can do full stack development with it (clojurescript). Intellij has good support for it, and it stores the state of code as an ast. I think there are addons for dealing with ast (search/replace) as well.
Also, you might want to "settle down" wrt your dev setup (tech, tools), since jumping from project to project, tool to tool won't be that easy. Maybe pick a self contained environment you can learn inside out (smalltalk, tools.deps).
Emacs seems to check all these points, but it's still visual oriented. Maybe build one yourself.
[1] https://news.ycombinator.com/item?id=22767204
Courts in the USA are by and large accommodating thanks to the ADA.
Your technical background, with the loss of vision, with a legal degree, and I think you’d have a very long, lucrative, and fulfilling career.
https://www.natlawreview.com/article/ada-website-litigation-...
If you don't already place an emphasis on using semantic HTML markup, learn more about that, it's the foundation of accessible design.
http://edbrowse.org/