If you're learning programming, one of the suggestion you'll hear most often is "read books". While there's never been so many different mediums for learning programming (games, websites, talks, podcasts), you're never going to get away from reading dusty books. Reading books is the "eat your vegetables" of learning programming.
Eat your vegetables
I never had a problem accepting this as fact, and readily idolize K&R C and Rob Pike. But I do have a problem with sitting down and putting in the work to read, and a large part of that is my own brain working against myself.
I have dyslexia, though it's mild, and hasn't really stopped me from my goals. Well, maybe it has slowed me down. I still read for pleasure, but it's something I need to do, just not for fun, like a chore, or eating your vegetables.
Recently, I've done some
research Google searches on tools for dyslexic reading. And a lot of them are mediocre at best (which is practically a tragedy given how many lives could be enriched by improving access to information, but that's another topic). However there are some exceptional applications out there for helping people with dyslexia to read more frequently.
Voice Dream Reader
Voice Dream Reader is probably the best. I say "probably" because to really take advantage of Voice Dream Reader, you're going to need a note from your doctor, literally.
Voice Dream has built in support for Bookshare an impressive library of books, but to access it, you need an accredited institution to verify your learning disability.
This is actually a bit of trend with screen readers. A lot of them are marketed as medical tools, and either have your physician in the loop, or unreasonably high costs that you're expected to pay with medical insurance.
Personally, I never found my disability to be all that disabling. Additionally, I wasn't comfortable going through the entire process, and explicitly admitting to myself "I have a problem" -- Not when there are people with real trouble. I just unconsciously swap my b's and d's, and have a hard time getting off to non-fiction.
If you're not using Voice Dream Reader for literature, it can feel restrictive:
- They only make apps for Android and iOS.
- The built-in app browser doesn't share links or tab sharing with the phone's browser.
- There's support for documents and PDFs, but not DRM'd sources like Kindle books.
Most of my serious reading is on my desktop, which may be specific to me, but it's also not a big deal since the best browsers have some way of sharing links across devices.
And I do read a lot on my phone, but it's typically from apps for sites like Reddit or Hacker News. You can do a lot of copying and pasting, but it's a chore (and we're trying cut down on our chores, not add to them ;)
If you don't have the same problems I have: accessing a library of non-free books, lying to yourself about learning disabilities, and an irrational hatred of copying and pasting links, give Voice Dream Reader it's fair shake.
There's a lot of browser based screen readers, but Google's built their own into ChromeOS, and ported it to the Chrome web browser. ChromeVox doesn't do anything remarkable except stitch together the existing features of your computer's screen reader, and gets the out of the way.
It's the best experience for screen reading. I just use the shortcut to turn on ChromeVox, and click on the paragraphs I want read aloud.
Because of the way ChromeVox is designed, it can read HTTPS pages, which is most of the internet at this point. Unable to work with HTTPS websites is a serious design flaw of practically every browser-based screen reader.
ChromeVox can even use Google's US English Female Text-to-speech voice. This is the same well crafted voice you'll hear in other Google services like Google Maps, Google Assistant on your Android phone. By contrast, Apple's screen reader VoiceOver still doesn't have Siri years after being introduced on iPhone.
However, there are some minor caveats:
- It's designed for people with sight loss.
- The UI is practically doesn't exist.
It tends to be too verbose if you otherwise have no issues with navigating websites.
And the UI has almost no visual feedback. This was probably intentional, but it's not intuitive without graphical controls. This creates a learning curve, but the tutorial only feels 5 minutes long: don't skip it.
Kindle for Desktop
Once upon a time, Kindle devices had screen reading built-in, with headphone jacks! Though Amazon was ahead of it's time, and has long since removed headphone jacks from their Kindle line-up ;)
However, the desktop application Kindle for Mac has a very seamless screen reading experience. You can use the shortcut ⌘ + t on the page you want read aloud, and press ⌘ + t to stop.
You'll likely want to change the default voice used for screen reading in the Accessibility settings for Speech, under System Preferences. I like Samantha the best
The right tool(s) for the job
When I first started looking for a way to make reading more approachable, I was hung up on finding that one tool that does everything I wanted.
What I found instead was that the right tool was about accepting the right compromises. I like ChromeVox the best because reading from my browser is important to me. All the latest programming news passes through social aggregation sites like Reddit or Hacker News.
But all of the original and canonical soures on programming are still in dusty old books, and the Kindle is among the best reading experiences, with a top-tier book store (even if it is occasionally anti-consumer).