I've been developing applications for twenty years yet I never was much attracted to browser-based applications. They were ok for simple things but they couldn't come close to delivering the functionality and UX of a desktop application. And for a long time web app developer tools seemed stuck in the stone age, crude and limited. Still, I liked the idea of browser-based applications — zero install, access from any device that has a browser, not tied to a specific OS, etc. — and I reckoned it was just a matter of time before web applications matured into something good. That time seemed to be arriving several years ago as Ajax and jQuery started to take off, but by then the timing was wrong for me — around that time I was heading into a multi-year fiction-writing sabattical (see My background for more on that).
Then a few years ago a programmer friend of mine gave me a demo of Flex, the Adobe product that let you create browser-based applications with tons of functionality and (here's the sweet spot) which provided consistent execution and appearance across all browsers and platforms. It could do this because Flex applications ran within Adobe's Flash player, which at the time was available everywhere, and which provided a consistent VM within very inconsistent browsers. Just for fun I began exploring Flex and soon I was hooked, even began thinking of getting back to coding. And then...
...and then Adobe killed Flex. Well, ok, they didn't kill it, they didn't actually strangle their baby, they just dropped it off at the Apache orphanage (more on this fiasco here). After a short period of mourning I looked around for something similar (Adobe's AIR wasn't an option, I'll never trust Adobe again) and that's when I gave JavaScript application development a second look.
And it turns out the JavaScript landscape had changed enormously. The past several years have brought dramatically faster JS engines, more consistency across browsers, more standardization in HTML, CSS and JS, and a wealth of great new tools and development frameworks. Browser-based applications were finally beginning to fulfill their promise of delivering desktop-like functionality across all platforms using the browser as the application VM. I not only had to change my opinion of web application development, in fact I found it the most interesting work out there right now (straight mobile app development is still too limiting and, worse, locked into a specific platform, while desktop applications miss the mobile boat). Sure there are quirks to JavaScript and still performance issues (mobile browsers) and you still get bitten by browser inconsistencies. But for me at least web application development is the most interesting work out there right now. IMO if you're a coder and you're looking to tackle the challenge of creating highly functional cross-platform, cross-device applications then the browser and JavaScript is the place to be.
JavaScript
JavaScript appdev primers
General JavaScript
SPA Demo Application
Backbone Demo Application
Recommended sites
- Addy Osmani's blog
- Derick Bailey's Backbone posts
- Murphey's JQuery Fundamentals (original)
- Crockford's JS videos
- MSDN Project Silk
Flex/AIR
Flex/AIR primers
- Primer on Flex/AIR Multiscreen Development
- Primer on Mobile App Development w/Flex 4.5
- Primer on Flex 3 Component Lifecycle
- Primer on Flexlib MDI
Flex demo apps
all require Flash Player!
AIR mobile dev
- AIR mobile dev Tips
- AIR and Android Back key
- AIR, StageWebView, displaying local content
- AIR for Android memory issue w/large images