Readit News logoReadit News
cgk · 2 years ago
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!_

mjb · 2 years ago
> 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 · 2 years ago
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.
batch12 · 2 years ago
> 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?

varun_ch · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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.

zdw · 2 years ago
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 · 2 years ago
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 · 2 years ago
What’s NI?
dfex · 2 years ago
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 · 2 years ago
>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.

cgk · 2 years ago
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 · 2 years ago
>"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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
Curious how you get a 6 year old started? What should I buy or do?
Mixtape · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
[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 · 2 years ago
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 · 2 years ago
> 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 · 2 years ago
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 · 2 years ago
Parallelism only works through events

why is that a problem?

PaulHoule · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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.

https://en.scratch-wiki.info/wiki/Stop_()_(block)

dandare · 2 years ago
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 · 2 years ago
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 · 2 years ago
Are you hiring backend engineers in the near future? Asking for a friend, naturally
cgk · 2 years ago
zem · 2 years ago
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 · 2 years ago
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 · 2 years ago
> 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 · 2 years ago
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_ · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
> 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 · 2 years ago
Remember that robblox investigation, were they interviewed that 12 year old that already talked like a burned out developer, feeling cheated out of the revenue. The children yearn for the mines..

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

samstave · 2 years ago
AND This damn kid WORKS FROM HOME every darn day and doesnt even let me know on Slack!
AzzieElbab · 2 years ago
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 · 2 years ago
Found this piece of code long ago online , Calculator game made from a kid from Scratch... (but spelled Claculator lol)

https://i.redd.it/5t9mpdhzzniz.png

welfare · 2 years ago
Quality Assurance is a first reality-check.

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

dunham · 2 years ago
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 · 2 years ago
https://microblocks.fun/ have the same flexibility as Scratch. In fact, they are both works by John Maloney.
vb234 · 2 years ago
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 · 2 years ago
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.

jkestner · 2 years ago
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 · 2 years ago
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.
beshur · 2 years ago
<nerdy dad doing PBJ according to the kid's instructions video>
pixelize · 2 years ago
I LOL'ed! You really brought out the QA and product testing on her, haha!
nrjames · 2 years ago
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 · 2 years ago
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 · 2 years ago
"...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.)

https://scratch.mit.edu/download

tropicaljacket · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
[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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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.
birdyrooster · 2 years ago
It's so wonderful how prolific children can be when they get excited about something.
mkehrt · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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.

https://makecode.microbit.org/#editor

keithjl · 2 years ago
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 · 2 years ago
Unfortunately, Grasshopper is shutting down in June. https://support.grasshopper.app/t/grasshopper-is-shutting-do...
RRWagner · 2 years ago
trevcanhuman · 2 years ago
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.

[0] https://processing.org

RokCoder · 2 years ago
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
123pie123 · 2 years ago
my kids really like CodeCombat

https://codecombat.com/

the-alchemist · 2 years ago
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.

nwinter · 2 years ago
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 · 2 years ago
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].

[1] https://cables.gl

[2] https://visualprogramming.net

leobg · 2 years ago
What app/device are you using? Looking for something like this for my 6 year old.
lapama · 2 years ago
What about netlogo?
photochemsyn · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
Which platforms are you referring to?
knicholes · 2 years ago
It's almost as if Python was designed to make it easy for kids to learn how to program.
hajile · 2 years ago
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.

Deleted Comment

disembiggen · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
What projects do your kids complete on replit? Are they following youtube tutorials or first party content from replit?
somethoughts · 2 years ago
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.

https://microstudio.dev

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 · 2 years ago
https://www.hedy.org/ is billed as an incremental bridge from Scratch to Python, with built in learning aids and teaching aids.
ragebol · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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.
geomark · 2 years ago
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_ · 2 years ago
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 · 2 years ago
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 · 2 years ago
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.

[1] https://projects.raspberrypi.org/en/projects/about-me

[2] https://trinket.io/

askvictor · 2 years ago
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 · 2 years ago
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 · 2 years ago
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 · 2 years ago
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

https://turtlespaces.org/weblogo

fernirello · 2 years ago
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 · 2 years ago
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.

Dead Comment

Joeri · 2 years ago
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 · 2 years ago
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.