Lambda Days

Lambda Days took place during 8-9 February 2017 in Cracow. As Cracow is our home city we of course couldn’t stop ourselves from taking a part in this event.

What are Lambda Days?

If you are asking yourself that question, you have been probably living under a rock or something. Jokes aside, Lambda Days is conference that happens annually and attracts a lot of functional programmers.

As organizers say:

Lambda Days is a one of a kind experience in the functional world. Never-failing explosion of enthusiasm and talent is what gets us motivated to explore this amazing community in all of its potential. A journey we take through different ideas, technologies, paradigms and languages inspires creativity, growth and pure enjoyment of coding.

And it is totally true. There is no other place or event where Scala, F# and Erlang/Elixir developers can coexist peacefully.

Keynotes

I have to say that variety of keynotes really overwhelmed me. From representation of positive integers ( Why functional programming matters by John Hughes and Mary Sheeran) as functions and beautiful Haskel errors (a.k.a. several A4 pages of t => t) to representing stock prices as wall of pennises. (Ain’t joking here… Embodied Interactions ) Especially interesting was keynote titled Build Good Software: Of Politics and Methods. It was briefly describing destructive consequences of bad design and overcomplicating software. That’s too bad that Java developers hadn’t chance to see it…

I really think that John Hughes should have been awarded with a title of attention thief. Probably due to his body language and the way he used his voice is that why he grasped my attention every time he took over the presentation

And yeah, about those Haskell errors…

Slide from John Hughes’ presentation.

Building Systems of Tommorrow

Were you aware of that in Germany there was developed a system to automatically send money to unemployed? Neither did I. And now I know why. It was all kind of mess and caused a lot of trouble. Kind Mr. Txus Bach was talking about software development mess ups and how to prevent them. Because at the end no bug was made on purpose. Main core of his presentation was idea of how static typing can help us preventing such errors. He stated that tightening domain of your functions can help you prevent mistakes. And to be honest I can totally agree with him.

$$$ Elixr & Money $$$

This talk presented by Tomasz Kowal thought me a lot about how to make resilient system. It could be easilly separated into several independent parts: cap db, let it crash and retrying. And of course those are terms that more or less describe good system.

First part had been treating about characteristics of ACID and BASE approaches to data storage and differences between them. Although in the end Tomek showed yet another approach that I think is neither BASE or ACID. If you would read Domain Driven Design simply you would probably know that every solution should be adapted to domain of the problem. Same applies for banking and accounting. No one considers bank accounts as simples fields that are mutated. Go ahead and log in to your bank account. What do you see? Balance and list of transactions! And the list of transactions is the key here. You balance account is actually seen by most of systems as a reduction of events. By the way that’s an essence of event sourcing.

Apart from storing data properly each banking system should be fault tolerant. He made me finally realize what let it crash is the essence. Let’s consider you’re flying a plane. Would you want to be flying a plane which software is written in Let it crash ideology? After few minutes of thinking you would probably realize that it’s far more safe than flying a plane with several redundancy layers. If something fails it will just restart and keep going. It’s far more optimistic than flying a plane that can suffer from blue screen of death

If you want to get more details about it, just watch the talk when it will be on Erlang Solutions youtube channel.

Using ClojureScript to launch iOS/Android apps to 1M users

This talk was especially interesting for me, because we actually think about pivoting our current project to a bit different technological stack. Before this talk hadn’t seen yet any of ClojureScript, I only knew a bit of Lisp from configuring my Spacemacs. I’m the kind of person that things the biggest problem of JavaScript is language itself. It has great ecosystem and great community. Although I don’t really like the syntax and unnecessary complexity. If you really want to enjoy modern syntax you either use a language compiled to JS or you use ES6 and compile to simpler JS. Clojure in it’s design is very simple language. In context of React Native it also simplifies a lot. Most of components are just pure functions.

Even before the actual talk ended I was already in the Process of installing cljs compiler. I regret not trying it earlier, really.

Elm and PureScript

Originally titled Building a Graphical IDE in Elm/Purescript for an Embedded Language that Compiles to the Erlang VM by Claudia Doppioslash. Claudia told us about project her company was working on lately. As far as I understood they’re using Erlang to control some hardware modules and they use Cowboy with Bullet to communicate with user’s GUI written in Elm and PureScript. Talk was very memy, check it out for yourself. ( slides can be easilly downloaded from Lambda Days site) The things that caught my attention the most were Erlang Flavored Lisp (first heard of it) and the fact that they were communicating with embedded device via socket connections.

In spite having some JavaScript experience, when it comes to modern Frontend design I look something like this.

Thus this presentation was quite helpful for me. Starting a fresh new project in Elm is far simpler than installing gazillion of dependencies of React (which I tried to be sticking with). For now I think that PureScript is a bit too hard (ish?) for me at the moment. But YOU should definitely check out the talk and decide for yourself. It gives a bunch of solid arguments for and against each of presented pieces of technology.

Written on February 12, 2017