Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Alternatives to Scratch for a blind child?
219 points by nathell on Jan 3, 2023 | hide | past | favorite | 67 comments
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!




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


Thank you for pulling this up, I had never heard of it. It warms my heart to see that people go out of their way to make coding accessible. Do you happen to know of any ways I can help in making coding more accessible?


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


Hey, OP here. This is great! I’d love to get this into the hands of Adrian (that’s the kiddo’s name).

Unfortunately, my hardware assembly skills are next to zero. Is there any chance to get a pre-assembled prototype? I’d happily pay for the BOM and blog about Adrian’s experience with this.


I'd be happy to make it for free just for the feedback! My contact info is in my HN bio.

The downside to a motorized display is the cost. Each motor is roughly $1.50 USD. When you include all the other stuff (electronics, 3D printed parts, etc.), it's at about $2/pin. A relatively small 10x20 display (minimum size for a Tetris board, for example) would cost $400 USD just in raw cost.

At retail, that 10x20 board would likely be around $1000 USD. Arguably this is why no one has mass-produced something like this yet. A larger display would just be too expensive to be practical for most people.

BUT!... Like I said, the feedback would valuable to me so am happy to make one for free. Classic warnings apply: it's still a prototype, so supervised play would definitely be required.


If OP takes you up on this, DM me and I'll throw you some cash for doing this.


Hey, thanks. HN doesn't have DMs, though. Send me an email or Twitter DM? (Contact info in my HN bio.)


Also interested in contributing. GoFundMe page maybe? You really piqued my interest.


Appreciate the support. You can find my contact info via my HN bio. Or follow @pinthing and/or @hugs on Twitter. (Yes, I need to set-up an alternative to Twitter someday soon...)


I recall learning about that here. It feels obvious to want a 80x24 or larger computer braille display, but as you say that would be prohibitively expensive.

I do hope that research goes into a more cost effective non-mechanical bump map. In a hybrid display, this would be useful for sighted persons too. For example having tactile feedback from the screen on the car's console would let the driver keep eyes on the road. And then of course let's remember that blindness isn't just seeing darkness, plenty of blind persons have enough usable vision that a hybrid display could be quite useful for them too. I know that's all pie in the sky, but the sad fact is the best accessibility technology is built on building blocks that are useful to sighted people. The iPhone's literally life-changing VoiceOver technology is the most striking example that I'm familiar with. It's a shame Apple ditched the haptic technology on their displays.


Would it be possible to use fewer motors to control more pins? 'Stuff Made Here' made a 12-point display using two motors. https://youtu.be/8Au47gnXs0w?t=429


Maybe. It's all a trade-off. At the moment, I'm running to get one version up and running and willing to revisit design decisions when contemplating a version 2. (If I don't do it that way, I'll keep getting sidetracked by cool suggestions like yours and never get V1 done! :)


Thanks so much! I’ve sent you an email.


I would be happy to donate to your efforts for helping the OP out. Thank you kind soul.


would a solenoid solution work? seems like the coils could be wound into holders on the board directly?


Solenoids could definitely work. They might also be cheaper if I wind them myself. I might do that for a future version. Downside is that's more work to wind custom solenoids, which of course I could automate, but then that's more work to build the automation. Easier to start with small off-the-shelf DC gearmotors for now. Off-the-shelf solenoids are a bit too bulky from what I've found. (Although I don't have perfect knowledge of everything that's out there.)

Linear actuators with DC gearmotors have more fine-grained positional control vs plain solenoids. But that could be fixed if I use a tubular linear actuator design that looks like a solenoid. [1]

But at this point it's more important to get something/anything to a V1 and start getting real world feedback.

[1]: https://youtu.be/3PLWTF_6odc


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/


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)


Just a wild thought I had. I have no idea how screen readers treat indents, but it would be interesting to have indents indicated by speech tone. So the text on the same indentation level has the same tone and the town gets lower or higher the farther it is from the screen edge. There's probably a better solution, but I felt like sharing a random thought.


That's a cool idea! That way if you miss the leading indent you can still tell a block of text is indented.


Fwiw I'd say ruby would be similar to python, but without the semantically significant whitespace.

There's also lisps, like racket, that might be worth trying?


I like Racket, but there is a lot of unofficial "significant" space. The compiler ignores it so it's theoretically non-significant, but I can't read code that has bad indentation (or code that uses only () instead of mixing some [] here and there as recommended). My guess is that the screen reader saying tabtabtafforiinrangetencolontabtabtabtabprinti is easier because you can count the tabs in each line and understand the nesting easier that trying to count the parenthesis and guessing the nesting in your head.

It's very difficult to use Racket with and editor that does not support parenthesis highlighting, and with parenthesis highlighting you can just look pass the parenthesis. I use Geany with a small customization to make the parenthesis highlighting easier to see.

Perhaps after the Rhombus project (initially known as Racket2) is finished, I'd recommend to use it. It mixes some of the significant space of Python to remove the parenthesis. There is a live demo, but I guess it still needs a few years to iron out all the details.


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 :)


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

As a formerly blind and currently visually impaired person who programs, I'd even go so far as to argue there are some benefits to being blind. Humans are visual creatures, but computers aren't, and one of the stumbling blocks for humans learning to speak computer is wanting or needing visual representations of things and building layers of abstraction in part to deal with that need. We separate 'where', 'when', and 'why' a lot easier, I think.


> one of the stumbling blocks for humans learning to speak computer is wanting or needing visual representations of things and building layers of abstraction in part to deal with that need.

I'm not blind, but fairly recently (couple of year; I'm 47) realised I have aphantasia. I didn't even know it was a thing or that others could see things in their minds eye - I thought people spoke metaphorically.

After learning that I realised that the way I "see" software structure as abstract relationships without a visualisation was very alien to a lot of people, who tend to rely on seeing the code.

Visual layout helps me build that abstract model rapidly, but once I have that model in my head I can mentally plan out code changes without looking much at the code, so I totally agree that needing visual representations can be a massive hindrance.


I am not blind but I am a visual thinker and have no trouble seeing how a computer works. I can easily visualize memory, data, code structure and so on.


I'm not blind, but a relative turned blind relatively early in their life (when I was still a child), so it's been present in my thoughts at least. I love the take that there is an advantage - building stronger conceptual skills is what I'd say you're describing. In my experience it's quite difficult to find programmers with strong conceptual skills, so this rings true to me.


Blockly isn't really a Scratch competitor since it just provides a block editor and no runtime. Scratch actually uses a modified version of it.


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


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


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?


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.


Replying to correct line breaks:

   plus =: +
   3 plus 4
7

   equals =: = 
   5 equals 2 plus 3 
1

   4 equals 2 plus 3 
0


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


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.


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


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.


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)



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


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)


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


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.


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

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


This coding board game might work too: the parent acts as the computer

https://www.thinkfun.com/products/robot-turtles/


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


I'm guessing a few reasons:

1. The kit has like thirty individual devices in it, many of which are unique or have a bunch of tactile buttons and sliders. Marketing for the product suggests that they were designed to be really durable so students wouldn't be afraid of breaking them.

2. Because it's a relatively niche accessibility product, they probably don't sell very many of them. So they need to charge more to cover all the fixed costs of designing the product, setting up manufacturing, writing all the companion materials, etc.

3. In the US, the APH Federal Quota Program subsidizes some of the cost of buying products like this. https://www.aph.org/about-federal-quota/ also suggests that there are programs where you can borrow or rent the kit instead of buying it.


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/


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.


Python is quite visual by using whitespace as meaningful part of the language.

I would also try swift playgrounds if the kid is used to voice over.


I've taught many people to program and can safely say python is an awful first language even for sighted users. Invisible characters being part of the syntax is awful.

Scheme IMO is the best for both sighted and blind people. There's very minimal syntax and I'd imagine a good editor with s-expression motions would make things much easier if you can't see.


Maybe I'm misremembering my youth, but isn't recursion a bit of a tough concept for a 10 year old to grasp?

Edit: I have no idea where I got 10 years old from, the post clearly doesn't list ages. In any case, I am leaving it on the offhand chance someone chimes in with a story about their kids learning scheme.


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


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.


Why not Logos with a braile/tactile screen?

Should do the trick I'd think.


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.


[flagged]


You can't do this here, and you've been breaking the site guidelines badly in other places too:

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

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

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

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

Therefore I've banned the account. Please don't create accounts to break HN's rules with.


There a number of really good threads on HN where blind users contribute from their own experience. I strongly suggest you go and read them before deciding it's not a viable career:

"Ask HN: I'm a software engineer going blind, how should I prepare?" https://news.ycombinator.com/item?id=22918980

"Ask HN: How to prepare as soon-to-be blind developer?" https://news.ycombinator.com/item?id=30339187

"Ask HN: Blind programmers, what can I do to make my code easier for you?" https://news.ycombinator.com/item?id=18478776

"Ask HN: How should a programming language accommodate disabled programmers?" https://news.ycombinator.com/item?id=18414562


Unless you're T.V.Raman [1] or any one of a number of other blind programmers, of course.

[1] https://en.wikipedia.org/wiki/T._V._Raman


Would reaching out to this particular individual be option for the OP?

His homepage appears to be here: https://tvraman.github.io/


I've worked with two blind programmers and a blind content producer for a kids TV website.

All were very capable at their jobs and all three were blind from birth.

I've also worked with a deaf programmer and with one who wasn't able to type for more than a short period a day and had to use voice recognition software (and this was about 12 years ago). They got in fine too.

Adjustments needed to be made, but they were all hired as they were capable. I can't tell you how or where they learnt to code, but they learnt and all gained meaningful employment.

Unless you have particular knowledge or experience in the area, it might be one to keep your opinions to yourself?


> Programming isn't really suitable for the blind

That's like saying reading and writing on a computer isn't suited for the blind, which is horseshit cause many blind people do it. I've also ready many blog posts by blind programmers, some of them with follow-up comments on HN by them about their evolving setup.


The only software engineer coworker I've ever had that I would actually trust anywhere near cryptography without a prebuilt solution is blind.

This post is simply wrong.


While some have to deal with disabilites since early on, many forget that anyone can get disabilities at any point during their life, and is nice of having options to still be able to continue working on what they love, instead of living from healthcare paychecks.


programming is suitable to anyone

some people can not picture things in their head (aphantasia), or some people can not hear their thoughts? others can only see emotions as colors, or sounds as colors

because our output is normalized through language and symbols, it seems we are somewhat similar, but this is deceptive, as the difference in thought between two individuals can be as vast as between an octopus and a crow

and i am certainly sure that anyone "sees" code in their own way


One of my coworkers is blind and he's one of the best in the company.


Ah yes the personal anecdotes and edge cases. Eh, I saw this coming.

The reality is that this is not an appropriate job for people with severe visual impairment that doesn't allow them to look at a screen, in very few exceptions is it the later, companies are not designed to handle this and realistically cannot.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: