Strange Loop

Retaking Rules for Developers

Complex, arbitrary, and frequently-changing requirements can turn an otherwise clean design into an unmanageable jumble of code. Even functional programming techniques can get bogged down with tightly coupled, deeply nested functions sharing lots of changing data. Spaghetti code seems almost inevitable when the requirements themselves look like spaghetti.

Business rule engines can help, but they often target domain experts authoring logic in limited mini-languages or decision tables. Here we look at retaking rules for developers. We combine ideals of functional programming with rule engines, expressing arbitrary rules as a type of control structure in a host language. We will demonstrate the approach with Clara, an open source rule engine in Clojure and ClojureScript. From there we demonstrate simple visualizations of rule-based logic and share them with our users, allowing rules to be reviewed and confirmed before people start using it.

Ryan Brush

Ryan Brush


Ryan works on systems to bring together and make sense of the world's health data at Cerner. This starts with applying scalable processing techniques over complex data, a topic Ryan has spoken on at Hadoop World and ApacheCon. His recent focus is on ways to declaratively express domain expertise and apply it at scale.