Join Newsletter

Conference Program

9:00 AM

9:00 AM - 480 mins

Room 1

Let's Lens

Edward Kmett and Tony Morris

Let's Lens

Edward Kmett and Tony Morris

This workshop is an online workshop that will take place over two days:

  • Monday 20 July: 9am - 1pm
  • Tuesday 21 July: 9am - 1pm

Let's Lens presents a series of exercises, in a similar format to the Data61 functional programming course material. The subject of the exercises is around the concept of lenses, initially proposed by Foster et al., to solve the view-update problem of relational databases.

The theories around lenses have been advanced significantly in recent years, resulting in a library, implemented in Haskell, called lens.

This workshop will take you through the basic definition of the lens data structure and its related structures such as traversals and prisms. Following this we implement some of the low-level lens library, then go on to discuss and solve a practical problem that uses all of these structures.

An attendee who completes this workshop should expect to confidently use the lens library, or other similar libraries, in their every day programming.

Read More

10:00 AM

10:00 AM - 480 mins

Room 3

Modes of Composition in Functional Scala Programming

Ben Hutchison

Modes of Composition in Functional Scala Programming

Ben Hutchison

This workshop is an online workshop that will take place over two days:

  • Monday 20 July: 10am - 12:10pm
  • Tuesday 21 July: 10am - 12:10pm

This workshop teaches strongly typed, effectful functional program design in Scala. We will explore how techniques for composing and decomposing functional programs work in an applied scenario around ecommerce order processing.

Composition is a central value in functional programming; the idea is that we build larger, more complex software by composing smaller, simpler pieces. Making it easy to combine pieces together is a key attribute of good programming methods.

Read More

1:00 PM

1:00 PM - 480 mins

Room 2

Intro to Elixir

Josh Price and James Sadler

Intro to Elixir

Josh Price and James Sadler

This workshop is an online workshop that will take place over two days:

  • Monday 20 July: 1pm - 5pm
  • Tuesday 21 July: 1pm - 5pm

Elixir is an extremely accessible functional programming language that is rapidly gaining popularity for good reason. With it's well curated, batteries-included tool chain, excellent documentation and its sheer simplicity, not to mention its incredible 30+ year Erlang heritage.

The goal of this workshop is to get you a basic familiarity with Elixir and the tools you'll need to be effective working in the language. It will be aimed at programmers who don't know Elixir, and don't necessarily know any functional programming.

The workshop is organised around a set of exercises that should take you through the basics of the language. Once you've got to grips with the language and tools you'll be ready to build a real time game server. In this workshop you'll learn everything you need to start building amazing, production ready Elixir applications.

Read More

8:45 AM

8:45 AM - 15 mins

Session Overviews and Introductions

9:00 AM

9:00 AM - 45 mins

Grand Ball Room 1

Scodec for Scala 3

Michael Pilquist

Scodec for Scala 3

Michael Pilquist

Scala 3 introduces new features which help manage complexity. In this talk, we’ll look at porting Scodec from Scala 2 to Scala 3, using new language features to simplify the library.

You’ll see the ease of migrating projects to Scala 3 and perhaps be inspired to port some of your own.

Read More

9:45 AM

9:45 AM - 25 mins

Break / Q&A with Michael Pilquist

10:10 AM

10:10 AM - 30 mins

Grand Ball Room 1

Unveiling much simplified Functional Programming in Scala for Data Engineering

Afsal Thaj

Unveiling much simplified Functional Programming in Scala for Data Engineering

Afsal Thaj

I will talk about a much simplified version of functional programming in Scala, in building an abstraction for Feature Generation in Data Engineering space.
The program made using this abstraction will get interpreted to the popular data source languages of our choice - such as Spark or Flink. However, before it gets interpreted to any of these engines, we will explain how these programs could be optimised by introspecting its nodes, and help run these interpretations faster. The core idea is similar to that of Free Applicative, however, implementing it in Scala hasn't been straight forward. Here, we provide a similar capability but without mentioning much about FreeAp, and without the usual Scala boilerplates of implicits, macros and a proliferated usage of type classes.

The purpose of the talk is not just to demonstrate a set of code, but to showcase the fact that sticking on to fundamentals of Functional Programming, and finding the right abstraction enables writing solutions quickly and relatively easily.

It proves we don't need to learn a bulk of libraries to apply these concepts in real world applications. The learning curve and a massive set of libraries was often termed as the functional programming in Scala industry, resulting in lesser adoption and developers moving away from it. With this talk my intention is to motivate developers to come back and start writing FP even if they are in the world of JVM.

Read More

10:40 AM

10:40 AM - 25 mins

Break / Q&A with Afsal Thaj

4:00 PM

4:00 PM - 45 mins

Grand Ball Room 1

Implicits Revisited

Martin Odersky

Implicits Revisited

Martin Odersky

I talk about the history of how Scala's implicits evolved, about some of the mistakes we could have avoided in hindsight, and about aspects that I believe we got right. I then present the new system of givens in Scala 3, which replaces implicits. This system fixes most of the existing issues, increases safety and predictability and offers some exciting new possibilities to structure and modularize code.

Read More

4:45 PM

4:45 PM - 25 mins

Break / Q&A with Martin Odersky

8:45 AM

8:45 AM - 15 mins

Session Overviews and Introductions

9:00 AM

9:00 AM - 30 mins

Grand Ball Room 1

It's Alive!!! Instrumenting Phoenix 1.5 with Telemetry and Live Dashboard

Sophie DeBenedetto

It's Alive!!! Instrumenting Phoenix 1.5 with Telemetry and Live Dashboard

Sophie DeBenedetto

Phoenix 1.5 is here and it comes powered up with out-of-the-box instrumentation and visualization thanks to Telemetry and Live Dashboard.

Phoenix now integrates Erlang's Telemetry library to aggregate and report on standard Phoenix, Ecto and Elixir VM Telemetry events as well as any custom events you'd care to emit from your own application. The Live Dashboard library allows us to visualize the metrics, performance and behavior of our app, as described by these events in real-time. These two offerings together empower every Elixir developer to hit observability goals by writing and shipping fully instrumented code with ease.

In this talk, we'll take a tour through Live Dashboard's usage and features and we'll dive under the hood to understand how it leverages Erlang and Elixir's Telemetry libraries to capture and visualize events as metrics. There will be an obligatory picture of Frankenstein.

Read More

9:30 AM

9:30 AM - 25 mins

Break / Q&A with Sophie DeBenedetto

4:00 PM

4:00 PM - 45 mins

Grand Ball Room 1

The Secret Sauce of Erlang: Opinionated Language and Focused Community

Ulf Wiger

The Secret Sauce of Erlang: Opinionated Language and Focused Community

Ulf Wiger

As one who joined the Erlang community before it really even was one, I've had reason to consider and debate what makes Erlang special. Because it _is_ special. In this talk, I will summarize some of my own thoughts on the matter, exemplified by some war stories. My thesis is that while the impetus for creating the language is important, the evolution of the community and the niches where Erlang got some traction also play a vital role. Learning what has been successful in Erlang, what hasn't, and why, could give important clues not just to future adopters, but perhaps also to other communities (Elixir?) still developing a personality.

Read More

4:45 PM

4:45 PM - 25 mins

Break / Q&A with Ulf Wiger

5:10 PM

5:10 PM - 45 mins

Grand Ball Room 1

Immutability for Concurrency

Francesco Cesarini

Immutability for Concurrency

Francesco Cesarini

Functional programming has been influencing mainstream languages for decades, making developers more efficient whilst helping them reduce maintenance costs. As we are faced with a programming model that needs to scale on multi-core architectures and distributed environments, concurrency becomes critical. In these concurrency models, immutability, a key feature of functional programming paradigm, will become even more evident. To quote Simon Peyton Jones, future concurrent languages will be functional; they might not be called functional, but the features will be. In this talk, we explain why!

Read More

5:55 PM

5:55 PM - 25 mins

Break / Q&A with Francesco Cesarini

6:20 PM

6:20 PM - 45 mins

Grand Ball Room 1

Simplifying systems with Elixir

Saša Jurić

Simplifying systems with Elixir

Saša Jurić

Elixir is often described as a language which offers great support for massive concurrency. First-hand reports cite the ease of handling millions of connected users, sub-millisecond response times, and superb fault-tolerance. These are all great benefits, but we’re left wondering whether Elixir is useful only for large scale systems, or can it bring some benefits in the simpler cases too?

This talk aims to demonstrate that Elixir is also a great choice for building smaller systems. Through a very simple but still a real-life example, I’ll explain how using Elixir can help simplify the system architecture, and lead to a more homogeneous solution. The talk targets backend developers who are new to Elixir. After the talk, the audience will have a clearer idea about what makes Elixir attractive, and why should they consider using it to build their next backend system.

Read More

7:05 PM

7:05 PM - 25 mins

Break / Q&A with Saša Jurić

8:45 AM

8:45 AM - 15 mins

Session Overviews and Introductions

9:00 AM

9:00 AM - 45 mins

Grand Ball Room 1

Strongly Typed System F in GHC

Stephanie Weirich

Strongly Typed System F in GHC

Stephanie Weirich

There are many examples that demonstrate how to create a strongly typed abstract syntax in Haskell for a language with a simple type system. But there are many fewer examples that allow the embedded language to be polymorphic. I will work through what it takes to do so, touching on variable binding representations, and exploring the limits of dependently-typed programming in GHC.

Read More

9:45 AM

9:45 AM - 25 mins

Break / Q&A with Stephanie Weirich

10:10 AM

10:10 AM - 45 mins

Grand Ball Room 1

Cadenza: Building Fast Functional Languages Fast

Edward Kmett

Cadenza: Building Fast Functional Languages Fast

Edward Kmett

In this talk Ed will give live coding introduction to normalization by evaluation. He will then show how Graal and Truffle, on the JVM, can be (ab)used to JIT functional languages. He discussesd why this seems like a promising direction for evaluating dependently typed languages in particular.

Read More

10:55 AM

10:55 AM - 25 mins

Break / Q&A with Ed Kmett

11:20 AM

11:20 AM - 45 mins

Grand Ball Room 1

Systems That Don't Forget

Mark Hibberd

Systems That Don't Forget

Mark Hibberd

Software systems form an intrinsic feedback loop, the more we use and rely on a system, the more we demand of that system. This loop drives a cost and complexity that if left unchecked eventually inhibits growth and improvements to the software or in the worst case brings it crashing down.

The crux of this complexity in many (most?) systems is the management of state and data over time, and importantly how different systems co-ordinate around that state. If we look to modern, and even not so modern, software we can see a recurring pattern to dealing with this through the use of immutable, persistent data. We see this pattern from databases and distributed systems through to user interface frameworks. Building complex systems that work correctly, reliably and efficiently often comes down to building systems that don't forget.

In this talk we will look at the design, benefits and challenges of building a system around the ideas of immutable and persistent data using a specific example of a system that I work on to support urban planning & climate policy modelling.

Read More

12:05 PM

12:05 PM - 25 mins

Break / Q&A with Mark Hibberd

Back to Top