22 August 2010

Introducing Google AppInventor

A few months ago, I got a shiny new Droid phone. I have had a smartphone since starting my new job, mainly because I am on the road a lot and can't use any of my hardware for work to stay in contact with my personal world. It is a luxury, of sorts, but one I expect will be in the hands of a lot of people in the next year or two. I wonder what will happen in high schools when students have their own 3G devices that don't care about the Internet filter?

I was intrigued when Google posted the invitation to sign up for beta testing of its AppInventor. I had been perusing apps in the Market for awhile, disappointed in the lack of (good) productivity tools for teachers. As smartphones become more common, I have to think that we will need more specialized apps for them. Teachers are going to want some different things than dentists or ranchers want. Why not start seeing what we can build now?

I patiently waited for my invite---and it arrived on Friday. I've spent the weekend puttering. I've gotten my phone set up and am working through the tutorials. There are some very interesting things about the interface. There are two screens that you work with (for the first time, I've wished for dual monitors). The first is within the web browser and looks like this:

Think of this space as a kitchen prep area. It is where you get your ingredients ready. The left sidebar is your pantry. You drag and drop whatever you need to create the app. Does it need buttons to push? A timer? Do you want to integrate sounds and pictures? Make the app use the vibrate function on the phone when the phone is shaken? You place all those things in the middle, using the sidebar on the right to develop their attributes: color, text, name, etc.

Once you have the pieces ready, you assemble the recipe on the next screen. Here is the example from the "Whack-a-Mole" tutorial:





Just like the second part of a recipe instructs the cook which elements to combine, the order, and other steps to make the meal, the Blocks Editor is where you make the final assembly for your app. Along the left sidebar, you have a "drawer" for each piece you created in the first window. Each of those drawers contains actions that can happen with the piece. (One of the drawers is open in the picture above so you can see some of the options.) You drag and drop the actions you need into the main workspace. As you can tell, different actions have different colour codes (e.g. green for "math"). The "whack-a-mole" game has 6 different activities it needs to do: move the mole, display a score, update the score, keep time, reset the score to zero at the end of the game, and vibrate/change score when the mole is touched. Therefore, there are 6 groups of blocks in the work area, each with their own instructions about what to do when any of those things happen.

As you build an app, you can see it on your phone and actually use the app. When you're happy with things, you can use the Package for Phone option from the first screen and load it to your phone. I haven't loaded any of the products from the Tutorials onto my phone yet. I'm not sure that I need a whack-a-mole game; however, since I can use any image I like in place of the mole, there may well be some other heads I would find very therapeutic to squish. :)

You may have noticed that none of this requires any coding skill. In my mind, this is a real plus---especially as I think about how you might use the AppInventor in the classroom. You do have to understand logic arguments or there will be wailing and gnashing of teeth in the Blocks Editor. (So far, I have not built anything from scratch---still using the tutorials with all the training wheels).

Right now, the AppInventor is limited in several ways. You can only build apps that use one screen---and I can already see that for some classroom applications, you're going to need more than one. For example, in a gradebook app, you might want to be able to navigate to screens with class lists, standards, assignment lists, etc. There is apparently a couple of work-arounds for now, but this is a good reminder that the AppInventor is in beta: It's not the finished product. Some patience will be needed for now. Another drawback is that it is very difficult to share your app with anyone. You can't upload it to the Market, for example. Features will be added in time. Currently, this has to be a rather selfish enterprise.

If you've been curious about AppInventor, I would encourage you to give it a try. It's a lot of fun to tinker with and there's something that feeds one's creativity to be on the edge with a tool like this.

What would you like to invent?

4 comments:

KKelley said...

The second screen, with the blocks, looks very similar to the programming used in MIT's "programming" program for kids called "Scratch". It's a very good program, and if I were to use the AppInventor in class, I would begin with MIT's Scratch, because it helps kids get used to the logical arguments, etc. Also, the interface is very strikingly similar (I wonder if Google borrowed?).

The Science Goddess said...

There's even a note on the Google "about" page for AppInventor about Scratch---so there is definitely a connection.

I think you're right that using Scratch could be a good intro for students.

Chris Eldred said...

Yes, I saw that picture and my mind went right to Scratch too. Wishing there were tools like this for iPhone. I've never looked hard at the Apple Dev Tools, but I don't think of of it in the same way as Scratch. I don't see it being as easy.

The Science Goddess said...

There is the "non-easy" way for Droid, too, (Android SDK package)---with all of the coding and greater possibilities that come with that. I am definitely not ready to take that on, but I think it could have a place in the classroom. I know some schools are having kids build apps for iPhones.

I can't imagine that Apple would ever allow the Scratch-type programming interface. Apple, to me, is far more interested in control within their "walled garden" of products. The surest way to do that is to put development capabilities beyond the reach of most people.