Skip to content

Instantly share code, notes, and snippets.

@deoxxa
Created June 14, 2014 03:23
Show Gist options
  • Save deoxxa/9d2b79b5441b117b6af1 to your computer and use it in GitHub Desktop.
Save deoxxa/9d2b79b5441b117b6af1 to your computer and use it in GitHub Desktop.

Presentation

Having great data is only one piece of the puzzle: what good is it if you can't act on it? At Moving Data, we believe that for data to be useful, it has to be actionable, and that the end user should be able to choose for themselves the style of presentation that is most suitable for them. To better assist in this decision, we've evaluated a range of third-party systems, and built a couple of our own.

Not all data is created equal. Some information lends itself well to a more traditional spreadsheet-like presentation, some is better expressed graphically, and some only makes sense as a live, up-to-the-second display. By working with a diverse range of businesses and projects, we at Moving Data have developed a keen sense for identifying appropriate presentation and interactivity tradeoffs.

For engineering and business analysis, we've found BIME to be a good fit, combining rich interactivity with an ease of use found in few software packages. Working closely with BIME, we have integrated their business intelligence platform with our industry-leading identity systems to enable deep integration with corporate and web environments alike.

We believe that by helping our customers to use their data in multiple ways, we can facilitate the optimisation of existing procedures, and the discovery of new workflows to reduce overall effort when working with their data.

Identity

Identity is central to the internet of things for both people and devices. At Moving Data, we've been breaking new ground in the IoT space by embracing the identity of devices, putting them on the same level as users. By taking advantage of established standards in the identity industry (including SAML and Active Directory), we've been able to integrate our and others' software with existing identity systems, reducing the time to integrate solutions in both corporate and web environments.

As has been done in corporate environments for over 20 years, we treat devices as wholly-independent entities with their own unique attributes and positions in the organisational hierarchies of the businesses they belong to. By recognising the identities of devices this way, entirely new options for delegated administration and management become possible.

To bridge the gap between corporate and web environments for users, we've adopted Auth0 as a third-party service. Auth0 allows us to provide the same hassle-free authentication experience to both corporate and web users by leveraging internal identity systems (Active Directory etc.) and social login (Twitter, Google, Facebook etc.) within the same system. This removes the requirement for users to become familiar with yet another login process, or to remember another username and password.

We are passionate at Moving Data about identity, as it underpins every other part of an IoT project. To this end, we have released several pieces of open source software to help others implement robust identity functionality in their own projects.

Delegation and Audit

The ability to delegate administrative and managerial duties can make or break a business or project. At Moving Data, we've implemented industry-leading systems based on open standards for applying business rules, communicating authorisation, and maintaining a rich audit trail. Combined with our philosophy of giving devices their own identities, we've used these systems to form the core of a flexible, manageable platform for IoT projects.

Delegation is a powerful tool for any business: for personnel, it's essential to maintain a balanced, functional team. A comprehensive audit log goes along with this concept to ensure that your delegation strategy is operating as expected. At Moving Data, we extend the concept of delegation to devices as well. By treating devices similarly to users, we can allow them to perform certain actions (such as "submit data") only under certain conditions (such as "serial number is 12345").

The standard that we've based our system on is called "XACML". Finalised in 2005 by the OASIS committee, it has seen use mostly in the education and defense sectors for controlling access to documents and information. We've taken this concept and applied it to IoT projects, using XACML to control access to resources or devices instead of documents.

Being another area that we're passionate about, we have released several pieces of open source software in the hope that they will help other people implement the same kinds of flexible systems that we have.

Infrastructure

The infrastructure of a project is literally the foundation upon which it sits. To that end, we've invested a lot of time in ensuring that our infrastructure is world-class in terms of features, stability, and performance. We stand behind our infrastructure with confidence and run our own systems in the exact same way that we run those of our customers.

We've adopted a system design known as a "service-oriented architecture". This means that we have multiple, distinct parts that work independently of and communicate with each other to achieve a single goal. There are several benefits to such an architecture, which are especially pronounced in an IoT context. In a service-oriented architecture, a system can fail safely without affecting any other systems. This means that if there is a network outage, for example, no information is completely lost. As with most IoT applications, any data created during that period will simply be stored until the outage is resolved.

Nearly all of our software is written in either JavaScript, C, or more recently, Go. Most of our backend services are written in JavaScript and run on the node.js platform. Most of our software that runs on a device is written in C, and programs that are delivered to customers can be written in Go. Our backend software runs atop Amazon's EC2 platform, allowing us to scale out as far as we need, and distribute our load across multiple physical locations so we're not at risk of physical disasters.

We have presented speeches about our architecture and platform at industry conferences, and we are interested in continuing to do so. Don't hesitate to let us know if you have an event coming up!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment