We developed PoseBlocks, a web-based programming environment built by extending the open source Scratch project. The system integrates real-time ML model inference, WebAudio processing, WebGL-accelerated rendering, and custom block definitions to enable students to create interactive AI projects in any modern browser.
Built an extension to the Scratch GUI, creating custom blocks that enable real-time interaction with ML models. Developed block definitions and code generators in JavaScript, with focus on performance and usability.
Integrated multiple TensorFlow.js models for real-time inference: PoseNet for body tracking, HandPose for gesture recognition, and custom Teachable Machine models. Implemented browser-based transfer learning capabilities.
Engineered for low-latency interaction using WebGL acceleration, WebWorkers for compute-intensive tasks, and caching solutions. Implemented pre-computed video loops with cached AI outputs for resource-constrained devices.
Implemented media handling using WebAudio API for audio processing and synthesis, and the W3C MediaRecorder API for video capture. Built a video recording system for project sharing and documentation.
The Minecraft Hour of Code teaches students basic computer science concepts like loops, conditional statements, and events by programming a miniature Minecraft world.
Had an idea for a "Code your own Minecraft" coding tutorial where students could create their own 3D Minecraft worlds in-browser using blocks-based programming.
Built a tutorial prototype during a hackathon. The team found this idea so exciting that we reached out to the Minecraft Education team about producing a full Minecraft Hour of Code tutorial.
Spent a week with the Minecraft Education team in Seattle collaboratively designing the student experience and proving out the technical approach.
Mocked up student programs, worked with learning team at Code.org and game designers at Minecraft Education to design an hour-long learning experience we could build within a few short months.
Researched & evaluated options for Canvas/WebGL game development, ultimately building on top of Phaser.js. Built proof-of-concept and "prototyping playground" to use while collaborating with Minecraft Education engineers on the game world.
Built level editor for learning team and game designers to independently build and tweak levels during the development process.
Editor now used for adding new Minecraft levels to Code.org's yearlong curricula.
Defined code blocks and APIs to program mini-Minecraft world.
Integrated our mini-visualization with full Code.org scaffolding. Added site-wide support for sound effect selection and rich-text level instructions.
Devised mechanisms to support entity/agent-based behavior blocks and keyboard/mouse/swipe-based player movement.
Worked with artists on Minecraft Education team to tweak the look and feel of Code Studio website to reflect Minecraft aesthetic. Achieved crisp "pixel art feel" for both UI and game view.
Picked out, edited, and integrated music clips from C418's Minecraft soundtrack to play in short interludes throughout tutorial.
Supported both LTR and RTL (right-to-left, for e.g. Arabic) modes.
Optimized tutorial load sequence and load times to support slower internet connections. Added cross-browser visual tests with Selenium, Sauce Labs and Applitools to ensure it worked on the types of computers found in schools. Used NewRelic to discover and squash edge-case browser-specific bugs before launch.
Visited classrooms before the Hour of Code to play test and iterate on tutorial. Visited classrooms during the Hour of Code to talk with students about learning to code and careers in game design and programming. Fielded questions from teachers in customer support system.
The Circuit Playground is an Arduino microcontroller from Adafruit. The Maker Toolkit is a physical computing environment for App Lab, Code.org's block-to-text app development environment. Using App Lab and the Maker Toolkit, students can quickly build apps that communicate with external hardware using the same language and environment they've already become comfortable with.
Collaborated with Code.org's learning and product teams to understand student and teacher needs, define the course needs and come up with creative approaches to integrating the web curriculum with physical computing component.
Brainstormed paradigms for integrating physical computing with Code.org's online learning curriculum for the middle school Computer Science Discoveries course.
Evaluated options for web / Arduino connection, prototyping the most promising ones.
Visited Sparkfun Electronics education team to learn about Arduino-based electronics and common pitfalls for classroom-integrated Arduino curricula and tools. Met with team behind Johnny-Five to discuss upcoming open web technologies and constraints for web to physical computing in classrooms.
Worked closely with team at Adafruit to provide a custom version of Firmata to ship directly with Circuit Playground boards for use in classrooms.
Exchanged "lessons learned" with creators of NodeRED, Codebender, Chrome Serialport and other open source web electronics community members.
Built initial prototype page for fleshing out board interaction APIs. Integrated board connection as an extension to the App Lab blocks-and-text coding environment.
Built fun example projects with team, students, and teachers. Held periodic hackathons and "bug bashes" to gather feedback on the tool.
Built interactive setup tool for making installation easy to follow.
Established easy feedback mechanism for gathering setup issues and responding to them quickly.
One Laptop per Child is a non-profit dedicated to the development of a low-cost, connected laptop designed to impact global education.
During a 2008-2009 internship, I worked with OLPC's Learning Team on an initiative in Rwanda to build local capacity in laptop learning tools, software, & hardware maintenance.
Prepared and delivered hands-on lessons on laptop learning software, maintenance and hardware repair for the local OLPC Rwanda Core Team based out of the Kigali Institute of Science and Technology.
Produced USB keys full of utilities for use by the core team, including the latest Sugar operating system, extra apps, documents on laptop use and repair, etc.
Facilitated lessons with teachers and students on creating projects in Scratch, Etoys, Turtle Art and other XO/Sugar learning apps.
Worked with local team to update software and test early batches of laptops before distribution, re-flashing thousands of laptops before distribution to students.
OLPCorps was an initiative in the summer of 2009 to support students partnering with local NGOs to run test-deployments of 100 XO laptops in schools in sub-Saharan Africa. The training was held in Kigali, Rwanda, in coordination with OLPC team members in Rwanda.
As part of the pre-summer training, prepared training materials & utility USB keys for student groups to use in their deployments.
Shortly after starting my first full-time software engineering job, friends from my undergrad CS program would ask me how they should prepare for their programming interviews. I'd give them advice and resources, and soon enough they'd send their friends to me when they needed help. Realizing resources for preparation would be useful to the broader community, I started a "programming interview question a week" newsletter.
Each week I prepared a topic overview and posed a programming interview question to the group. Group members would be encouraged to send their solutions in, and they would be featured the following week. The group would come to grow to over 30,000 subscribers.
After conducting some customer development interviews with group members, I identified demand for a video course on programming interviews. I then taught a course on the online learning platform Udemy.
Started a weekly programming interview preparation newsletter in December of 2011.
Weekly emails consisted of:
The newsletter eventually outgrew MailChimp's free plan, necessitating finding a way to financially sustain the newsletter.
Following the "customer development" approach to product development, interviewed dozens of newsletter subscribers about their experiences preparing for programming interviews and what pain points there were in the process.
Identified "information overload", "guidance on what to review", and "how to get un-stuck during an interview" as common pain points, designed and prepared an online interview course.
Synthesized a "problem solving formula" 7-step guide for approaching programming interview problems & getting un-stuck.
Recorded and edited over 7 hours and 63 lectures worth of course content.
Offered free interview prep + job search advice calls over the phone & Google Hangouts.
Conducted resume reviews & mock interviews for job hunters.
Informally advised startups in the programming interview preparation & computer science career spaces.
Assisted with ideation for product development, community outreach and marketing.
PoseBlocks: A Curriculum for Creating AI-Powered Interactive Art
Presented PoseBlocks at the Symposium on Educational Advances in Artificial Intelligence, part of the 35th AAAI Conference on Artificial Intelligence.
Using React To Launch Laser-Sword Wielding Robots At Your Friends
Abstract: In late 2017, Twitch released "Extensions", for the first time allowing Web Developers to build on-site interactive interfaces for live stream viewers. In this talk, Brian will explore how his small indie games studio used a set of modern web technologies to prototype and construct their dream project: a real-time interactive web interface that lets audience members interact with live-streamers playing their game. You'll look at how this extension was built using React, CSS Animations, Cloud Functions, ES6, Webpack, NPM and Firebase, while exploring the unique challenges of designing interactive interfaces meant for video overlays.
Turning Upset Customers into Super-Fans: Honest Customer Support for Game Devs
Abstract: After a game's launch, customer support is often viewed by developers as an annoying source of frustration that just grows worse with a game's popularity. In this session, attendees will learn how to flip this idea on its head -- exploring how practicing honest, empathetic customer support turns support requests into valuable moments of community growth.
Continuously Testing Online, Interactive Curriculum at Code.org
Abstract: Brian Jordan will give a tour of Code.org's continuous, automated cross-browser and visual testing suite—the challenges of building for the classroom, the technologies used to test Code Studio and the Hour of Code, and the team-wide lessons learned (and bugs found) along the way.
Co-developing the indie game Clone Drone in the Danger Zone. Independently researched, designed, prototyped, playtested and deployed a variety of features.
Minecraft Hour of Code and Learning Tools
Worked on game features for Plants vs. Zombies Adventures, and did rapid prototyping.
Research with the Media Lab Personal Robots Group on AI/ML, creative learning and computer science education. Built online tools and curriculum to teach machine learning to middle school students and ran pilot studies.
Activities and coursework:
Relevant courses: Introduction to Machine Learning, Behavior-Based Robotics, Sensation and Perception, Programming Languages, Game Development, Web Engineering. Listening courses (attended lectures): Brain-Computer Interfaces, Physiological Psychology, Language & Mind.
Selected coursework:
Researched Intelligent Agents with Professor Eric Aaron in the Intelligent Agents lab, implementing terrain-analyzing videogame AI bots.
Selected research and coursework:











