Talks
Events

Solving Problems with Automata

Alex Engelberg, Mark Engelberg at Clojure/conj 2015

Many of us have hazy memories of finite state machines from computer science theory classes in college. But finite state machines (FSMs) have real, practical value, and it is useful to know how to build and apply them in Clojure. For example, FSMs have long been popular to model game AIs and workflow rules, and FSMs provide the behind-the-scenes magic that powers Java's regexes and core.async's go blocks. In this talk, we'll look at two programming puzzles that, suprisingly, have very elegant solutions when looked at through the lens of FSMs, with code demonstrations using two different Clojure libraries for automata (automat and reduce-fsm), as well as loco, a Clojure constraint solver.

About the speakers: Mark Engelberg has been an active member of the Clojure community ever since Clojure turned 1.0, and is the primary developer of math.combinatorics, math.numeric-tower, data.priority-map, ubergraph, and a co-developer of instaparse. By day, he teaches Scheme and Clojure to talented kids in the Seattle area; by night, he creates logic puzzles and games, using Clojure as his "secret weapon". His latest game is Code Master, a programming-themed puzzle game for kids, available exclusively at Target (and created with Clojure, of course!)

Alex Engelberg was indoctrinated by his father in the ways of functional programming at a young age, and Clojure rapidly became his language of choice. He is happy to be using Clojure professionally as a software engineer at SecureOne in Seattle. Alex also enjoys contributing to open source; he is the primary developer of loco, and co-developer of instaparse.