App Inventor now has a Gallery!

App Inventor programmers have been working side-by-side in the cloud together, but they might as well have been using stand-alone software as they couldn’t share their experience. I’m pleased to announce that the App Inventor app gallery is officially launched as part of MIT App Inventor. Students and developers can now easily share their apps and code blocks and learn from each other. The gallery turns App Inventor into a shared learning community similar to the one which has been so successful in Scratch. Now all the students, teachers, and developers who were blindly rubbing virtual shoulders can share their apps in a great, collaborative open-source environment.
Click on any app to open it and see its blocks

Click on any app to open it and see its blocks

The gallery was developed by our team in the Democratize Computing Lab (DCL) at the University of San Francisco (the same team that brings you and this blog), working in collaboration with the MIT App Inventor team. Special thanks go to lead developers Bin Lu and Vincent Zhang of USF, as well as mastermind Jeff Schiller of MIT, all of whom put in a long and concerted effort in making the gallery a reality.

The Democratize Computing Lab is generously funded by the W.M. Keck Foundation.

App Inventor Teacher Workshop this Summer in SF!

The University of San Francisco and will host an App Inventor teacher twitter-usftag-500x500workshop and follow-up activities during the summer of 2015. The workshop will take place over four days, June 29-July 2, 2015, 10 am to 3 pm each day, at the University of San Francisco. The workshop is funded by USF and the Google CS4HS program. You can apply at b​

Learn App Inventor coding and how to teach it in a 4­-day teacher development workshop funded by Google and USF. Coding apps for phones and tablets is a fantastic way to learn computer science and computational thinking! The workshop is free. If you can commit to teaching in 2015-­2016, you may also be eligible for a $1000 stipend!

Teachers from all levels are welcome to participate. No prior coding experience is required. The workshop will start at the beginning with both coding and the App Inventor language, and will focus on how to teach the material to beginners. The workshop will be taught by USF Professor Alark Joshi and USF Professor and App Inventor author David Wolber.

University of San Francisco Campus, 2130 Fulton Street, San Francisco, CA 94117

appinventororgThe workshop will prepare you for teaching either a complete programming course or a coding module in an existing course. The topics and material discussed will be appropriate for many programming courses and levels, including the High School Computer Science Principles (CSP) curriculum that is being piloted as a new AP course. You will be introduced to two popular existing on­line courses, Mobile CSP (m​obile­​ and Professor Wolber’s App Inventor Course­-in­-a­-Box (a​​.

Community of Practice
Our goal is to foster the community of App Inventor teachers in the Bay Area. We will offer two ways to continue after the workshop: (1) We’ll provide three weeks of follow­-up guidance after the workshop (July 6­-24, 2015) including once­-a­-week  meetups as you continue with the Mobile CSP on-­line course, and (2) During the school year, we have funds for a limited number of USF students, experienced in App Inventor programming, to assist you in the classroom. If you can commit to teaching App Inventor in 2015­-16, you may be eligible for a $1000 stipend.

Please apply for the workshop at b​ ​Slots for the workshop are limited, but we will accommodate as many teachers as we can.

Democratizing Computing with App Inventor: new article

Screen Shot 2015-02-11 at 10.36.53 AMI teamed up with App Inventor creators Hal Abelson (MIT) and Mark Friedman (Google) on the article, “Democratizing Computing with App Inventor”, which was recently published as first education column in the inaugural issue of Get Mobile ( from ACM SIGMOBILE Mobile Computing and Communications Review). Hal and Mark developed App Inventor from the ground up at Google. Hal continues to lead its development at MIT with Mark contributing significantly. The article introduces App Inventor and its history, and tells some of the great success stories.

The article is now available here and in the ACM Digital library.

The App Inventor Book is OUT!

The App Inventor 2 bookai2cover2 is out! App Inventor 2: Create you own Android Apps, published by O’Reilly, is now available. The book is authored by Professor David Wolber of the University of San Francisco and (me), App Inventor creator and MIT Professor Hal Abelson along with Ellen Spertus and Liz Looney, two of the Google engineers who helped develop App Inventor (Ellen is also a professor at Mills College).

Fully updated for the new version of App Inventor 2  the book is chock full of cool apps and tutorials you can build, along with an Inventor’s Manual for learning computer science and programming concepts.

Buy it on Amazon:

App Inventor Presentation at Tech Museum of Innovation, San Jose

techMuseumI’m giving a presentation on teaching App Inventor to kids along with a hands-on workshop at the Tech Museum of Innovation in San Jose this Saturday, Oct 18, 1 pm. The event is free and you can register at, The event is being hosted by Benesse CorporBenesse_America_logo_72DPIation of Japan.

Please spread the word!

Dave Wolber

Event-based Languages (and phones) are the key to learning

When the user clicks the button,…

Computers were first designed to compute, to allow men with oversized glasses to write “recipes”, to take a large set of numbers and compute some formulaic result. Computers still crank through formulas, of course, but their purpose has expanded far beyond computing things. It is doubtful that Alan Turing and his generation envisioned Facebook, Google glass, or even people carrying around their computers tweeting camera-shots and using GPS to find where they’re going.

Though the reason we use computers has changed dramatically, our coding languages have not. Popular languages like Python and Java are still based on the “recipe” model with a “main” program of sequential instructions. This recipe model makes sense for computing things, but is a poor fit for modern software, which is much more like an event-response machine, reacting to the user touching a button, location information coming in from a GPS satellite, or a text arriving from a friend.

For experienced programmers, the dissonance between the language they use and the software they’re trying to build isn’t that big a deal. But for beginners it makes learning to code really difficult. Want to program an app in which clicking a button causes the button to turn red? Should be simple right? It’s not. In Java, for instance, you first create an object called a Listener, then register that listener with the user interface object (the button), then program the handler to…you get the picture! Its not a first hour or even first day exercise, and you have to understand many things before you can do it. This difficulty is the reason why most people’s initial engagement with coding is to display “hello world” on the screen or at most to add up a list of numbers. Couple these less than motivating initial results  with the fact the computer is barking error messages at them, and it is no wonder most don’t stick with the field very long.

The problem is that events, like the user clicking a button or dragging the mouse, are not first-class objects in our popular programming languages. The events must be constructed by the programmer, and its not easy to do.

Event-handling languages like App Inventor are different– “when event do” is a first-class construct in the language. Here’s how you program the”click a button to turn it red” example in App Inventor:

Such a program takes about 30 seconds to learn. You just look in a drawer of button events and function blocks, drag them into your app, and plug them together. Here’s another sample:

Can you tell what it does? It’s basically an answering machine for texts. You turn the app on when you get in your car, or enter a meeting, and it auto-responds to any incoming texts. Pretty powerful, but easy to specify, almost as easy as telling Siri, “when someone texts me send an auto response”.

Now this texting code is a bit more complicated than the Button.Click sample. You have to understand that “number” is the phone number of the person who sent the text and know how to refer to it to set the “PhoneNumber” of the out-going message. But it is still a first day or even first hour exercise.

Here’s one last example, for you game lovers out there. Let’s say you want to animate a flying saucer and have it move horizontally across the screen? Coding animation is really hard, right? Well, here’s the App Inventor code:

Screen Shot 2013-12-11 at 6.58.24 AM

The code is, again, a little more complex than a Button.Click. You need to understand that the Clock.Timer is like an alarm clock, and that there is another value somewhere specifying how often the timer should go off.  And you need to understand that the “X” coordinate of the flying saucer is its horizontal location, and that you can change it by setting it to “itself”+ 5.

The beauty of an event-handling language like App Inventor is that the events– the things that your app can respond to, are pre-defined. They’re organized into little drawer. You just click on a drawer, find what you’re looking for, and drag it into your app. Then you drag response (function call) blocks in to specify what should happen when the event occurs. The fundamental software behavior– event-response– is the fundamental construct in the language.

Now you’re probably asking, “why aren’t all language like this?” Well, they should be. Part of the problem is just the incredible inertia that exists in software engineering. People teach what they know, and programming language design became passee sometime in the 1990s. But it is also about control. Programming languages are designed for maximum flexibility– so you can build anything and make as general-purpose a program as possible. To enable reuse of code, abstraction is worshiped; concrete simplicity is disdained.

App Inventor was designed by a group of really smart Googlers whose target audience was  beginners, so they favored concreteness over abstraction. The language provides you with a fixed set of concrete event and response blocks. You can program just about anything that can occur on a phone or tablet, but not everything. And you cannot define a new component, you are at the mercy of the engineers who develop App Inventor. Such inflexibility drives programmers crazy, they want total control of the machine, and are wary of “toy” systems that don’t give them that. Unfortunately, the cost of this total flexibility– of having an abstract Listener object that you can program– is that learning to code is a horror story!

If you are new to coding and want to give it a try, go to You can also try the App Inventor Hour of Code intro lessons or the I Have a Dream video tutorial at You can be programming your Android phone in 10 minutes!

Obama says, “Don’t just play with your phone, program it!”

As part of‘s terrific “Hour of Code” week, Barrack Obama has called out youngsters to learn how to code. There are some great learning tools at, including Blockly, Scratch, and App Inventor. The initial “Angry Birds” code challenges involving programming character’s movement through a maze is a great beginning to programming. My twelve-year-old son Tomas had a blast and learned a lot of programming (if, loops, complex logic, etc.).

App Inventor Answers the President’s Call

Learning to program a maze is great, but App Inventor stands out as a tool that actually lets you program your phone and build all kinds of apps. You can build apps that auto-respond to text messages or an app that with a single click sends “thinking of you” to a list of phone numbers; You can build apps that remember where you parked your car, or how far you’ve run. And you can build meaningful, media-rich apps such as an “I Have a Dream” app that plays the speeches of MLK and Malcolm X. Most importantly, you can share your apps with your family and friends because App Inventor works on the open Android platform.

The “I Have a Dream” screencast tutorial is below. If you have an Android, click on the link and follow along, and you can have a cool app downloaded within minutes. And you’ll learn enough programming to build your own apps of various types– the sky is the limit!

For more, see and  MIT’s Hour of Code lesson.


Get every new post delivered to your Inbox.

Join 77 other followers