🔵  Little assumed knowledge
🔵🔵  Moderate assumed knowledge
🔵🔵🔵  Significant assumed knowledge

Morning - Talks

Monday 2 September 2019 RMIT - Building 80
9am Ken Scambler Introduction by the Committee
9:15am Ambrose Bonnaire-Sergeant The Hidden Data Flow in Types (Video) 🔵 🔵
10:15am Svetlana Marina Day-to-Day Property Based Testing in Scala (Video) 🔵
10:45am Brendan Zabarauskas Lost in a Universe of Types: My Adventures in Programming Languages (Video) 🔵 🔵
11:30am Jack Kelly Reflex Outside the Browser (Video) 🔵 🔵 🔵
12:00pm George Wilson An Intuition for Propagators (Video) 🔵 🔵 🔵
13:30-17:00 Ben Hutchison, Ken Scambler WORKSHOP - Getting started with Scala 3 🔵 🔵
13:30-17:00 Lyndon Maydwell WORKSHOP - Crashkell 🔵
13:30-17:00 Geoffrey Huntley, Javier Candeira WORKSHOP - Introduction to Nix and NixOS 🔵

12:30-17:00 - Hang Out and Hack Room

Our Hang Out and Hack room will include: "office hours" (people can request help on particular topics, or offer to help others); lightning talks, free discussion and of course — hanging out and hacking… Bring your laptop! TBC

13:30~15:30 - Unconference

The unconference is like open-mic for hackers. It's open for anyone to do a talk, just add your name to the list near the registration desk on the day of the conference. RMIT - Building 80

Morning - Talks

Monday 2 September 2019



Ken Scambler


Introduction by the Committee

Ambrose Bonnaire-Sergeant


The Hidden Data Flow in Types

On the surface, function types simply describe inputs and outputs—indeed, that's how they're used in most type systems. But there's more to function types!

Fascinatingly, a function type can be transformed into a data flow graph that predicts the inner workings of any function that has that type. Using this graph, intricate dependencies between function inputs and outputs can be inferred without having to read code or documentation.

In this talk you will learn how to see function types in a different light, gaining clairvoyant powers to predict how their implementations behave.

We will cover how this insight enables the impressive type inference of Flow and MLsub, and explore possible future applications to other languages like TypeScript, Typed Racket, and Typed Clojure.

About Ambrose Bonnaire-Sergeant

I understand the world by identifying and teaching the essence of important ideas. With computers, I tend towards the design and implementation of programming languages. Recently, I dissertated on extending the Clojure programming language with a static type system.

Home Page



Svetlana Marina


Day-to-Day Property Based Testing in Scala

Property-based testing is a popular testing concept, which came from the world of Functional Programming. QuickCheck in Haskell is an iconic framework, which introduced us to this idea. Today we can find testing libraries supporting PBT in any main-stream languages, including Scala, JavaScript, Ruby, Python, Java, etc.

We all like the idea of building high quality and robust code, covering all the possible and impossible edge cases. Maybe this is why many of us are getting hooked on the Property-based testing approach or at least we are not opposed to try it out.

It gives us an ability to run a single test case hundreds of times on a large range of data, covering edge cases we’ve never thought we had in the first place.

However, if you are like me and your day-to-day job is to create an API and save data into a database or maybe even send it over to another API, you also probably struggled to come up with a good application of this practice. It is easy and “very useful” to test that a reverse of a collection is still working. But, when it comes to if-else conditions, we find it hard to come up with the right property to test.

In this talk I would like to focus on a practical application of this concept, presenting some examples in ScalaCheck. I will start with a summary of what Property-based testing (PBT) framework equips you with and what should you expect from it. There will be basic examples demonstrating the power of PBT. But mostly, I will cover existing patterns and tips you can take to your normal life projects and use them to leverage this PBT tool.

About Svetlana Marina

Svetlana is a Software Engineer at ThoughtWorks. She likes delivering software into production and making this a joyful process. She's is a polyglot and during her career she had a chance to work with quite a set of different languages. The most impactful of them for her was Scala, which introduced her to the world of functional programming. Since then, she always tried to adopt FP concepts on her projects, even if they were in the mainstream non-fp languages.

Brendan Zabarauskas


Lost in a Universe of Types: My Adventures in Programming Languages

Programming language design is kind of like world building. This is what initially got me excited about it! In this talk I'll take you on journey, showing how I originally became excited about programming languages as a result of my artistic interests. I'll then cover why we are excited about programming languages and dependent types at YesLogic, and share some of the struggles I've had in applying academic research to industrial problems.

About Brendan Zabarauskas

With a background in communication design, illustration, generative art, and open source software development, Brendan is fascinated by the intersection of art, design, mathematics and computer science. His current focus is on exploring how programming languages and type systems can be used as a tool for designing safer, more robust, and friendly software. This involves keeping abreast of past and present academic research and figuring out ways to integrate this into industrial applications. He currently works at YesLogic, building a dependently typed domain specific language for describing binary data formats.



Jack Kelly


Reflex Outside the Browser

Functional Reactive Programming (FRP) is often introduced by discussing events and behaviors, and how to transform and mix them. But once you understand the primitives, what do you do with them? Where do the first events come from, and how do you wire these parts into a larger whole?

FRP promises benefits in more domains than just user interfaces, so let's take a look at Reflex outside its most common habitat of web frontends. There's now a fairly up-to-date version of Reflex on Hackage, so we can play with it right away and leave GHCjs, Reflex-DOM, special build tools, and the custom nix frameworks for later.

An FRP network of events and behaviors runs inside a library called a "host", which interfaces between the FRP network and the outside world. Using an interactive OpenGL program as our example, we'll explore how a slightly larger reactive program hangs together, and how it uses the host's features to do what it needs to do.

About Jack Kelly

Jack is a Haskell enthusiast, lapsed tall-ship sailor and member of the Queensland FP Lab. He has tutored functional programming at universities and for industrial programmers, and loves seeing the lightbulb go on above people's heads. Jack became frustrated trying to reason about imperative code in dynamic languages, decided that Haskell looked like a good tool to solve business problems and followed a path through Data61 to the QFPL's door.

George Wilson


An Intuition for Propagators

The propagator model of computation developed by Radul and Sussman consists of stateful cells connected by independent stateless machines called propagators. These propagator networks are a helpful way to structure or think about computations, particularly those that are concurrent or distributed.

This talk will give an intuition for what these propagator networks look like, why they work, and how we can use them to build programs. Efficient implementation will not be covered.

The Haskell community has recently seen concurrency abstractions bearing similarities to propagators, such as the work on LVars by Kuper and Newton; and also projects directly influenced by propagators, such as Edward Kmett's recent work.

About George Wilson

George Wilson is an enthusiastic functional programmer from Brisbane, Australia. He works on open source Haskell projects and educational material at the Queensland Functional Programming Lab inside Data61. George is also a member of the Haskell Core Libraries Committee and the Committee.



Ben Hutchison
Ken Scambler

WORKSHOP - Getting started with Scala 3

Over the last 16 years, Scala has become one of the most widely used FP languages, and has had a profound influence on newer languages like Swift, Kotlin and recent versions of Java and C#.

It is also about to receive a dramatic overhaul! Scala 3, due to be released next year, adds, modifies and deletes dozens of features currently in Scala 2. These aim to simplify common workflows, discourage bad practices, encourage good practices, and in some cases, are bold innovations. The current beta version is not yet production-level stable, but the feature set is expected to largely be the same for general release.

Let's learn it!

Whether you're a grizzled Scala veteran or new to Scala & FP, this workshop will help you get going with Scala 3, get familiar with the features and how to use them.

About Ben Hutchison

Ben Hutchison is a software engineer of 20 years experience with a passion for the craft of programming. He works as a Software Architect at Seek in Melbourne. Ben founded and has co-organized the Melbourne Scala Meetup since 2009. He is a open-source contributor to the Scala core libraries and the Typelevel ecosystem.

About Ken Scambler

Ken is a longtime advocate of functional programming, types & category theory, and a co-organiser of the Melbourne Scala Users Group. Based in Melbourne, he is currently a software architect at MYOB.

Lyndon Maydwell


WORKSHOP - Crashkell

As part of Melbourne :: Compose 2019 I'm running - for the second time - a short introductory Haskell workshop called 'Crashkell'.

Over the last few years I've run previous versions of the workshop, but based on past feedback…

'Less Talking, More Typing!'

I reworked the content to…

  • Be instantly accessible via the web, with no setup required
  • Have no lecture material, being composed entirely of exercises
  • Progressively teach concepts without requiring jumping around
  • Be completely broken! Every exercise will crash, requiring debugging

Crashkell leverages Jupyter notebooks and the MyBinder platform to allow attendees to be up and running instantly. Jump directly into exercises with no section introductions and get immediate feedback inline, without the requirement to install any tools.

About the format of the workshop - The examples are broken by design. The flow of interaction is to run the exercise, look at the error, and work towards fixing the error while considering the meaning, and the motivation of the exercise. This is a great way to learn for a few reasons…

  • It prevents you from skipping through the code without reading
  • It teaches you how to interpret the languages error messages
  • It removes anxiety about breaking the code, since it starts broken
  • It facilitates discussion among groups of attendees
  • And finally, It forces the content author to consider the order of the introduction of concepts

I look forward to seeing you there!

About Lyndon Maydwell

Lyndon is currently head of engineering at Silverpond. Having joined the company 6 years ago, over this time he has been instrumental in transforming the agency from a handful of software and technology experts to the leading AI delivery specialists in Melbourne. A large part of this has been due to his commitment to a full-stack competency within Silverpond - providing not only the ability to crack the core of difficult problems requiring the application of cutting edge research, but also the buildout of instrumentation, integration, interfaces, deployment, and support required to take ideas to market. He has a strong interest in the analysis of building software quickly and correctly and as such has been a central figure in the functional-programming community - helping organise Melbourne's first non-academic conference in this field. This focus is tempered with the necessary pragmatism to work with clients on aggressive timelines to deliver in make-or-break scenarios. His diverse experience across search, ontologies, ISP tech, graph problems, distributed systems, web, and AI make it likely that he will have a useful contributing perspective on any software technology problem. Lyndon is also an amateur cellist and finds inspiration from musicality in the art of the expressive construction of beautiful programs.

Geoffrey Huntley
Javier Candeira

WORKSHOP - Introduction to Nix and NixOS

The Nix/NixOS ecosystem is a new way of building software.

Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. It provides atomic upgrades and rollbacks, side-by-side installation of multiple versions of a package, multi-user package management and easy setup of build environments.

NixOS is a Linux distribution with a unique approach to package and configuration management. Built on top of the Nix package manager, it is completely declarative, makes upgrading systems reliable, and has many other advantages.

This workshop introduces attendees to using, developing on, and developing for Nix and Nixos.

Some knowledge of unix-like command lines and some programming experience are required, but we'll assume no prior knowledge of Nix and NixOS themselves.

Please bring your laptop with a recent copy of VirtualBox installed on it.

About Geoffrey Huntley

Geoff is a software engineer who over the years has sysadmin'ed Tru64, Solaris, AIX, FreeBSD, HP-UX, RedHat and Debian/Ubuntu boxes. The Queensland FP Lab folks introduced him to NixOS about a year ago and he's super glad that they did.

About Javier Candeira

Javier is a software developer living and working in Melbourne. He likes short bios.

12:30-17:00 - Hang Out and Hack Room

Our Hang Out and Hack room will include: "office hours" (people can request help on particular topics, or offer to help others); lightning talks, free discussion and of course — hanging out and hacking… Bring your laptop!

13:30~15:30 - Unconference

The unconference is like open-mic for hackers. It's open for anyone to do a talk, just add your name to the list near the registration desk on the day of the conference.
Register for Melbourne :: C◦mp◦se 2019 tickets at Eventbrite