A few weeks ago I wrote about Google‘s soon to be released programming system for smartphones that run the Android operating system, App Inventor for Android, and the following week I delved into one of the underpinnings of App Inventor called theScratch Programming language developed by the Lifelong Kindergarten research group at the MIT Media Lab.
I just received my invite to App Inventor so now I can report on what it’s all about. To be fair, these are my first impressions of a product that has just entered beta so what we’ve got here is just indicative of Google’s intentions and direction.
How does it look? Well, for a system that was designed to make programming as simple as possible it’s still pretty complicated.
My installation was straightforward enough but, according to the notes for Windows installation (both Linux and OS X are also supported), the driver that supports communications with your Android phone may not get installed correctly. You also need to mess around at the command line to verify whether everything is where it should be. I have no doubt that these are the sort of problems that Google will sort out in the fullness of time.
The architecture of App Inventor is complicated (perhaps even overcomplicated, as we shall see), consisting of two main subsystems, one that runs in the browser under JavaScript, the other underJava. Both subsystems communicate with each other and talk to a smartphone connected to the host machine via USB.
The JavaScript-based subsystem is a browser-based GUI development environment downloaded from a Google server (thus you need to have a Google account to play).
This interface allows you to add, modify and layout visual components (labels, text fields, buttons, pick lists, and so on) on the application screen as well as add invisible components that don’t have user interaction (such as clocks, a barcode reader, text to speech controls, accelerometer sensor, location sensor, etc.).
Although this editor is supposed to run on all the usual browsers I found it unstable on Firefox, but when I switched to Google Chrome I had no problems.
Anyway, once you’ve added all of the components you need, you click on the “Open Blocks Editor” button and here’s where it gets messy. This button starts the download and launching of a Java-based application that is the programming block editor. Like the GUI editor, this application is also downloaded from Google but it’s never cached so there’s always a significant delay before it runs as.
The programming blocks editor is the software that communicates with your Android smartphone. The smartphone has to be configured to use USB debug mode, not mount internal storage for the connected PC to use, not auto-switch screen orientation, not power down when plugged in, and several other settings which depend on which Android phone you’re using. You’ll also need to remember to re-enable some of these settings, such as auto-switching screen orientation when you are using the phone as normal.
The programming block editor looks much like the Scratch development interface right down to the hideous colors used to identify the different types of blocks. Despite the interface being an aesthetic disaster it is actually pretty slick, although it could do with a lot more documentation and integrated help.
There are two groups of blocks, the Built-In blocks that define the fundamental functional building blocks that include Text, List, Math, Logic, Control, and Colors, and the My Blocks that are created by the components you dragged on to the application screen in the GUI development system.
As with Scratch, you drag blocks around the screen to link them so the blocks implement whatever it is you want to achieve. Thus, you might have a block that is triggered when a button is clicked or the accelerometer detects the phone is being shaken. That block would enclose a number of other blocks that might display data, detect location, send e-mail, measure the accelerometer forces, and so on.
When you’re ready to test, you click on the Restart Phone App button and your phone will now be running your application. It seems from my experiences (and those recounted in various App Inventor forums) that App Inventor has some compatibility issues with my phone of choice, the incredible HTC Incredible. Even so, I got the App Inventor equivalent of Hello World running in a few minutes and started down the road to creating a much more interesting application.
As I said earlier, App Inventor is in early beta and has some stability and compatibility issues, as well as some documentation deficiencies, and it isn’t quite as simple to use as many people were hoping (which is why I’m giving it a provisional score of 3.5 out of 5). Even so, you can see that with App Inventor (particularly if they ever create a version that generates native Windows, Linux, and OS X applications) Google is on to something remarkable.
When you’ve had a chance to try App Inventor out, let me know what you make of it.
Gibbs is impressed in Ventura, Calif. Your impressions to gearhead@gibbs.com.