Jan will show the details of the Muvr exercise analysis project, from the code that runs on the wearables; the signal processing, sensor data fusion and classification on the mobile; the server-side code that ingests the classified data; ending up with Spark code that performs deeper analysis and learning.
Alongside the code, Jan will share the data that his team has collected (under the sweat of the brow in the gym), and the insights one might make from the data.
To close, Jan will outline the experimental & research areas that the Muvr team wants to cover in the near future—for example physiotherapy, injury prevention & detection.
Talk objectives:
- To show—in code!—how to build a system that ingests streams of data from multiple devices, performing the most appropriate processing in each stage; ultimately delivering something that can improve people's well-being.
- The code will use a vast array of languages and techniques (C & C++, Objective-C++, Swift, Scala, MATLAB—to name a few); the attendees do not need to be experts in any of the technologies used, they will walk away understanding the challenges of implementing similar systems.
Target audience:
- Anyone who wants to see all aspects of a IoT system that performs classification at the appropriate level: small device engineers, mobile developers, CQRS/ES cluster developers, data scientists; all will find something that directly relates to their field, and many other things that connect the pieces to make a complete system
In this tutorial we will will build a system that collects data from wearable devices, communicating through a mobile app to an actor system, which uses machine classification to determine the exercise the user is doing. We will build all aspects of the system: a core server system Akka and Scala that —with help from Spark—analyses the data, and exposes appropriate REST APIs. Talking to the server-side code is an iOS application in Swift, which in turn uses C application running on the Pebble smartwatch.
* Overview of technologies (Akka & Scala, R; iOS and Swift; Pebble SDK and C/C++)
* Protocols & formats (wearables -> mobile -> server -> mobile)
* Architectural decisions (Akka cluster, sensor networks)
* Akka cluster basics (CAP, cluster sharding, APIs)
* Profile service (Scala)
* Exercise service (Scala)
* From data to model (R)
* From data to model (Scala)
* Mobile code (Swift), wearable code (C, C++)
* Wearable & mobile -> server integration
Jan (@honzam399) is the technical director at Cake Solutions, author of Pro Spring 2.5, Pro Spring and other books and articles. He regularly works on open source projects; he is the author of Specs2 Spring, Scalad, Spock Spring Integration and Spring Workflow Extension. Jan's technical interests and expertise include lightweight JVM-based applications in Scala and Java with asynchronous, resilient and scalable messaging.