Mobile Ramblings

min read

Market research firm IDC's predictions for 2011 say that app-capable non-PC devices will out-ship PCs within 18 months. IDC's conclusion: this is the end of the personal computer era.1 Maybe they're right. But I hope it's not also the end of the tinkerable computing era.

Can Mobile Computing Be Tinkerable?

Personal computing was breathtaking when it appeared in the 1980s, bringing unprecedented opportunities for people to experience computing and learn about it. It gave you a way to tinker with an amazing invention and to learn that you, yourself, could be creative in the world of information technology. The leaders who built the information economy of the past three decades are the teenagers who cut their teeth as innovators by playing with those early personal computers.

In contrast, mobile computing is emerging as a collection of consumer products implemented on closed platforms that provide few opportunities for non-professionals to tinker. Today's catchphrase might be "there's an app for that," but few of us get make our own apps. That's not fertile ground for growing the IT innovators of tomorrow. As tech author/entrepreneur Alex Payne blogged when the iPad was introduced, "If I had an iPad rather than a real computer as a kid, I'd never be a programmer today."2

With all respect for the importance of a major consumer industry, many more people should be able to tinker with mobile applications. Computing education should include building mobile applications, not only in college, but in high school and middle school. To do that requires making it a lot easier to create mobile apps. And that's starting to happen.

App Inventor for Android

I spent last year as a visiting faculty member at Google Research, part of a team developing App Inventor for Android. Google raised eyebrows in 2008 when it released Android as an open platform, so Android partners and developers could modify the code and customize their offerings. App Inventor goes further by opening up Android intellectually: to kids, to budding developers, to educators, to amateurs with the next great idea, and to anyone who'd like to shape mobile computing in a way that's personally meaningful.

Google's been making App Inventor freely available since December, on the Web at appinventor.googlelabs.com, and people of all ages and backgrounds are playing with the current beta release. Here are some of the apps they're making:

  • Educational picture games for their toddlers
  • A room locator for their university
  • An app distributed by their church that lets people send in prayer requests
  • A guide to crane operator hand signals in English and Spanish
  • A safety device for rock-climbing teams that sends alerts if the team leader slips
  • A clock for people whose electricity rate varies during the day that shows the current rate along with the time
  • A mobile controller for a LEGO robot
  • A Whac-A-Mole game where the mole looks like your little brother
  • A pharmacist-made special-purpose calculator for choosing the right dosage of medication based on lab data
  • A prosthetic made by someone who is hard of hearing to show him phrases he has trouble understanding in spoken conversation
  • A quiz app created by someone who proposed to his fiancée by giving her the app disguised as a Harry Potter film promo, where the final quiz question — "Will you marry me?" — asked to her to press a button to send a text message reply (she said yes)3

In other words, people are making all sorts of apps that they find fun or useful, expressing their creativity through the medium of mobile computing.

Building Blocks for Mobile Apps

App Inventor has two main ways of making it easier to create apps:

  • First, you build apps by piecing together components. Components encapsulate the phone's capabilities and provide high-level command interfaces to them. Some components are simple. Others are more elaborate, like a location sensor you can query to find the closest street address, or an accelerometer sensor that triggers when the phone shakes, or an SMS component that sends and receives text messages.
  • Second, you program using drag-and-drop blocks that you fit together like puzzle pieces to specify behaviors for the components. The blocks interface is similar to what's used in the Scratch programming environment. The blocks system for Scratch and App Inventor both descend from the same MIT sources.4

Figure 1 shows an example of App Inventor blocks. The blocks say:

When a text message is received from a given number, send text back saying "Please don't text me now, I'm driving" and also play the received message through the phone's speech synthesizer.

With just a few blocks, you have an application that you can install on your phone.

Abelson Figure 1

Figure 1. App Inventor Blocks for the Don't-Text-Me App

Building Mobile Apps as an Introduction to Computing

The don't-text-me application was created by a student for a class project in an introduction to computing course at the University of San Francisco, one of several pilot courses that Google sponsored while App Inventor was being developed. The student had no previous programming experience, but he was still able to create something useful and elegant.

Experiences like this with App Inventor suggest that programming mobile applications could be a powerful way for students to learn to program. More than that, it suggests that ideas about mobility could radically transform introductory computing because in building mobile apps, it's not just that kids are programming — it's what they're programming.

Let's face it, most of what we teach in introductory computing would be right at home in the 1980s world of the PC, where computing was something that happened on a computer display screen, removed from everyday life. The experience of computing today is fundamentally different. We carry powerful computers in our pockets, our social networks and interactions are increasingly computer-mediated, and online and offline life are increasingly fused. That's the world that young people need to understand, and that's the technology with which they should be empowered.

One of my favorite App Inventor examples comes from an introductory computer appreciation course at Wellesley (one of the Google-sponsored pilots). The instructors, Takis Metaxas and Eni Mustafaraj, had the idea that students should learn about the societal implications of information systems by building some of these systems and seeing first-hand the choices involved. In one example, the class created a polling application. As people walked around the Wellesley campus, they could pull out their phones and see that there was a new poll — for example, "Who is your favorite female singer?" — and select and send their responses, which were recorded by a web server.

At the next class, Eni pulled up the web page and showed the results. Then she pulled up the database and said, "and here's how you all voted." The students were startled. In the "private" experience of using their phones to answer a poll, they'd simply not appreciated that:

  • The polling system could keep track of their identities along with their votes.
  • This was a choice made by the system designer.
  • They could experiment with that choice implementing their own variations of the polling system.

As a topic for introductory computing, this goes beyond the issues involved in learning about programming or computational thinking. It gives students direct experience with a technology — online polling — that has major social impact and lets them look through the eyes of the system implementer. By creating their own variations, students explore the design choices and grapple with the implications, social as well as technical. The next time these students encounter polling systems or proposals for electronic voting, they'll be asking some good questions as informed citizens.

Who's in Control?

Maybe 2011 really is the end of the PC era. Whether that's true or not, we're in an era where our personal experience is increasingly linked to mobile computing and where control over personal computing can increasingly mean control over people's lives. So let's make 2011 the year to empower ordinary people to experience mobile technology as creators, not just consumers. Let's work to make mobile computing not just a powerful technology but also a democratized technology. Can we build an app for that?

More Information on App Inventor

To learn more about Google App Inventor for Android, visit the web site at http://appinventor.googlelabs.com.

See also:

App Inventor: Create Your Own Android Apps byDavid Wolber, Hal Abelson, Ellen Spertus, and Liz Looney (Sebastopol, CA: O'Reilly Media, April 2011).

Google App Inventor for Android by Jason Tyler(Hoboken, NJ: John Wiley and Sons, April 2011).

Android Apps — Programming for Beginners: Developing Mobile Applications with App Inventor by Joerg Kloss (Markt und Technik, April 2011); actual title in German: Android-Apps — Programmierung für Einsteiger: Mobile Anwendungen entwickeln mit App Inventor.

Endnotes
  1. "IDC Predicts Cloud Services, Mobile Computing, and Social Networking to Mature and Coalesce in 2011, Creating a New Mainstream for the IT Industry," December 2, 2010.
  2. Alex Payne, "On the iPad," January 28, 2010.
  3. Igor Lansorena, "Man Proposes Using Harry Potter App Created with Google Inventor," EITB.com News, January 26, 2011.
  4. For a summary, see Ricarose Roque, "OpenBlocks: An Extendable Framework for Graphical Block Programming Systems,"Master's Thesis, Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2007.