Rúnar Óli Bjarnason: Functional Programming is Terrible

Rúnar Óli Bjarnason (@runarorama) says, “Functional programming makes us happy… programming is exhilaration… programming is exciting.”

He says this however, after telling us why Scala is not always up to the task of the requirements of functional programming. It lacks tail call elimination; forcing the use of trampolines. It boxes functions leaving a greater memory footprint. It struggles with higher kinds; forcing bizarre type annotation boiler plate.

But he says, “functional programming is awesome” as it leads to predictable, testable, modular, smaller, and easier to reason about code. We feel good and we have pride in our work as it “looks and feels clean.”

He says, “we have to insist that Scala gets better at Functional Programming or we have to leave it behind.”

Come get in touch with your feelings with Rúnar. Your happiness matters.

You can find the talk here on YouTube.

Eugene Yokota: Learning Scalaz

Eugene Yokota (@eed3si9n) runs a blog called learning Scalaz where he has documented honestly and thoroughly his experience approaching pure functional programming in Scala. It is a wonderful goto for Scalaz, especially the cheat sheet.

In this talk he describes his learning process and how he has approached Scalaz, sharing his insights and his favourite resources. Unsurprisingly the best approach he recommends is trying it out yourself and playing with the REPL.

If you are learning Scalaz you may also be interested in Nick Partridge’s great intro to Scalaz.

You can find the talk here on NewCircle.

Mark Hibberd & Tony Morris: Argonaut – pure functional JSON

Mark Hibberd (@markhibberd) and Tony Morris (@dibblego) show us you can serialise and deserialise JSON without hating yourself. Argonaut is a purely functional JSON library that uses Lenses and Zippers to traverse and modify JSON structures while remaining completely immutable.

This talk has a good overview of Algebraic Data Types, functional lenses, Type classes and zippers.

Oh, and it uses Scalaz under the hood.

You can find the talk here on YouTube and can find the slides here.

Manuel Chakravarty: Do Extraterrestrials Use Functional Programming?

Manuel Chakravarty (@TacticalGrace) answers the question, was functional programming invented or was it discovered? He argues that it was in fact discovered and therefore if aliens were to visit us they were be aware of functional programming just as much as the law of gravity or relativity. Why they steal our underwear from the clothes line is still a mystery.

The slides are hard to see in the video so it is probably best having the slide deck open while you watch.

You can find the talk here on YouTube and the slides here.

Tony Morris: Monad Transformers

Tony Morris (@dibblego) is no stranger to this site and in this talk he unlocks monad transformers. His examples are in Haskell but as always he explains the concepts for a general audience.

Monad transformers exist, mostly because monads don’t compose in the general case. Embracing them helps simplify your monadic code a great deal and is something you can use in your everyday programming.

You can find the talk here on Vimeo and the slides here.

Dan Rosen: Declutter your code with monads

Dan Rosen (@mergeconflict) does an excellent job in this talk of demystifying monads through a thoroughly practical example of how the “monad design pattern” can be used to de-clutter your code.

He gives a couple of examples using the Option, Validation and List monads. He notes the similarities between these examples and introduces the notion of for-comprehensions to declutter his examples even further.

Dan is a great communicator and this is an easy talk to watch and understand. Perfect for those investigating the power of monads.

You can find the talk here on YouTube.

John Carmack: Thoughts on Haskell

John Carmack (@ID_AA_Carmack) is a legend. He has been a legend (in our opinion) since Commander Keen was released in 1990 for Id Software. In the world of 3d gaming John and his team has had many breakthrough hits with Wolfenstein 3D, Doom and Quake series. When it comes to achievements Carmack has runs on the board.

Which is why many ears were pricked by his keynote at Quakecon 2013 when he shared his thoughts on functional programming and especially Haskell. He speaks very enthusiastically on the benefits of immutability and how software becomes more compositional, easier to reason about and less likely to break when embracing a “brutally pure” language such as Haskell.

If you needed examples of Haskell in “the real world”, this talk will be one for your armoury.

You can find the talk here on YouTube.

Miles Sabin: Shapeless – Exploring Generic Programming in Scala

Miles Sabin (@milessabin) is a master of type systems. In this talk he gives an introduction to (and a brief history of) Shapeless and focuses on HLists or heterogenous lists. Shapeless is an exploration into generic programming in Scala. Did you know it was possible to map a function over a HList? That is possibly the sound of your brain melting in awe.

Shapeless is quickly becoming main stream and is in products like Spray.

Miles is currently developing Shapeless full time and is also a partner at _.underscore consulting.

You can find the talk on YouTube and the slides can be found here.

Wilkes Joiner: Functional Reactive Programming

Wilkes Joiner (@wilkesj) introduces us to Functional Reactive Programming and shows how traditional “callback hell” can be replaced with streams of events that are composeable. Hello Observable – the type that is filter-able and flatmap-able. Wilkes demonstrates how the code becomes much easier to reason about and much easier to control and reuse.

You can find the talk here on YouTube, the slides here and the code on GitHub.

Alexander Gounares: All your cores are belong to us

Alexander Gounares seems like a rather enterprising chap. He has started a company that is doing really interesting things with Erlang and multi-core programming. The journey has been far from smooth sailing however. His company discovered that (quite counter-intuitively) the more cores they threw at a programme, the worse it performed. This was due to (amongst other things) locking inside the Erlang VM. This is an interesting talk discussing how they improved the VM to perform at incredibles scales.

Thanks to Erlang Factory for the heads up for heaps of great talks on Erlang.

You can find the talk here on Youtube.

Katie Miller: Superhero monads

“Like superheroes,” Katie Miller (@codemiller) tells us, “monads are found in a particular setting… have a particular costume… are not the villains… and have special (possibly unexpected) abilities.” An intriguing introduction to this whirlwind tour of functional programming and the superhero monad. A great introductory presentation.

Katie is a former journalist turned Software Engineer at Red Hat and a co-organiser of the Brisbane Functional Programming Group. She says she is:

“…mad keen about functional programming and promoting women in technology, passions that combined when she co-founded the Lambda Ladies group

You can find the talk here on YouTube.

Seriously though, the Batman monad would totally destroy the Superman monad in a fight. You know this is true.

Ben Kolera: Isolating Side Effects with Monads

Ben Kolera (@benkolera) continues what has almost become a mini-series here at Functional Talks on the Reader, Writer and State monads. He gives, what he describes as a “beginner level talk” which is easy to follow. He takes us on a “refactoring journey” from “imperative” code to “pure” functional code, pointing out that pure functional code needn’t sacrifice state. He uses Scala and Scalaz in his example.

Ben is a co-organiser of the Brisbane Functional Programming Group and a web app developer who uses Scala in his day job. He says he:

“…loves how static types and pure functional programming help to create code that is beautiful, concise and yet still can be reasoned about with minimal profanities.”

Amen to that.

You can find the talk here on vimeo and slides here on github.

Brian McKenna: Roy – rescuing JavaScript from itself

Brian McKenna (@puffnfresh) is a man who thinks that JavaScript rightly sucks. Fortunately for us, he was prepared to do something about it. Generations to come will thank him. Enter Roy, an altJS language – that is, a language that compiles down to pure JavaScript. Brian talks through this Haskell-like language which amongst other features is immutable.

Brian’s day job is being a Scala/JavaScript dev at Precog, where he makes BigData obey. He is also the author of Fantasy Land and bilby.js.

You can find the talk here on YouTube.

Chris Ford: Functional Composition (musically speaking)

Chris Ford (@ctford) says, “Clojure is not the art, it is the easel, it is the paint.” What is the art, is the music which Chris masterfully pieces together with function composition in Clojure. This is a mesmerising talk performed by a virtuoso with an in-depth knowledge of both music and functional programming.

You can find the talk here on YouTube and the source can be found on github.

Unfortunately embedding this video is disabled on youtube. Sadly you will have to click the link.

Paul Chiusano: How to Write a Functional Program with IO, Mutation, and other effects

Paul Chiusano (@pchiusano) shows how we can write Functional programmes whilst having effects such as IO. He gently takes us through a typical imperative programme showing how effects can be minimised and then ultimately derives the IO monad. Paul is a co-author of Functional Programming in Scala and has just announced that he is now a freelance Functional Programming consultant.

You can find the talk here on YouTube.

Rúnar Óli Bjarnason: Dead-Simple Dependency Injection

Rúnar Óli Bjarnason (@runarorama) wrote the book on Functional Programming, well the Scala version at least. In this talk he shows how the Reader monad is used to inject dependencies into your Scala code. He starts with showing how functions can be curried and then generalised with Reader to avoid having your dependencies being explicitly passed around. As he says, “Inversion of control is really just a pretentious way of saying ‘Taking an argument.’”

It’s quality stuff.

You can find the talk here on youtube.

Bryan O’Sullivan: Running A Startup On Haskell

Bryan O’Sullivan (@bos31337)has no doubt that Haskell is a language suitable for the Real World and not merely a language for academia. In fact he has put his money where his mouth is and created a startup with Haskell as its core. In this engaging talk Bryan describes the realities of startups and what impact Haskell has had. Bryan is also a coauthor of Real World Haskell.

You can find the talk here on YouTube

Tony Morris: Dependency injection without the gymnastics

Tony Morris (@dibblego) and Runar Bjarnason (@runarorama) are giants in the functional community. Both have a long history in the functional world and are the founding programmers behind such projects as FunctionalJava and Scalaz. In this talk Tony lines dependency injection up in his sights and shows how it can be done in a “pure functional” way using the ReaderWriterState monad transformer. His language of choice in this talk is Scala but he shows how the concept holds in any functional language. There are a lot of concepts in this talk and may require a second if not third viewing. Either way, you will want to explore these concepts more closely by the end of the talk.

The talk can be found on youtube here.

Simon Peyton Jones: A taste of Haskell

Simon Peyton Jones is possibly the reason many are functional programmers today. He is one of the founding fathers of Haskell – a pure functional lazy language. In this classic talk from OSCON 2007 Simon presents to a crowd of functional novices an X11 window manager written entirely in 500 lines of Haskell called xmonad. A great talk if you are new to Haskell. This talk is two parts and is epically long, though it’s time well spent.

You can find part 1 and part 2 on blip tv. The slides can be found here, they’re awesome, despite the fact they’re written in Comic Sans.

John A. De Goes: Building a Data Science Platform in Scala

Whoa, did a CTO just say “megamorphic functions?” OH YES HE DID! John A. De Goes (@jdegoes) CTO of Precog (@Precog) is a man with experience and the war stories to prove it. He talks plainly about the highs and lows of functional programming with scala, scalaz and the JVM. He points out how the JVM punishes “good functional code” and how difficult it is to hire functional programmers. A great insight to an exciting company; and surely he must be the best boss in the world.

The talk is available here on youtube.