Hacker News new | ask | show | jobs
by dnsge 978 days ago
I'm 20 now and got started programming with Scratch sometime before I was 10... don't remember exactly when. I completely attribute it to my interest in programming and is the reason I'm now in school completing a computer science degree.

You can actually go into surprising depth with Scratch. For example, I wrote multiplayer game engines using cloud variables to store player position, chat, etc and let people play together live. People have written 3D platforming engines using the "pen" feature, which is like a Python turtle. Hanging out on the "Advanced Topics" forum lead me to hacking with JavaScript and Python, at first to interact with Scratch and then onto bigger things outside of Scratch.

I think that Scratch is really great, if you couldn't tell from my description. Not only is it easy for a kid to get started with a drag-and-drop interface, but you can do so much. It also has a supportive community and it's easy to make friends and collaborate on projects together.

If you want to see Scratch truly at its limits, take a look around Griffpatch's profile: https://scratch.mit.edu/users/griffpatch/

2 comments

I'm curious how you got started and got hooked?

My son (7yo) likes 'Scratch Jr' (iPad app) but he's mainly using it like a drawing app. He likes to create characters and then animate them a bit. He's not using any of the more advanced features like making one character moved when bumped by another.

I'd like to think he'd enjoy Scratch, but I'm not sure how to introduce it to him in a way that he might find interesting.

Do you recall what the first few things you did were?

Truthfully, I can't remember what my first projects looked like. I started, I created projects using the downloadable Scratch 1.4 application and didn't begin uploading projects to the public website until I was (apparently) already doing complicated things.

Going back to look at my first uploaded project on my first account, I implemented a "programing language" [sic]: https://scratch.mit.edu/projects/10165000/ which is obviously not a beginner's project.

However, what I expect inspired me to create this project and keep creating was exploring the public projects that other users were uploading. For example, scrolling through my projects, I see several "Operating System" simulators that were inspired by others (operating systems were all the rage on Scratch).

Because you can "See Inside" every public Scratch project, it's easy to see something you like (e.g. a game, an animation) and make your own while heavily borrowing ideas and code from others. I was fortunate that my parents allowed me mostly-unrestricted access to a desktop computer where I was able to explore and create on my own.

dnsge, would you be willing to help me carry out some research? Could you please explain in your own words, that is, without doing any searches, what a cloud variable is?

I'm 40, and I started on Commodore Basic, but my son is 11, and he started on Scratch. I'm curious where this will go. :)

Sure: a cloud variable is like a normal variable, but its value is replicated to all people using the project. Perhaps important context for Scratch variables: all variables are global in Scratch.

If person A uses the project and modifies the cloud variable, person B also using the project at the same time will see the new value update in real time.

Related tidbit about cloud variables: When I was on Scratch, there was no effective limit to the size of data stored in the cloud variable (though you were restricted to <= 10 cloud variables per project). Assign a letter to a two-digit number, a -> "01", concatenate the digits for each letter, and store the number into a cloud variable, and you get a simple encoding/decoding scheme for communicating between players in a game.

When enough projects that (ab)used cloud variables for intensive applications like multiplayer came around, I believe that the Scratch Team restricted the amount of data each can store. This change happened as I was no longer using Scratch much, though, so I can't speak much about it.

Thank you! I see now that "cloud variables" are a specific feature of Scratch projects.