jsEverywhere: End-to-End W3C APIs by Alexandre Morgaut

Alexandre is giving a great overview of the history of JavaScript, popular API’s, and the role of W3C and other standards bodies. He gives a shoutout to Kevin Dangoor for CommonJS, then proposes the idea that remote CommonJS processes can be thought of as remote Web Workers. Wakanda makes big use of CommonJS.

Posted in HTML5, Trip Reports | Leave a comment

jsEverywhere: Single Page Applications, Josh Powell

Josh Powell is giving a great talk about how to make single page web applications with JavaScript. The main focus is on how to break free of the web 1.0 tyranny of doing a page load for every new piece of content. He says his big AHA moment was to hang a handler off the jQuery hashchange() function; this lets you put a router on your client side; you can show different content based on the value after the hash without page loads, and your browser history buttons will work properly. Cool stuff.

Posted in HTML5, Trip Reports | Leave a comment

Firefox Aurora Marketplace for Android available now

Earlier this month, Mozilla announced the Firefox Aurora Marketplace release. We’re hoping that Aurora users, our awesome early adopters, will go experience the Firefox Marketplace on their Android phones and let us know what they think.

Our goal is to collect as much real-life feedback as possible about the Marketplace’s design, usability, performance, reliability, and content. Feedback from early adopters helps us enhance the quality of the Marketplace before it is released to larger audiences.

The developers we’ve talked to so far are excited to be listed in the Firefox Marketplace when it opens. They’re creating great app experiences with the Web technologies they’ve already mastered. They’re getting timely and thoughtful critiques from our Marketplace app reviewers.

In addition to being a cool site, Firefox Marketplace also offers APIs for app submission, payments, and app discovery. Like everything Mozilla does, this ecosystem is always open — users have choices and developers have control over their content, functionality and distribution.

The Mozilla Developer Network (MDN) and the DevHub contain extensive documentation, FAQs and emulation tools to help you get started building your App.

We need your feedback, and we need your Apps! Get Firefox Aurora for Android, learn about the Marketplace, and post your Apps to the Firefox Marketplace.

keep rockin’ the free web,

Posted in HTML5, Mozilla | Tagged | Leave a comment

David Kaneda and Josh Clark @ DevCon5 NYC

This session has David and Josh riffing about designing for mobile.

Device context is different from User Context. Just because you know they have a small screen, you don’t know whether they’re focused or distracted, having a short or a long interaction.

Omitting content from the mobile version of your site is like an author looking at the paperback edition of their book and saying, “it’s smaller, I should leave out some chapters” — Josh Clark

Example: alibris.com omits their key differentiator, Rare Books, from their mobile site. Are we really sure people don’t want to buy rare books from their phone? 28% of mobile web users only surf from their phone. Phones are peers to our other devices, not just little siblings.

Example: The original Bank of America app showed you your balance and had a logout button. That was it.

Touch is only the current thing we want to figure out. Coming next are speech recognition, gesture recognition. Note: speech plus gesture recognition equals Harry Potter territory!

Posted in HTML5, Trip Reports | Leave a comment

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 caniuse.com, mobilehtml5.org, and at MDN

* Be inspired by great demos of WebSockets, WebGL at http://kaazing.com/demos

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 birdwalker.com, 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 birdwalker.com 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 birdwalker.com 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