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:
- Desktop Browsers (especially Chrome) are the most valuable tool in debugging hybrid apps (I completely agree!)
- He 'guestimated' you'll spend roughly 95% of your time debugging in a desktop browser, and 5% on-device. This tracks with my experiences as well. On-device debugging is extremely painful. Weinre, while better than nothing, is buggy (at best). Apple has improved things with remote debugging iOS 6+ devices, and we can only hope that one day Google will enable this for Android devices.
- Andy said he tends to build for iOS 6 first, and submit to the app store before he moves to supporting other platforms. In his experience, the amount of time it takes Apple to approve the app is about what he needs to get the app running on the next platform.
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.
- Use a Single Page Application (SPA) architecture
- Use Templates
- Apply an MV* structure to separate concerns
- Modularize your app
- Consider Frameworks - but use them responsibly
- Abstract data access
- Abstract device features (keep your app browser-runnable)
- Handle Touch (he specifically mentioned fastclick - another lib on my short list to evaluate)
- Use Hardware Acceleration
- Hide HTML Behaviors
- Architect for Performance
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!
What About Cordova 3.0 and Icenium?
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.
People and Portland
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!
| ||Simon is the unoffocial ambassador for Portland. Without him, several of us would have been late (or lost) to everything! Simon is an Apache Cordova/PhoneGap contributor, custom plugin author, a wealth of great book recommendations and probably the best Galaga player I've met. |
| ||If you know much about Cordova/PhoneGap, Brian probably needs no introduction. We owe Brian a continual supply of thanks (I hear he'll take beers as an expression of said thanks) for his work on Cordova/PhoneGap. Open source cultures are always infused with the "personality DNA" of those responsible (in part or in whole) for its creation. The Cordova/PhoneGap community is fortunate to have people like Brian in those shoes. |
| ||I did the super awkward thing and introduced myself to Colene when we happened into the same elevator. (Elevator introductions always remind me of this.) From what Brian told me, PhoneGap Day would have been nothing without Colene (and others, of course) working so hard to make it happen. After how well things went, I think she should feel like this. |
| ||I've interacted with Burin online quite a bit since he reached out a couple of years ago to ask some questions about machina.js. Burin is part of the team behind [TripCase]() - a quite useful hybrid mobile application for travelers. Burin was every bit as intelligent and friendly in person as I'd expected. |
| ||Aside from having one of the coolest hoodies known to man (on left, in pic) - Tommy is very active in the Freenode PhoneGap IRC channel (where I first ran into him), and a great source of knowledge in general about building performant hybrid mobile applications. I'm always impressed when I meet someone and immediately feel welcomed - Tommy has that knack. |
| ||When I grow up, I want to be Andy. Talented in design and development, interfacing external hardware with mobile apps, a surfer, and a quadcopter pilot. Seriously - epic. |
| ||Aside from making the most amazing dinner recommendation I've ever experienced, I learned a *ton* from Marcel about IBM's involvement with Apache Cordova. |
| ||Michael's involvement with Cordova/PhoneGap goes all the way back to the beginning (at Nitobi). His efforts on Cordova and PhoneGap CLI projects have been amazing. He also captured a nice pic from his session. |
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!