An interesting paradigm has happened at my company, Figaro Interactive. Initially, 2 years ago, we made our names building Rich Internet Applications using Adobe Flex. Flex allowed us to kick out some pretty cool projects:
- An ecommerce management system that manages a vehicle tree that allows over 50,000 products to be related to any car make, model or year and automatically updates 11 unique sites with the product relationships.
- A custom diploma frame builder (still in action at USADiplomaFrames.com)
- We even started a wiki/news aggro site devoted Action Script 3 gaming - and we began developing a 3D game engine for a passion project of ours that we will find time to finish one day.
Our mantra has always been to try to work bleeding edge technology into our client work… whenever it makes sense. Think of it like how the Beatles used to go about writing songs - Lennon would learn a new chord on the guitar and force himself to explore it, eventually leading him to wonderful songs… The problem is that using Flex has stopped making a lot of sense on almost every project we run in to.
Initially, Flex/Flash appealed to us because of several key benefits:
- Cross-browser compatibility
- Cool factor
- Speed of development
- Ubiquity of it’s runtime
The real world kicked in after a few major projects in Flex. Cross-browser compatibility bit us in the butt a couple of times (mainly with file upload dialogs). Speed of development is not really all that true - it’s a ponzi scheme - you lose any speed of development you gain when you have to recompile your app time and time again in the iterative phase near the end of a project. The runtime is widely adopted, but it is still a plugin and to really take advantage of Flex you need to make sure that a user is using a pretty up to date version of the Flash Player. So, all that’s really left is the “Cool Factor” and that really isn’t enough to justify Flex for a mission critical client app.
So, what have we moved to? Well - our complete stack is CakePHP, jQuery and Yahoo’s User Interface library. We moved to CakePHP as a way of standardizing our development process so that we could focus more on making cool apps than all of the mind-numbing stuff that you have to deal with outside of a solid framework. YUI allows us to have cross-browser compatible markup and CSS. We now rely on jQuery for all of the cool stuff. The best part about using jQuery is its extensibility - there’s a huge community out there that have released some very useful plugins for jQuery and that cuts development time drastically. Plus - we’ve found that jQuery is actually more cross-browser compatible than Flash just because of the sheer number of people using it and developing with it. If someone spots a bug in jQuery, it’s much easier to fix generally because you can dive right in to the source and fix it or extend it…
So - here are some of the jQuery plugins that we’re growing fond of: