location_city Bengaluru schedule Sep 12th 03:30 - 05:00 PM place Grand Ballroom

In Indian classical music, we have Jugalbandi, where two lead musicians or vocalist engage in a playful competition. There is jugalbandi between Flutist and a Percussionist (say using Tabla as the instrument). Compositions rendered by flutist will be heard by the percussionist and will replay the same notes, but now on Tabla and vice-versa is also possible.

In a similar way, we will perform Code Jugalbandi to see how the solution looks using different programming languages and paradigms.

During the session, conference attendees will take turns at coding the same problem using different languages and paradigms. There would be multiple such attempts by different participants during the Jugalbandi.


Outline/Structure of the Event

  • Setting the context and Kick-off (10 mins)
  • Announcing the Problem Statement (5 mins)
  • Everyone gets 15 mins to code the solution (15 mins)
  • First 6 Participants can come up on stage and discuss their solution by explaining (10 mins per participant) 
    • Idiomatic style in their language of choice 
    • compare and contrast with solution designed in other languages
    • Q & A
  • Closing (1 min)

Learning Outcome

Our hope is that via a Code Jugalbandi session:

  • People programming in different paradigms - imperative or functional, can see how each language solves the same thing differently.
  • Promote learning by comparison and contrast - a natural way for human mind to grasp new things.
  • It can also become a source of inspiration to try out a new languages and paradigms.
  • Would give people confidence that being polyglot can be within their reach.

Target Audience

Developers interested in FP paradigm.

schedule Submitted 5 years ago

  • Amit Rathore

    Amit Rathore - Functional Programming and the Battle for Survival

    Amit Rathore
    Amit Rathore
    Founder & CEO
    schedule 5 years ago
    Sold Out!
    60 Mins

    Startups are hot. They're fun. They're exciting, challenging, and romantic. They're also brutal. Only 1 in 20 startups succeed. 

    This talk is about how functional programming gives startups an advantage. Because every advantage is critical, in the fight to survive. And then to scale up, and thrive.

  • 60 Mins

    In this talk, I will talk about our motivation for creating Julia. Julia is a high-level, high-performance dynamic programming language. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. Julia’s Base library, largely written in Julia itself, also integrates mature, best-of-breed open source C and Fortran libraries for linear algebra, random number generation, signal processing, and string processing. In addition, the Julia developer community is contributing a number of external packages through Julia’s built-in package manager at a rapid pace. This is why Julia is seeing rapid adoption in universities for teaching and research, as well as in businesses.

    I will discuss what makes Julia fast. Julia's ability to combine these levels of performance and productivity in a single language stems from the choice of a number of features that work well with each other:

    1. An expressive parametric type system, allowing optional type annotations;
    2. Multiple dispatch using those types to select implementations;
    3. A dynamic dataflow type inference algorithm allowing types of most expressions to be inferred;
    4. Aggressive code specialization against run-time types;
    5. Metaprogramming;
    6. Just-In-Time compilation using the LLVM compiler framework; and
    7. Careful design of the language and standard library to be amenable to type analysis;

    I will also touch upon how the language design has made it possible to explore many parallel programming models in Julia, completely within the language.

    See: http://www.julialang.org/

  • Naresh Jain
    Naresh Jain
    schedule 5 years ago
    Sold Out!
    120 Mins

    When we think of OO, most people think of modeling THE real world in software by mapping every real world object (nouns) to entities in software. These entities are then modeled using Is-A-Has-A relationship to build complex, polymorphic hierarchies with deep object graphs. State is stored and mutated in-place inside the object to achieve the desired functionality. This paradigm leads to a fairly convoluted design and encourage imperative style of programming.

    Not everyone who has designed large complex systems, think of OO the same way. For instance, people who Test Drive, do not have the luxury of a big-up-front design, instead they focus on small and incremental design. IME, TDD facilities a design that is side-effect free and encourages a declarative style of programming. While decoupling and composing objects in a functional style with the right granularity of abstraction.

    Let's assume we've to build a web commenting and discussion feature (like Disqus). And we've a requirement to implement this as a jQuery Plugin. Can we apply pure functional principles to design this? Or will the design be better if we try a classical OO JS approach? In this live demo, we'll build this plugin from scratch and see how TDD will help us drive an object-functional design to strike a pragmatic balance between the 2 paradigms.

  • 45 Mins

    If you thought Monads are a mystery, then this demonstration would show you how to evolve your code towards a Monad without knowing about it. This demo will neither go into any Category Theory nor begin with monadic laws.  Instead, we will start with typical code that you see in your daily life as a developer, attempt to DRY (Don't Repeat Yourself) it up and eventually use Monad to remove duplication and verbosity. You'll also see how Monads make your code more declarative and succinct by sequencing the steps in your domain logic.

    Also, we know in Java8 Checked Exceptions + λ == Pain!  To be more precise, we will evolve a Try (exception handling monad) which is missing in Java8, similar to one found in Scala.  Finally, map back Try to the 3 monad laws.

  • KC Sivaramakrishnan

    KC Sivaramakrishnan - Introduction to OCaml

    240 Mins

    OCaml is a statically typed functional language with a fast native code compiler and incremental garbage collector. In this tutorial, we will first introduce the basics of OCaml using an interactive environment running in a web browser, as well as a local install of OCaml using the OPAM package manager. We will also explore how to compile OCaml to JavaScript using the js_of_ocaml tool.

    This tutorial is aimed at people with programming experience. Previous experience with a functional language will be useful but is not required. No prior knowledge of OCaml is assumed.

  • Daniel Steinberg

    Daniel Steinberg - Introduction to Swift Workshop

    Daniel Steinberg
    Daniel Steinberg
    schedule 5 years ago
    Sold Out!
    480 Mins

    If you are an experienced developer who hasn't had a chance to look at the Swift Programming Language, this workshop is for you.

    We'll look at language fundamentals: functions, variables and constants, collections, control-flow, optionals, generics, and closures. We'll look at Swift classes, objects, protocols, structs, modules, and enumerations.

    We'll use Swift Playgrounds to explore some of these aspects of the language including the latest additions to Swift 2.0.

    Swift is scheduled to be open sourced this fall. You will be able to use it for development on Linux and OS X.

    There will be several hands-on portions of this workshop. To fully participate in those, you must have the Xcode 7 beta installed on your Mac.