An entire system that uses wearable devices (Pebble, Android Wear, Apple Watch)—in combination with a mobile app—to submit physical (i.e. accelerometer, compass) and biological (i.e. heart rate) information to a CQRS/ES cluster to be analysed. The result is automatically constructed exercise log, which includes the kind of exercise (biceps curl, shoulder press, and other such tortures) as well as the intensity (light, moderate, hard)—nota bene that intensity != weight.
It is also an excellent demonstration of large reactive application. It is event-driven: throughout the application, it uses message-passing to provide loose-coupling and asynchrony between components. It is elastic: the users and their exercises—the domain—is sharded across the cluster. It is resilient: its components can recover at the appropriate level, be it single actor, trees of actors or entire JVMs. It also uses event sourcing to ensure that even catastrophic failures and the inevitable bugs can be recovered from. It is responsive: it does not block, and it is capable of distributing the load across the cluster.
It combines near-real-time machine classification needed for immediate exercise feedback, with "offline" model upgrades. Once upgraded, the event-sourced nature of the system allows us to re-apply the new model to the old data, and thus provide the users with better data.
Use our monitor to keep an eye on a debugged, tuned Akka system that is running in production. In production, you may want to monitor the actors' queues, the number of messages they process, the performance of the
receive function and error rates. The Reactive Monitor does just that without any code change to your application.
Scalad sets out to simplify data access code in Scala. It fits particularly well into Spray and Akka applications: it re-uses existing JSON marshallers and unmarshallers. It provides powerful strongly-typed functional data access design patterns, yet remains easy to use.
Specs2 Extension to simplify integration testing with Spring. It brings BDD-style tests to typical Spring applications, including setting up of Java EE environment for the tests.
Spray & Akka server-side code and AngularJS browser application.
Twitter streaming, including OAuth, using Spray Client and Akka.
Non-blocking data access to Cassandra in Scala & Akka.
Scala-based Play Framework application with Reactive Monitor plugged in.
Java-based Play Framework application with Reactive Monitor plugged in.
Using Breeze and Akka Streams to implement efficient machine learning / processing application.
Useful "library-like" code for e-mails and reporting for your Scala & Akka projects.
Learn about principles of functional and strongly-typed programming in Scala and Haskell.
Project showing how to construct JIT compiler for simple expression language, delivering results over WebSockets to an AngularJS application.
How to integrate Scalastyle checks to your Scala-syntax Sbt projects to uncover potential bugs and code style errors.
How to authenticate and then use the Google Glass Mirror API to push messages to the Glass in a Spray, Akka and AngularJS application.
For work in exchange for money, head over to Cake Solutions.
Jan Machacek is a passionate technologist with hands-on experience with the practical aspects of software delivery (architecture, quality, CI, CD); the project management approaches (applying the principles of agile project management); mentoring and motivating the engineering & business teams. He shares his expertise and passion for software as the editor of the Open Source Journal, regularly contributes to open source projects and speaks at conferences in the UK and abroad. Jan is the author of many open source projects (various Typesafe Activators, Reactive Monitor, Akka Patterns, Akka Extras, Scalad, Specs2 Spring and others), books and articles.
Jan always wants to hear about interesting projects, events, hackathons, ...! He's keen to share his expertise at conferences, user groups, or simply over a drink or two. If you have something to suggest or share, get in touch!