Last week, mobile developers from all over the world gathered in Portland, Oregon for PhoneGap Day (US). Both the workshop day on Thursday as well as the event on Friday were crammed full of great content, exciting news (PhoneGap 3.0, for starters), and – most importantly – passionate developers learning, laughing and talking together. Going to an event like PhoneGap Day is a fantastic way to get real, in-the-trenches feedback from developers on their workflow, the problems they face and how they solve them. Here are some of the notable highlights:
I attended the PhoneGap Essentials workshop on Thursday. Andy Trice got us started, covering (among other things) what PhoneGap is, the PhoneGap CLI, running your hybrid app on an Android device (from Eclipse), debugging your app and more. Andy's material is always good. The things that stuck out to me from his workshop:
Andy also spent some time discussing libraries/frameworks that can be helpful when writing hybrid apps. I really appreciated his wisdom in emphasizing that there's no "one-size-fits-all" solution – you have to evaluate the trade-offs you're making when you choose a framework. I was also excited to see Kendo UI mentioned in the list of libraries he said could be helpful. Some of the other libraries he mentioned included a few I haven't had a chance to checkout, but these are on my shortlist to evaluate now:
After Andy's Session, Christophe Coenraets gave what I think is one of the best sessions I've seen in guiding the audience through the evolution of mobile application architecture. He started from the all-too-often structure-less approach, and moving it one step at a time towards taking advantage of great libaries and patterns. As he moved through the changes to his example application, he emphasized 11 principles he's found to be helpful.
One very important piece of wisdom he emphasized is this: don't choose a huge opinionated framework just because it provides the transitions/animations you need! Those things can be accomplished with smaller libraries, or custom CSS - your application's performance (and its users) will thank you for it.
The final workshop I sat in on Thursday was led by Holly Schinsky. Holly has some of the best content I've seen for creating custom plugins, as well as using push notifications. In case you're new to custom plugins, writing one is the way you can expose native APIs to the webview in which your hybrid mobile application runs. Holly did a great job demystifying this subject - I highly recommend reading her blog tutorial and going through the sample code she provides.
The sessions were all so well done, it's hard to pick favorites. That being said, the ones I remember the most from were given by Simon Macdonald, Andy Trice, Michael Brooks and Lyza Danger Gardner (best name ever, btw). Simon wins the award for the coolest demo of the day - he presented on writing custom plugins for speech recognition on Android. Andy demonstrated how your hybrid apps can integrate with external hardware. He showed both an external pressure sensitive stylus as well as a wireless game controller - both interacting with different PhoneGap applications. When I asked him how long it took him to write the plugin for the stylus, he said roughly 2 hours. (If you're not already inspired to go write some custom plugins, go read Holly's blog and then get started!). Michael covered the PhoneGap command line interface. I had a chance to chat with him afterwards about the Apache Cordova and PhoneGap CLIs. He's really put a lot of work into both, and if you're doing any hybrid development, you will benefit greatly from exploring both! True to the spirit and philosophy of Apache Cordova + PhoneGap, the PhoneGap CLI – as Michael explained – is a wrapper around the Apache Cordova CLI, adding PhoneGap/Build-specific features. Lyza's talk was a virtual gold mine of the best advice I've heard to web developers looking to leverage their skills in hybrid mobile development. Chris Hughes, as nearly anyone who attended would agree, had a rather memorable session as well. Between coining a couple of the event hashtags, and falling off the stage (and recovering humorously), Chris discussed writing software that interacts with the physical world. Home automation, sensors, robotics - you name it, it's easily possible to make these things work with hybrid mobile apps. Andy had already shown how simple it was to write native plugins to do so, Chris showed some of the possible next steps.
The PhoneGap Day will be posting the videos from the event soon, and when they do, we'll update this blog with the link(s). It's definitely worth watching!
We are committed to making version 3.0 of Apache Cordova available in Icenium as soon as possible. From an API standpoint, we already have support for the new APIs (InAppBrowser and Globalization). The transition will be fairly seamless, since it will simply involve changing the Cordova version of your project to 3.0 once it's available. Icenium already supports custom Cordova plugins, and we intend to make that support even better as we add version 3.0 to the platform. We're excited about what the Apache Cordova team has accomplished - the future for hybrid mobile got even brighter with this release.
I couldn't possibly cover everyone I met at the event, but I do want give some kudos to the following individuals, all of whom were wonderful in person, inspiring to talk to, and people you should be following on twitter if you're writing mobile apps!
I could keep going - the people were fantastic all around! If you find yourself in Portland, I highly recommend one of these bacon maple bars (from Voodoo Doughnut). As Simon said, eating one of these will transport you several minutes into the future:
While it might be obvious already, the opportune time to find yourself in Portland will be this time next year at PhoneGay Day 2014!
Jim Cowart is an architect, developer, open source author, and overall web/hybrid mobile development geek. He is an active speaker and writer, with a passion for elevating developer knowledge of patterns and helpful frameworks.