This year I’ve attended yet one more time one of the biggest Scala conference in central Europe – I am talking of course about Scalar.
My “Scalar adventure” started a day before the conference, during the official speakers dinner. Given the fact that I was taking part in Apache Spark workshop day before in Tricity, I’ve landed in Warsaw pretty late. Before I’ve actually sat down at the part, I’ve managed to: get lost in the city, find my way back to the club, meet Rafal from Virtus Lab, get lost one more time on a contrived & complex elevator system, before finally settling safely at the table.
During speaker’s dinner I’ve managed to have a (hopefully not too) long discussion with Mathias Doenitz. I don’t know how starting from Spary vs Akka-Http, through Rective Stream principles, we’ve ended up discussing different modern political system. The discussion was intense and engaging, but (when I think about it now) I get this notion that maybe Mathias had enough of me at the very end
When speakers party ended, it was time for me to move to the before party organised by Iterators. It was the same motor-cycle club/pub we’ve enjoyed last year. It was really awesome to see some old faces. I could not stay long that night, but a chance to meet that many friends in one place, was heart-warming before the next big day.
The Big Day
It was no doubt my indescribable pleasure to open the conference with my “Introduction to typeclasses” talk. I got incredible feedback from so many people that it was really overwhelming. All your enthusiasm was inspiring and was best award that a speaker can get. Even though the presentation was aiming beginners, I got few thumbs up from few advanced Scala developers as well. Once again, thank you for all the good word – it was my great pleasure.
Scalar line up was amazing. Talks listed in agenda were well balanced, targeting rather more advanced Scala programmer
“Swave – a fresh reactive streams implementation” by Mathias Doenitz
Meeting the speaker day before, knowing his deep knowledge on the topic, I could only expect the best content. And I was not disappointed. Talk by Mathias was outstanding. We’ve learned about his newly created library (that is still under heavy development) called Swave. It implements the Reactive Streams protocol. Being very alergic to fashion-driven hypes in our industry, I was positively surprised. I believe it was the very first presentation that I saw regarding Reactive Streams, that did not quote half of the Manifesto on the first few slides. Wow, that was refreshing!
Coming back to the content, I’ve always looked at the whole Reactive Streams extravaganza with a bit of a slight distance. It got the smell of “buzzword” all over it. Mathias was nice enough to go beyond a trite & hackneyed formulas that follow the manifesto. He showed us how Reactive Stream protocol can help out building high-level abstraction of any solution. Just imagine any whiteboard discussion that you most certainly had in your life. Drawing boxes, connecting them with arrows. That high level of abstraction is aimed by the protocol, to push that general overview of the solution directly to the code. Each of the boxes can use whatever set of technologies that it requires, communicating with other boxes through common protocol.
Mathias pushed the concept a bit further. Seeing how declarative the solution might be on a high abstraction level, he wondered if the same approach would rise number of benefits if used on a local class/method level. And that what in few words Swave is all about. It implements the Reactive Stream protocol in order to communicate with an outside world, while at the same time providing nice, declarative API.
Next step: Since Swave is implemented with Shapeless, I’ve already forked it on github. Who knows, maybe I will do some PR on my free time (if I find some).
Presentation can be found here
“The Eff Monad, one monad to rule them all” by Eric Torreborre
That was an outstanding talk. Eric brough very dense and quick retrospective to the problem of combining different types of monads. He showed how that dilemma can be solved with monad transformers, with all the problems and gotchas that you can get. It was intense, but intermediate Scala developer could easily keep up with speaker’s velocity. Especially since that was considered only introduction to the topic.
After that we’ve moved to the the very essence: the Eff monad. Concept that was evolving approximately the same time monad transformer were being published. But it took 20 years of additional research to actually be what it is today.
I like the fact that the presentation was quoting papers, while in the same time keeping clean examples on slides in Scala.
Next step: read monad transformers paper, read Eff monad paper, revisit slides from this presentation
Presentation will be available soon…
“Incremental compiler: taming scalc” by Krzysztof Romanowski
I must admit I was a bit disappointed. I was really waiting for this talk. Unfortunately, taming scalac ended up being taming sbt. And not really sbt, but some simplified version of sbt. And not event that, because it was some old algorithms that are no longer being in use.
I recognize that the speaker had deep knowledge of the topic. It’s just to bad that he did not sell it properly.
“Akka-Cluster-ETCD” by Maciej Biłas
Next was Maciej with his talk about “Akka-Cluster-ETCD” – a tool both he & his friends developed to simplify deployment of Akka based solutions on a cluster environment.
The idea is pretty neat. Whenever you join a new node to your cluster, you must provide URI to one of existing “seed nodes”. All works fine but it requires knowledge of one of physical address of at least one of the seeding nodes. That becomes troublesome when living in a cloud environment, where the IP address of the VM/container is unknown before the deployment.
And that’s where Akka-Cluster-ETCD kicks in. It allows the node to join the cluster in a cloud environment without the seeds information. Slides from the presentation are not yet available, but you can find examples on project’s github.
Next step: run the docker-compose example, see ETCD in actino
“Shapeless? Easy!” by Valentin Kasas
Now that was the presentation I was waiting for the whole day.. and I was not disappointed! Valentin is an author of a blog that I first encountered when learning about Shapeless. I very much liked the introduction to HLists, with step by step introduction to basic functions that operate on it. You could really witness true power of typeclasses in Scala, seeing how those functions are implemented.
Shapeless is considered a tool for library developers. It’s tricks are invaluable for anyone creating third part library. It’s harder to find it’s usefulness for our “daily” problems. That’s why talk’s main example – diff function between case classes – I’ve welcomed suprissed and impressed.
Presentation is availble online – in a interactive REPL format for anyone to follow!
Next step: Familirize myself better with Shapeless, see internals of the HLists functions, try to implement the diff function on my own and compare it with Valentin’s solution
“IOT, timeseries and prediciton with Android, Cassandra and Spark” by Amira Lakhal
To be completely honest I did not expect much after this presentation. For me it sounded all like one, big buzzfest. For me title of the presentation was “Buzz, timeseries and buzz with Buzz, Buzz and Buzz”. I was surprised with the quality of the presentation. It was not really rocket science and was aiming rather beginners but that was just a right amount to show how with proper tooling, you can create an awesome app. Because let’s be honest, the regression algorithm was already implemented, Cassandara queries were as simple as they can get but overall impression of the software created was amazing. The power for me was the simplicity of the design. Amazing app created with properly combined technologies
Given the amusing performance (speaker running from one corner of the stage to the other to show the app in action), well balanced speed (well, maybe sometimes to slow – reading every bullet point from the slides) gave a presentation worth remebering.
Next step: Find time to finally learn a bit more about ML.
“Cool toolz in the ScalaZ and Cats toolboxes” by Jan Pustelnik
Now that was by far the best introduction to ScalaZ I have ever seen (and I’ve seen a lot!). And not only did we get the ScalaZ but also Cats in parallel as well! How cool was that. Velocity was just perfect, examples were spot on. I could sit there and listen to Jan’s presentation for hours.
Presentation is available online
Next step: Just watched the whole thing once it is online – because it is THAT good.
“Scala SWAT: Tackling 1 Billion member social network” by Artur Bańkowski
Last was Artur’s story tale of how he & his colleagues tamed a dragon called 1 Billion member social network. It was interesting talk, really pleasant and funny to listen to.
What striked me was the part when Artur was describing how he evaluated different graph databases. I was surprised that OrientDB was not able to handle more then specific number of node and simply went into read-only mode. Yet another victory for node4j I guess.
Scalar was a success! Presentations presented high quality content and were well presented. It’s a conference not to be missed in 2017 if you live in Europe and do Scala professionally. See you all next year!