Making Heuris.io

What is Heuris?
Heuris is a real-time general-purpose data logging and visualisation platform. Users send their real-time data to the platform to be recorded and displayed in custom visualisations.

How does it work?
Measurements are sent from your application to Heuris using the Heuris Measurement Protocol (HMP), where they are stored. Upon storage, they are relayed to the browser using the Heuris Observation Protocol (HOP) which runs on top of the WebSocket protocol. One use case for Heuris might be the monitoring of a home made wind turbine’s power output. Timestamped voltage and current measurements can be visualised, perhaps as a graph, or something more exciting like a dynamic renewable-energy-related infographic. In the future, Heuris will have the ability to calculate and plot secondary measurements automatically (e.g. plotting electrical power, given only voltage and current from the user’s measurements).

What technologies power Heuris?
The Heuris HMP and HOP server is written in C++. It uses MongoDB and Redis for data storage and message passing. I chose C++ for several reasons;
• It has useful abstractions for data structures so I can focus on application logic
• It enables me to write useful abstractions on top of C APIs such as the BSD sockets API and the epoll API implemented in Linux
• Its object-oriented nature allows me to structure the application intuitively and allows for code reuse between (for example) similar network protocol classes and worker thread classes

The website is built with PHP running on nginx, and communicates with the same MongoDB and Redis instances as the application server. During the beta, the platform will be hosted on Amazon AWS, allowing us to scale easily with the number of users connected and measurements sent.

Open-source software
The Heuris client libraries (for sending measurements from your application) will be open-source and available on GitHub. We look forward to Heuris users in the open-source community contributing to the official C, C++ and Python libraries (or writing their own). The protocol documentation will be published during the beta.

Development, the beta and launch
Heuris has been in development for about six months, a major part being written during the break for summer in-between my placement year and beginning my third year at Brunel. We aim to launch a beta (which you can register your interest in) in January 2016. Based on the success of the beta, the platform will launch in Summer 2016 with private measurements, paid-tier plans for a larger measurement quota, and improved visualisation options. Beta testers will also get discounted access to the platform when Heuris launches.

Heuris – https://www.heuris.io – Twitter: @heurisio – Facebook: /heurisio


About The Author

Alex Young

Final year Computer Science student at Brunel.
alex@heuris.io | Follow me on Twitter