Lately we attended Scala.OI conference in Paris. It was a two day-three track conference with one of the tracks in French. It was strange, since every conference I attended was English only. Also, that was to only room with windows, so I was even more interested in "Petit salon" :)

Disruption of Scala community?

After Roland Kuhn's keynote about the challenges and some solutions on building distributed systems, John Pretty and Lars Hupel told the story of Typelevel Scala. How the three of them rode days in a car up in Norway and talked about Scala, how the idea of Typelevel was born by the end of the trip.

Advertisement

They talked about how they got to the conclusion that they should fork Scala and try to maintain their own version of the language (not everyone thinks that's a good idea).

Their purpose is also to create a unified ecosystem for the libraries they are maintaining besides implementing features in Scala faster than Typesafe can do. They understand what Typesafe's reasons are being focused on stability and compatibility, but they want the language to move faster, don't stand in their way or even support them better.

They would like to provide three layers of compatibility with their own compiler (you need to compile your brand new language, aren't you?). Binary compatibility, which means classfiles created with tlc (the Typelevel compiler) should be compatible with classfiles created with scalac and vice versa, source compatibility, so you can use source codes in Typelevel Scala which can be compiled by scalac (basically "normal" scala code), and semantic compatibility, so code compiled with either compilers will produce the same program. Typesafe welcomes the idea, let's see what comes out!

Look, there's a pony in the skies!

Later the day Bodil Stokke gave a spectacular presentation about Purescript, "small strongly typed programming language that compiles to JavaScript" in the form of a Super Mario-style jumping pony game in the browser. She demonstrated how easily you can build up even a simple physics engine what you can end up running in a browser in a few lines. Purescript uses Haskell syntax (I can't really imagine Bodil coding in Scala in public), so if you're familiar with Haskell it can be fun to play with it or even work with it, otherwise maybe you'll be reminded to Brainfuck. Purescript still has a better chance making me a frontend guy than Javascript. Especially if no HTML/CSS involved.

Advertisement

Earlier this year I watched Evan Czaplicki's talk at Craft Conference about the Elm language he created, and he used the same example of a Mario game and I also saw Bodil watching it, so maybe that's where she got the idea of creating this presentation which is definetly has a lot higher cool factor that simply coding and looking at some text output. Something similar was Alexandar Prokopec' talk on Scala Days this year on "Experiment: A Reactive 3D Game Engine in Scala". I definitely welcome the idea of this type of presentations, it can show how powerful is a language a catchy way, even if you are not doing any rendering at all.

Netflix <3 APIs

Luckily there was two talks Brendan McAdams on APIs. With distributes systems the importance of APIs raised sharply, and creating APIs can be painful if you don't have the right tools to create them. Having a well documented API saves a lot of time for your co workers (do you want frontend guys love you with the most sincere love? that's the way to their hearts. dependant backend services' maintainers will love you at heart) and even for yourself (frontend guys with sincere love ask less).

He demonstrated how you can make this happen using Scalatra, a Sinatra-like web micro-framework, and Swagger, a really powerful tool for documenting your API and make it discoverable in a generated web view. With a few lines of additional code per action, you'll have something like this. I don't have to explain how cool is that! One more feature could make it even more awesome: if it also could provide validation based on the documentation you already provided about a field, like a required string with at least 5 characters length. Altogether, I'm really excited to try this out with one of our service which we currently use Play for.

Last words

Scala.IO was a well organized event with quality talks, a particular conference party (rived ride on the Seine) and it taken place in one of the best cities in the world. Don't hesitate to attend next year if you have a chance!