Conference Slides and Videos are now available...

Functional Conf Day 1

Thu, Oct 9
08:30

    Registration - 30 mins

09:00
10:00

    Welcome Address - 15 mins

10:15

    Coffee/Tea Break - 15 mins

10:30
12:00

    Break - 15 mins

12:15
01:00

    Lunch Break - 60 mins

02:00
  • Added to My Schedule
    keyboard_arrow_down
    Premanand Chandrasekaran

    Premanand Chandrasekaran - Functional Programming in Java

    schedule  02:00 - 03:00 PM place Grand Ball Room 1

    Functional programming has started (re)gaining prominence in recent years, and with good reason too. Functional programs lend an elegant solution to the concurrency problem, result in more modular systems, are more concise and are easier to test. While modern languages like Scala and Clojure have embraced the functional style whole-heartedly, Java has lagged a bit behind in its treatment of functions as first-class citizens. With the advent of Java 8 and its support for lambdas, however, Java programmers can finally start reaping the power of functional programs as well. Even without Java 8, it is possible to adopt a functional style with the aid of excellent libraries such as Guava.

    This talk will explore how to apply functional concepts using the Java programming language and demonstrate how it can result in simpler, more elegant designs. We will conduct this in a hands-on workshop style with attendants being encouraged to code-along. So bring your favorite Java 8 aware IDE, an open mind and prepare to have a lot of fun.

  • Added to My Schedule
    keyboard_arrow_down
    Thomas Gazagnaire

    Thomas Gazagnaire - Compile your own cloud with Mirage OS v2.0

    schedule  02:00 - 03:00 PM place Grand Ball Room 2

    Most applications running in the cloud are not optimized to do so. They make assumptions about the underlying operating system, resulting in larger footprints with increased costs and risks.  The open source Mirage OS represents a new approach where the application code is combined with the specific components of the operating system it needs into a single-purpose unikernel appliance. With Mirage OS, developers can create lean and efficient unikernels for secure, cost-effective and high-performance network applications. Mirage OS unikernels run directly on the Xen Project hypervisor, which allows them to be quickly deployed to many leading cloud platforms.

    Mirage OS is fully written in OCaml, from the device drivers and network stack to higher-level synchronisation protocols and databases. In this presentation I will explain how we developed Mirage OS and why we choose to do so in a strongly typed functional language with a powerful module langage. I will then present some of the new features of Mirage OS v2.0 such as: support for ARM devices, Irmin: a Git-like distributed database and OCaml-TLS: a comprehensive implementation of the TLS protocol in pure OCaml. 

03:00

    Coffee/Tea Break - 15 mins

03:15
  • Added to My Schedule
    keyboard_arrow_down
    Keith Bennett

    Keith Bennett - Functional Programming in Ruby

    schedule  03:15 - 04:00 PM place Grand Ball Room 1

    Although Ruby is not known as a functional language, it does support higher order functions in the form of lambdas and procs. Ruby's support for both object oriented and functional approaches, along with its conciseness, clarity, and expressiveness, make it an excellent choice as a general purpose programming language.

    This session, geared toward the functional novice, shows how to implement functional approaches in Ruby, and shows why you would want to.

    Topics covered will include:

    • in testing, using lambdas to verify that certain behaviors do or do not not raise errors
    • lambdas as predicates
    • deferred execution
    • composite functions
    • nested functions
    • using lambdas to hide variables
    • functions that return functions (partial application, currying)
    • lightweight event handling
    • chaining behavior with lambda arrays
    • how lambdas differ from conventional Ruby methods
  • Added to My Schedule
    keyboard_arrow_down
    Debasish Ghosh

    Debasish Ghosh - Property based testing for functional domain models

    schedule  03:15 - 04:00 PM place Grand Ball Room 2

    Manual testing is something that's error prone, incomplete and impossible to replicate on a large scale. We have instead been using xUnit style of testing for quite some time now. This approach has a number of drawbacks like (a) We need to write test cases by hand which again doesn't scale for large systems (b) We may miss out some of the edge cases (c) Safeguarding missing cases with coverage metrics doesn't help, since metrics are mostly based on heuristics (d) maintaining test cases and test data is a real pain.

    In property based testing we write properties and not low level test cases. And let the system generate test cases which validate such properties. There are 2 main advantages with this approach:

    1. You think in terms of properties (or specifications) of the domain model which is the right granularity to think about
    2. You don't need to manage test cases, which is completely done by the system that generates a large collection of test data

    This approach is ideal for the functional programming paradigm, which focuses on pure functions. Using functional programming it's easier to reason about your model - hence it's easier to test functional programs using properties. In this talk I will take some real world examples of property validation and verification using scalacheck (the property based testing library for Scala) and a real world domain model.

04:00

    Break - 15 mins

04:15
05:15

    Break - 15 mins

05:30
06:15

    Break - 15 mins

06:30

    Fish Bowl - 60 mins

07:30

    Dinner and Networking - 180 mins

Functional Conf Day 2

Fri, Oct 10
09:00
10:00

    Important Announcements - 15 mins

10:15

    Coffee/Tea Break - 15 mins

10:30
11:30

    Break - 15 mins

11:45
12:30

    Lunch Break - 60 mins

01:30
02:15

    Break - 15 mins

02:30
03:30

    Coffee/Tea Break - 15 mins

03:45
  • Added to My Schedule
    keyboard_arrow_down
    Akash Manohar

    Akash Manohar - Elixir Today: a round-up on state of Elixir and it's ecosystem

    schedule  03:45 - 04:45 PM place Grand Ball Room 1

    Elixir is a functional and dynamic language built on top of the Erlang VM. The development of the language is happening at a fast pace. People in the community have participated actively to write tools and libraries, required to write real-world apps in Eilxir.

    In this talk, I will attempt to skim through all the new features in Elixir, a few important libraries with short examples and some learning resources.

    Each tool showcased in this talk, will have a 3-step tryout, with the simplest example.

  • Added to My Schedule
    keyboard_arrow_down
    Rahul Goma Phulore

    Rahul Goma Phulore - Object-functional programming: Beautiful unification or a kitchen sink?

    schedule  03:45 - 04:45 PM place Grand Ball Room 2

    Scala began its life as an experiment to “unify” object-oriented programming and functional programming. Martin Odersky believed that the differences between FP and OO are more cultural than technical, and that there was a room for beautifully unify various ideas from the two into one simple core.

    How successful has Scala been in its goals? Is it the like “the grand unified theory of universe” or like the infamous “vegetarian ham”? [1]

    In this talk, we will see just how Scala unifies various ideas – such as type-classes, algebraic data types, first-class modules, functions under one simple core comprising of traits, objects, implicits, and open recursion. We will how this unification unintendedly subsumes many concepts that require seprate features in other languages, such as functional dependencies, type families, GADTs in Haskell. We will see how this has given a rise to a new “implicit calculus”, which could lay a foundation for next generation of generic programming techniques.

    We will see that this unification comes at a certain cost, wherein it leads to some compromises on both sides. However many of these trade-offs are particular to Scala (largely due to the JVM imposed restrictions). The goal of unification is still noble, and we need not throw the baby out with the bathwater.

    [1]: https://twitter.com/bos31337/status/425524860345778176

04:45

    Break - 15 mins

05:00
06:00

    Closing Talk - 15 mins