We trace the path of millions of little HTTP requests as they stream toward the fertile data source at the backend of the enterprise. We look at IO-monads and streams and delimited continuations as means of structuring managing the influx of the seminal requests. We look at parser combinators as a way of extracting the germinal essence of the requests and translating them to access and update in the middle tier and backend. We look at domain models as "algebras" and the zipper as a means of providing efficient functional navigation, access and update of the middle tier. We look at LINQ-like abstractions as a means of accessing storage. At each step of the way we consider how these approaches to these everyday operations of a web application are all instances of the same design pattern, how they compose to simplify the design of the application and the code implementing it and make it easier to modify and manage as requirements change.

Target Audience
On average the modern programmer building an Internet-based application is dealing with no less than a dozen technologies. They are attempting to build applications with nearly continuous operation, 24x7 availability servicing 100's to 1000's of concurrent requests. They are overwhelmed by complexity. What the professional programmer really needs are tools for complexity management. The principle aim of this workshop is to serve that need in that community. While everyone is welcome, those with  2+ years  experience with functional programming  would benefit the most.

Channel 9 Lectures

Monads and coordinate systems

Lecture 1

Other video presentations

SeaJUG talk