About a year ago a programmer friend of mine gave me a Flex3 demo, and as soon as I saw Flex I was hooked. This was an about-face for me — previously I'd never much liked web apps, at least not those based on HTML and a bit of Javascript. After years of developing desktop apps I found HTML-based apps too limiting: less functionality, less satisfying user experience, and generally less fun to develop.
Still, it was obvious that browser-based apps were a great idea (central codebase, no deployment issues, access from everywhere, etc.) and it was just a question of when they'd mature into something better.
The "when" almost arrived for me with Ajax. Ajax was clearly a big step forward, though far from perfect. But the timing was off — around the time I was first aware of Ajax I was already heading into a three year sabattical of writing fiction (see My background for more on that little detour). In the end this delay was for the best, because now as I return to the appdev world RIAs like Flex have matured into serious browser-based app development environments.
As I mentioned above, when I first saw a Flex demo it was a revelation. And when I downloaded the trial version and began playing with it I just kept liking it more and more — Flex creates browser-based apps with incredible, seamless functionality; AS3 is object-oriented and mostly makes sense, as does MXML; it's open source with a large community of generous developers freely sharing code (Flexlib is a great example); it has a sibling, AIR, for creation of desktop apps with almost the same codebase as a Flex app; it has a solid market share; and it's fast and fun to work with.
So, after a quick look at other RIA options (Silverlight, version 3 at the time, was still a bit too rough, and JavaFX was even worse) I took the Flex plunge. I've taken this past year to come up to speed on Flex and haven't regretted my choice.
UPDATE: Summer 2011
While HTML 5 might in the future make Flash development less attractive (because HTML5 features like Canvas begin to encroach on Flash territory) I think Flex and AIR have only grown more attractive, largely because of the proliferation of mobile and tablet devices — Flex/AIR let you create native apps that run on a variety of OS's and devices and can do this with lots of code reuse (here is a good devnet article on this). The Flex 4 skinning model also facilitates this, letting you create components with different "faces" for different physical screen sizes and pixel densities.This cross-platform/cross-device capability becomes more valuable as the variety of devices just keeps growing, with Blackberry Playbook about to be released and many Android tablets coming over the summer. I purchased a Motorola Xoom recently just so I can play with Honeycomb, and I've already developed Gingerbread apps for my Droid X. All great stuff, and a great time to be an application developer!
About
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