Thursday, February 20, 2014

Making Technical Support Easy with Correct Browser Detection including IE11

In an ideal web application world, all your users are using the same version of the same web browser.  Unfortunately, this is not the case even in the corporate environment.  One of the most painful things to do is trying to diagnose browser specific issues and trying to determine the version of the browser that the user has.  Even if you tell your client that it is only guaranteed to work on a certain version, you still get someone using a different version.  So instead of constantly contacting the user or the IT department to determine their version, we decided to integrate browser detection logging into our iPhora logging process which tracks all user access and activities.  Therefore, when a user complains that they have an issue, we could easily look at the log and determine what browser and what version that they are using.  We incorporate that into the RESTful API to get an accurate return of browser info.

However, IE 11 as many knows does not return the correct information using dojo.isIE.  So I found in stackoverflow.com a function which I tested and works.  Now we can easily determine the browser correctly and diagnose the problem. Of course this will break in IE12.

function getInternetExplorerVersion()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  else if (navigator.appName == 'Netscape')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

Tuesday, February 11, 2014

Domino <===> Scott Adams

Again this year, I did not attend IBMConnect. Last year it was for personal reasons, this year it did not make sense given the direction that I see IBMConnect heading towards.  However, I really appreciated that IBM had a number of sessions live and recorded on Livestream for me to watch.  What I really miss is not the sessions, but seeing the people within our community. But that is OK since I will most likely see them at ICON and MWLUG. And I always have Twitter.  The most compelling session for me was the OGS with Scott Adams.  To me what Scott Adams said about himself was a reflection of what I feel about Domino/XWork.  As he mentioned in his presentation, he is not the best in anything he does, like drawing. He practices and tries and eventually become better at it.  That is how I feel about Domino/XWork.

We have been looking into other server technologies and see what we are missing.  Should we venture off into another server platform? Domino is not fastest compared to other technologies, it is not cool compare to nodejs, its HTTP thread is small compared to other technologies, its NoSQL technologies is limited by the 64GBytes file size and 32K limits, view indexing should be redesigned, each time I talk to someone they make fun of me for working with old technology, with the exception of the Windows version the SSL technology is old and so on and on. 

But as Scott Adams said, I am OK with that, because just like Scott Adams, Domino/XWork is flexible. We can and do build on top of what we have and that is the key!
  • SSL not up-to-date, proxy it with Nginx server
  • Need bigger database infrastructure, create connectors to CouchDb or MongoDB
  • Need more threads, get a bigger server, it will still be smaller than a Websphere-based server
  • Need bigger field sizes, use MIME
  • and so on
Because of its flexibility, we as a community will figure out a method to address any limitations.

But one thing that cannot be beaten if IMPLEMENTED CORRECTLY is SECURITY.  So when others are making fun of me using Domino, I ask them how is security implemented and you know what a majority of the developer say, oh the admin handles that or why do you need that level of restrictive security. In today's world, that is the wrong answer. Again, just like NoSQL, Domino was and will be ahead of its time if that makes sense.

So as I move forward on learning, tailoring, and improving Domino/XWork for our needs, just like Scott Adams, we are improving what Domino/XWork can do and more some and when someone ask me why I am using Domino/XWork, I tell them because it is the best and meet the needs of all my current AND future customers.