Wednesday, July 26, 2006

My blog was moved to . Sorry for inconvenience Anatole

Thursday, February 02, 2006

Tracing Flex/Flash Applications This is handy tracing panel we are using to output debugging and other info in our Flex applications It uses the same idea as, but display module is replaced with native .NET application giving you better performance. Enjoy

Monday, December 26, 2005

Problems with AJAX I was presenting AJAX and Flex few weeks ago and was asked to talk about the problems with those environments over regular "selling pitch" you can find everywhere these days. I was quick to name few most important ones (applicable for mature AJAX applications): 1. 5 years of missed development of browser as platform left AJAX with very immature programming model - whatever was available in 1999 browsers (HTC in IE and XBL in Mozilla) has gradually became unsupported and moved out of focus. Pure JavaScript with no syntax validation, reparsing on every page reload and bad missing debuggers are not suitable for regular application developers. 2. There is no inherent robustness in the browser / HTTP protocol. For applications additional robust protocol built on top of HTTP is required. Nobody ever knows if any external file (JavaScript or html ) is loaded - no notifications, etc. You can somehow try to build control - however there is no guarantee that even your controlling code will be loaded. 3. No support for "local" functions - printing and applications interoperability being the most obvious - always required for any sizable application 4. Amount of code needed to make application platform (ie all controls like grids, edit masks, etc) - tens thousand lines for rich UI - does not lend itself easily to platform that has to reparse code on each page reload. 5. Incompatibilities between different versions of browser require you to code and test 3 completely different codebases for rich applications. The list goes on and on - after working on "AJAX" applications for the last 6 years in all kinds of environments it is almost inconceivable for new generation of true applications to be "AJAX". It seems more of political promotion over substance - the thing that triggered AJAX adoption - HTTPRequest in Mozilla - has been available in IE for the last 7 years - with overall market penetration of 96% and 100% availability in the corporate application space. Also, supporting rich application on more then 1 browser is the most damning decision you can have. Do not get me wrong - I was very enthusiastic about AJAX capabilities of the browser in 1999. I understand perfectly how much better this approach is over regular web "application". But I also know from experience what comes next. The users become aware of the differnce. They want AJAX to work like a C++/PowerBuilder/VB application. They want rich controls, tabs, printing - and above all instant response. Web application that refreshes pages in less then 5 seconds is considered (and feels because of our "training") fast these days. AJAX application that does not respond in 1 second seems slow as it gives perception of native app. I was asked to implement AJAX applications with response time better then native ones. Interetingly enough, it is not a technical problem. But in order to make it possible I had to convince the clients to place one single activeX on their users machines. From that point most of the issues above - precompilation of JavaScript, reliable protocol, printing, client-side object caching - are solvable. You can have Internet application that performs and looks like native ones - with minimal security risk. And yes, Microsoft had all these technologies 5 years ago. After talking to number of people over the last 2 years I do not think it will happen. Mozilla is gaining popularity and Microsoft did as much to kill IE as they did to kill MS-DOS - allowing Linux to fulfill the niche of small reliable OS. So, I think it is just fair that more and more AJAX companies are leaving AJAX space to big boys and moving to the next frontier. For me personally it became Macromedia Flex. The most standard activeX that runs in the browser it solves most of distribution, code compilation, rich components and compatibility issues. I am looking forward to contributing to that platform to make the rest of the solution available to general public.