Case study: HPCC Systems

The large companies that use Dojo are widely known. This series features lesser known users of Dojo, and their stories. This time, we interview Gordon Smith from HPCC Systems, a subsidiary of LexisNexis RISK Solutions.

Q: How did you first learn about Dojo?

A: Through Google / Stack Overflow. I suspect my “discovery” of Dojo was a bit different to the norm, as prior to 2013 I had never really done any Web Development. Up until then I was predominantly a C++ Developer, some Java and a smattering of C#. Initially I wanted to knock together a single page proof of concept, consisting of a code editor (CodeMirror), a result view (HTML Table) and an “activity graph” (ActiveX Control) and wanted something that would handle the layout, resizing and ideally something with splitters – after a few searches online I found the Border Container Docs and away I went! Shortly after, I added a Tab Container and switched to using the basic Grid.

ECL Playground
ECL Playground – How the original POC Looks today

Q: Why did you choose Dojo?

A: After the initial success of the proof of concept, we took stock of our existing web application and decided that a rewrite would be in order, at this stage I did stop and take a longer look at what was available and quickly came to the conclusion that it would be jQuery or Dojo. Dojo won out for a number of reasons, chief of which was how the core libraries had been architected, as well as their attention to “core” details, like AMD, OOP, localization and accessibility. I was also satisfied that we could use Dijit for the App layout and common widgets, while being able to drop in any other “best of breed” page elements as needed.

Q: Were you previously using another toolkit?

A: We had been using XSLT to generate our pages and a small amount of YUI for some of the newer work.

EPC Before
EPC After

Q: What does your application or service do?

A: The HPCC Platform (High Performance Computing Cluster) is a massive parallel-processing computing platform that solves Big Data problems. It has been in development for more than thirteen years and was open sourced just over three years ago now. We call the web application “ECL Watch” (ECL is our declarative data processing language), and it allows the user to:

  • Submit, Monitor and Manage ECL jobs.
  • Load, unload and manage raw and processed data (files).
  • General configuration and operational management.
ECL Workunit
A single ECL “Workunit” making heavy use of the TabContainer

Q: How does your application use Dojo?

  • A: It uses AMD and Declare to enforce well organized and encapsulated coding.
  • Our platform primarily uses SOAP/JSON/REST style messaging, so we make heavy use of Request, Deferred and Stores.
  • Dijit Layouts – The Border Container and Tab Container are always at the foundation of any new Widget/Page we write.
  • Dijit Widgets – Both the usage of the built in widgets as well as the framework for extending and writing out own widgets – every visual page we design is done as a “plugable” widget, and as such can be opened in different parts of the Web Application as well as in a separate browser window (very useful for emailing links to colleagues).
  • The rest – it’s hard to list specific items here as we pretty much use it all… dojo/topic and /dojo/aspect would get honourable mentions as they have allowed some elegant solutions to some tricky design challenges we faced. dojo/aspect helped workaround some ActiveX/NPAPI browser specific inconsistencies, by intercepting and altering specific DOM Class changes to widgets (all within a single function). While dojo/topic (along with dojo/Stateful / dojo/store.notify) helped ensure there was no assumption about what sets of widgets were loaded at any given time and keeping all related widgets in sync.

Q: Overall what is your user experience with Dojo?

A: On the whole it has been a very positive experience, it does have a moderate to steep learning curve, but no harder than any other “significant” framework. As I switch to/from my C++/Java work, it is interesting that I seem to miss more of the patterns I have learnt while using Dojo than the other way around. I suspect I will be implementing a variant of the Deferred/promise pattern in the near future!

Q: What’s your favorite thing about Dojo?

A: The AMD loader and OOP support – Personally I find it all too easy to write hard to maintain code in JavaScript (especially as a novice), but with the AMD/OOP support I was able to continue to “think”, organise and encapsulate in a similar fashion to my C++/Java work.

Q: What are your future plans with Dojo?

A: We still have a small amount of work todo in converting our existing Web App, but once that is done the plan is start optimising the users workflow, this will mean developing new and better interfaces, so lots of Widget work. We have already started to integrate visualisations using d3.js (as widgets) and I hope that Dojo 2.0 (and the new related SitePen work) gets released at a convenient time in our release cycle so we can be early adopters.

ECL Treemap
ECL Landing Zones
Landing zones
ECL Graphs
ECL Visualizations
ECL User Permissions
User permissions
ECL i18n


Thanks Gordon for telling us about your experience with Dojo. If you would like to share your experience with Dojo, please contact us.