Scratch that itch for coding!

Learning a little about programming could benefit anyone. If you want a fun intro to coding and logical thinking, check out Scratch!

Scratch that itch for coding!

In the early 90's, when I first got the coding itch, there weren't many options for a curious kid. We had a family computer running Win 3.1 with QBasic on it. It's easy to get started with (hence the name), but not very easy to get excited about. The web of the early 90's cost a premium and was mostly mailing lists, so not much collaboration to be had for a kid either. It didn't matter though, little of what I learned was personally appealing - I was more interested in video games and music than input prompts and.. more input prompts. 🥱 💤

In fact, coding sat on the backburner until about 5 years later, when I put together a Legend of Zelda fan site on geocities. As it turns out, having a reason to learn and something you feel worth sharing are huge motivators! I learned enough about HTML and JavaScript to get my ideas out there. Years later, as an all growned-up professional programmer who's done his fair share of a-little-bit-of-everything, I've come to realize a few things:

  • Knowing how to program is awesome.
    The computer is a tool, but it's also a medium for bringing ideas to life. If they're someone else's ideas, or your ideas for solving other people's problem, you can even get paid for it. Like a kid in a candy shop.
  • Learning how to program, even a little, is an advantage.
    Not everyone's an author, statistician, or bus driver... but writing, basic math, and driving are essentials. There's no need for everyone to program professionally either, but knowing a little makes things easier.
  • Solving for a specific problem is the best way to stay motivated.
    The times in life when we learn the most is when we have a clear goal, or idea, or problem that's personally relevant - and let nothing stand in our way of achieving, sharing, or solving it.

An Idea

Around the same time I was hacking out my little site on geocities, Mitchell Resnick and the Lifelong Kindergarten group at MIT were dreaming up ways to make programming more accessible to the masses, eventually creating Lego MindStorms. He realized the same thing most of us eventually do - having a "why" is just as (maybe more?) important than a "what". If you're not trying to build or fix anything, a bag of tools is kinda meaningless.

In the early 2000's, Mitchell, John Maeda of MIT, and Yasmin Kafai of UCLA had another idea - something to integrate programming into art and media, the way MindStorms integrated it into legos. Backed by Intel and the NSF, they spent a few years creating Scratch, focusing on accessibility (available on every platform and device), collaboration (share creations and ideas easily), and a building block design reminscent of legos. The end goal was to introduce programming to the masses.

Indeed, our primary goal is not to prepare people for careers as professional programmers but to nurture a new generation of creative, systematic thinkers comfortable using programming to express their ideas.

The Design

Despite that, the design and implementation in Scratch teaches some concepts most casual users wouldn't even be aware of, aside from the obvious stuff like loops and if statements.

You can create your own "blocks" that accept parameters and contain other blocks, just like methods and parameters. You can run multiple blocks concurrently, so it introduces users to threading. And like Sonic Pi, it supports "live coding". Users can modify their code on the fly, without needing to wait for compilation.

As for the tech stack, it was originally written in Squeak (yeah, never heard of it either), probably due to it's cross-platform portability, then ported to Flash and AIR (dead and dying), and finally to HTML 5 and JavaScript... which means a much greater compatibility with various systems. If you want to check out the code, it's available on GitHub.

Or if you just want to get started using it, read more here, find a tutorial, or jump right in (there's an offline version too). If you want to learn more, check out these articles and papers. They're all a little older, but they go indepth into what the goals were and how they were going to achieve them. I found them interesting.. but then that probably says something about me. 😏  

As far as I'm concerned, the amazing thing is not that they created a platform for learning how to program. There are plenty of sites for that. What's impressive is that they made it so appealing, by showing people that it's not necessarily a thing in and of itself, but about bringing ideas to life, and sharing them, and collaborating and learning and thinking logically.

It can be a medium of expression, like writing or singing or painting or woodworking. The world doesn't need everyone to be a professional developer, but the computer's a tool worth knowing - not just how to consume it, but how to bend and shape it too.