An avid programmer since the mid-80s, I have used and abused Prolog, LISP, Smalltalk, Java, Erlang and Elixir. Years spent in corporate IT departments and with startups have me convinced that lack of conceptual clarity is the death of software projects, which makes me a friend of Domain Driven Design.
I am currently software architect at Starlit Software. I live and work in Portland, Maine.
In my spare time, I train obsessively at Aikido of Maine, organize the local Erlang/Elixir and Elm meetups, and dabble in robotics with the Lego Robotics sets I bought "for my son".
A couple of years ago, I found out I could program a Lego EV3 robot using my favorite concurrent programming language (Elixir). Way back in the 80s, I had read Marvin Minsky's "Society of Mind". Now was my chance to implement a simplified version of it, just enough to give a Lego robot interesting autonomous behaviors. Minsky's Society of Mind calls for many agents doing simple things and interacting in simple ways, causing emergent behaviors we perceive as intelligent. So I set out to design and implement a simple model of the mind, with concurrent agents responsible for perception, memory, motivation, attention, behavior and actuation.
It worked! My robot could "feel" hunger, fear or curiosity and act accordingly, always "aware" of its environment. I then extended my model to encompass simple social interactions between robots, such as greed and panic. It was all great fun. Stepping back, I now realize that the most engrossing aspect of this project was coming up with a working domain model for the mind, and defining a domain language for cognition. I will share my journey with you.