HACKER Q&A
📣 nathell

Alternatives to Scratch for a blind child?


Hey HN,

My friend’s children are starting their adventure with programming at school with Scratch. Unfortunately, the eldest one is blind, and as Scratch is visual, he won’t be able to use it. A pity: the kid has probably the most vivid imagination of all people I know.

Can you recommend an alternative? Something tactile or audial, perhaps? A quick googling yielded https://codejumper.com/ – is it worth the $1K it costs?

Personal experience reports are most welcome. Thanks!


  👤 hazelnut-tree Accepted Answer ✓
The Quorum programming language was originally designed for blind children. The language scope has expanded to appeal to all children.

https://quorumlanguage.com/

Although the language is not widely known, the language creator posted to Hacker News in 2018:

> Hi all, this is Andreas Stefik (I invented Quorum)....First, people saying Quorum was originally designed for blind children are correct. Originally, we were toying with the idea of adjusting syntax to make it easier to read out loud through a screen reader. That stemmed from observing young blind programmers use a variety of programming languages on one of my first National Science Foundation projects. Phrases like, “for int I equals semicolon, I less then semicolon I plus plus” or other phrases can be extraordinarily difficult to listen to, especially if you are child.

> This is one reason why Quorum is used so heavily at schools for the blind or visually impaired in the U.S. and elsewhere. We haven’t been just for the blind in a long-time, but I still care about that community quite a bit and we work hard to make things accessible. There’s a ton more to discuss in that area, but I want to move on to “evidence."

Full comment: https://news.ycombinator.com/item?id=17849357


👤 hugs
I'm making an open source, programmable tactile display called PinThing. Like the classic "Pin Art" pinscreen desk toy, but each pin is motorized and programmable.

I didn't design PinThing specifically for people with blindness, but since it's a real 3D display, it could be useful as a 3D display for shapes, graphs... or even as a real 3D output display for Scratch.

For awhile, this has been a side/passion project, but if there's interest, I'd love to get them a prototype.

Software demo: https://www.pinthing.com/

Hardware demo: https://youtu.be/tx4W3ZDA_Vg


👤 thom
I wonder if something like Inform might be a good environment for them. Obviously it falls far short of what you can do with Scratch, but an imaginative child could achieve a lot, and integrating it with voice/accessibility tools seems feasible.

https://ganelson.github.io/inform-website/


👤 gus_massa
One of my coworkers was blind. With an screen reader, he used Excel, LaTeX and other computer stuff, but IIRC he didn't program.

I'd recommend to skip Scratch and clones. Jump directly to Python. The indentation may be a problem, so you must find out how to configure the screen reader to say this invisible spaces of the indentation. Perhaps it's better to use tabs for the children, because they are easier to count. (Some editors show a small arrow instead of a tab, so I'm optimistic this is fixable.)

I recommend t create a small library to play sounds for the kid, so he can use it directly without caring about the nasty details. Something like

  sound("thunder.wav", left = 80, right = 20)
My idea is that he can make a small game where you walk and hear the sound in each room of a (haunted?) house. The volume and direction can gives cues. (The code to handle arrows may be tricky too, perhaps encapsulate it in another library.)

(When my daughter was young, I made a 3D library for red-blue glasses. He used it do draw simple objects and buildings (something like the front of the Parthenon with square columns).)

If he is old enough and likes math, perhaps he can learn to nest a few `for` and `if` and bruteforce some elementary math problems. I'm not sure if the screen reader is good enough for this. Perhaps a text to downloaded speech library may be useful, so he can use

  say("The result is", r)
instead of

  print("The result is", r)

👤 zersiax
Hoo boy, this is a fun one :)

Disclaimer: Fully blind programmer, have been for several years,learned as a teenager, later went on to teach various blind individuals as a side hustle for a while, culminating in a 2 month course done for the folks who make CodeJumper. With all that out of the way, let's go.

First, let me just comment on that comment by @conviencefee999. Kindly do your research before chiming into a discussion you quite clearly know very little about. I don't know your unique set of circumstances, but stating that one of the most viable career paths for a blind individual is not a viable career path is rather against the current and, as you yourself helpfully point out, anything but helpful. While it is true that the barrier to entry is still somewhat present, particularly for the age group OP is asking about, it can absolutely be done. Case and point being myself, as well as various others I know of. There are discussion groups about this topic, mostly in the form of the admittedly rather antiquated mailing list. An example is program-l over at freelists.org.

Second, re: Python's indentation situation. I would actually argue that Python is a great starting point, because screen readers are able to either verbally or audibly indicate indentation levels when required, particularly on Windows and up to a point, in a more limited fashion, on Mac OS. This makes the "invisible characters" issue somewhat less problematic, and a braille display alleviates this issue even more, provided the blind computer user in question has access to one, which is more common in Europe than it is over in the States.

Now as for a couple recommendations.

Scratch works on the principle of instant gratification first and foremost: you do, you see. Right away. And it can be difficult to replicate that experience non-visually, particularly for younger children. I haven't really found a 100% equivalent alternative.

I worked with a group of researchers several months ago that is working on an accessible interface to Blockly, a Scratch competitor in a lot of respects, which came as close as I can think of a fully analogous experience. Unfortunately, I have no idea how that project is faring at the moment and if they ever made it further than the prototype I got to test back then.

The things I can think of that come closest are:

* Swift Playgrounds (mac/iPad): VoiceOver, Apple's screen reader, supports these environments rather well, describing the visuals within the game worlds you work in, so this could be something to look into.

* Freecodecamp/codecademy: I myself started learning how to program by writing HTML back when I was 10 or so. I liked the idea of writing some arcane things into a notepad and seeing it come alive on the page in front of me, and FreeCodeCamp essentially does that same thing, but gamifies it a bit more. That could be something to look into.

* SonicPie: SOnicPie is a ruby environment for creating music using code. There's a pretty accessible tutorial for newcomers that could work for, say, a 10-year-old I think, provided they have a love for music and sound. Could be another avenue to try, although the sonicPie editor isn't as accessible as it could be and takes a bit of getting used to.

I hope this helps a bit :)


👤 FranklinMaillot
You could check out Sphero[0]. They have a variety of kits to teach electronics and coding to kids. Their robots are programmable either with a scratch-like interface or with real programming languages (javascript and python) which should allow the use of screen readers.

littleBits are their electonic components kits that can be easily assembled with magnet. According to this paper[1], they can be suitable for visually impaired kids.

[0] https://sphero.com/collections/coding-robots

[1] https://journals.ala.org/index.php/ltr/article/view/6673/895...


👤 llagerlof
Try to reach Lucas Radaelli, a blind Google developer and an amazing person. I am sure he can give some good tips. His twitter handle is @lucasradaelli

👤 femto
Logo with a physical turtle?

Can something be done with an overhead camera, and a bunch of cardboard cutouts using QR codes? I remember one of the (big name?) universities had a project along these lines. In their case they used different patterns of coloured dots on objects, and every object in the room was mapped to a virtual equivalent. Interaction with the computer was solely by moving objects around in the room. I can't find it on Google. It might have had a connection to the Dynabook project? They probably have code ready to go.

Edit: Found it: Dynamicland

https://dynamicland.org/

No source code available?

It has appeared on Hacker News:

https://news.ycombinator.com/item?id=26725370

Also: https://paperprograms.org/

https://github.com/janpaul123/paperprograms

Maybe you could have different shaped bits of paper which implement blocks using javascript? Add a "print" function and the programmer could consolidate something they have written using multiple blocks/sheets into a single block/sheet, so allowing more complexity in a smaller space? Alternatively, can it be mapped directly to scratch instead of javascript?


👤 gcanyon
I don't know how well it works with screen readers, etc., but https://livecode.com might work well because the code is English-like -- it still uses things like [] for arrays and () for precedence in calculations, but in general there is much less use of symbols.

Another possibly odd suggestion is https://www.jsoftware.com/#/README Natively, J is nothing but symbols, but crucially, everything can be redefined. So this is possible:

   plus =: +
   3 plus 4
7 equals =: = 5 equals 2 plus 3 1 4 equals 2 plus 3 0

It's an array-based language, but it doesn't have to be used that way.


👤 gtm1260
I saw the code jumper tech at a conference once, it was actually really thoughtfully done, I had no idea it cost 1k though!

One other option I've seen is this Spintronics platform: https://upperstory.com/spintronics/

I first saw it on Steve Mould's youtube channel, they're basically mechanical circuits and it looks super cool.

https://www.youtube.com/watch?v=QrkiJZKJfpY


👤 BigglesB
Not exactly coding but if electronics would interest them, I wonder if Spintronics might be suitable due to its very tactile nature? I guess the printed instructions & illustrations probably aren’t super accessible unless they have someone with them to assist though, but could maybe get in contact with them to ask if they can provide a digital version of the text that might be able to work with a screen reader or if they have any other available accommodations for blind people.

👤 TameraZamboni
I believe it is possible to achieve goals whilst having a disability, with computers. I myself don't have a disability, but am fascinated how computers can empower the user. I'd suggest that he connects with similar people - surely there are some hubs or chatrooms online (or locally) where programmers with disability hang around.

On a second note, I'd suggest researching free software solutions. There should be tools that are free and are specifically aimed towards accessibility.

Some helpful links for further research: 0) https://www.debian.org/devel/debian-accessibility/software 1) https://stackoverflow.com/questions/118984/how-can-you-progr...


👤 rovr138
I wonder if Swift Playgrounds might be useful, https://www.apple.com/swift/playgrounds/.

Usually Apple has been pretty good with accessible features. I wonder if they built it into to Playgrounds too.


👤 kimburgess
For keeping the joy of learning a tool that lets you create, definitely check out some of the languages built for audio performance.

Two approachable ones worth glancing at are:

https://sonic-pi.net/ (Ruby based, designed for students)

https://extemporelang.github.io/ (Scheme, with a REPL for real-time performance)



👤 nycdotnet
https://hedy.org has text to speech built-in and is meant to help kids learn to program.

👤 deadbeef57
I don't have a specific programming recommendation. But I know there are several blind programming wizards. Maybe these links are helpful?

- https://the-brannons.com/ - https://blvuug.org/ (blind and low-vision unix user group)


👤 liveoneggs
https://www.parhamdoustdar.com/2016/04/03/tools-of-blind-pro...

Looks like screen readers (adults run them at incredible speeds) + incredible memory and skill + any text-based language


👤 Rich_Morin
BASIC, Forth, Logo, Python, and Ruby are all reasonable starter languages for children. Although Python's semantic indentation can be a hassle for blind users, this isn't an insuperable problem. And, given Python's immense popularity, it is likely to be around and very usable for a long time.

👤 mikelnrd
There's a recent Kickstarter for physical Scratch blocks that control a robot:

https://www.kickstarter.com/projects/coboblocks/coboblocks-s...


👤 ipsum2
How is codejumper $1k for something so simple? It doesn't seem very inclusive, and it could be easily DIYable.

👤 password4321
The Code-a-pillar is a toy robot that that follows programmable directions. I'm not sure how accessible it is though.

https://amzn.com/dp/B07MLXX9NN/


👤 severak_cz
Some real adult programming language which can be used with braille terminal and/or screenreader. However as I am not user of any of those things I cannot recommend which language works with them, but I would definitely try python.

👤 brrsty
khanacademy.org offers tutorials for P5.js in a fun env. It's where I learned as a 5th grader all on my own, and now that I'm in my second year of college I'm finally learning beyond their courses

👤 codesnik
well, why not text?

Ruby should work well, it's pretty close to plain english, and is not too heavy on punctuation, and is (mostly) not whitespace sensitive. You'll need some screenreader setup, of course.

Making games is a major hook for kids to go into programming, but there're text games, like zork etc.


👤 salawat
Why not Logos with a braile/tactile screen?

Should do the trick I'd think.


👤 ianbicking
My comment won't be that helpful since I have no experience, but it feels like an interesting question to spitball some thoughts...

1. The domain is super important for children's programming. Logo started out doing list processing and word-based games and kids just weren't that into it; it's the turtle that really made it feel real and exciting. Scratch similarly has a really concrete and fun domain (moving sprites). The exact things that good learning environments have (lots of visuals and movement) don't seem very fun when you are blind (though maybe there's ways to experience that output that I'm not aware of).

2. My natural intuition is that voice and music are fun. Maybe there's tactile things I am unaware of. Maybe Lego Mindstorms?

3. FoxDot is a really fun programming environment for creating live music: https://github.com/Qirky/FoxDot – it's very textual, and I'm not sure how easy that is (especially if you are trying to interact while the music is playing). It's based on Supercollider: https://supercollider.github.io/ – it's possible there's other more accessible frontends for Supercollider.

4. Here's something someone did with Supercollider: https://www.researchgate.net/figure/The-technology-set-up-a-...

5. That reminds me of Makey Makey, which is very tactile and affordable. But it's basically just an input device. https://makeymakey.com/ – really you can't go wrong getting that and hooking it up to a sound player or having the kid find new and inventive ways to create tactile frontends to it. I'm sure other kids will be impressed with what this kid comes up with. Here's a page on using it with blind kids: https://www.perkins.org/resource/makey-makey-stem-activities...

6. I once created a Makey Makey project with my daughter that I was really excited about, but somehow she didn't appreciate... anyway, basically it was a simple Scratch program that did sounds and speech in response to keystrokes (what Makey Makey outputs) but the "game" was all about how the Makey Makey was wired. It was roughly inspired by this: https://makeymakey.com/blogs/how-to-instructions/lesson-six-...

7. It's OK if it's not "programming" IMHO. Building things with computers is fun and good learning. Giving the kid a new medium to build things is important, with or without complicated logic. I think there is a benefit to what I'll call more inclusively "coding" which is representing your goals and thoughts in some special format, like HTML or music notation or whatever.

8. Speech input and output in the browser is pretty easy and accessible. But I don't know of anything that brings all that together in a programming-like experience. Using GPT I bet there's something possible and not super complicated that could be created today that couldn't have happened a year ago.