On App Inventor and Lowering the Bar

Steve Lohr of the New York Times calls it Do-It-Yourself App Creation Software. Salon’s Dan Gillmor says it is the Hypercard for mobile development. Others have put it in a more recent context by calling it Scratch for App Development. Mike Loukides of O’Reilly wrote:

This is revolutionary; they’re not trying to lower the bar, they’re throwing it away entirely.

I’ve taught App Inventor to non-programmers for a year as part of Google’s pilot program and I can say from experience that these guys are right: App Inventor will change both how apps are created, and who creates them.

Will the bar be thrown away? Not exactly, but a lot more people can get under the bar– and past the syntax barrier that has forever kept them out– to enter the app building world. Once in there are still difficult logical and design mountains to climb, but by then your hooked. Its like the barriers to learning simple conversational French have been eliminated, so that you can immediately chat with that French woman you meet at the bar. To get the girl you have to be smart and speak some poetry at some point, but now you’re motivated, a hell of a lot more motivated than if you had to go back to Cleveland and spend a year learning how to say, “Souhaitez-vous un verre de vin”

I see App Inventor creation at three levels:

Level 0, Anyone: some simple but very useful apps. These apps make use of the high-level components provided by App Inventor (Texting, LocationSensor, TextToSpeech) but require no repeat loops or complex logic. An example is this screencast of No Text While Driving, an app designed by Daniel Finnegan, a Politics major in my class at USF.

Level 1: Anyone who likes French Accents: Apps with some sophisticated logic. This level requires some hard thinking and problem solving. The blocks language has gotten you past the syntax, but now you need to piece together some repeat loops and index variables, and maybe a nested if-else. Examples of apps at this level include the Quiz and Create a Quiz tutorials I wrote for the App Inventor site. Who can do this? Just about anyone, but here you start losing some people that just don’t want to think that hard.

Level 2.0:  Apps that talk to APIs: You can get past the limitations of the visual environment by talking to back-end web services. Here you need to program in another language like Python, or know a programmer real well. App Inventor has provided a bridge with its TinyWebDB component. Basically, a programmer has to write a web service proxy that talks to the service you want and follows the App Inventor protocol. Then App Inventor programmers can create client apps that use TinyWebDB to communicate. I’ve written a few App Inventor web services using Python and App Engine, including proxies for Amazon, Yahoo Finance, and San Francisco’s NextMuniBus API (my students used this service to build their DroidMuni app with App Inventor).

The web service programming is quite simple,  for a programmer. You can download one of my samples and build an App-Inventor compliant service within minutes. But the barrier is back up, big time: most people will never write web services. But I do envision the following:

  • Some App Inventor programmers graduating to Python (or another language) because they are so motivated.
  • Organizations providing App-Inventor-compliant APIs that App Inventor programmers can then mash.
  • Collaborations, on-line or off, of App Inventor client programmers and App Inventor API builders. For instance, one of my CS 1 students worked with some CS 0 (App Inventor) students in this way to build an app using the Eventful API.
  • Yahoo-Pipes-like functionality for App Inventor

Level 2.0, the bridge to “back-end code”,is the key to App Inventor’s success. Without it, App Inventor would have been a nice educational tool. With it, App Inventor will change the world of app development.

Not sure? I’m not either, but they say you should bet on the toolmaker, along with the tool. Dan Gillmor wrote this about Hal Abelson, App Inventor co-director:

a brilliant computer scientist who also understands how app development needs to get into wider distribution, not just the coder community

This statement resonates with my experience working with Hal and the team during the university pilot and this summer. They are money, and they don’t even know it. This is why I’ve thrown my hat in with App Inventor.

The Programmers are coming!

Google has targeted education with App Inventor, but its clear that the tool will attract major interest from programmers and web designer/developers. Programmers see the potential because of the the TinyWebDB component which allows an App Inventor apps to communicate with web services.

Early adopter Dean Sanvitale has already built an RSS reader app and a Flickr explorer app. He did this by modifying a sample “tinywebdb-compliant” web service to create http://tinywebdbplus.appspot.com/ then writing an App Inventor client that talks to it. The pic on the right is his RSS reader app running in an emulator.

For more on how to build App Inventor (tinywebdb-) compliant web services, as well as sample source code, see http://appinventor.org/talking-to-an-api and http://appinventor.googlelabs.com/learn/reference/other/tinywebdb.html (The sample is written in Python/App Engine)

Good work Dean and, programmers, rev your engines!

App Inventor: “No Text While Biking” App

App Eliza Chat-Bot

Public domain pic of Sigmund Freud

Some great apps are beginning to come out as people get their hands on App Inventor. Robert Oschler of Android Technologies, started with App Inventor yesterday and created a chat-bot on his first day with the tool. The app he built, App Eliza, is

“just like the famous ELIZA chat-bot program relies on ambiguity to appear smarter than it is. It uses simple text parsing and matching to respond to certain key phrases and trigger words, especially in relation to feelings and family, while trying to “fake it” the rest of the time.”

It even logs the sessions to Twitter!

Robert’s take on it is this:

But the app itself is not important. It’s importance lies squarely in the fact that it proves without a doubt that you can create serious feature-rich Android applications with AppInventor in an astonishingly short period of time, including apps that use advanced powerful techniques like speech recognition and text to speech on a mobile computing platform.

The app is up for download on Robert’s site.

Nice work Robert! And nice work App Inventor team– you have built a creativity tool of the first order!

A TechCrunch “Posts API” App

App Inventor for Android app that talks to TechCrunch API

Jason Kincaid posted an excellent  TechCrunch article on App Inventor and his initial experience. His first idea was to create create “an application that would allow a user to monitor TechCrunch headlines for keywords, which could come in handy if a startup wanted to get notified whenever we wrote a post about them.”

He quickly was stymied, realizing that App Inventor doesn’t yet have an RSS feed component. App Inventor does have a more general web service component, however, TinyWebDB. I used it, and App Engine for Python, to code up a simplified App Inventor version of his idea, a TechCrunch Posts API Android Client.

You can download the app and its source code at the link above. The app took me 20 minutes to create.

The sample doesn’t demonstrate what a non-programmer can do with App Inventor, as I had to write some Python code. It does demonstrate how App Inventor can be used by programmers and/or teams with a programmer to quickly develop and prototype apps.

App Inventor at Community Colleges

I just finished teaching a 5-day App Inventor workshop at MPICT, a conference for computer science and IT community college teachers in the Northwest US. App Inventor was a hit– many of the instructors plan to incorporate App Inventor in their courses.

What I learned is our community colleges are in good hands: what a fantastic group of teachers! I learned a great deal about teaching in general and teaching beginning CS courses specifically.

USF App Inventor Contest

Photos from the contest

We recently held a programming contest for my App Inventor for Android programming class. The students in the class were non-techies: their fields of study included history, communications, literature, media, business– just about every major in the university other than computer science. The folks from Google’s App Inventor team and some USF Administrators served as judges. The winning team created DroidMuni, an app that gives you personalized “next bus times” information about your MUNI bus line. Other apps included:

Park It
No Text While Driving
FrontlineSMS
Dating AppVice
Make it Count

App Inventor at USF (the video)

Google featured yours truly and Chris Witte, one of the students in my original App Inventor class, in this video. The clip was played at the Google booth during the ACM Conference on Computer Science Education (SIGCSE 2010).