© 2019 Strange Loop
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":http://github.com/ztellman/lamina, which provides abstractions for event-driven workflows, and "Aleph":http://github.com/ztellman/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
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.