My name is Ismael Chang Ghalimi. I build the STOIC platform. I am a stoic, and this blog is my agora.

Dynamic UI library loading

One of the reasons why Florian could reduce our UI loading time for perspectives from 10s down to 1s is that we’re now loading the libraries for different perspectives dynamically, instead of loading all of them at once when the UI gets loaded. This powerful refactoring also brings a really nice side-benefit: instead of hard-coding the set of perspectives into our code, we’re now dynamically loading a perspective’s library on demand, based on the information captured in its meta-data. As a result, it will be much easier to let users add custom client-side JavaScript code for implementing their own perspectives. Now that we’ve done that for perspectives, we’ll do something very similar for all our form controls and charts.

Florian recently refactored a lot of our CSS code, especially with respect to form controls and the vertical alignment of labels and placeholders. It’s not yet perfect, but it’s a lot better than it used to be, and through the diligent use of LESS our styles should be a lot easier to maintain.
Florian recently refactored a lot of our CSS code, especially with respect to form controls and the vertical alignment of labels and placeholders. It’s not yet perfect, but it’s a lot better than it used to be, and through the diligent use of LESS our styles should be a lot easier to maintain.

Florian recently refactored a lot of our CSS code, especially with respect to form controls and the vertical alignment of labels and placeholders. It’s not yet perfect, but it’s a lot better than it used to be, and through the diligent use of LESS our styles should be a lot easier to maintain.

Images library

We will create a library of images that are suitable for splash screens and website backgrounds. All these images will be licensed under Creative Common Attribution License 3.0. Most of them will come from 500px. Images will be tagged with keywords and will have a sentiment rating, using STOIC Ontology in the background. The goal is to automate the selection of images according to certain criteria. When we have a baseline collection, we will extend our random value generator in order to support the random selection of images.

Barcode libraries loading

We now support 82 types of barcodes, but that required the loading of dozen of libraries for them. In order to improve the performance of our user interface, we’re now loading these libraries only when a barcode needs to be displayed.

Victory! We’ve successfully migrated to AngularJS 1.3.0. It would be quite reasonable to expect a few regressions from this migration over the next couple of weeks, but things seem to have gone a lot smoother than originally expected.

UI loading time

Currently, the initial loading of our user interface takes about 9s when you have a solid Internet connection and when our iconic font has been already cached. As a point of comparison, Gmail takes about 4s. Our goal is to get down to 2s. Here is how we should be able to achieve it, hopefully within a couple of months, and by the end of the year at the latest:

  • Migrating to AngularJS 1.3 (almost done)
  • Fixing a lot of sub-optimal uses of AngularJS constructs
  • Loading our meta-data cache incrementally (by far, the biggest gain)
  • Modularizing our user interface (thanks to our Tools initiative)
  • Reducing the number of files to be downloaded
  • Compressing all JavaScript libraries
  • Using a CDN whenever possible

Game on!

AngularJS 1.3 migration

We’ve decided to upgrade to AngularJS 1.3 instead of 1.2, because it will make our future upgrade to AngularJS 2.0 a lot easier, and support for Internet Explorer 8 is being discontinued by Microsoft pretty soon. Florian made a first attempt at the upgrade, and it’s actually going surprinsingly well. I’m sure we’ll have plenty of regressions to deal with, but it might not be as hard as we had anticipated. Sweet…

The display of perspective bindings and parameters has been improved. Instead of showing bindings on an horizontal bar and parameters on a vertical panel, both are shown on the vertical panel. And while we distinguish them by hiding parameters behind a “More parameters…” menu, we do not make this distinction more explicit, so as not to use the word “bindings” because it is considered a bit too technical.
The display of perspective bindings and parameters has been improved. Instead of showing bindings on an horizontal bar and parameters on a vertical panel, both are shown on the vertical panel. And while we distinguish them by hiding parameters behind a “More parameters…” menu, we do not make this distinction more explicit, so as not to use the word “bindings” because it is considered a bit too technical.
The display of perspective bindings and parameters has been improved. Instead of showing bindings on an horizontal bar and parameters on a vertical panel, both are shown on the vertical panel. And while we distinguish them by hiding parameters behind a “More parameters…” menu, we do not make this distinction more explicit, so as not to use the word “bindings” because it is considered a bit too technical.

The display of perspective bindings and parameters has been improved. Instead of showing bindings on an horizontal bar and parameters on a vertical panel, both are shown on the vertical panel. And while we distinguish them by hiding parameters behind a “More parameters…” menu, we do not make this distinction more explicit, so as not to use the word “bindings” because it is considered a bit too technical.