Scratch is the world’s largest coding community for children
Comments
cgk
mjb
> We build and support Scratch to provide creative tools for anyone to explore computation in a from that is relatable and has a low floor for understanding/entry.
I love this philosophy. Computing is so much more than application development. It's a creative tool, and exploration tool, a tool for finding insight and exploring spaces. Giving people access to those tools without gatekeeping or accidental complexity is fantastic.
The popularity "you need to start with SICP" and "BASIC mutilates programmers" lines of thinking have done so much damage to the way we, as an engineering community, think about the role of computation in society.
versteegen
Truth is, QBASIC was one of the best programming environments for beginner programmers. Sure it wasn't sophisticated like Turbo Pascal or Smalltalk, but with a single button you could switch back and forth between running your code and live-editing it. If an error occurred you could correct it and continue from where you were. Unfortunately when you got too close to the 640KB memory limit it was no longer possible to fit both the editor and the program in memory at the same time.
actionfromafar
It had functions! Loved it.
batch12
> and "BASIC mutilates programmers" lines of thinking have done so much damage to the way we, as an engineering community, think about the role of computation in society.
I learned BASIC when I was about 7 years old by reading the books and banging out code. When I didnt have access to a computer, I wrote the code on paper and entered it later. I can say that it was very hard for me to wrap my head around the C style syntax after a few years of immersion as a kid. I did get over it and I think that the problem helped me develop a deeper understanding of programming concepts. So maybe both can be true?
PaulHoule
As a 10 year old reading BYTE magazine what seemed common to C, FORTH, and LISP was that one could add new "words" to the language. It was quite a while before I really got that there was a difference between functions, functions that take functions as arguments (or return values), and functions that take expressions as arguments (or return values.)
varun_ch
Thank you for the amazing work you and the Scratch Team do. I want to second the comment that Scratch works. I'm 16 years old and I discovered Scratch when I was 7. Soon I will be starting my professional career (hopefully something in computer science/engineering/cybersecurity), and it's all thanks to Scratch and the amazing community you have fostered. I don't think I would have ever even considered computers as something interesting to me unless I discovered Scratch.
Thank you.
cgk
Cheers!
This is the sort of feedback that makes me cry (in the good way). It was extremely rewarding to have MIT students show up at our group and talking about what effect Scratch had on them and how it helped them make their way to MIT.
schneems
Wow. Thanks for posting! I’m curious of your thoughts on other visual programming languages. Specifically LabVIEW.
My first job out of college was at NI where they heavily use LabVIEW. Every engineer in my cohort thought that paradigm was going to take off and over a decade later, it clearly hasn’t. One large factor is cost and proprietary tech, but I’m surprised few outside of the hardware testing world even know such a thing exists.
I now code in Rust and Ruby and don’t yearn for a visual language, but I do wish people who needed to code something up quick could do it without getting knee deep in IDEs, syntax, and terminals.
I’m curious if you’ve got an opinion on that space. What’s holding it back, and if we will ever see a “killer language” for visual programming in the productivity focused space? What do you think would be needed for scratch to fill that role?
cgk
Thank you for the feedback!
I made use of LabVIEW around 2002-2005 and I liked it, working on systems to measure the length of fiber optics down to the femtosecond (it's amazing what you can do with differential wave form/phase analysis), which was then used to write custom C++ code to do these measurements in real-time at a millimeter wave interferometer, enabling the ability to do real-time adjustment to the sample phases for any fiber that was being heated/expanding in the sun.
LabVIEW allowed us to make a very quick demonstration of this as a working concept. Which illustrates what I believe is the most powerful thing about visual programming environments. They can excel at demonstrations and full working solutions without including the parts of computation that are social constructions (language syntax, data structure access and limitations, ...).
I am not convinced that the idea of a "killer language" will happen. While there is a through-line of abstraction heaped upon abstraction, I am unconvinced that these first 60 years of computation in society are going to be visibly recognizable another 60 years from now.
OR!
Linus Torvalds will invent a language that takes over everything, based on how git has consumed almost the entire space of source code management systems (a sociological phenomena/opinionated work flow process) and the success of GNU/Linux more generally.
seabird
Version control and diffing (programmatically or mentally) is a major stumbling block. The only graphical language I know of that doesn't suffer from this issue is PLC ladder logic, where the visual representation is forced and it's easy to programmatically show the differences between two versions of a given program, or mentally know exactly what given logic will look like. Pretty much everything else is miserable to compare code in, and this is especially painful when you're initially learning and the examples you're referencing are unhinged LabVIEW spaghetti with no real way to make it any more pleasant to read.
doctorwho42
Just some pretext, I am quite experienced in LabView.
One of the major issues with visual languages is not being able to find the right chunk. Yes there is a search feature, but if you don't know the right word to search you are doomed. In my time as a undergrad research assistant I was pumping out complex LabView code and VI's to control whole experiments. But I still would run into problems where I couldnt for the life of me find the block I needed. The most visceral of these was converting something like a double to single or vice versa. I went hunting for the correct block to do the conversion, which would take barely a line of code to do in C++ (the language I knew at the time), and it wasn't in the 'convert' subset of blocks.. I had this vast code that worked, but I couldn't get the last part of the data path completed because this missing stupid block that converts... Took me like an hour to eventually find it after trying everything including Google and NI's documents...
So stuff like that would be the main reason I think they never took off. If you have to hunt and peck trying to find the right box, instead of innately knowing the syntax to do something like converting. Well it just isnt practical, it's easier to lookup in a reference text for the language than to hunt in NI's closed garden crazy house.
That all said and done, LabView had some of the best Connectivity to lab hardware. Over a decade ago you could connect 2-5 devices from 1985-2000 through GPIB, and into your code assuming you had VI's (sometimes you have to make them yourself). It's hard to state how amazing that was, being Able to automate the control and data acquisition of hardware made during the infancy of the internet for research. It also made you quite valuable in your PI's eyes. So unlike most people I know from that era of my STEM career, I was one of the ones that said 'yeah I hate LabView .. . But man is it good at what it does." ... From conversation with grad students these days, it sounds like the libraries in python caught up on that front.
em-bee
One of the major issues with visual languages is not being able to find the right chunk. Yes there is a search feature, but if you don't know the right word to search you are doomed
how is that different from serching the right function or library in java or python or any other language?
either you know what to search for or there is good documentation or you have to ask somewhere. i don't see how visual languages fare any worse here. except maybe that the visual chunks don't help as much in memorizing their name so you end up searching more often to find it again.
instead of innately knowing the syntax to do something
any syntax of functionality needs to be learned somehow.
wffurr
It sounds like the discoverability of the LabView “syntax” leaves much to be desired. Perhaps because it’s a proprietary tool used by lots of non programmers, the Google results seem to be really lacking. Much harder to find a top Stack Overflow answer. And the official documentation seems poorly structured.
zdw
I get the feeling that graphical programming is the tooling problem.
The fundamental issue is that diff on textual code has no equivalent in a visual paradigm that doesn't have side effects - one example is that color often has meaning in visual systems, and thus is hard to use for showing differences.
I'd love to be proven wrong around this though.
aetherspawn
I actually spent 3 months and a few $k developing an automotive relay driver, pedal control and dual CAN shield for NI myRIO for firmware development of a small hobby car, electric go-kart, e-bike etc.
The hardware worked, but the usability of the standard blocks .. for some reason it was a disaster compared to other visual design tools like MATLAB Simulink.
TedDoesntTalk
What’s NI?
wuiheerfoj
Ahh I thought it was Native Instruments - music production is a lot like graphical programming in some sense: you perform a bunch of mathematical operations on sound data by turning knobs, dragging waveforms and drag-and—dropping snippets
nick__m
Native Instruments Reaktor looks inspired by LabView.
dfex
I grew up with Applesoft BASIC and later HyperCard - as a kid, I was never a "Developer", but I was always curious - the fact that I could take someone else's source code and change it to my will felt like a superpower.
Now Scratch has more than filled that gap for my own children, and while they may never choose to pursue a career in IT, the fact that they are able to explore the field so easily is invaluable and may help them down the line.
Thanks to you and your team for all you do!
Dalewyn
>the fact that I could take someone else's source code and change it to my will felt like a superpower.
The ability to go and tell your computer to do something and then see the computer do it is, in a word, mindblowing. I know it was mindblowing for childhood me.
My experiences with programming were HTML4.01 and CSS2, PHP, Ruby, and some more abstract forms of "programming" (RPG Maker!), and they all gave me a healthy if basic understanding of how computers work and how much power a keyboard and mouse can give to an individual with the proper will and gumption.
p1necone
RPG Maker was great, I've been meaning to go back and build something with it again now that I have actual developer skills.
Dalewyn
Not everyday I come across a fellow RPG Maker around these parts. I hail from the so-called golden age of RPG Maker (RM2K and RM2K3), those were the days I tell you.
p1necone
I was way too young when I first discovered it, but it was in the 2k/2k3 era too. I could barely wrap my head around how switches and variables worked so my projects never got very far but I remember loving playing the Legion Saga series.
cgk
Thank you! I also grew up around the time of HyperCard and BASIC on PCs, and spent hours carefully typing in programs from magazines. I can look back on that and find a lot of warm memories. I can also look at it with a critical eye and question how much I would have learned about general computation principles if there was something like Scratch available during that time period.
123pie123
>"Scratch is not built to be a "teach your kid programming languages"
You might want to change the wikipedia page that describes you to the whole world
(from the first line of wikipedia)> Scratch is a high-level block-based visual programming language and website aimed primarily at children as an educational tool for programming, with a target audience of ages 8 to 16.
I would say scratch is a brilliant first language for children
bjackman
I think the message was more that the aim of the project is not to teach kids to be software engineers but rather a platform for creativity and cognitive exploration.
That is not exactly incompatible with the Wikipedia page! It's a programming language and aimed at children but the aim is not to get your kids ready for Go and C++, it's to engage their brain in something positive.
(And of course, neither incompatible with the claim that it _also_ prepares kids to learn Go and C++)
havnagiggle
Just want to say thank you! Two of my kids are using scratch regularly (8yo and 6yo). We started using the rpi module and I was surprised how easy it was to start banging out pins to control some motors. The fact that they can use it on a desktop, on a tablet, and it is integrated at school is just fantastic.
I used Lego mindstorms ~15 years ago, and LabVIEW 10+ years ago. Scratch has much clearer concepts and patterns. I always found it difficult to teach students LabVIEW and mostly because of the UI. LabVIEW does have some advantages because of NI, but Scratch is superior IMO.
I'll eventually be transitioning my kids to text languages but there's no replacing the fun they are having with it right now.
Currently we reproduce a lot of apps from Scratch YouTubers. I have been meaning to check out more of the community aspects. Just curious if you have any suggestions on a good way to engage with more Scratch enthusiasts (kids focused).
Ozzie_osman
Curious how you get a 6 year old started? What should I buy or do?
ivlad
Go to Scratch site (https://scratch.mit.edu/), create an account and show them how to connect blocks together to make the avatar move? Do it together and then check out other people’s works at the same site. You can build upon them.
You don’t need to buy anything.
havnagiggle
Install scratch on a desktop or scratch Jr on a tablet. Watch a YouTube video with them making a simple game and implement it together. My kids liked Zoey from Scratch Team channel. We have made a handful of games together and then they kind of take off from there. I'll show them some new things once in awhile or start off a new program with them, but then I'll just leave them to it and they keep going, making it entertaining for themselves.
Mixtape
While I have the chance here, I want to say thanks to you and your team for the amazing work that you all are doing. I doubt you need further validation, but believe me when I say that the ideas you're describing do work. My entire career in CS started with Scratch in intermediate school (somewhere between 2010 and 2012). Having an interface with a low barrier to entry, particularly for someone whose economic situation didn't allow for engagement with more sophisticated tools, allowed me to begin engaging with computing in ways that I'm not sure I would've been able to otherwise. It was also a bonding experience for my peer group and provided me with a shared interest to meet people over. At the precipice of graduating with a bachelor's in CS, I've been reflecting a lot on how I get here, and Scratch certainly played no small part in that process.
outworlder
Scratch really seems to be well-designed, from what I've seen.
I actually wanted to use Scratch to program Home Assistant automations. My day job is enough 'serious' programming already. Plus maybe my family would be able to modify some automations.
cgk
Me too! I have had various toy projects that make use of the open source Scratch editor to do this exact thing and writing extensions that would enable this. While our our extension system can enable this, we are very careful about adding extensions to the live site that might enable a project to spam connections and inadvertently creating a DDoS system.
plttn
Remembering back to when I was a kid, Scratch was absolutely fantastic, and definitely helped me put me on the path I am today. Fantastic work.
With that said (and apologies on using the power of HN here), I've been trying to get in touch with Scratch support to have an old account of mine deleted, but I can't ever seem to get a reply. Would you happen to know who to get in touch with, other than the contact form?
brw12
[I was an engineer at Scratch for 4 years]
My suggestion is to try using the contact form again. Sorry that isn't more helpful.
vinodhn
Scratch was what got me into programming around 10 years ago! I was in middle school at the time and now I've just started working full time as a junior engineer. Without Scratch, I probably would've pursued something different. Thanks for your work!
joelthelion
> Scratch is not built to be a "teach your kid programming languages" system, it is based on the work and ideas of the Life Long Kindergarten group
I don't understand why you need to oppose the two, they don't need to be incompatible. It should be possible to keep Scratch the way it is, and simultaneously provide an easier path to other languages for those that which. I'm not saying it's easy. I'm just saying it's a bit sad to discard that option based on philosophical arguments.
maweki
I love alternative models of computation and the EV3 mindstorms language was very nice with a type system (including coercion rules) encoded in puzzle shapes, dataflow through "pipes", parallelism through diverging code paths.
With the scratch language I'm not so sure. I feel it's just imperative programming where you can't make a syntax error. You can put strings where numbers go and the semantics is unclear. Parallelism only works through events. Does the IDE provide so much more than Greenfoot and the like do not?
em-bee
Parallelism only works through events
why is that a problem?
maweki
In terms of the EV3 language you could spin up Lego motors in parallel just by drawing two lines from the previous command instead of a single line. Threading in a very literal sense.
Scratch being event-driven is not bad in itself. But there is so much design space to be explored.
PaulHoule
I think a lot of the troubles that people have learning things have to do with emotions and motivation. I don't know to what extent people conclude they are completely unmusical because music classes in school don't engage them, for instance, and you learn just to lip sync to avoid a confrontation.
At times when I was burned out from programming I found my interest was rekindle d with Scratch.
thomasz
First of all, let me tell you that scratch is a wonderful project. I have only one, but pretty important criticism: The tutorials that are packages with the installer use screenshots that are not translated and thus are pretty much worthless unless your kids speak English. I was pretty hyped on scratch, but this pretty much prevents self directed learning from happening.
cgk
Hello, and apologies,
Given our limited resources, we have translated the tutorials (both the spoken language and the written words in the videos as appropriate) into a subset of the languages that Scratch has been translated into (> 50 languages). The tutorials themselves have been translated into Spanish, French, Japanese, Mandarin, Cantonese, Russian, Turkish, and more. This includes both the spoken words and the written ones. The specific updates to enable this were done in the last two years, so perhaps your experience was prior to that work?
One of my favorite things to show off is switching between Right→Left languages vs Left→Right languages, I encourage everyone to try it! These translations are also a struggle. It adds a lot of extra data to the downloadable and standalone Scratch application and we cannot assume that there will be a network connection available to enable a just-in-time download approach.
codazoda
Is there any appetite to support more serious programming with Scratch? I’ve created a toy or two but would love to do more. The start/stop flags are the main blocker for me. If there was an option to start automatically and run forever (or until a break) I think I’d do a lot more experimenting with it.
sincarne
I volunteer for a code club, so maybe I can help you out. I’m not sure what I’m missing in your issue, but Scratch scripts run continuously once the green flag is clicked. You can stop execution programmatically using the stop() block.
codazoda
That’s the problem. I don’t want a green flag that is required to start the application.
dandare
My son has language disorder and we just build together a Scratch program to train his inflection skills. Lists of verbs randomly mix with lists of adjectives and nouns.
There are plenty of things that I would instinctively improve about Scratch, especially text outputs, but in the end Scratch is amazing at what it does.
Thank you!
cgk
No, thank you! I really mean this, your feedback matters to us as we are continuously working on accessibility issues with both presentation and usability.
coffeebeqn
Are you hiring backend engineers in the near future? Asking for a friend, naturally
zem
scratch seems like a good candidate to be the next flash, in the sense of an authoring tool that makes it easy to create and share little games. do you have any theories as to why scratch games haven't taken off the way flash games did back in the day?
JoeOfTexas
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!
shagie
> 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.
skeaker
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.
alexb_
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!
detritus
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).
sa48k
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.
asciii
> 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
qikInNdOutReply
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..
asciii
Yikes...
Scratch and Roblox conspiracy to create an army of child developers? :O
Wowfunhappy
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.
asciii
> I quite literally believe they are violating child labor laws.
Couldn't agree more the more I learn about them.
Wowfunhappy
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?
samstave
AND This damn kid WORKS FROM HOME every darn day and doesnt even let me know on Slack!
AzzieElbab
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.
unfairly4820
Found this piece of code long ago online , Calculator game made from a kid from Scratch... (but spelled Claculator lol)
welfare
Quality Assurance is a first reality-check.
Please shield her from doing UAT with unreasonable business stakeholders as long as you can
dunham
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).
alan_russell
https://microblocks.fun/ have the same flexibility as Scratch. In fact, they are both works by John Maloney.
vb234
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?
sokoloff
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.
vb234
Thank you. Scratch Jr looks interesting and is probably a better introduction for my 6 year old.
jkestner
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.
JoeOfTexas
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.
vb234
That makes a lot of sense. As a lapsed programmer myself, I found the Scratch interface was not very intuitive.
beshur
<nerdy dad doing PBJ according to the kid's instructions video>
pixelize
I LOL'ed! You really brought out the QA and product testing on her, haha!
nrjames
As a parent who used Scratch with their kids... it all started out great and then veered into being an unregulated social media network lacking any ability to create a space where they could build and learn to code in private. It wasn't long before they were doing it only for the likes and, without constant supervision, trying to figure out how to join various groups and challenges simply for the attention they would receive.
I really like the idea of Scratch, but I feel like parents and teachers who use it in the classroom should have a way to create for their kids accounts that are not part of the community aspects of the tool. Kids don't need to be doing anything online for "likes" at the age of 8 or 9.
frankosaurus
I run the standalone Scratch program on an offline raspberry PI. My kids enjoy it. The best thing about offline is that they have to create something to play a game.
We formerly used Scratch online, starting in 2nd grade at school. It had good and bad aspects. It was great to follow griffpatch, who has really sophisticated coding tutorials. On the downside, they got creepy comments on their Scratch projects. There were also various ruses to get the kids to upvote projects, typical social media crap.
Also, being on the Scratch community means my kids could just search for someone else's clone of (insert game here). So Scratch can turn into just another way to play video games. With offline, that's not an option.
If your kids are good at self-regulation, online can be fine, though.
cgk
"...lacking any ability to create a space where they could build and learn to code in private."
Correct, this is by design, the way to go for the private/no on-line community aspects would be to use the downloadable stand-alone Scratch editor. Based on the self-selecting group of users who agree to send back telemetry usage for the stand-alone editor, we believe that over half of all Scratch users are only using the stand-alone editor. Last year this was somewhere in the range of ~100-150 million individuals worldwide.
On the website, we regularly evaluate how we can downplay the worst aspects of a social network, such as, not showing the exact count of certain indicators of likes/stars/views in various areas of the site (e.g. showing 100+ vs 203, etc.)
tropicaljacket
Yeah.. another thing is there is a lot of published games in Scratch (from other users), many are very tempting to play/try out and often the Scratch session just turns into playing those games without educational/learning activity. Anyone figured out how to avoid this?
khochesh_kushat
You can run a local copy, which I believe is unconnected from anything online. It's what I plan to set up for my daughter.
schneems
Code.org is more focused on learning and has some controls to lock down what they can and cannot access.
I use it in 3rd, 4th, and 5th grades to teach kids coding at an elementary school.
It’s more setup for kid/teacher than kid/parent though so YMMV.
em-bee
trying to figure out how to join various groups and challenges simply for the attention they would receive
were they not learning anything in that process?
thesausageking
My 8 yo loves Scratch. She's made over 30 apps with it and has had a great time. However, now that she's reached the limits of what it can do, I have been frustrated that there isn't a natural place for her to graduate to. And Scratch does get really limited quickly.
There are unofficial forks like SheepTester's one which let you drop JavaScript into Scratch projects, but they're not easy to use. We've failed a few times trying to setup it and make her successful with it. And it also requires you to know JavaScript moderately well.
brw12
[I was an engineer at Scratch for 4 years]
The "what do we do after Scratch" question is tricky! There's no super clear answer (and a big market opportunity!)
It is important for people getting deeper into programming to learn a text-based language. But I do want to say that you don't need to stop using Scratch -- lots of adults use it, and it's really great for many things... e.g., this memory portrait of my mother sewing when I was young https://scratch.mit.edu/projects/646805603
Several comments here have hit on the visual UI as an element of Scratch that other languages don't have as readily.
Another element is the sharable context: you can make a Scratch project with others' enjoyment in mind; your project doesn't have to have another purpose besides being fun to play with.
So for moving on to other programming languages, I think the key is to identify compelling projects and to find (or build) small communities which will use those projects.
E.g.:
* sites like replit and Glitch and Github Pages and val.town where the whole idea is to make a small program (or piece of a program), publish it instantly, share it with others and remix others' programs
* making a choose your own adventure-style or Zork-style text game
* Advent of Code https://adventofcode.com provides a massive multiplayer experience where you know you're solving the same project as thousands of other people
jvvw
I've seen some children move onto Unity for the 3D graphics. Physical computing can sometimes give an incentive for Python when its the only lanaguage available. We've done some stuff with Minecraft Pi at code clubs I've been involved with. although it's such an early version of Minecraft. My elder son likes maths, so we've done some mathematical things in Python, which are easier in that, although probably wouldn't be impossible in Scratch.
But it's tricky!
em-bee
etoys for squeak has the ability to switch between blocks and code, as a way to learn about the code that the blocks generate.
it would be interesting to have a programming language that is essentially a text form of scratch and that can drive the same animations so that you could learn the text syntax and continue creating the same games, or even translate from one to the other.
RokCoder
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
john-tells-all
Agree. My nephew has made 800 Scratch projects, which is mind-blowing. I'd love to offer him a smooth path to other development. However:
- Python has graphics, but it's a very steep climb from the simple drag-and-drop of Scratch
- Javascript has easy UI elements, but he'd have to learn HTML and other things
Scratch is so different from "straight" programming, I'm not sure if it's worth his time to learn JS and then translate his Scratch knowledge to it.
mkehrt
Possibly Processing? or processing.js?
The Coding Train on youtube (run by Daniel Shiffman) (https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw) has some great tutorials.
skeaker
A younger relative of mine did a course through code.org a few years ago. I remember it being essentially Javascript but you could toggle to a code blocks view and could drag-and-drop some HTML elements so you wouldn't have to worry about the HTML side. Not sure if the actual courses are any good, but it might be similar to what you're looking for.
cxr
Microsoft MakeCode supports a similar editing experience.
birdyrooster
It's so wonderful how prolific children can be when they get excited about something.
mkehrt
Possibly Processing? or processing.js?
The Coding Train on youtube (run by Daniel Shiffman) (https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw) has some great tutorials.
gnramires
I believe p5.js (used at https://editor.p5js.org/) is quite close to Scratch in spirit. Of course I think turning straight to javascript (the library really streamlines it) might be too difficult without instruction, so following some kind of tutorials or lessons would be necessary.
It's incredibly fun, and I've been making procedural... things for a while with it. Many artists use it (and of course every web tool is available... you can even later port the code to just straight canvas for the performance, although that's rarely necessary I guess).
See my little roguelike room generator: https://editor.p5js.org/gustavo.nramires/sketches/eyyxg7vl2
And a funky flower: https://editor.p5js.org/gustavo.nramires/sketches/hwhVUQu_X
easrng
Snap! has already been mentioned, but another scratch mod that has more extensions available (and is faster and has more options) is Turbowarp (https://turbowarp.org/)
lkajslkjdd
The Microsoft Makecode editor allows you to switch between block and JS, which can help with this.
More embedded orientated but still an interesting idea.
keithjl
I'd make a case for any node-based scripting language in 3D modeling software. Blender or Grasshopper for Rhino comes to mind. Benefit of Grasshopper is that there are convenient Python or C# nodes for you to write scripts that can't be expressed through nodes (IE loops); downside is that it is paid software (although not subscription based!!).
For architecture/design students, Grasshopper is usual their first introduction to programming and algorithmic thinking, and many students become fantastic programmers by extension.
jmhammond
Unfortunately, Grasshopper is shutting down in June. https://support.grasshopper.app/t/grasshopper-is-shutting-do...
trevcanhuman
As another commenter has said, I'd recommend Processing[0], a java-based language with a graphics library. One of the best ways to get into text-based programming languages.
The tutorials I would recommend are from the Coding Train youtube channel.
You can make tons of games and animations with this, I mostly used it for 2d games.
I have only tried it on high school 10th graders, it's worked pretty good for getting them into object oriented programmming.
RokCoder
As for reaching the limits of Scratch, that depends on what you think the limits are. It's amazingly versatile and surprisingly powerful. I teach at Code Clubs and am constantly encountering children (and even teachers) that believe Scratch is good for making a cat walk across the screen but not so much above and beyond this. To counter this I made my own projects to demonstrate what can be achieved (though not necessarily what "should" be achieved). These vary from accurate reproductions of arcade games (Mr Do, Scramble, Galaga, etc) through to ports of classics (z-code adventures including Zork, Hitchhiker's Guide, etc through to Beneath the Steel Sky) and even a fully working BBC Micro emulator that plays most original Disk Images. You can view these projects at https://www.rokcoder.co.uk - you really can create very impressive projects using native Scratch
the-alchemist
I also really like CodeCombat. I used to it to try to learn Javascript, and I got kinda hooked.
https://www.ozaria.com/ seems to be the company's new product. Have you tried it?
This non-profit I was working with was hesitant to have their inner-city youth use a product called "CodeCombat".
P.S. Looks like they're trying some Robox integration or something: https://codecombat.com/roblox
Haven't tried it, though.
123pie123
The new product doesn't look too diferent but I'm not an expert
my sons are looking forward to the roblox integration - my eldest son programs roblox anyway via LUA/ roblox studio(i think its called that), so that should be interesting to see the difference
nwinter
Thanks for the mention! We are working on a side-by-side blocks-and-code mode with two-way sync that should be pretty good for this.
bj-rn
If you want to stay in the browser check out cables[1]. If you are on windows and OK with a desktop app have a look at vvvv[2].
leobg
What app/device are you using? Looking for something like this for my 6 year old.
lapama
What about netlogo?
photochemsyn
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).
eshnil
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.
hedora
JS is cleaner than Python for this, IMO:
https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_...
It's also more likely to run a few years from now, and it works on tablets, grandpa's ailing windows box, etc.
RokCoder
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
cyrialize
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.
teucris
Which platforms are you referring to?
Elte
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).
pdm55
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.
rahimnathwani
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.
alephaleph
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
rahimnathwani
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.
em-bee
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
giovannibonetti
Not OP, but CodeWars is a platform I heard about that fits the description
mstade
I think maybe Lego mindstorms does this.
askvictor
Not OP, but Makecode does this.
knicholes
It's almost as if Python was designed to make it easy for kids to learn how to program.
hajile
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.
disembiggen
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.
em-bee
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)
yalogin
Folks here who used scratch with their kids, what is the next step after scratch? How did you introduce a language/platform to your kid? I have introduced python and my kid is able to pick it up, but am unable to come up with projects that sustain interest. It feels dry without UI and one shouldn't be doing web dev with python too. So what is the progression for python and kids?
tropicaljacket
After scratch, we tried this:
- https://www.codemonkey.com/ (mix of block programming and python) . Step by step guidance. A lot of kid-oriented UI/fun stuff.
- https://codecombat.com/ (python or JS). Still have levels, hint etc but the solution is less straightforward (sometimes I'm even stuck trying to help my kid!)
- If your kid is advanced enough, try https://open.kattis.com/
One common problem that kids encountered that's not straightforward is debugging simple coding issue (e.g. missing colon, mixing variable names, etc.) Even with great guidance from the platform, it's very common for kids to run into this and the compiler error is not helpful. A parent/teacher with programmer experience is needed to unblock.
jawns
For our kids, the progression has been:
- Scratch Jr.
- Scratch
- Replit
Scratch helps them understand programming concepts such as variables, lists, conditionals, and events, but still in an intuitive visual programming interface.
Replit gives the kids access to real programming languages (JS, Python, etc.) but with lots of support, and the same "remix other people's projects" culture.
Indeed, our kids have found that there are a LOT of Replit users in their early teens (12-15), and they all help each other out.
csmeyer
What projects do your kids complete on replit? Are they following youtube tutorials or first party content from replit?
somethoughts
I'm in the process of testing out the following on Middle Schoolers:
microStudio includes all you need to write code, create sprites and maps for your 2D game. All from your web browser. Your project is stored in the cloud, accessible from anywhere.
Write your game code in microScript, a simple language inspired by Lua. The documentation is always there to help. Create cool demos in just a few lines of code.
microScript shines by its simplicity and interactivity. But you can also code in JavaScript, Python or Lua if you prefer.
Also recently found https://www.solarus-games.org:
https://www.youtube.com/watch?v=Qq7rda5G6Lc
Starts out with some default RPGMaker style tools (i.e. tile map editor, sprite manager, enemy manager, etc.) but subtly introduces Lua to enable mods to the default game making tools so you can make your own Zelda like games.
Wish me luck!
moreati
https://www.hedy.org/ is billed as an incremental bridge from Scratch to Python, with built in learning aids and teaching aids.
ragebol
I used this with my scout group a while ago, kids 11-14. They loved it and went way further with this than I ever expected.
Kids had no experience with any programming language, no Scratch, no Python etc.
Uhhrrr
I showed my younger kid some stupid JavaScript tricks in the browser developer console and he was off to the races, looking up how to make splashy buttons and the like. So I got them the "Get Coding" books, which are HTML/JavaScript. He's on to more elaborate things now.
I also showed my older kid some JavaScript and Python after he had messed around in Scratch for a while, and he was mildly interested and then went off to do other things. So YMMV because my mileage certainly varied.
kgwxd
Roblox Studio is, by far, the most encouraging environment I've see for kids. Being able to easily share a multiplayer 3D world with friends is a HUGE motivator. My 6yo has been using it almost daily for a few months now and things like Scratch never held his interest for more than a few hours total. Only downside is you need a decent PC for it to be usable.
Wowfunhappy
I've heard great things about Roblox Studio in isolation, but it's just so unfortunate that it's tied to a proprietary platform that uses dark patterns to profit off of children.
kgwxd
Agreed, to an extent. I had major arguments with my first kid over things like 10,000R Dominus'. It was a source of arguments for days at a time sometimes. I was on Linux at the time so I couldn't even play the games to see exactly how scammy some of them are.
However, he grew up, and when our youngest got into it, our oldest immediately took my side when his brother started the same kinds of arguments and, somehow, he was able to instantly get through and convince him spending Robux on that level is very dumb. I've since gotten back on to Windows and it's been an absolute treat to play with our youngest ever since. I wonder if I had just been able to play with our oldest, if those arguments could have been avoided entirely. As lame as a lot of the games are, they can be pretty fun to play with a kid for a bit and they don't seem to care too much about the stuff being sold when they have someone in the same room to play with.
geomark
A few years ago I struggled to find a good next step to go from Scratch to Python. A couple of platforms advocated the approach of have one tab with block code and another with the equivalent text-based code. That didn't seem to work, because it was just easier for the kid to stay in the graphical tab and not really absorb what was happening in the text-based code.
I ended up making something myself, a web-based Python tutorial that uses Turtle graphics and trinket.io. It's more of a tutorial and not gamified and doesn't have substantial projects like building games. It introduces Python elements in steps where the student has to use them to draw some graphics using Turtle. Worked out pretty well to get my kid launched in the direction where he now does more substantial Python projects.
Added: I structured it using the PRIMM approach.
alexb_
I think it's best to just leave them with scratch until they get bored of it. Eventually, if they end up having a passion for programming, the fundamentals built there will help them immensly at picking it up. Be careful not to force your own interests on your kids!
snowytrees
As someone who learned programming with scratch in elementary school, the next step they did was using DrRacket but honestly I did not like it. I don’t remember anything I made with it but still remember my scratch projects. I think pygame would be a good next step as it is batteries included and let’s you build similar gui applications with an event loop. However, I haven’t used scratch since around 2010 so it could have evolved a lot since I used it and the concepts might not translate anymore.
sincarne
At the Code Club for which I volunteer the next step is Python. We use the Raspberry Pi projects[1] which use the Tinker[2] repl.
askvictor
MakeCode is pretty amazing. Options for it are the micro:bit, an 8-bit arcade system, or Minecraft. Switches between block-programming and Python or Javascript, so you have an easy path to text programming.
For 'real' programming, once they have their python chops, have a look at https://anvil.works
giraffe_lady
BBC microbit is a decent transition in my experience. It gives a couple sensors and simple LED and sound output built in which helps come up with ideas for playing around with it.
The IDE also allows you to switch back and forth between scratch and, I think js or python, and see the code output of the scratch you've written.
adunsulag
I put my kids through both scratch and khan academy javascript. I've found that it helps them come to terms a lot with the underlying mechanics of scratch and my oldest is now graduating onto building web apps. When my child hits a hurdle and feels like doing something easier they go back to scratch.
empressplay
turtleSpaces is a text-based variant of Logo with both 2D and 3D modes that runs in a web browser. Its syntax is very similar to Scratch, and it's less picky about formatting (doesn't care about white space, etc).
You can make 3D models (for printing), 2D artwork, and 2D and 3D animations and games. Once they're able to create things with turtleSpaces, it's much easier to move on to Python, Lua or Javascript
fernirello
Shout out to empressplay and her teammate(s) (sister?) for their work on turtleSpaces, an underrated, solid implementation of 3D logo in golang that can run on the browser. I've used it to teach children, and they've quite liked how easy it is to create 3D games and animations that can be looked at from any angle. Thank you for creating turtleSpaces and for the endless work adding features, fixing bugs, releasing new versions and quickly answering questions! I've no connection to it other than being a grateful user.
JamesSwift
Roblox could be good. The marketplace is such that you can drop them in and have them create practical things, while deciding how in the weeds of actual coding they want to get into.
ronilan
[dead]
Joeri
Scratch also really lets you focus on one concept at a time. My son followed a programming course in scratch and the entire first lesson was about sequence, they learned to drag one instruction after another and saw how the order of steps impacted the result. I would have never conceived of explaining something as basic as sequence first, but scratch is ideal for that because it doesn’t require any boilerplate.
pcwalton
Scratch is brilliant, and the research that has gone into creating a visual programming language has paid off handily. I wish that node-based visual scripting systems like Unreal Blueprints (and, to a certain extent, things like Blender Shader Nodes and Geometry Nodes†) worked more like Scratch:
1. Edges in node-based programming get tangled easily and it becomes hard to read. Scratch has no visual edges: the pieces snap together, making it easy to visually follow the flow.
2. Having to manually drag nodes around is a chore. Scratch does automatic layout within individual functions.
3. Some node-based systems use colors to distinguish types. This is inherently less readable than the different shapes that Scratch uses.
4. Scratch is structured programming, unlike node-based systems which are essentially based on GOTO.
5. Visual programming systems based on nodes have no easy way to step up to text-based programming languages, unlike Scratch which follows the form of standard source code. This is largely because of (4): nodes are based on GOTO, which is not how modern programming languages work.
† Node-based programming is more defensible when there's no control flow, such as with common shaders, but I still think it'd be worthwhile to try something like Scratch in this domain, perhaps modified a bit to better visualize "pipeline" workflows.
Brajeshwar
If your kids tinker with Scratch, try out TurboWarp[1], a Scratch mod that compiles projects to JavaScript.
Other alternatives to tinker with are Blocky[2] and Snap[3].
ksab
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.
efitz
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.
meterplech
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.
ksab
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.
meterplech
Really helpful - thanks for the details!
ryanjshaw
Thanks for mentioning this option -- much easier to use for early readers!
pradn
Scratch supports message-passing and concurrency, which makes writing parallel programs fairly straight-forward. This is usually considered a more advanced series of programming concepts, and yet, I've seen children use them for their own games. The language is more powerful than you think!
NayamAmarshe
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.
jazzido
Scratch is part of the same lineage [0]. Seymour Papert (creator of Logo) was one of the doctoral advisors of Mitch Resnick, who leads the group at MIT that maintains Scratch.
[0] https://el.media.mit.edu/logo-foundation/what_is_logo/histor...
kleer001
THAT is fantastic and heartwarming. I wish they put that front and center on a History of Scratch page.
latchkey
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.
empressplay
There are modern web-based Logo interpreters too, including:
Lynx (2D): https://lynxcoding.club turtleSpaces (3D): https://turtlespaces.org/weblogo
Logo is still taught by many schools, all around the world!
mcshicks
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
theonething
I played around with Scratch and all the pointing, clicking and dragging drove me nuts.
mattw2121
Also used in Harvard's, excellent, CS50. I recommend this for any middle or high schoolers thinking about a career in tech.
https://pll.harvard.edu/course/cs50-introduction-computer-sc...
Retr0id
They're selling it short - it's the largest coding community full stop.
"As of 15 February, 2023, community statistics on the language's official website show more than 123 million projects shared by over 103 million users, over 804 million total projects"[1]
Compare to GitHub:
"As of January 2023, GitHub reported having over 100 million developers and more than 372 million repositories"[2]
Of course, the average Scratch user is very different from the average GitHub user, and the average Scratch project is very different from the average GitHub repo - but the numbers don't lie (probably).
[1] https://scratch.mit.edu/statistics/
[2] https://github.blog/2023-01-25-100-million-developers-and-co...
Edit: Somewhat tangentially, bear in mind that Scratch publicly launched in 2007. The first generation of Scratch learners are now adults with jobs in-industry, who appear from time to time on the front page of HN ;)
Wowfunhappy
Every time you open a new instance of the Scratch editor, Scratch saves it as a new project. It's still a huge number but a bit skewed compared to e.g. Github.
pftburger
Haha pretty sure GitHub counts pointless forks and generator projects though
Wowfunhappy
Scratch has their version of a fork, called a "remix".
hnbad
103 million users is still more than 100 million developers though, even if you disregard the number of projects.
__mharrison__
Pretty sure Excel is the largest coding group in the world, they just don't share their code in Github.
Retr0id
"Community" being the key word.
zamnos
I have never seen a programmer as excited to tell me about something like, say, Duff's Device as I've seen one excel user hear another ask "what're pivot tables"? and to have the other reply "Let me show you..." That may have to do with the kind of party I end up at, but "helping each other out" is a rather important feature of any community. There are also Excel championships with a prize. https://www.fmworldcup.com/excel-esports/microsoft-excel-wor...
When's the last time you got a prize for programming outside of your paycheck or a signing bonus? Communities definitely have shared events and what better shared event than a competition?
Retr0id
I'm amused that's still going, one of my classmates qualified for and attended the Word championship hosted in Vegas many years ago.
As for programming prizes, "last week" if we're counting bug-bounties, "a few years ago" if we're counting CTFs, and 5 years ago if we're not.
Clearly there is an Excel community in the general sense but as far as I know it isn't centered around any particular venue - at least, not one at the scale of GitHub or Scratch
zamnos
Infosec is a community unto itself. What was the competition 5 years ago?
TeMPOraL
All Microsoft needs to do here is to include a stripped down IM inside Excel, a blend between MS Teams and Chatroulette, but with a twist: it will upload what you're working on to Bing to take a look at, group you with others whose Excel sheets are closest to your in the latent space, and connect you all in a group chat.
Like magic, fluid, self-associative communities.
idinnoaname
I can see why this got down-voted, but seeing this in fruition would be quite interesting.
Of course, this would probably require sharing internal corporate data which is a big no-no.
bobthepanda
I wonder if you could have this where the chat just tokenizes or minifies code on the client and spits out human readable made up stuff on the other end.
thebigshane
sounds like the new Microsoft Loop product/service announced a few days ago
https://www.microsoft.com/en-us/microsoft-365/blog/2023/03/2...
spullara
You have to wonder why there isn't a huge online excel community.
fredsmith219
They’re all in sleeper cells.
FigmentEngine
they work in single cells...
zimpenfish
Shame?
qznc
The numbers do lie I think. I have two Github accounts (work and private). My single Scratch account is also used by my two kids. So Scratch might be even more ahead.
On the other hand, your numbers are accounts, I assume. Not active users
wizzwizz4
Many Scratchers hop between accounts like they're… well, accounts in a computer system. Last I checked, the average (among active Scratchers) seemed to be about 4 accounts per person.
n3storm
Many kids created several user profiles. Most of the times when they "level up" and for example "learn functions" (custom blocks), instead of create new projects with the learning old ones they create a new user profile so I would at least divide 103 million users by two.
Retr0id
Anecdotally, I have at least 3 GitHub profiles
Wowfunhappy
Note that Scratch does not require users to verify their email addresses (although some functionality is restricted), so the barrier to entry is somewhat lower.
Even for confirmed email addresses, Scratch is super lax in terms of what they'll accept. My company (a childrens' coding enrichment program) probably has upwards of a thousand Scratch accounts attached to a single gmail via "+" aliases, and Scratch doesn't care at all.
datkam
I have many profiles on any platform that I use a lot (at least 15 on HN and 15 on reddit).
freedomben
Genuine question: why? I only have one, and I wonder if I'm missing something.
Tade0
Anecdata: my sister had a additional Facebook account for gaming on this social media platform and adding strangers as friends for related bonuses without running the risk of inviting stalkers.
EDIT: additional, not "duplicate", which would imply any of the personal data was similar - it was of course fictional.
datkam
I do it in an effort to preserve privacy...
charcircuit
Is scratch counting remixes in the total projects? I doubt Github is counting folks.
Also sharing raw user count doesn't mean much. I have a suspicious github deletes far more bot accounts than scratch does and really we should care about something like MAU which takes into account retention.
sokoloff
Why wouldn't github count forks? I have several repos forked with my own local changes. (I also have some repos forked without changes.) They should absolutely count forks with commits on them at the very least.
charcircuit
>Why wouldn't github count forks?
Internally all forks are stored in the original repository. So it would be reasonable to expect Github to just count the number of repositories that exists.
em-bee
are you sure? how does that work? how does git clone know to only give me my fork and not the whole repository? to my understanding they must be full copies. they can use hardlinks to avoid duplicating files to save space.
munificent
By that metric, gist.github.com is probably the world's largest coding community.
__mharrison__
"It's like Scratch but annoying" - One my of children's friends when describing working with Python in hour of code.
davepeck
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.
varun_ch
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.
zabzonk
i (a 69 year old c++ dev) use it for writing interactive xmas & birthday cards - it really is great! give it a try.
Turing_Machine
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.
samstave
Please post an example?
zabzonk
cannot - they are all personal
hcaz
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.
distcs
Not a Scratch user. Also not a child here. A grown up software programmer. But I did try Scratch and I could not make much sense of it. Maybe I am missing something. So read this comment as a request for help.
The last time I tried, I remember I had to drag and drop building blocks available as tiles. Some tiles made the character turn right. Some tiles did something else. Some implemented conditionals. Am I remembering it right?
And then when you run the program, the character moves across the screen in the way it was programmed. Is that all? Is there something more that we can do with Scratch? Can we write an interactive adventure game for example?
Just making sure I did not miss something. I would really like to try it again but not sure what I was missing. Or is it really meant for children and it would not appeal to adults?
fayten
You can make some pretty robust stuff with Scratch.
User griffpatch has made a lot of advanced stuff here: https://scratch.mit.edu/users/griffpatch/
He has a youtube series too about building a 2D RPG in Scratch along with a built in tile editor: https://www.youtube.com/watch?v=5lof-Nu1VVE&list=PLy4zsTUHwG...
There is also a faster interpreter called TurboWarp that runs significantly faster than the official Scratch implementation: https://turbowarp.org/
Here is an example of the old 2d space shooter Tyrian running in turbowarp: https://turbowarp.org/151417355
Retr0id
Scratch also has variables, lists, if/else and looping control flow structures, and procedures (the main limitation, imho, being that procedures don't have scoped local variables and cannot return a value)
It also has event-based concurrency.
distcs
Are they all available as tiles to be dragged and dropped? Or can I type it out too with a keyboard?
Retr0id
The former. If you want text, other languages are available.
If you really want to use a keyboard, Tosh exists, effectively acting as an alternative front-end for Scratch https://tosh.blob.codes/
If even using a keyboard is too much effort, I have a Python library for doing Scratch metaprogramming and code generation, with optional vscode integration: https://github.com/davidBuchanan314/boiga
I've used it to write non-trivial Scratch programs, such as X25519 key exchange with ChaCha20-Poly1305 authenticated encryption https://scratch.mit.edu/projects/714773326/
Wowfunhappy
> If you really want to use a keyboard, Tosh exists, effectively acting as an alternative front-end for Scratch https://tosh.blob.codes/
I really wish this was a bit more robust. I would like to use it as a bridge between Scratch and Python or Javascript, getting kids in the habit of typing things using syntax they are already intimately familiar with.
But the project is just a bit too buggy. I've had variables randomly not appear, sounds not import, etc.
This is in no way a criticism of the developer who created tosh as a passion project, it's just a lament. Tosh is so close to being a fantastic tool.
varun_ch
Not anything officially supported, but there are some community tools to do that, tosh[0] and Scratch Addons'[1] "Insert blocks by name" addon comes to mind
[0] https://tosh.blob.codes/ [1] https://scratchaddons.com/ (It's a browser extension chalk full of little enhancements for Scratch)
hoherd
It's a lot more than that. People do ray tracing with scratch. https://scratch.mit.edu/users/Raytracing/
reacweb
A sprite can create clones; There are variables that can be bounded to clones. This gives similitudes with object programming. Scratch is event oriented and involves concurrent execution of many tasks. This is not the imperative style of our youth, but it may be a better fit for modern programming.
Despite the apparent simplicity, you can develop very advanced game mechanism. The limitations occur when you want to give a professional finish. It is meant for children, but it is a pleasure also for the "parent teacher" because it allows to teach advanced ideas.
khochesh_kushat
It's possible you were playing Scratch Jr, it sounds a bit like it.
lfnoise
My son, 17, learned to program in Scratch, and wrote a lot of games in it. Since then he has learned Python, Lua (in which he wrote a space invaders), and Java in both high school and during the summer at Cornell. He can write in these languages, but the problem is, he thinks in Scratch. He always goes back to write things in Scratch. In Scratch he has written a number of ray tracing and path tracing renderers which can model roughness, specularity, ambient occlusion.. He teaches me stuff about rendering that he reads from papers. Right now he is working on an NES emulator in Scratch that necessarily includes a 6502 emulator. It can load and play Mario games. But I can't get him move his ideas to a textual language.
sharp11
That is utterly fascinating. From his pov, is it a problem, or only from yours?
lfnoise
I'd like him to make a more firm next step. He sometimes brings up some of the difficulties he has expressing things that would be simple in another language. I point this out. He understands that but still prefers to work in Scratch. One factor may be that he has a social network on Scratch.
JamesSwift
Its a really good intro, but can become stifling really fast for young learners. You risk losing their interest too soon if they want to push past the boundaries.
myth_drannon
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.
Mezzie
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).
eimrine
> 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.
khochesh_kushat
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.
zabzonk
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.
diego_sandoval
I Learned to program using Microsoft Small Basic. I was 14 and the experience was really good. I learned through the PDF tutorial [1], which now has also been translated to HTML documents [2].
And I think that if I had been 9 years old when I learned, I would have still chosen to use Small Basic rather than Scratch. Block-style coding feels less versatile than text. It may look more attractive to some kids, but I would also suppose that some kids would rather use a text-based language.
Graphic capabilities in Small Basic were still really easy to use (look at the PDF from chapter 6 onwards).
[1] https://download.microsoft.com/download/9/0/6/90616372-C4BF-...
[2] https://smallbasic-publicwebsite.azurewebsites.net/tutorials...
Kelamir
I was impressed when I had seen that the scratch forum has millions of posts: https://scratch.mit.edu/discuss/
ocfnash
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/
cxr
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.
michelb
My nephew loved Scratch, he went on to https://www.hedycode.com/ in school and is now continuing in Python. Great stuff.
balls187
Scratch is also one of the largest places for kids to play games.
snowwrestler
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.
Turing_Machine
> 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.
stevenkkim
Yeah, I learned this when I thought my kid was spending hours coding, he was actually spending hours playing games.
MH15
Scratch was instrumental in my path to software, I loved using the old desktop version as a kid. Thrilled to see it continues to inspire a new generation of children.
roland35
I love that my son enjoys scratch, but I wish there was some way to have parental controls on the social aspects of it! I am a little uncomfortable with the fact that random users have messaged my son and there really isn't anything I can do besides periodically logging in myself
khochesh_kushat
You can use the local version instead, maybe.
avtar
At work [1], we've wanted to provide kids with cognitive and/or physical disabilities an introduction to coding fundamentals (sequences, loops, etc). As a result, we've created Weavly [2]. It's a React app that can work standalone, but also integrates with some off-the-shelf robots. It's free, open source [3], and accessible to people using screen readers, switches, and other assistive technologies.
[3] https://github.com/codelearncreate/c2lc-coding-environment
adolph
Scratch also has a plugins for BBC Micro:bit and Lego Boost. They work well although the old Boost hardware is lacking storage so only works in Bluetooth tethered mode. The solutions have two parts: 1. a side application to facilitate the Bluetooth connection from the web browser to the device; 2. additional block types to control the servos etc.
JustinGarrison
If you’re interested in what’s on the backend I interviewed one of the infrastructure engineers and talked about it here
em-bee
why did you cut out the actual interview? i'd have been interested in that as well, and learn what you derived that whiteboard from.
cgk
Probably because I do terrible interviews :)
em-bee
somehow i doubt that, judging from what you posted, it can't be that bad. don't be shy.
maliker
I would have guessed Roblox was the largest. 214 million monthly active Roblox users in Feb 2023, assume only 20% are kids actually building something so 43 million, beating scratch's 36 million monthly unique visits [1]. Still awesome how huge Scratch has become.
memco
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.
CoryAlexMartin
He’s actually using Stencyl, which has a programming interface based on Scratch.
trustingtrust
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.
manchmalscott
I had to log in and look around my old account, revisit the silly projects I made when I was 9 years old. Scratch wasn't my first exposure to programming (that would be batch scripting) but I still remember how fun it was to use and how it felt like I could make anything with it. I'm incredibly glad to see it still going strong.
csmeyer
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.
khochesh_kushat
There's an official YT channel with lots of small simple game tutorials.
ocfnash
There is a marvelous app designed to solve exactly this problem called Pytch: https://www.pytch.org/app/
NDizzle
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?
jalk
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
sobkas
But for how long programming will be an useful skill? Because if it become a hobby/toy it will have to compete with other activities that are more fun/fulfilling. Or it could become part of existing hobbies eg. let's write software for onboard computer in this model rocket.
valid4life
It's almost embarrassing typing this but growing up as a "leet cod3r kid writing c++" I used to be a Scratch hater. It didn't dawn on me until much later that the RPG Maker VX I grew up with was just a different version of Scratch and visual programming :)
Keep kicking ass Scratch!
singhrac
I am a Scratch-taught programmer in that I played with Scratch in 5th grade and ended up programming professionally. It was great and I'm sure they've done a good job with it since. I'm very, very grateful.
insane_dreamer
My favorite language for teaching kids to code and which I taught my daughter starting around 9 or 10, is Ruby. Expressive syntax, easy to read, good introduction to objects. Her first real program was a treasure hunt game in the terminal, using classes, inheritance, methods, and conditionals, etc.
It didn't have the cute graphics side of things, but she learned all the concepts well (she now has a degree in engineering and being paid to write code)
ptd
Does she like her job? I only ask because you specified comp in a way that suggested that is what is most important to you(and her).
insane_dreamer
Good question. She actually got a degree in chemical engineering not CS, but then switched over to fulltime software dev at her company a couple of years out of school as she liked that more -- so yeah, I would say so.
ptd
Awesome! Glad to hear things worked out.
shultays
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
wslh
Just my experience though, but I had better results with Alice: http://www.alice.org/ the 3D building blocks were more appeal. Now I cannot believe that they moved the objects using drag and drop with a small basic notebook touchpad. BTW I am talking about normal IQ children.
berkle4455
With LLM's, Scratch is probably a closer interface to the sort of programming we'll all be doing in the near future.
quonn
When the managers have do this „programming“ themselves they will go back to letting developers pick their tools. Just like now.
irrational
I had no idea my son even knew scratch, but the other day I looked over his shoulder at his chromebook and was astonished to see him working on a huge scratch project. I asked if he had any other projects and he had dozens of projects, some incredibly complex. I was both surprised and pleased.
throw0101b
If any parents live in Toronto, the TPL has programs for kids (9+) on Scratch at various branches:
* https://www.torontopubliclibrary.ca/search.jsp?Ntt=Scratch+C...
titchard
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.
MikeTheRocker
I love Scratch! I credit it partially with getting me into programming in middle school.
matthew28845
Same, I think I made my account when I was 9. I have Scratch to thank for a lot of my interests today.
mavili
Isn't it pretty much the only coding community for children? Headlines like this are always catchy but also not so. Largest community.. for children.. of 10-11 years.. :D the group just gets narrower and narrower as you read
ciconia
Both of my teenage kids are learning Scratch at school. They both find it confusing and annoying, and I don't disagree. I believe teaching them something like LOGO would have been much more efficient and gratifying.
disembiggen
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!
SpaceManNabs
I first used scratch in 200X as a freshman. Glad to see lots of other kids are still using it to learn. My best friend at the time made an incredible sonic game and it showed me how deep you can go with any tool.
GaggiX
Everyone talks about their kids trying Scratch but I'm pretty young myself, I remember playing with Scratch when I was a kid, very simple games that I would then show my friends. It was a fun experience.
guywithahat
False; python is the worlds largest community of children programming (\s)
dang
Related. I'm a bit surprised there hasn't been more (most of these threads were small). Others?
Ask HN: Alternatives to Scratch for a blind child? - https://news.ycombinator.com/item?id=34229502 - Jan 2023 (67 comments)
Ask HN: is learning Elixir suitable for a kid who currently uses MIT’s Scratch? - https://news.ycombinator.com/item?id=32242897 - July 2022 (4 comments)
Show HN: CodeStruct – Python programming environment for novices after Scratch - https://news.ycombinator.com/item?id=32232110 - July 2022 (5 comments)
Show HN: PickCode – An educational coding environment for students after Scratch - https://news.ycombinator.com/item?id=32230329 - July 2022 (32 comments)
I made advanced BI queries with Scratch puzzle pieces - https://news.ycombinator.com/item?id=32130444 - July 2022 (20 comments)
Scratch is a big deal - https://news.ycombinator.com/item?id=32120445 - July 2022 (296 comments)
Linux Kernel Module written in Scratch (a visual programming language for kids) - https://news.ycombinator.com/item?id=31921996 - June 2022 (38 comments)
Snap is Scheme disguised as Scratch [pdf] - https://news.ycombinator.com/item?id=28337196 - Aug 2021 (40 comments)
Syllabus for teaching Scratch programming to kids - https://news.ycombinator.com/item?id=24633742 - Sept 2020 (2 comments)
Show HN: My 10 yr olds recent scratch creations - https://news.ycombinator.com/item?id=23892698 - July 2020 (9 comments)
Scratch: Block-based visual programming language - https://news.ycombinator.com/item?id=22854218 - April 2020 (10 comments)
Recursion and Fractals - https://news.ycombinator.com/item?id=21879638 - Dec 2019 (19 comments)
Scratch 3.0 - https://news.ycombinator.com/item?id=18810216 - Jan 2019 (110 comments)
Game of Life in Scratch - https://news.ycombinator.com/item?id=14625653 - June 2017 (7 comments)
How Scratch teaches kids to follow the hacker ethic - https://news.ycombinator.com/item?id=14274249 - May 2017 (115 comments)
A Forth to Scratch compiler - https://news.ycombinator.com/item?id=13564754 - Feb 2017 (7 comments)
Why I Believe Scratch Is the Future of Programming - https://news.ycombinator.com/item?id=13129030 - Dec 2016 (62 comments)
Scratch is probably the answer - https://news.ycombinator.com/item?id=10144228 - Aug 2015 (27 comments)
MIT Scratch – Teach kids to program stories, games, and animations - https://news.ycombinator.com/item?id=8751969 - Dec 2014 (30 comments)
MIT's Scratch Team releases Scratch 2.0 editor and player as open source - https://news.ycombinator.com/item?id=7739604 - May 2014 (61 comments)
Scratch for Arduino - https://news.ycombinator.com/item?id=6613619 - Oct 2013 (11 comments)
What's New in Scratch 2.0 - https://news.ycombinator.com/item?id=5685448 - May 2013 (47 comments)
Super Scratch Programming Adventure--A new programming comic for kids - https://news.ycombinator.com/item?id=4419513 - Aug 2012 (2 comments)
Using Kinect with MIT's Scratch (visual programming language) - https://news.ycombinator.com/item?id=2086238 - Jan 2011 (4 comments)
Use Scratch to Easily Program Household Appliances - https://news.ycombinator.com/item?id=2077265 - Jan 2011 (8 comments)
Apple Rejects Kid-Friendly Programming App - https://news.ycombinator.com/item?id=1281738 - April 2010 (26 comments)
Scratch: Programming for all - https://news.ycombinator.com/item?id=955228 - Nov 2009 (2 comments)
Ask HN: Guido van Rossum's comment about go and scratch - https://news.ycombinator.com/item?id=946338 - Nov 2009 (26 comments)
Scratch Helps Kids Get With the Program - https://news.ycombinator.com/item?id=608629 - May 2009 (11 comments)
Scratch is a Programming Language for Kids - https://news.ycombinator.com/item?id=36053 - July 2007 (5 comments)
isp
Linux Kernel Module written in Scratch (a visual programming language for kids) - https://news.ycombinator.com/item?id=31921996 - June 2022 (38 comments)
dang
Wow great catch. Added above. Thanks!
smfjaw
Scratch gets meme'd way too hard, such a good way to learn, we did this for a few classes in highschool as an intro to the concepts, got me hooked and now I'm a dev at a hedge gund
martin1b
My kids love scratch. Excellent introduction to coding for kids. Wish it was taught in schools more as it helps build methodical cognitive thinking. I consider it modern BASIC.
skulk
Scratch is why I got into software. One day, more than 10 years ago, my dad showed me this weird program for making a cat move around, and the rest is history.
danabrams
I took a refactoring class where we used scratch and it was a lot of fun.
I now have a 5-month old and I can't wait to introduce him to scratch jr in a few years.
zzixp
Without scratch I would not have connected with programming the way I did when I was a kid. Fantastic program, and a great community as well.
MichaelMoser123
i have written/am working on a simplified programming language for kids. The language has it's own REPL/Shell and is more kind of text based.
https://github.com/MoserMichael/jscriptparse
i would really appreciate some some feedback on my side project
calini
Really curious how and why North Korea has a number of Scratch users per capita 3 times higher than South Korea
n3storm
My kid has learnt a lot both programatically and online social skills thanks to Scratch.mit.edu. Thanks from Spain!
tropicaljacket
can you explain more about social skills? And how old is your child?
sarimkhalid
Scratch was my first introduction to programming. Thanks to everyone behind it!
throwaway689236
That's cool, wish I had something like this in my childhood.
stuckinhell
Doubtful, I believe that actually goes to Roblox or Minecraft.
kleer001
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.
Wasserpuncher
Ohh yes! We also use it at school.
salawat
Does no one do Logos anymore?
empressplay
Yes! Many schools around the world still teach Logo. Two web-based Logo interpreters are:
Lynx: https://lynxcoding.club
turtleSpaces: https://turtlespaces.org/weblogo
dhosek
There’s a logo app for ios that my son (9yo) has been playing with.
khochesh_kushat
What is doing logos?
trufas
The one with the turtle[0]
[0] https://en.wikipedia.org/wiki/Logo_(programming_language)
dhosek
I think op meant logo
bastardoperator
Can you run scratch locally?
Kon-Peki
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.
em-bee
in what way does it lean to hard into community? you can run scratch 3 offline, without any community at all.
Kon-Peki
Not on Linux, you can't
em-bee
ouch! i didn't realize that. that's very puzzling.
seems there are some third party packages, but they don't look maintained.
moneywoes
Is there monetization?
dabei
Is there any effort to connect Scratch with LLMs?
RokCoder
I'm a long time advocate of Scratch and love the fact it makes programming so accessible to children. In the early days of computing you would turn on your computer and be able to program in BASIC straight away. There were no extra packages needed, no hoops to jump through - it was just there. After the popularity of PCs took off I feel this went by the wayside. To program you would have to boot into windows and (purchase and) install an IDE. It just made programming harder to get into. With the advent of Scratch you can simply fire it up in a browser and jump straight in.
As a programmer by profession and a Code Club teacher by choice, I wanted to test out the boundaries of Scratch. So many children (and teachers) think it's a very basic programming environment with very limited application. I have found this to be far from the case and have created dozens of advanced projects to demonstrate as much. From replicas of arcade games (Galaga, Scramble, Mr Do and many more) through to ports of PC projects (Beneath a Steel Sky, The Manhole, Zork and more) through to a complete BBC Micro emulator that plays most original disk images. There's some delicious irony to having created an emulator of the computer I learned to program with in a modern language that children now learn to program in.
For anyone interested, you can view and play all of these project at https://www.rokcoder.com
I'm not suggesting that Scratch should be taught to this level but I think it's interesting and useful to know just how flexible and powerful it can be.
I discussed the exit strategy from Scratch with Scratch Team members at the Scratch Conference back in 2019. One suggestion they put forward was Unity due to the fact it's not dropping children directly into a text-only scenario which is the case with most programming languages. I found this to make a lot of sense but also recognised that putting a child in front of an empty Unity screen can be a little daunting. Because of this I started creating a tool to bridge the gap - to give children something other than the blank canvas to start from and to ease their journey into Unity.
The tool simply adds a "Scratch" option to the main Unity menu. Using this it allows you to enter a Scratch project ID and then imports the project directly from the Scratch website and into Unity. The idea behind this is that intermediate to advanced Scratch users can pull their own favourite project that they have made directly into Unity. The assets (graphics and sound effects) are imported and the actual code is converted to C#. Within minutes anyone can play their own Scratch project from within Unity. They can see the C# code equivalent of their Scratch project. They can see the Unity components in action, the Unity scene, who the IDE works. They can even breakpoint their code and single step through it. If they wish they have the ability to export their Scratch projects as apps for Windows, iPhones, Android devices or even XBox or other consoles.
Right now the tool is in pre-beta but I'm hoping to make it available for testing within a matter of months. An early demonstration of the tool in action can be seen at https://www.youtube.com/watch?v=nuUF9BcJT8g and I'm happy to get feedback and/or discuss the idea.
ar9av
Scratch gets a lot of hate with semi-experienced programmers (the kind to browse this sub) because of its simplicity, but it's actually really good. It teaches you basic programming concepts without all of the complexity of other programming languages.
I remember back in school, some of the students in my computer science classes didn't understand the basic concepts of programming: variables, loops, functions, etc. and programming is 90% logic and problem-solving.
You can't teach programming by teaching the syntax of a language, you have to teach logic. If you know one language, figuring out another is going to be easy because most of the things are the same, the only difference is the syntax.
overthrow
fyi, this comment is a copy/paste of a 4 year old comment from https://old.reddit.com/r/learnprogramming/comments/asqslg/if...
I guess HN has karma farming bots now
dang
Thanks. Banned.
All: if you ever notice anything like this and have a minute to let us know at hn@ycombinator.com, we'd really appreciate it. I only saw this by change.
ikesau
What a bummer. Open, anonymous, and free forums are some of the most interesting places on the internet. this profit-motivated antisocial shit makes me so sad.
edit: oh. most if not all of the comments are from reddit.
ansible
https://lobste.rs/ has an interesting mechanism to curb bots on the platform.
To join to website, you have to get a referral from another current user. And this referral is public information. So if someone you referred starts acting like an ass, then you can expect some concern being directed your way. People are rightly a bit cautious with giving out referrals as a consequence.
The topics on lobste.rs are more focused on programming and computers (stuff you'd likely also see on HN), and there's not really any political discussion. Traffic is light, expect maybe a dozen new links per day.
This comment, by the way, does not constitute an invitation to ask me for a referral. I don't really know too well anyone on HN, other than the most famous users (none of who know who I am), so if you ask me for a referral, the answer is very likely "no".
xupybd
The only downside is that people like myself are unlikely to know anyone who can supply an invite.
pstorm
I'm curious, how did you figure this out? Do you search texts of random HN comments? Did you remember that comment? I see these posts on here sometimes, and just don't understand how the commenters so consistently find these types of things.
wl
> semi-experienced programmers (the kind to browse this sub)
Is a giveaway the comment is copy/pasted from Reddit.
raspasov
Wow.
archgoon
<from the shadows>
Yep, as are most of the other comments.
<sinks back into the shadows>
jackson1442
I think it's great- most of the hate probably comes from people who came into their first programming class already knowing how to code to some degree and had to "downgrade" from a traditional language to Scratch to learn along with the class.
I've been there, but there's still some cool stuff you can do when you bring in your outside programming knowledge.
narag
Scratch gets a lot of hate with semi-experienced programmers (the kind to browse this sub) because of its simplicity...
"This sub"? Semi-experienced? Nice way to start a conversation. OK, I'll bite.
My first contact with Scratch was ten years ago when my son wanted to learn it in a workshop organized by Medialab Prado, a group funded by the city council. The wait list was already very long so, in order to cut it, I volunteered as an assistant teacher for another course.
I reviewed my son's assignment and helped him make some modifications after the classes.
I don't hate Scratch. I have a good opinion in general. But it had its shortcomings, that made easy to end up with some sort of visual spaghetti code, as soon as the project grew a little over the size of the examples. IIRC all variables were global.
My son chose a different tool for the next workshop, I don't remember the name (appstudio?), Python for the next and then Python again, but as a teacher. So good for initiation, but my impression was that not so good for bigger programs.
That might have changed, it's been a long time, but if you're curious about where criticism comes from, maybe it's not hate from semi-experienced wannabes :)
Oh and BTW, the guy that was the main teacher in my course defected in a couple of classes, so I had to take over. The children were bored with HTML and I tried introducing JavaScript. Surprisingly they understood it very quickly and liked it. Of course the group had a selection bias, people interested enough in programming to know about the course, etc. but my guess is that with some syntactic sugar and graphic libraries, it could reach a wider audience.
My two cents: every language should make super easy to draw shapes in a canvas and move them. If you need more than ten lines of boilerplate to do that, you shouldn't be designing languages.
birdyrooster
My first CS course used Scratch to teach it and I have to say I enjoyed it a lot more than the C++ which followed and I certainly remember more from the experience. C++ was my introduction to pain.
infintesoul57
[dead]
fleurlovin23
[dead]
litlikeamatch
[dead]
seekingthelight
[dead]
secretwisher4
[dead]
paperinas23
[dead]
lovehunter56
[dead]
openair754
[dead]
foodgobblers2
[dead]
tweetysweetie43
[dead]
rubysunn68
[dead]
alwaysaugust3
[dead]
snowysecret8
[dead]
askastylist
[dead]
lifeonthefarm2
[dead]
theseafiles75
[dead]
moreplease3
[dead]
lemonhoneypie2
[dead]
bagatiba575
[dead]
smashfizzle2
[dead]
zephyr345
[dead]
thesocialhub
[dead]
tulipheart32
[dead]
spellboundead5
[dead]
fillinyourblank
[dead]
livincool5
[dead]
blissand234
[dead]
mintandrose34
[dead]
sharing_genes
[dead]
virshereads34
[dead]
busyreading0
[dead]
whatsthewifi
[dead]
allthatisme1
[dead]
powerpuff3
[dead]
lavenderwitch
[dead]
myinstaspace
[dead]
velvetandlinen
[dead]
curiouscat22
[dead]
behindmylens1
[dead]
thriftandflip2
[dead]
alwaysaugst2
[dead]
thecheeseclub
[dead]
angeliccutie23
[dead]
magicalworld13
[dead]
rowiethelabel
[dead]
E20life
[dead]
theveganwarrior
[dead]
petiue456
[dead]
iblamejordan75
[dead]
askastylist34
[dead]
morelight33
[dead]
ivoryroses
[dead]
stellarflower
[dead]
indigosparkle
[dead]
contemplatter
[flagged]
gs17
Because they're doing this for fun. A lot of kids genuinely enjoy the process of making games.
pavlov
Why spend money on expensive Legos when you can buy any imaginable plastic toy for cheaper on AliExpress?
khochesh_kushat
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.
patchymcnoodles
Why learning anything, if we have GPT-4? Why even commenting here, GPT-4 could do that, too ;).
bighoki2885000
[flagged]
bighoki2885000
[flagged]
Full disclosure: Principal Software Engineer here on the Scratch backend...
Scratch is not built to be a "teach your kid programming languages" system, it is based on the work and ideas of the Life Long Kindergarten group at the MIT Media Lab (the director of this group is Professor Mitch Resnick, the LEGO, Papert Professor of Learning Research). The Papert part is where the term Mindstorms comes from (https://www.amazon.com/Mindstorms-Children-Computers-Powerfu...) and was used by the Lego Group when branding those products, and our philosophy is heavily influenced by that.
I can say that the https://scratch.mit.edu/statistics/ are real and we have a substantial footprint of backend services and custom software to support it. We handle on the order of 15-20 million comments/month.
The primary design philosophy is:
Passion: You have a strong interest in a subject/problem to solve/explore Projects: Build something based on your passions, gain directly interactive experience with it. Peers: Share your work with folks who are interested and provide feedback to you Play: It should be fun!
Note that there is nothing in there about STEM/STEAM nor application development. We build and support Scratch to provide creative tools for anyone to explore computation in a from that is relatable and has a low floor for understanding/entry. Having said that, the complexity of what Scratch can do rises sharply the more you work with it and the concepts behind "forking" and opensource are built in via the remix ability on individual projects.
A lot of design thinking goes into the frontend of Scratch to build on a creativity feedback loop that is not focused on learning Python or any other specific language (or the syntax of them, i.e. avoid "why isn't my program working... oh, one too many tabs... or maybe this semi-colon, or maybe this .")
Another part I think is worth raising, the Scratch frontend is a sophisticated virtual machine interpreter that has it's own machine code and model that is executing in a Javascript environment in browser and it is still open source. Google's Blockly project was based on the ideas of Scratch 1.4 and when we ported Scratch 2 away from being Flash based, we partnered with the Blockly group to fork their code base and create Scratch Blocks.
Based on the TIOBE index, we're usually somewhere in the top 20 most popular "programming languages". _eat it Fortran!_