Single-Serving Values in Scala with Linear Types May 21, 2021
In this talk, we learn about how linear types can be used in Scala programs to prevent runtime errors caused by variable underuse or overuse by detecting them at compile time.
Introduction to Functional Programming April 25, 2021
In this workshop, we learn about the basics of functional programming in Scala by building simple algebraic data types and implementing common patterns from category theory.
Microservices in Real Life April 10, 2019
In this talk, we explore the implementation and evolution of a set of microservices that have expanded and integrated over time to provide weather information for Web clients and IoT devices.
Functional Electromagnetism March 30, 2019
In this talk, we use GNU Radio to examine digital signal processing systems, and explore how we can use our understanding of functional programming to reason about unfamiliar systems such as software-defined radio by looking through the lens of category theory.
Functional JDBC with the Reader Monad October 11, 2017
Working with a database means juggling connections and managing transactions. With functional programming, we can abstract it away for cleaner, safer, and more maintainable code.
Functional Infrastructure May 26, 2017
In this workshop, you will learn to use Nix, NixOS, and NixOps as a declarative toolbox for reliable, repeatable processes. Hands-on exercises will teach you the basics of the Nix expression language, which you'll use to build, test, and locally run a Haskell Web application, deploy it to the cloud, and maintain it in production.
Purifying Code with Algebra September 16, 2016
In this talk, we look at an approach to abstracting IO out of Haskell functions by representing side effects as generalized algebraic data types, and implementing a side-effecting top-level interpreter for them.
Literate Programming with Codedown May 29, 2016
In this talk, we look at literate programming's roots, how Haskell provides built-in support for it, and how Codedown enables literate programming in any language.
Applicative Validation in Scala March 30, 2016
In this talk, we look at Validation: how to use it, why it works, and where in category theory it comes from. We'll see how to use the implementations provided by Scalaz and Cats, as well as how to roll our own from scratch.
Introduction to Monads January 22, 2016
This is an informal introduction to monads using Java 8.
Scala via JavaScript August 14, 2015
In this talk, we'll go through some of the more compelling examples, and see what one language might learn from the other.
Nix, Plus or Minus Cabal July 14, 2015
In this talk, we look at Haskell deveplopment with the Nix package manager, and how to use it in addition to (and in place of) Cabal to make tool installation a breeze, and dependency conflicts a thing of the past.
Types and JavaScript June 23, 2015
How to use types to reason about code.
Discovering Knowledge in Linked Data April 24, 2015
In this talk, we'll look at how to search Wikidata from a graph database via a domain-specific language.
SOA Proliferation Through Specification January 27, 2015
A look at how Swagger specifications can help in the development, adoption, and deployment of services in a service-oriented architecture.
Functional Refactoring January 24, 2015

Refactoring provides an accessible opportunity to learn about imperative and functional design patterns, and Scala's hybrid OO/FP design caters to both.

We explore examples of Scala code written using familiar imperative design patterns, and refactor each one using a counterpart functional pattern. We learn how to replace mutable variables with the state monad, loops with folds, thrown exceptions with sum types, dependency injection with the reader monad, and much more. As we go, we build a mapping of corresponding imperative and functional patterns.

Scala DevOps: Collaborative Development and Continuous Deployment August 8, 2014
In this talk, we look at how a Scala development team can work collaboratively to build, test, and deploy their software using GitHub, sbt, Travis CI, Coveralls, and Heroku.
Putting Functional Programming to Work June 26, 2014
In this session, we dig into one particular tool: the state monad, to see how it lives up to these promises and helps power the Versal platform.
Real-World Functional Programming May 28, 2014
Integrating multiple APIs of different sorts (e.g. Web facing RESTful, internal library, data storage, low level event logging, etc.) into a single application, the complexity of the manifold interactions can very quickly become an obstacle to agility. In this session, engineers from Versal will discuss how their move to a functional programming model allowed them to migrate from an event-sourced architecture and in-memory hierarchical data model to an on-disk relational data model that allowed them to greatly simplify their application development process. Examples of how to apply functional programming concepts to various API designs will be provided.
Effect Systems January 24, 2014

Effect systems allow the separation of the semantics of a program from the specification of a program. An effect system is made up of effect types, effectful programs, and effect handlers. An effect is an operation, behavior, pattern, or signature of which the meaning is up for interpretation by an effect handler.

We explore different ways to implement effect systems in Scala. We begin by describing an effectful program that we would like to write as a pure value. We then write different toy effect systems that can run it.

Rapid Scala Development with sbt September 14, 2013
In this talk, we look at a simple way to develop sophisticated software in Scala using these tools together.
Scala in 2018: A Panel with Rod Johnson September 12, 2013
In this panel, we debate Rod Johnson's ScalaDays 2013 keynote about obstacles to Scala's widespread adoption.
Hands-On Category Theory August 2, 2013
Skip the similes, and muzzle the metaphors. In this talk we take a look at functors and applicative functors. Using a text editor and the REPL, we build from scratch a small library that we can use with our production code.
TDD with FireOtter June 11, 2013
In this talk we describe FireOtter, a library for human readable CSV-based specification testing.
Dependency Injection in Scala with Jellyfish January 14, 2013

Delimited continuations allow functional effects to be expressed in a direct style, eliminating the need for nested flatMap callbacks and for comprehensions.

Jellyfish is a Scala library for direct-style functional dependency injection via delimited continuations.

The State Monad December 13, 2012
In this talk, we explore the State monad as a way to represent state changes in a purely functional way.
Imperative Web Workflows via Delimited Continuations July 9, 2012
In this talk we discuss the use of delimited continuations to build complex, multi-step Web workflows out of easy to follow imperative code.
Functional Reactive UI Thing November 14, 2011
In this presentation we'll talk about declarative UI programming using delimited continuations and functional reactive programming. It's a neat way to hide the noise of Java's ActionListener API and to keep UI behavior cleanly defined in one place.
Swarm: Transparent Scalability Through Portable Continuations August 8, 2011
In this talk, we present an approach to building transparently scalable applications using Swarm, a framework which enables code execution to follow data within Scala's serializable delimited continuations.