Enoch Kang

Scratch Foundation Internship

Software Engineering Intern | Jun 2025 - Aug 2025

Overview

I spent a summer interning for the Scratch Lab team at the Scratch Foundation! I designed and prototyped new AI related features for Scratch and even got to meet some folks at LLK in person! It was an unforgettable summer that truly solidified my belief in the power and responsibility of technology to empower the future.

People

Supervisors: Eric Rosenbaum, Andy Forest

Me and my mentor Eric Rosenbaum at Lifelong Kindergarten!
Me and my mentor Eric Rosenbaum at Lifelong Kindergarten!
A LLK display at the MIT Museum.
A LLK display at the MIT Museum.

About the job

Scratch Foundation is a nonprofit organization dedicated to supporting creative learning through coding. Scratch, the flagship product, is the world’s largest online coding community for children and teens. It empowers young people to create interactive games, stories, and animations while fostering skills such as creative thinking, systematic reasoning, and collaboration.
Scratch Lab is the experimental research and development team within the Scratch Foundation. Its primary mission is to explore new ideas, prototype innovative features, and conduct playtests to validate future directions for the Scratch platform. The team focuses on speculative projects that push the boundaries of creative learning experiences, including initiatives like Creative AI, hardware integrations, and advanced block-based programming enhancements.
As a Scratch Lab Intern, my role involved both team-driven product development and self-directed exploratory work, aligned with the organization’s mission to inspire creative learning for children. My key responsibilities included:
  • Supporting Ideation, Prototyping, and Playtesting: Participating in brainstorming sessions, refining prototype concepts, and helping execute user-facing tests.
  • Feature Development for the Scratch Platform:
    • Contributing to front-end codebases (HTML, CSS, JavaScript, React, TypeScript) within official Scratch Foundation repositories.
    • Experimenting with block-based programming frameworks, specifically Blockly, to enhance prototype capabilities.
  • Content Creation: Drafting educational resources and UI elements to guide users in adopting new features.
  • Collaboration: Engaging in design discussions, collecting feedback, and iteratively improving prototypes to meet team objectives.
  • Speculative Research: Investigating future possibilities for Scratch features and their technical feasibility.

Deliverables

Over the three-month internship, I contributed to several projects:

Creative Learning Assistant (CLA) Frontend

The CLA is a prototype chatbot designed to assist Scratch users in exploring creative possibilities. The panel [fig. 2] sits to the right of the Scratch editor (similar to Copilot in VS Code) and assists the user with various Scratch related AI functionalities. My contributions included:
  • Implemented chat interface features that support multiple content types:
    • Text responses [fig. 4]
    • Code stack previews [fig. 3]
    • Sprite and project search integration [fig. 1 and 6]
  • Designed and integrated starter prompt suggestions to guide new users [fig. 2].
  • Developed UI interactions for collapsible chat panels, improving usability during early playtests.

Blockhelp Prototyping

Blockhelp aims to provide contextual guidance for Scratch programming blocks. I contributed by:
  • Defining JSON structures for content organization.
  • Implementing an initial UI scaffolding system for glossary components, enabling future design iterations by the team. [fig. 7]

Scratch Lab Deep Linking

  • Built, tested, and deployed to production deep link functionality for Scratch Lab projects and editors.
  • Extended this capability to include starter project deep links, streamlining user onboarding for prototypes.

Transition to Blockly for Rendering

In August, I assisted in transitioning block rendering from Scratch Blocks to Blockly within the CLA and Blockhelp prototypes. This included:
  • Investigating rendering discrepancies.
  • Refactoring frontend components for compatibility with Blockly’s rendering system.

Growth and Reflection

The sky was impossibly blue when I visited!
The sky was impossibly blue when I visited!
A not so clear view of the Stata Center across the road.
A not so clear view of the Stata Center across the road.
This internship and trip to visit the Lifeling Kindergarten lab at MIT Media Lab has truly been an eye-opening experience. I have never been in an environment where there is so much shared context on the topic of Scratch and STEAM education! It felt like everyone I met was so passionate about education and cared so deeply about the learning experiences of all learners.
The internship also challenged me to grow professionally as a programmer. I have never had the opporunity to work in a team managing a system of such scale before. From dreading the never-ending npm errors to eventually learning to navigate the complicated repositories, I've grown to appreciate good systems and architecture even more.
Working alongside professional software engineers and designers also taught me many valuable lessons on product development. From all the playtests to long evaluation meetings, everything is handled with so much care that it's incredibly inspiring to see how high the bar is set in terms of what is really good enough for a child. This motivates me to carry out my own development projects with this same standard and eye for quiality.

Something Fun

This entire adventure wouldn't have been possible if my supervisor and mentor Eric Rosenbaum hadn't given me the opportunity to reach out and share my work with him in the summer of 2024. Throughout the entire journey, despite having to juggle so many responsibilities, Eric still somehow managed to make time to set up these opportunities and even to meet with me in person to work in Boston. I am immensely grateful and knew I had to do something special for him before our last in-person day together at the Media Lab.
I wanted to make a thank-you card for Eric. But it couldn't just be any card, it had to feel like I made it... it had to be a TRADING CARD!
I created a sketch based on Eric's DnD character!
I created a sketch based on Eric's DnD character!
Eric posted [this video](https://www.linkedin.com/posts/eric-rosenbaum-107120_heres-a-trailer-i-made-for-the-dd-campaign-activity-7302797968317775873-7lwf) on his LinkedIn where he generated scenes from his DnD campaign using AI.
Eric posted this video on his LinkedIn where he generated scenes from his DnD campaign using AI.
Now that I had the artwork settled, I needed to find some relevant text to put on the card. As I was making this card, I was thinking back on all the ways Eric's work has inspired me in the past and I remembered this quote from an article he'd written a few years back:
“Even if it’s been done before, you can find your own way. Use your unique weirdness to bring magic to the world.” - Eric Rosenbaum, 2020. Glowdoodle: A Love Letter to Light Painting
This message is very special to me because one our my projects (Matchbox) is directly inspired by the Eric's work on the MakeyMakey. At the start of the project, I would sometimes think to myself: Does Matchbox really contribute something new to the conversation, or am I just spending all this time making something that someone else has already solved? But after having met Eric and been encouraged by his works, I now proudly forge forward into the unknown, following the footsteps left by the giants before us.
So that's the complete card! I had some help printing them out and cut and glued everything just in time! I had so much fun learning from Eric and the rest of the team, really hope there will be more opprotunities to work together in the future!