Two days of fun() at Lambda Days 2018

Are you curious about the Functional Programming trend that has been growing the past years? You should be! Many exciting new and old Functional ways are reshaping the software development world. In this post I will share my favorite talks from Lambda Days 2018.

I got the opportunity to travel to Krakow to attend the Lambda Days 2018 conference - its 5th edition. Lambda Days has been on my radar for a bit since A) It’s always good to go to conferences, and B) They have interesting Functional Programming talks. This year was no different.

The conference is small but well organized. The size makes it a bit more personal and hence easier to mingle and actually talk to the presenters. Good speakers, nice venue, a research track, and decent food made the whole experience very enjoyable. Another factor that made Lambda Days attractive to me was the high number of Elixir related presentations. Elixir is the main language we use in the Meltwater API team that I’m working in.

While the quality was very high with a lot of content to take in, there were definitely a few talks that stood out to me which I will highlight below.

My top 5 talks from Lambda Days 2018

Introducing HDD: Hughes Driven Development (José Valim)

Slides

José goes into details on how some of the newest features of Elixir were implemented. One of the things I was anticipating the most in Elixir 1.6 was the code formatter. Basically gofmt or elm-format for elixir. Ending once and for all the bikeshedding around code format style. The code formatter was to some extent based on a John Hughes paper from 1995 called “The design of a Pretty-printing library”, and some other papers in the same area.

In Elixir 1.7 - scheduled for release around July 2018 - the StreamData package will be introduced. This consist of lazy data generators for primitive types, and a property-based testing library. Again the implementation was based on a paper by John Hughes (and Koen Claessen) called “QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs”.

The joke is that as a language designer you wait for John Hughes to write a paper, and then implement it 10 years later in your programming language. HDD! John Hughes was my professor at Chalmers for the introductory course in functional programming (using Haskell of course), so it’s really cool for me to see one of my favorite languages be inspired by him. A very nice testament on how industry and academia can work together to shape our field.

Slides

Open Source software pretty much runs the world nowadays. The number of users who benefit from these projects has skyrocketed. However the number of contributors have not followed the same trajectory - instead remaining largely the same. This pose a big threat to the future of not only the software itself, but also companies (and governments!) that rely on it.

Heather wants to see more corporate subsidiary to help remedy the situation - and I couldn’t agree more. There are so many companies relying on open source software that make staggering amounts of money. At least partially their profit is due to being built on this amazing collection of open digital infrastructure created by enthusiasts. At Meltwater we already try quite hard to give back to the community. But I think we can still do better.

In praise of higher order functions - and of some friends and heroes (Mary Sheeran)

Slides

Great narrative about some important history of computing, and Mary’s own journey. Very illuminating with a focus on essential functional constructs such as map, fold, and scan. A history refresher is pretty much always needed for an industry that seems to make the same mistakes over and over. The talk highlighted key people but also some of their most influential papers. I now have an even bigger backlog of papers I Should Read™.

Guaranteed SLAs with higher-order functions, and no Magic Numbers! (Rafał Studnicki)

Slides

A battle story on how to use the well researched area of Control Theory to great effect in a modern “web scale” backend. The techniques Rafał describes can help you keep your services safe from overloading and keep their response times within a well defined interval. This talk gave me some very concrete ideas on things to try out in our work here at Meltwater. Sadly the implementation Rafał worked on is not open source, but there are other libraries available. Rafał also recommended a book on the subject, which looks very interesting: Feedback Control for Computer Systems.

Stop guessing and start measuring - Benchmarking in practice (Tobias Pfeiffer)

Slides

The author of the Elixir benchmarking framework Benchee outlines his views on successful benchmarking. What to do, what to avoid, and insights on how to best use Benchee. Some great stories about unintuitive results and gotchas. I especially liked the “benchmarking pyramid” inspired by the testing pyramid. This backs Tobias’ preference for doing benchmarks on the “Macro” level.

 MicroMacroApplication
Components involvedFewSomeMany
Setup complexitySmallMediumLarge
Execution timeShortMediumLong
ConfidenceLowMediumHigh
Risk of interferenceLowMediumHigh

Video recordings of the talks can be found on the Erlang Solutions youtube channel.

If you’ve read this far - thanks! Thoughts, questions? Please leave a comment below.

PS. Lambda Days 2019 is already confirmed. :)