How replacing callbacks with core.async can make even robots get emotional

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

Computer Science

Communicating Sequential Processs: http://usingcsp.com

Occam: http://en.wikipedia.org/wiki/Occam_%28programming_language%29

Transputer: http://en.wikipedia.org/wiki/Transputer

core.async

Main page: https://github.com/clojure/core.async

Tim Baldridge's talks on youtube

Robotics

Latitude robot study: http://bit.ly/robotstudy

Rethink Robotics Baxter: http://www.rethinkrobotics.com/products/baxter/

Emotions & Emotional Models

Emotions Revealed: Understanding Faces and Feelings by Paul Ekman

Maslow's hierarchy of needs: http://en.wikipedia.org/wiki/Maslow%27s_hierarchy_of_needs

Emotional agents

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.

Demo code

Core model: https://github.com/davesnowdon/emotions-clojure

Demo: https://github.com/davesnowdon/emotions-clojure-demo