One of the issues with callback based programming is the need to coordinate mutable state among multiple callback handlers. Clojure's core.async provides a way to write code in a more sequential style that helps make the interaction between multiple events clearer. This talk will briefly describe Communicating Sequential Processes (the theoretical foundation on which core.async and other languages such as go and occam are based) before giving an overview of core.async itself.
A lot of the attention on core.async has focussed on its use for web front-ends with clojurescript. This talk will present an application running on the JVM that demonstrates how a 3rd-party framework can be adapted to work with a core.async application in order to control a NAO humanoid robot.
Watch talk on Skillsmatter: https://skillsmatter.com/meetups/1994-how-replacing-callbacks-with-core-async-can-make-even-robots-get-emotional
Communicating Sequential Processs: http://usingcsp.com
Main page: https://github.com/clojure/core.asyncTim Baldridge's talks on youtube
Latitude robot study: http://bit.ly/robotstudy
Rethink Robotics Baxter: http://www.rethinkrobotics.com/products/baxter/
Emotions Revealed: Understanding Faces and Feelings by Paul Ekman
Maslow's hierarchy of needs: http://en.wikipedia.org/wiki/Maslow%27s_hierarchy_of_needs
Toward a comprehensive theory of emotion for biological and artificial agents Michael Sellers, Biologically Inspired Cognitive Architectures (2013) 4, 3– 26
Sellers, M. (2008). Otello: A next-generation reputation system for humans and NPCs. In Proceedings of the fourth artificial intelligence and interactive digital entertainment international conference.
Core model: https://github.com/davesnowdon/emotions-clojure