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.
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
Other video presentations