396 comments

[ 1.6 ms ] story [ 394 ms ] thread
I have spent countless hours in scratch when I was younger. I learnt to program in basic originally but I loved scratch for its ease of use.

There was a group of us during ICT classes who would try and make the best games with scratch. Ended up learning the basics of momentum and control schemes by messing around with it.

Scratch is also one of the largest places for kids to play games.
Yeah, I learned this when I thought my kid was spending hours coding, he was actually spending hours playing games.
This is true—and watch animated stories.

But the cool thing is that for any game or story on Scratch, the kid can click into the project to see how it was made, and even access the code and assets. They can copy, fork, alter, build.

The technology is different obviously, but it feels like the early days of the Web, when you could “view source” and “save as” to easily explore and learn how any web page was put together.

> But the cool thing is that for any game or story on Scratch, the kid can click into the project to see how it was made, and even access the code and assets.

Definitely an important feature for learning. Seeing something cool and then immediately being able to find out how it was done is much more motivating than reading and memorizing docs ahead of time.

It's similar in some respects the early days of the web when "View source" was enough to figure out how something worked. It's rather sad that feature has mostly been lost.

[flagged]
Why spend money on expensive Legos when you can buy any imaginable plastic toy for cheaper on AliExpress?
I suspect even with AIs certain kinds of people will still enjoy creating by hand. Certain kinds of people won't, of course, and that's ok.
Because they're doing this for fun. A lot of kids genuinely enjoy the process of making games.
Why learning anything, if we have GPT-4? Why even commenting here, GPT-4 could do that, too ;).
My 9 year old nephew today told me he wants to learn scratch. I don’t know where he heard that from but he was very specific about it. Wow.
Anybody remember Logo? That turtle graphics program? That's what they taught us at school. Programming for kids surely has changed a lot since then.
You can do turtle graphics in scratch. I have taught some beginner scratch classes at my local library and used the turtle graphics feature for the example for the class
My grandfather got me a lesson in Logo when I was <10 on his apple ii. It was before I understood the concept of degrees, so I really struggled with it. That said, it is part of what made me into a software engineer today.
I played around with Scratch and all the pointing, clicking and dragging drove me nuts.
My 9 year old daughter surprised me yesterday with her little game made with Scratch. I was impressed.

I surprised her back when I did user-testing haha. She discovered the fun world of bugs and user's doing things they shouldn't!

> I surprised her back when I did user-testing

Wait till she gets tough PR reviews.

This block is ugly, and our team does not like looking at it :P

AND This damn kid WORKS FROM HOME every darn day and doesnt even let me know on Slack!
Remember that robblox investigation, were they interviewed that 12 year old that already talked like a burned out developer, feeling cheated out of the revenue. The children yearn for the mines..

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

Yikes...

Scratch and Roblox conspiracy to create an army of child developers? :O

Please do not conflate Scratch and Roblox!

Scratch is open source software created by a nonprofit foundation to promote education and creativity.

Roblox exploits children for profit and I quite literally believe they are violating child labor laws.

> I quite literally believe they are violating child labor laws.

Couldn't agree more the more I learn about them.

I would actually be very interested to hear from a lawyer—or at least someone with legal knowledge—why Roblox hasn't been prosecuted for this. These children are creating value for the company, and they're being compensated via a currency which can be converted into dollars. How is that not payment for work?

If Robux could only be converted into Amazon gift cards, I would still argue that was a labor violation, but I could at least understand why the case was murky.

Can Uber hire 16-year-olds to drive for them without a work permit as long as they're paid in special UbiCoins which are converted into dollars later?

Quality Assurance is a first reality-check.

Please shield her from doing UAT with unreasonable business stakeholders as long as you can

I LOL'ed! You really brought out the QA and product testing on her, haha!
> I surprised her back when I did user-testing haha. She discovered the fun world of bugs and user's doing things they shouldn't!

Oh... that path takes you to strange places.

Mr. Fart’s Favorite Colors - https://medium.com/@blakeross/mr-fart-s-favorite-colors-3177... (7 years ago - https://news.ycombinator.com/item?id=11231631 )

It starts when we’re 8 and coding our very first program. “What’s your favorite color?” it asks, sweetly, twirling a lock of Visual Basic around its finger. You type in your answer, the screen changes color accordingly, and boom — time to show off to family.

Then Aunt Jody calls.

“Honey, it froze on me. ‘Color.exe has crashed.’ I don’t know what that means.” You take a look at her entry. She entered: 2.

“I thought it asked how many favorite colors I had?”

But how could you…but what does it even mean to have more than one favori…ok, fine. No big deal. You add a sliver of code to stop people from typing numbers into the box.

Great read, thanks for sharing. This took me down an hour long rabbit hole of airplane safety procedures which is not what you would have expected going in.
We had one in makecode that I had to look into after my kid left for school. (He was pretty frustrated.) Turned out that it wasn't applying changes we made in the code and the window needed to be reloaded.

My ten year old is doing both scratch and makecode. The graphics in makecode are not as flexible as scratch, but it's fun to be able to make a game and run it on a physical device (pybadge).

I remember when I was young, I made a scratch game that was just "Guess the secret letter". Basically "if l pressed, you win, else you lose".

Except my 10 year old brain did not understand what else meant. So I created, over the course of hours, a different if statement for every key on the keyboard that all ended with "you lose". Was a shock to me when my parents, after seeing my code for the first time, told me what else means. What a waste!

One of the fun things about having a kid is realising how fundamentally-learned everything is, and how much we adults end up taking for granted. I catch myself so many times explaining things to my daughter, and then realising that the terms and concepts I'm using in the description also need describing. (She's 22).
I had a similar experience as a kid when making a game in BASIC. The player could choose their difficulty level, with higher difficulty levels having less obstacles for the player to hide behind. My code to calculate the number of obstacles looked like 'if diff=10 then obs=1; if diff=9 then obs=2; if diff=8 then obs=3; etc.' My dad looked at it, deleted all ten lines, replaced them with 'obs = 11 - diff', and my jaw hit the floor.
I’ve been tempted to teach my daughter programming with scratch. At what age did you introduce your daughter to Scratch and programming? Where there any helpful/fun guides you or she discovered along the way?
She uses it at school, but no one taught her how to use it. She has followed tutorials for making games on Roblox Studio in the past. However, kids just hit the ground running with Scratch way better than adults.
That makes a lot of sense. As a lapsed programmer myself, I found the Scratch interface was not very intuitive.
I introduced to my kids at around 6 and 8. 6 was maybe a little early, but not much (and will vary by kid, of course).

One thing that really added to the fun when they were making games is I got a PS3 controller (which is bluetooth) and connected that to the computer as a keyboard, which Scratch code can then read and use in the games.

The first big (for them) project we did was: https://scratch.mit.edu/projects/219423211/ They had just turned 7 and 9 when we did that and dad helped them out with a fair bit of guidance (and cribbing from other projects), but after this one, they really took to playing around with it on their own and a few times per month, I'll look over and see Adam using scratch around 5 years later.

PS: There is a Scratch Jr if your kids don't seem quite old enough to have the attention span/focus for scratch.

Thank you. Scratch Jr looks interesting and is probably a better introduction for my 6 year old.
In spite of learning Logo at 6, I didn’t try to introduce programming to my kids, but my 7yo daughter picked up Scratch-based web programming during school where they did Hour of Code. (Pleasantly surprised considering Texas’ slow bleeding of public schools.) It’s a free site filled with focused, guided activities using block programming and probably other languages. One is Dance Party where you sequence dancers and their stage to a music track, and in another you teach Elsa to skate patterns into the ice in a modern twist on Logo.

They do a lot of Minecraft now but are interested in TinkerCAD, which I’ll solidify by printing some of their designs. Not sure any of the beginner CAD apps are really easy, though.

I code in 5 languages professionally, and I also do infrastructure and architecture. My kid is so much better than me in Scratch; it is embarrassing.
<nerdy dad doing PBJ according to the kid's instructions video>
When people use scratch with their kids, what tutorials do they follow? Do they try and figure things out from first principles, or are their popular content creators who make stuff? How do people transition their kids from scratch to Python? From my experience teaching, it seems like it's really hard for kids to make that transition.
There's an official YT channel with lots of small simple game tutorials.
Great questions, and good timing. My daughter asked about learning "line programming" instead of "block programming" yesterday.

Finally, out of 3 kids one is interested! Now what do I do?! Python, I'm assuming, but following what curriculum?

How about p5.js Graphics centric which imo is easier to keep kids engaged. The coding train yet channel has tons of videos on P5.js
Haven’t worked with scratch myself, but I do enjoy HelloComics’ stream where they’re making a pretty fun looking 2d metroidvania style game in Scrtatch. If you’re interested in seeing how it could be used for a large scale project it might be worth a look: https://m.twitch.tv/hellocomics.
He’s actually using Stencyl, which has a programming interface based on Scratch.
Seattle Public Schools participates in code.org’s “hour of code” program, which introduces students to programming in general and to the (delightfully good) free resources and programming environments on both code.org and scratch.mit.edu. My daughter had her first “hour” in first grade and it stuck; she loves toying with scratch and making little games. Both organizations are doing amazing work.
Hour of Code is wonderful. I think my old school was one of the first to try it, in 2013 or 2014, and that's how I discovered my love for computers. It's a really great initiative that has no doubt impacted thousands of people around the world. I hope Hour of Code and Scratch continue to exist for years to come.
Doubtful, I believe that actually goes to Roblox or Minecraft.
Maybe it terms of total users, but I don't think every Roblox or Minecraft user is actually coding. Most of them are assuredly just players.
Scratch is a great tool for teaching the entry level elements before you move onto a written code. I have been running after school classes for kids using Scratch (under the Raspberry Pi charity arm codeclub.org) and they take to it very quickly.
My 4 year old made his first program using Scratch Jr.

What was this program?

He made a story where cats jump up and down 25 times and then walk away. He recorded sound effects for the cats that repeated as the cats jump.

It’s simple but offers so much more of a creative outlet than games/educational apps aimed at his age group.

Thanks for mentioning this option -- much easier to use for early readers!
This is really cool. Out of curiosity - how did you actually set this up for him to use? Was it on tablet or a computer or phone? Any suggestions for a dad of a 3.5 year old?

Also, is he reading / at what level? Trying to get a feel for when I can introduce it to him.

We’re using an iPad. It’s theoretically aimed at older children (5+) but my son was able to pick it up no problem.

I sat down with mine about 6 months ago (he was 3.75 at the time) and we learned what each of the blocks did and how to combine them.

Now he asks to make a program and can do it independently.

He experiments with the backgrounds, sound effects, loops and motion.

My son can read but knowing how to count/recognize numbers is more important in this interface. Everything is graphical. Loops require a number input.

Another toy aimed at older children that younger ones can play with is snap circuits. We introduced the toy at 3. He can copy the project schematic and build the project. He built the AM radio project independently.

Really helpful - thanks for the details!
I bought a subscription to CodeSpark Academy and my kid has spent literally hundreds of hours on it over the last few years. He’s 9 now but started at 5 or 6. It allows him to do exactly the kind of things you describe- simple animations with kid-provided sound effects, a simple visual building block programming language, etc. I think that the key advantage of these types of systems is that they allow kids to do things that kids like (animated cats, poop noises, whatever) right off the bat. Getting enough python skill to do these kinds of things would take many hours of learning.
I find Scratch so confusing. So many menu options, drop downs , select here click here. Very frustrating experience. I don't think my child (8 years old) learns coding from it. I'm trying to find away to introduce him to Basic. But he looses interest once he sees just lines. Scratch is flashy and things can be moved and clicked which is what the kids are used now, but I just don't see any educational or fun value added.
Can you start him with JavaScript and basic web development instead? That's how I learned around that age (started around 5 or 6). The immediate feedback of being able to change something in text and immediately see the impact was a big thing that helped me. Likewise, something like helping him mod games he plays might be good.

Scratch always kind of struck me as a non-programmer's idea of how to teach children to code personally. (Or at least programmers that didn't start/weren't active as children).

My 7 year old watched it and it clicked quickly, but we also watched a couple example videos on their official YouTube channel. Maybe give that a try. Once it clicked we were able to make some cool stuff together, and she was able to add features on her own.
honestly, you don't need to use the menus much at all. it's mostly just drag and drop from the block pallette. this thing has been specifically designed to be easy for kids to use, and all the evidence is that it has worked amazingly well.
> But he looses interest once he sees just lines.

This hits me deeply. I do not have kids, even not married. But when/if they will appear I will manage to disallow any GUI on the territory of my house for everybody including me (I hope old Nokias will still be a thing at that time for having ability to communicate or it will not work). Then a child will look at the lines as at the most interesting thing in the house and maybe starts going a GNU/Linux hacker way as early as some greatest mathematicians have started their math careers.

I respect such thing as Scratch and any of his competitors, but let's be honest, gentlemen - games is a misusing of computer and the lines is what matters.

I'd imagine learning at least a little Python alongside Scratch would be more optimal than Scratch alone. It's like bilingual education, it has great benefits although individuals may gravitate towards a preferred option. Perhaps it's a bit like comparing Minecraft to Factorio:

https://www.idtech.com/blog/scratch-vs-python

Looking around, it also seems possible to set up your own Scratch server, which is comparable to setting up a Minecraft server, then you could use Python to pound away via the Scratch API (which is otherwise disallowed by the Scratch team on the public Scratch servers, reasonably enough). That might be a good project for older kids (teenagers).

Other platforms similar to Scratch actually teach Python!

They start off with drag and drop coding and then Python. The Python is actually pretty fun, you write code to make animals move around and get stars.

Which platforms are you referring to?
Not OP, but CodeWars is a platform I heard about that fits the description
I think maybe Lego mindstorms does this.
Also not OP, but I literally just learned about Hedy [1] today. No experience except from clicking through it for 20 minutes, but it looks quite interesting, taking somebody from a language with a very simple syntax (and limited functionality) to full blown Python, one level at a time, by making the language gradually more complicated (and more powerful).

[1] https://www.hedycode.com/

I also quickly went through the basic tasks in 17 levels of Hedy in about 20 mins. (I just know a little programming.) Hedy is text-based and introduces ideas such as: print, entering variables, if, else, repeat, ... I really liked the gradual approach, which keeps you going forward onto the next level.

There are additional tasks at each level (see tabs at top) which I didn't try. It seems that these tasks are best done from left to right in order to get the basic idea of what is required.

Do kids who start programming with Hedy get confused about when a piece of text is interpreted as a variable vs. a string?

https://www.hedycode.com/hedy/2#default

The way it automatically detects variable within strings seems to magical. OTOH AIUI Hedy has been developed alongside research on what works for kids.

IIRC one of Hedy’s unique features is that it gradually increases in complexity as you “level up” including introducing what we’d call “breaking changes”. At level 4, they start allowing and requiring you to quote string literals: https://www.hedycode.com/hedy/4#default
Nice!

I'm excited for my son to try it out once he's gotten comfortable with scratch.

At the moment, he's more interested in the visual design part of scratch than the programming, so I probably need to find some cool existing animations to inspire him.

i found it very confusing that the introduction at each level links to the next level but does not tell you to try the exercises. i didn't even realize that the tabs were exercises per level as i consider tabs a higher level hierarchy compared to the previous/next buttons. (i expect those to work within a tab, and not switch to a different row of tabs)

and also, why introduce an echo command in level 1 only to drop it in level 2? they could have waited and introduced ask in level 2 or 3 even.

i love the quiz questions though, they even make me, as an experienced programmer, think

It's almost as if Python was designed to make it easy for kids to learn how to program.
the thing I've found teaching is that the place scratch really shines is teaching kids who are a bit too young to "get" Python. I think it's related to their language/visual intuition but a seven year old will be able to pick up quite complex things in Scratch visually without being able to grasp fairly basic things in Python. Give them a couple of years in the oven with or without Scratch and they'll be much more confident and ready in picking up Python, but scratch can teach them a lot in the mean time.
Snap language by SAP (snap.berkeley.edu) would be a better stepping stone rather than directly going to industrial languages. It's got first-class functions, first-class lists, object-oriented programming, APL-style vector operations which are very handy for media processing, machine learning etc, continuations, ability to make HTTP calls etc - while keeping the same playful environment as scratch.

Features like this enable serious study of computer science possible with Snap: https://emu-online.de/ComputerScienceWithSnap_2.pdf

There's even a variation for 3D geometries: beetleblocks.com

Scratch is immensely popular but with lack of reporter blocks and lack of first-class lists, it encourages many bad programming habits (global state, no datas tructures like stack/queue/tree/graph etc. The one advantage it has over SnapLang is that it has better performance for building intensive games etc.

etoys for squeak, which is somewhat similar to scratch (and supposedly influenced its development) has the ability to switch between blocks and the smalltalk code that the blocks generate. so you can basically look under the hood (and also change the smalltalk code)
Scratch now uses blockly under the surface and blockly itself is written in JS. If you wanted to extend things, JS seems like a more natural choice.
(comment deleted)
I mentioned this already in an earlier post but I've been working towards addressing this by building a tool that bridges the gap between Scratch and Unity. Talking with Scratch Team members in the past, Unity has been cited as a good exit strategy. Unlike many other languages you aren't being dropped into a text-only environment. I think the main downside is the initial presentation of Unity can be a little daunting.

The tool I'm working on adds a new entry to the main Unity menu bar - "Scratch". Clicking on this allows you to enter the project ID of a Scratch project. Once done, the tool pulls the assets (graphics, sounds, etc) directly from the Scratch website as well as pulling the code and converting it to native C#. The idea behind this is that a student who is intermediate to high level at Scratch can import their favourite Scratch project over to Unity. They can look at the C# code to see the comparison, inspect and modify any of the assets, see the Unity components added to each Unity Game Object, etc. Basically it puts them in a position where they have a project that they have written in Scratch that they can no play in Unity. They can breakpoint the code and single step through it. Essentially it is designed to take away much of the initial impact of having to start from an empty canvas in Unity.

This is currently a WIP but I'm aiming to have a beta version ready within months. I made an early pre-beta video a while back to demonstrate it in action. You can view the video at https://youtu.be/nuUF9BcJT8g

i (a 69 year old c++ dev) use it for writing interactive xmas & birthday cards - it really is great! give it a try.
Please post an example?
cannot - they are all personal
For sure. Though designed for kids, Scratch is a lot of fun for adults as well. I encourage everyone to spend a little time playing with it. I think you'll be impressed.
With LLM's, Scratch is probably a closer interface to the sort of programming we'll all be doing in the near future.
When the managers have do this „programming“ themselves they will go back to letting developers pick their tools. Just like now.
Can you run scratch locally?
My kids got started with Scratch 1.4 on a Raspberry Pi. That's as far as we've gone with it. Scratch 2 was a lost cause from the start, and Scratch 3 leans way too hard into the "community" aspect of it. It's really too bad.
in what way does it lean to hard into community? you can run scratch 3 offline, without any community at all.
Not on Linux, you can't
ouch! i didn't realize that. that's very puzzling.

seems there are some third party packages, but they don't look maintained.

Looks kinda similar to early Flash, which was my first real programming experience. Actionscript had a similar visual programming tool back then and you could also switch to "text mode" if you wanted to see what those visual blocks meant as a code. And it came with an amazing offline help manual. Flash/Macromedia was start of my career basically
Does no one do Logos anymore?
There’s a logo app for ios that my son (9yo) has been playing with.
I mentioned this in a reply to a comment below but I think it is worth repeating at top level: there is a great app called Pytch which is a bridge between Scratch and Python (and runs in a web browser).

I always recommend it to anyone teaching young kids to program.

You can find it here: https://www.pytch.org/app/

I'm a little weirded out by all the reaching in this thread to try to shoehorn Python in where it doesn't fit well.

Scratch is an accessible, browser-based programming environment. The browser already includes first-class support for a text-based programming language. It's not Python.

I was obsessed with scratch as a child. It was my way in to computer programming, and I've taught in schools using it. It's an incredible tool and I'll hype it up any chance I get! It really is a miracle!