Functional Composition

Marc Andreessen famously observed that "software is eating the world". As an increasing proportion of our culture becomes codified (literally), we need to consider how to authentically express theory and insights from diverse fields in our software. This must account for domains besides business process automation, because information technology impinges on every area of our lives, not just commerce.


Music is an excellent domain to explore using programming, because it has a long history of pre-computational notation and is culturally vital. In this talk Chris will demonstrate that music theory can be delightfully represented as code. He will show how to make music starting with the basic building block of sound, the sine wave, and will gradually accumulate abstractions culminating in a canon by Johann Sebastian Bach.


Examples will be live-coded in Clojure, but no prior knowledge of Clojure or Lisp is required.


Chris Ford

Technical Principal @ThoughtWorksESP

Chris began to make music with code to compensate for his poor piano technique. It was only later that he realised that programming offers deep insight into musical structures. Over the past few years, Chris has given many talks presenting music theory to programming audiences, covering topics...

Read more


Whittle, 3rd flr.


Modern CS in the Real World


ClojureFunctional Programming


Slides are not available


From the same track

SESSION + Live Q&A Protocols

Using Randomized Communication for Robust, Scalable Systems

Three key needs that any distributed system must address are discovery, fault detection, and load balancing among its components. Satisfying these needs in a robust and scalable manner is challenging, but it turns out randomized communication can help with each of them. In this talk, we will...

Jon Currey

Director of Research @HashiCorp


Automated Test Design and Bug Fixing @Facebook

The talk describes the deployment of Sapienz, a system for automated test case design that uses Search Based Software Engineering (SBSE) that has been deployed at Facebook since October 2017 to design test cases, localise and triage crashes to developers and monitor their fixes. It also describes...

Nadia Alshahwan

Software Engineer @Facebook

SESSION + Live Q&A Database Architecture

Automatic Clustering At Snowflake

For partitioned tables, maintaining good clustering properties for frequently filtered dimensions is critical for partition pruning and query performance. Naive methods of maintaining good clustering is usually expensive, especially when the clustering dimensions are different from the natural...

Prasanna Rajaperumal

Developer @SnowflakeDB

SESSION + Live Q&A Quantum Computing

Using Quantum Computers to Simulate Chemistry

Quantum computing is unmistakably becoming a thing. With IBM’s announcement of their quantum computing cloud service at CES in January and Google’s announcement last year of their 72-qubit Bristlecone processor, suddenly quantum computing seems to be entering into the Enterprise. In this...

Peter Morgan

AI Community Leader & Founder and CEO Deep Learning Partnership

View full Schedule