Wednesday, October 17, 2012

HTML5 Dev Conference Trip Report

The last two days i attended the HTML5 conference at the Palace Hotel in San Francisco, and I thought I'd share some of my takeaways.


I took notes at the sessions I went to and put them into an Evernote notebook, published here:


Here are the major themes I saw out of the conference:

- Web development continues to be way harder than it should be.  Lots of discussions on improving productivity, tooling, testing, etc.  Stacks and stacks of APIs and libraries and tools and it keeps churning.  It's amazing how complex this world continues to be, having cut my teeth on very simple MVC thick client environments in the old days of client/server.

One tool that looks to have the right approach to improving web development is AngularJS.  They understand the value of declarative, they understand the old thick client architectures that have worked so well: MVC, data binding, dependency injection, etc.  Looks very promising.

I also really liked the tooling I saw where in one window you are editing source, and *as you type*, the browser is highlighting the section you're editing and refreshing itself as you change data, behavior and styling.  It's seriously close to WYSWYG development.  I don't quite know how it works, but it's awesome.  Generally called "Live Editing".  Check it out.

- HTML5 is going through growing pains.  There was a good talk by someone from Mozilla about where HTML5 is and where it should go.  He was good at identifying issues, not so good at identifying solutions.  I loved his one example API, there is a method "canPlayType(mediaType)" which returns null, "probably" or "maybe". :)  See my notes on "HTML5 Broken Promises"

Another good point he made here is, you need to design systems that degrade gracefully when certain HTML5 features are missing.  This is an aspect of responsive design (see below).  One quote he had which made me laugh: "The way you tell something is HTML5 is, if you run it on IE and it doesn't work, it's HTML5".  He used the example of an escalator vs. an elevator.  If an escalator stops working, it's still functional as a set of stairs.  A broken elevator is just a small hot room that doesn't make any sense.  So he was encouraging us to build escalators, not elevators.

- In a caching talk, a reminder to be explicit with caching directives using cache control headers.  Caching has the biggest impact on performance, over network speed and Javascript interpreter.  50% of the top 200 sites don't use cache control headers.  Another interesting point - a large percentage of users come in with a completely cold cache.  Reason suspected: cache corruption or other bad behavior forces them to regularly clear their cache.

- EVERYONE is getting impacted by mobile.  There were very interesting sessions on how to work with multitouch, and a general buzz was that "responsive design" was the New Thing - basically your app adjusts elegantly to the screen constraints of the current device.  

One thing I thought was very interesting were the new Windows 8 devices which are many creative combinations of desktops and large multitouch devices.  The important takeaway: right now we usually check to see if a device is multitouch or pointer, but that's no longer valid - devices can be both; you can even have mouse events and touch events happening at the same time, and have it mean something.   Microsoft is proposing a standard event API/model for multi-touch that looks pretty good.

- Lots of demoing of rich media experiences, including capturing media sources from the person's machine and integrating it into your web app.  I think this is probably because it demos so well; not clear of the usefulness.  Two examples: capture your camera, and when you swipe your hand, you go back and forth in pages in a document/book.  Really nice for dirty hand work with tablets.  Another example: capture your camera, and it detects your fingers, and use your fingers to play a xylophone.  But these are just "cool demos"  The question is, how might we use these kinds of ideas to improve engagement with your site.   Hm...

Cheers,

David