Jonathan began with an overview of the current mobile landscape. In a nutshell it’s a minefield of platform fragmentation and device fragmentation.
“‘It’s brutal to develop natively across platforms”
So what to do? Well, we then looked at three approaches; native, web and hybrid. All have their advantages but hybrid looked the way to go for most mobile use cases. In Jonathan’s words the advantages are:
- Web files bundled in native executable
- Access to device APIs
- Sell in native app stores
- Not perfect, but pretty damn good
Next we looked at some useful guidelines for the mobile use case. A nice summation would be “Do one thing and do it well”.
We looked at various CSS3 features; advanced styling, transforms, transitions, animations etc. There’s a wealth of information out there on these so I won’t go into too much detail. Here are some interesting pointers:
- android requires text-shadow to have a blur value.
- box-shadow has performance issues, particularly on Blackberry (consider using media-query to turn off for Blackberry).
- border-image is particularly interesting, as it does away with sliding doors css.
- animations are hardware accelerated on iOS.
- be careful of z-index on transforms. By default on it stacks above static positioned elements.
- box-reflect works with form elements.
- box-shadow takes up space like borders.
- box-reflect works on <VIDEO> tag.
- Talk of hardware acceleration for animation in the next version of Android (Ice Cream Sandwich).
- using lots of CSS3 gradients, animations, box-shadow will cause performance issues, tread careful and test often.
I liked the look of CSS animations. I have some reservations of how manageable they will become on medium to large projects. Having written code based animation sequences in Flash
I know from experience it can get pretty complicated managing dependances and interactions. Using LESS
, or SASS
looks like an absolute must for using CSS animation on anything but the smallest projects.
Next up was looking at some of the useful offline features of HTML5. Namely; web storage, web SQL database and application cache. My personal favourite was web storage – it looked easy to use and very useful for state maintenance. Application cache also looked great but I can see huge problems debugging, even Jonathan struggled to demo it properly.
Phonegap, jQTouch and Sencha Touch
Here we looked at the various frameworks for building hybrid apps. Again there is a ton of info out there. Jonathan was obviously keen on jQTouch but I actually think Phonegap looked the more promising platform for development. It seemed to have a good balance between ease of use, learning curve and features. Sencha Touch looked really powerful, whilst jQTouch looked lightweight and quick to build with.
In the final part of the day Jonathan showed some great debugging tools. If you’ve ever had to debug mobile CSS you know what a pain it is to debug on the device itself. The stand out star for me was weinre
, a really fantastic tool for debugging mobile apps. The basic premise is it gives you access to the webkit inspector on your laptop which in turn is linked to the phone browser. It allows you to see exactly what is happening on the phone and allows live editing as well. Pretty amazing really.
Jonathan’s workshop has re-enforced my opinion that writing mobile apps for all formats is best done using HTML5 / CSS and JS. The key benefits are:
- write once*
- The skills are already available and less costly than hiring native specific developers
- one central code base
* They’ll always be some platform specific code needed.