Remix.run Logo
Moving Scratch generation to Python on browser(kushaldas.in)
32 points by kushaldas 3 days ago | 7 comments
njoyablpnting 3 hours ago | parent | next [-]

This is super cool! Would love to see how you hooked up Ruff and ty.

Just curious, why not use Pygame?

Scratch abstracts away a ton of stuff to allow the student to focus on logical building blocks that mirror the mental model one might have when writing a real program. I'm wondering if keeping a lot of those abstractions when transitioning to text programming is educationally useful?

For example, it might not be clear that @on_forever is really just a loop, etc. One thing I've noticed when teaching beginners is that when you introduce a library/framework at the same time as a language, they start to form a model of the language that often wrongly includes parts of the library.

This is why I think Pygame is so useful for education, it sits at just the right level of abstraction for learning. In Pygame, your game loop is just a loop, handling input is just conditions in your loop, etc.

Regarding rewriting the AST to avoid async/await, do you have some experience or evidence to suggest that these should be abstracted out? I can see an argument for both sides, so just wondering how exactly you arrived at that decision.

Also, I tried a program with an infinite loop and the UI became unresponsive and I had to close the page. This indicates to me it's running on the main browser thread. Kids (and sometimes senior engineers) write infinite loops occasionally, so I highly recommend executing the user's code in a worker to prevent the harsh experience of losing your work suddenly.

hdndnjd 13 minutes ago | parent | prev | next [-]

Nice idea! However I would like to smooth the transition by also having a Scratch layer with a "peek behind the curtains" button to see the equivalent python code

Noumenon72 an hour ago | parent | prev | next [-]

One possible consequence of generating Scratch by writing code is that you can ask an LLM to generate your Scratch. I worry that this could take away the fun of Scratch the same way I can no longer maintain any interest in going to Python night, because the computer can do it all.

varun_ch 2 hours ago | parent | prev | next [-]

See also!

Leopard[0] translates existing Scratch projects JavaScript with a a library for creating games with a really nice API for 'rendering sprites, collision detection, audio, and more'

and on the other side, goboscript[1] is a text based programming language that compiles to Scratch projects. It lets users write Scratch projects with text syntax that you can write in an IDE and version control etc.

maybe both of these could be interesting stepping stones? personally when I 'graduated' from Scratch as a kid I just dumped into writing HTML/CSS/JS websites, which is a very different environment entirely. It actually took a while before I realized where the overlap was with what I learned through Scratch.

[0] https://leopardjs.com/ https://github.com/leopard-js/leopard

[1] https://github.com/aspizu/goboscript

conartist6 3 hours ago | parent | prev | next [-]

I like the direction youre moving. Would a drag and drop editor for Python syntax be useful for a project like this?

bgilroy26 5 hours ago | parent | prev | next [-]

I have loved Scratch for many years. This looks cool! Thank you for sharing!

soferio 4 hours ago | parent | prev [-]

Looks fantastic.