The massive growth of mobile computation presents software developers with some pretty amazing opportunities, but also significant challenges.