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!
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
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
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)
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 :)
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...
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
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?
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
0It's an array-based language, but it doesn't have to be used that way.
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.
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...
Usually Apple has been pretty good with accessible features. I wonder if they built it into to Playgrounds too.
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)
- https://the-brannons.com/ - https://blvuug.org/ (blind and low-vision unix user group)
Looks like screen readers (adults run them at incredible speeds) + incredible memory and skill + any text-based language
https://www.kickstarter.com/projects/coboblocks/coboblocks-s...
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.
Should do the trick I'd think.
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.