Posts

Don't Get Disconnected with Connect

Image
Here is another of my "My Experience in Building Dojo Widgets" post. Dojo.connect (dojo/on) is a versatile and important part of dojo that handle events.  Along with dojo.subscribe and dojo.publish these three features of Dojo provide a powerful set of tools to query the DOM. <div class="widget" id="happy"> <ul> <li id="1"> <a href="#" tabindex="-1"><i class="icon-tools"></i>Hello</a> </li> <li id="2"> <a href="#" tabindex="-1"><i class="icon-tools"></i>Hello</a> </li> <li id="3"> <a href="#" tabindex="-1"><i class="icon-tools"></i>Hello</a> </li> <li id="4"> <a href="#" tabindex="-1"><i class="icon-tools"></i>Hello</a> </li> ...

When This is This and What is This, but What is not This, Dojo Event and Objects

In the past couple of years, I have been building Dojo Bootstrap widgets from stratch rather than using standard Dojo widgets and styling using a Bootstrap theme.  Why in the world would you do that might you ask.  Sometimes I also ask myself that question. There are many advantages, including adding security features that are not founded normally. Since we RESTFul JSON services, the widgets are optimized for our format.  In addition, the widgets are automatically binded with the RESTFul JSON services when the web page is instantiated.  So as part of my Dojo adventures, I had to learn and relearn Dojo again and again. There is so many different ways to do things, but the right way is sometimes elusive.  One advantage of Dojo over JQuery is that Dojo forces you to use a pattern for creating widgets which I really like.  It is hard enough for me to follow what I did 2 months ago.  Imagine if another developer had to follow my code years later. One pr...

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...

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 i...

Why attend LinuxFest at IBM Connect 2014

Thanks to Bill Malchisky, LinuxFest V is back at IBM Connect 2014. It will be held on Thursday, January 30, 2014 at 12:30 PM to 1:30 PM at the Dolphin - Oceanic 2.  Though it is not an official session, this is one of the sessions that I have always attended at Lotusphere/IBM Connect in the past. There is no marketing BS, all technical knowledge from some of the best Linux experts in the IBM Community.  And they tell you like it is. As a software architect, designer, and developer, it is very important that you understand the operating system that your application is running on from the perspective of resources and security. This determines how you approach the design and architecture of your application.  Linux has become a significant part of the IBM Collaboration environment and its importance has been growing especially if you are looking at cloud-based solutions.  As a company, almost all our servers are on Linux and with a...

The End of an Era

As some know we are celebrating our 23th anniversary as entrepreneurs this year.  It has been full of highs and lows.  One of most fun achievement that we had was in the first couple of years as ReCor.  Now it is most standard corporate training with ReCor and social collaboration and BPM technology with Phora Group and our iPhora solutions. As one starts out, you try to determine your bearings.  Usually reality hits and you throw out all the business plans and marketing stuff.  So early on we did some stuff for free hoping that something might come out of it in the future.  And that is what happened.  About a year later, the person we helped out came back to us to develop a kiosk for an exhibit.  We did not know much about kiosks at that time, but we knew technology.  You have to remember that we are talking about the early 90s and there is no Internet, Windows, Macs, fancy computers.  The latest and greatest ...

Optimizing Dojo Loading for Bootstrap Widgets

Image
Over the past year, one of our major efforts for our iPhora products was to switch from using Dojo Dijit widgets to only Bootstrap widgets.  One of the problems that we have seen with Dijit widgets is that they take a long time to load and are very heavy compared with JQuery based Bootstrap widgets. The advantage of JQuery-based Bootstrap widgets is that they are loaded all at once as a single file. This is great to minimize the loading speed.  However, it does not lend itself to easy maintenance by multiple developers. With Dojo you load the individual widgets are needed using dojo.require. Unfortunately, this results in multiple HTTP request in order to load the individual widgets and support files. Even if we are not using Dijit widgets but you want to use dijit._Widget to creating your own widgets, Dojo loads a whole brunch of additional files like dijit._LayoutWidget.js and doubles the loading process.  That is because you need to...