A Classical design-flaw

Image Courtesy: businessdirect
I hear people talk about design and architecture and when we look at the code some of them write, find that they end up implementing all the possible anti-patterns. Recently, we found an issue with one of our single page, large-javascript-webapp. This app works just fine in all browsers. However, when it comes to IE 9, it does not load the page. Developer thought something was quirky with the javascript and opened the IE Developer Tools. Alas! the app loaded just fine. 

How does simply opening the Developer Tools make the web app load? As it turned out, the javascript had one console.log statements added by the developer for debugging. Apparently in IE 9, the app containing any console.log statements in javascript does not load unless you open the Developer Tools.

Here's where you find a classical design or architectural flaw. Why would anyone with the right frame of mind couple a web page loading with its presence of developer tool loaded? It appears that whenever IE's Javascript engine loads the page and encounters a console.* statement, it looks for a place to find the console object. In IE, this console object is part of the Developer Tools and hence, it waits until the Developer Tools is loaded to process the console.* statements. 

What should have been the ideal behavior? You may have guesses it right by now. IE should have continued to load the page irrespective of whether console object is available or not. I particularly liked the fact that our web page looked a lot nicer on IE 9, but then these silly niggles are really a dampener. Mr. Nadella, ping, ping...! 

Is Java Server Faces dying?

Image Credit: Wiki
In 2005, I blogged about world wide web moving to Client UI Architecture. It was those initial days when as a developer I was beginning to like JSF. Over the last 9 years, I've spent majority of my engineering days working on JSF and the various metaphors of it (you name it). Today, I'm seeing a steep decline in the JSF adoption. Why, do you ask?

For one, Web Client Architecture itself is nearing its half-life. Mobile-first strategy is ruling the next-gen and the majority of CXOs surveyed sees it as the next big wave. Within the Web Client Applications itself, HTML 5 / CSS 3 and JS based apps have long-started to dominate the proceedings. And then, there are emerging technologies like node.js which changes the whole development paradigm. Then, who do you expect to learn and use JSF?

To see the transition in action, look at the home page of Exadel for example. You won't find the reference to our once favorite Richfaces anywhere. Check out ICESoft homepage; ICEmobile is up there although they still have some decent references to ICEfaces. Or check out this comparison of the available web frameworks; JSF 2 fares lowest among the frameworks evaluated.

I would sincerely wish to be proved wrong on this one. Anyone?