Wednesday, September 8, 2010

Google AppInventor Beta - still premature

In its current form, working with Google AppInventor is a exciting but frustrating beast. It's very fast and easy to put together very simple forms and calculators, but either tedious, difficult, or impossible to build something advanced or useful.

It's satisfying to see how easy it is to create using AI. Once all the parts of the pipeline are installed and configured (there are a few - java, extensions, and drivers) using a pretty straightforward process, you can immediately start slapping controls on the screen and modify them as you would expect if you had any experience with similar GUI editors. The blocks editor is fairly intuitive, and the tutorials are incredibly easy to get through and leave you feeling accomplished. Pushing changes to the phone is fast and straightforward, and packaging and deploying a permanent apk was just as easy.

Going off the tutorial path, it's pretty quick to find shortcomings. The control selection is pretty basic, missing what I would claim is the most useful of the controls you can access through java - the Webview control. Without that, you can't display web content on a form in an easy way. Related to that, there's no calling of web services, loading of web pages, or reading of rss feeds natively in the AI framework. You could theoretically use an additional java-based android app that makes those calls and returns the text, but then you'd have to process that on your own.

There's also no dynamic component creation. I was attempting to make a quick physics game, but in order to create many image sprites that react the same way, you'd have to define every one before loading the app and tediously code each one to react to stimuli the same way.

Plenty of other things would make AppInventor a more successful platform for development. Little things like the ability to rotate imagesprites, to the option of preventing the screen from reloading when the orientation changes or even flat out disabling orientation changes, or allowing the images drawn on a canvas to be saved to a file or sent via email or sms would help. Bigger things like being able to read/write sd card contents, the aforementioned web-interactivity, and better drawing and animation tools (opengl?) would be great assets for advanced development.

The Blocks Editor could use some polish too. Currently its very tedious to create even simple logic cases, since everything is based on blocks. "if var == 1" requires 4 blocks, one block alteration, and proper linking. To solve this, It would be so much more efficient if you could have the ability to change from block view to code view, where you can just type out the blocks' text and generate the same syntax.

There are also some issues with features not working until the app is packaged for the device, such as the accelerationSensor and some of the more important imagesprite features, like the collidedwith event's component parameter. And orientationSensor wasn't particularly stable no matter what I did to it.

All told, I'd say its still a pretty entertaining tool that I'm sure people with longer attention spans that mine could do some really amazing stuff with. I'm just not sure how many of those people won't just do those things in java. I'm looking forward to what comes next as the beta continues!

No comments: