To see the Scratch Cat rolling through the floors of the MIT Media Lab does not happen quite often. However, for some especial events and adventures the orange cat rolls down the halls with confidence and glamour holding the Scratch flag.
The especial occasion last weekend was the Scratch day, a celebration of the Scratch programming language and online platform and community. During this day, children and adults around the world meet at dedicated locations in order to celebrate creativity, tinkering, collaboration, and learning. The events combine workshops, demos, games, and exhibitions intended to promote the Scratch culture and community.
This year the celebration was something especial because Scratch is having its 10th year anniversary. Since its launch in 2007, the online platform and community has continuously been growing. According to the Scratch stats page there are 17 million registered users and more than 21 million projects shared. Users come from all corners of the world and they can join the community and use the programming language for free. Although the site has been translated into 40 languages, English remains the most popular one.
The Scratch programming language
The Scratch online platform has become the home of a thriving community of young designers and coders that use the Scratch programming language for creating and sharing interactive projects and computer programs. Although initially, the website served as the platform for sharing projects, downloading them, and connecting with other peers, since 2013 and the release of Scratch 2.0, the site also offers access to the programming language environment. Since then, anyone with internet connectivity and a browser, can program directly from the web site without any need to download and install software locally.
As a visual programming environment Scratch builds upon the constructionist tradition pioneered by the Logo and Etoys programming languages. According to the constructionist theory developed by Semiour Papert, effective learning happens as a reconstruction of knowledge not as transmission. That is, learning is effective when the learner experiences constructing meaningful products, artifacts, or tangible objects in the real world. Moreover, Scratch was designed to support interest-driven learning across contexts that went beyond the classroom. Its initial audience was the one of the computer club houses and after-school programs that relied on project-based learning, adult mentorship, and tried to reach a diverse youth population.
Scratch allows users to design and create a range of multimedia and interactive projects. From music videos to games, from interactive stories to simulations, from tutorials to data visualizations, users make a variety of projects using a programming environment that is visual and and allows them to manipulate a variety of media. Coding in Scratch is made by snapping together command blocks that control graphical objects called sprites. The sprites can contain different types of media such as sounds, images, and music.
The user interface is simple, with a single-window and multi-pane design, and a command palette that is always visible and invites users to code and tinker. This palette shows blocks of code divided into several categories such as Control, Looks, Sound, Data, and Motion. The user can drag and drop these blocks into the script pane, attach them together, tinker with their values, and create programs that control the sprites. The interface also encourages tinkering by allowing the users to experiment, in real time, with different functions of the blocks and with changes in the numerical parameters.
Because Scratch was designed in order to foster and encourage interest-driven learning and introduce programming to users without any experience in programming, its features emphasize experimenting an tinkering, are easy to learn and rely on simplicity. For instance, when programming on Scratch there are not system errors. All the blocks (pieces of code) are designed to be movable and easy to assemble and re-assemble in ways that would avoid the creation of errors. Furthermore, Scratch also allows any user to look inside any project and see how it was made. Any user can see the code of any Scratch project, and can play with it in real time, changing parameters and values, re-arranging pieces of code, and experimenting with new blocks, while observing the changes happen live, without any need for running or compiling the code. Finally, b
Memories of Scratch
For the Scratch day celebration, the whole sixth floor of the Media Lab, and some spaces on the fifth floor as well, were transformed into a mix of science fair and design studio environment. Demo and co-working tables were set-up across all the different spaces, with different kind of themes and activities. From designing musical machines and monsters, to making mechanical arms and dancing tales, each table had materials and tools for creating a Scratch project. Few of them, however, were more oriented towards providing information about books, learning resources, and other kind of experiments that the Scratch team and its community have been developing.
I stopped on the Scratch memories table and tried a web app that allows any Scrath user to review all its activities on the platform. After entering the user name on a web page, the app takes you through a journey in which it reminds you of the most significant moments of your activities on Scratch. As I watched the Scratch memories display the history of my activities on the platform, I was able to remember projects I created and the people that liked them. Reviewing the memories also took me back into my years of grad school at MIT, when I had the opportunity to take Technologies for Creative Learning class with Mitch Resnick, and joined the Scratch community. Those were the early days of Scratch, with just a hundred of users and projects. The projects I created then allowed me to experiment with stop-motion animation, storytelling, randomness, interactive maps, and also with sensors, such as the Scratch board, perhaps the grandparent of the now popular Makey Makey. As it turns out, the 10th year anniversary of Scratch was also my celebration as a 10 years as a Scratcher.
ScratchX: A Taste of the Future
One of my favorite things about this Scratch day was to discover some of the new Scratch experimental extensions that are being developed outside the Scratch team. Scratch extensions are available on a dedicated website where anyone can tried them and use them on their own projects. These extensions offer a taste of the Scratch future and how the programming language and platform would become more interconnected with the data that is available on the web as well as with the hardware and internet of things that is quickly spreading around the world. From integrating an Arduino board to using sound files from Spotify, the Scratch extensions allow users to leverage the potential of a networked ecosystem where data and software are interoperable. As the Scratch team is working now on the next iteration of Scratch (3.0), some of these extensions would become embedded on the official online platform.