Scratch is the world’s largest coding community for children
scratch.mit.edu
scratch.mit.edu
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!_
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.
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?
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.
Thank you.
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.
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?
My suggestion is to try using the contact form again. Sorry that isn't more helpful.
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!
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.
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
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++)
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?
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.
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.
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.
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.
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.
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).
You don’t need to buy anything.
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.
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?
why is that a problem?
Scratch being event-driven is not bad in itself. But there is so much design space to be explored.
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!
At times when I was burned out from programming I found my interest was rekindle d with Scratch.
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.
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!
Wait till she gets tough PR reviews.
This block is ugly, and our team does not like looking at it :P
Scratch and Roblox conspiracy to create an army of child developers? :O
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.
Couldn't agree more the more I learn about them.
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?
Please shield her from doing UAT with unreasonable business stakeholders as long as you can
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.
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).
Except my 10 year old brain did not understand what else meant. So I created, over the course of hours, a different if statement for every key on the keyboard that all ended with "you lose". Was a shock to me when my parents, after seeing my code for the first time, told me what else means. What a waste!
One 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.
They do a lot of Minecraft now but are interested in TinkerCAD, which I’ll solidify by printing some of their designs. Not sure any of the beginner CAD apps are really easy, though.
I 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.
were they not learning anything in that process?
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.
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.
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.)
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.
- 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.
The Coding Train on youtube (run by Daniel Shiffman) (https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw) has some great tutorials.
More embedded orientated but still an interesting idea.
The Coding Train on youtube (run by Daniel Shiffman) (https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw) has some great tutorials.
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
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.
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
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
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.
But it's tricky!
For architecture/design students, Grasshopper is usual their first introduction to programming and algorithmic thinking, and many students become fantastic programmers by extension.
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.
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
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).
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.
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.
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.
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.
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
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.
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.
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
- 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.
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.
- 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.
Kids had no experience with any programming language, no Scratch, no Python etc.
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!
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.
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
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.
For 'real' programming, once they have their python chops, have a look at https://anvil.works
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.
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.
Other alternatives to tinker with are Blocky[2] and Snap[3].
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.
Also, is he reading / at what level? Trying to get a feel for when I can introduce it to him.
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.
[0] https://el.media.mit.edu/logo-foundation/what_is_logo/histor...
Lynx (2D): https://lynxcoding.club turtleSpaces (3D): https://turtlespaces.org/weblogo
Logo is still taught by many schools, all around the world!
https://pll.harvard.edu/course/cs50-introduction-computer-sc...
"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 ;)
Like magic, fluid, self-associative communities.
Of course, this would probably require sharing internal corporate data which is a big no-no.
https://www.microsoft.com/en-us/microsoft-365/blog/2023/03/2...
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?
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
On the other hand, your numbers are accounts, I assume. Not active users
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.
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.
EDIT: additional, not "duplicate", which would imply any of the personal data was similar - it was of course fictional.
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.
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.
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?
It also has event-based concurrency.
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/
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.
[0] https://tosh.blob.codes/ [1] https://scratchaddons.com/ (It's a browser extension chalk full of little enhancements for 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
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.
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).
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.
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...
I always recommend it to anyone teaching young kids to program.
You can find it here: https://www.pytch.org/app/
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.
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.
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.
[3] https://github.com/codelearncreate/c2lc-coding-environment
Finally, out of 3 kids one is interested! Now what do I do?! Python, I'm assuming, but following what curriculum?
Keep kicking ass Scratch!
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)
* https://www.torontopubliclibrary.ca/search.jsp?Ntt=Scratch+C...
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)
I now have a 5-month old and I can't wait to introduce him to scratch jr in a few years.
https://github.com/MoserMichael/jscriptparse
i would really appreciate some some feedback on my side project
[0] https://en.wikipedia.org/wiki/Logo_(programming_language)
Lynx: https://lynxcoding.club
turtleSpaces: https://turtlespaces.org/weblogo
seems there are some third party packages, but they don't look maintained.
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.
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.
I've been there, but there's still some cool stuff you can do when you bring in your outside programming knowledge.
I guess HN has karma farming bots now
Yep, as are most of the other comments.
<sinks back into the shadows>
Is a giveaway the comment is copy/pasted from Reddit.
edit: oh. most if not all of the comments are from reddit.
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".
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.
"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.