Allan De Consta Pinto (Microsoft) @ DevCon5 NYC

Allen is a technical evangelist, he’s here to talk about building native Windows 8 Apps with HTML. He emphasizes that Windows 8 makes Touch and the Windows Store first-class citizens.

Nice detail: you can set up a visual gesture password by picking regions in a photo. In his case, he presses his son’s nose, then his daughter’s nose, then draws a line between them. Slick.

Using their WinJS library, you can get access to all the Metro styled controls and widgets. Using the Windows JS library, you get access to all the Windows device API’s.

Posted in HTML5, Trip Reports, Uncategorized | Leave a comment

Caridy Patino @ DevCon5 NYC

Caridy describes how Yahoo! built Axis on three different platforms using Mojito. He talked a lot about lessons learned while building a complex UX on iOS, Android, and Chrome desktop.

  • Build mobile products atop platforms designed for mobile products, lest you inherit a lot of technical debt
  • No such thing as “write once, run everywhere.” Axis has 547 different mockups
  • Abstract communication when possible
  • Try to reduce fragmentation
  • Refreshing WebViews (HTML parts) can be painful; usually, refresh when returning from background is enough for most cases
  • It is very difficult to experiment in iOS and Android because it’s hard to do A/B testing
  • Expect network craziness
  • WebViews are not first class citizens in iOS

Axis has to solve this question — how do you produce the right HTML, JS, CS per runtime and per request? To solve it, sometimes JS runs in browser, sometimes on server. Other times there are “Native Bridges” for iOS and Android.

Adaptation in Mojito reacts to screen size, connection speed, feature detection, and so forth. YUI helps considerably with such adaptation.


  • Mojito: a Javascript application framework using YUI and Node.js
  • Shaker: a static asset rollup tool
  • Mojit: a sub-application
  • Cocktails: platform that includes Mojito
Posted in HTML5, Trip Reports, Uncategorized | Leave a comment

Tyler Smith (AppMobi) @ DevCon5 NYC

Tyler Smith talks about how to make great cross-platform games with HTML5

* Research and choose an HTML5 game engine (see bebraw’s excellent list at github) based on features you need, size, cost, and mobile compatibility. Beware of open source projects that aren’t being maintained or don’t have active user communities. Consider:

  • Does it scale for screen resolutions?
  • Does it support touch inputs?
  • Does it pre-render?

* For mobile, you have to pre-render tile backgrounds, conserve Canvas drawing calls, and make small binaries for sounds and images.

* Be prepared for radically different screen rations (4:3 iPad, 7:4 some Android, 3:2 iPhone)

Posted in HTML5, Trip Reports, Uncategorized | Leave a comment

David Kaneda @ DevCon5 NYC

David Kaneda is talking at DevCon5 NYC talking about cross-device development:

* You only get access to four touch events on most devices right now. See Boris Smus’s pointer.js as a nice abstraction layer. Enhance your hit radius for touch to make it easier to touch your target.

* Scrolling is really hard. You need a library like Swipe.js or iScroll to give you the momentum and friction physics that you get on iPhone. Of course, David thinks Sencha Touch is the best; he’s biased, since he spent months working on scrolling as part of the Sencha team. (Note: unfortunately, Sencha doesn’t support Gecko).

* Beware of measuring distances in pixels. Retina displays automagically compensate when you use pixel units in CSS, Android does not.

* Read the user interface guidelines for iOS, Windows Metro, Android. For example, iOS uses Sheets where Android uses Overlays. Standard icons for stuff like Reply, Trash, Bookmarks, Back are all different. Try to follow the platform-specific conventions (i. e., don’t be a tourist) and leverage the universal stuff.

* Buy some devices! Hold onto your old phones, use them for testing. Don’t upgrade the iOS on your old phones, it’s hard to go back. Buy old phones from your friends. Pay to attend Google I/O.

* Lots of mobile interfaces are heading towards type-based minimalist interfaces while iOS becomes elaborate and skeuomorphic. For example, the iOS Address Book interface makes non-geek users comfortable right away. The minimalist interfaces seem like they’ll be a lot more portable, but for complex desktop Apps it may not scale up to having toolbars with 40 icons.

* Use CSS to give yourself various fallback positions for fonts, backgrounds [but beware the performance hit of fancy CSS].

* Sometimes, you just have to use User Agent detection (followed by tagging DOM with platform-based classes and then fixing it all in CSS).

Posted in HTML5, Trip Reports | Leave a comment

Greetings from DevCon5 NYC

Greetings from DevCon5 NYC. Our morning starts with Peter Lubbers giving an HTML5 overview. He’s reminding us about some important fundamentals:

* Web Origins (see RFC 6454) are everywhere. You need to understand not only how they regulate JavaScript execution, XMLHttpRequests, LocalStorage. Be sure to understand and specify Cross-Origin Resource Sharing (CORS) policy.

* Investigate Web Intents as a way to better integrate Apps and avoid clunky workflows and/or reimplementations. (note: more standardization is needed here)

* Learn about real-time connectivity options, including cross-document messaging using postMessage, XMLHttpRequest level 2, Server-sent Events, WebSockets, and even WebRTC.

* Learn about browser compatibility at,, and at MDN

* Be inspired by great demos of WebSockets, WebGL at

Posted in HTML5, Trip Reports | Leave a comment

Jeff Atwood’s PHP Singularity

I recommend this great essay by Jeff Atwood about the horribleness of PHP and what to do about it.

I first encountered PHP when I did the second implementation of, my website for birding field notes and photos. I did the first version entirely in XML and XSLT. It was a contrarian choice for building an entire website, but it did force me to learn XSLT well enough to be the go-to guy at work for XSLT questions.

Compared to XSLT, writing in PHP was a dream — so fluid, so much ongoing feedback. Problem was, I looked up a year or two later and found SQL queries right smack in the middle of my presentation logic. Blech!

Eventually, I jettisoned PHP and started again. Version three of is in Ruby on Rails, and it’s good enough that I feel comfortable open sourcing it. Jeff calls on us to “build compelling alternatives [to PHP] and make sure these alternatives are equally pervasive, as easy to set up and use as possible.” I’m currently thinking Ruby on Rails is one of those, but ask me again in another year when I’m due to throw the whole thing out and start over again. 🙂

Posted in Uncategorized | Leave a comment

John Lilly – Lessons From Mozilla: WordCamp San Francisco 2009

I know I’m a bit late to the party, but I just watched this:

John Lilly – Lessons From Mozilla: WordCamp San Francisco 2009.

John lays out the state of the world from the Mozilla point of view back in 2009 with his usual clarity and humor. Highly recommended.

Posted in HTML5, Mozilla | Leave a comment