Strange Loop

Event-Driven Programming in Clojure

Clojure has powerful concurrency primitives, but they don't always play nicely with side-effects. Services that take a single input and produce a single output can be easily modeled as functions, but more complicated relationships between input and output lack a first-class representation in the language.

This talk will explore a potential solution: "Lamina":, which provides abstractions for event-driven workflows, and "Aleph":, which uses these abstractions to model network communication over a variety of protocols.

Topics will include: * A survey of event-driven programming, discussing the benefits and shortcomings of various approaches * An abstraction that models events as streams of messages, allowing familiar operations such as map, filter, and reduce * Building upon these streams to create complex asynchronous workflows * Using these abstractions to create sophisticated, performant network services with minimal boilerplate and ceremony

Click to view published talk video

Zach Tellman

Zach Tellman


By day, Zach Tellman is a software developer by Runa. By night, he sleeps. Somewhere in between, he spends an excessive amount of time worrying about idioms for complex problems.