Almost two months ago (time sure flies) I attended for the second time the conference Scala eXchange, one of the largest Scala conferences in the world, and which happens to be 1 tube stop from the office you can find me from time to time in London. Also happens to be an excellent conference, and Iâ€™m repeating next year (yes, I already got my tickets).
For those who donâ€™t know, Scala eXchange is a 2-day (plus an unconference day) conference in central London, bringing most of the library developers you love to talk about cool stuff.
Keynote: The Maths Behind Types with Bartosz Milewski
We started with the big category theory guy
. In case you donâ€™t know, Bartosz is the author of the widely loved series of videos on Category Theory for Programmers. Havenâ€™t watched them yet (I donâ€™t have fond memories of Category Theory when I was studying abstract algebra), and from what I heard from people who have, I had the luxury of seeing a short intro to almost half of the series in just a conference session.
I got away with a bit better understanding of the relationship of the vague notions I remember from CT (universal properties/objects, final objects, etc) with type theory. All in all, very interesting and a good start.
|Beware! There's a functor behind you!|
I caught up with the Scala Madrid gang, since they had a stand to promote the meetup. Got a free copy of Dave Gurnell and Noel Welsh Advanced Scala with Cats
at the Underscore booth and drank a lot of coffee. I suspect I also stumbled on Jon Pretty and caught up on what he was going to present, but might have actually happened a few coffees later.
Free Monad or Tagless Final? How not to commit to a monad too early by Adam Warski
This was the first time I saw Adam presenting, and was well worth it. My knowledge of tagless final encoding is... shallow, to say the least (and not like my knowledge of free is excellent, but is better) and I left this talk feeling like I learnt a lot. The best way to leave a talk, I think. I also found later that Pere has a comparison of them, also adding the Eff monad to the mix.
Be sure to check his companyâ€™s (SoftwareMill) blog for a wealth of interesting posts. As well as subscribe to ScalaTimes, which they curate weekly.
|â™¬ So Tagless can't you see, I want to break Free â™¬|
Farewell Any => Unit, Welcome Akka Typed! with Heiko Seeberger
I had read stuff by Heiko (for instance, a post on using akka-testkit), and had started having a look at the new typed APIs, but seeing it live-coded by the person who wrote a big part of it is priceless. Now, I need to rewrite my unfinished, unpublished ad server in akka-typed!
I had already seen Danielaâ€™s talk (was on the same slot) A pragmatic introduction to Category Theory
at Scala World earlier in the year (and, IIRC with longer time so it was almost a workshop, enjoy the video) so I skipped it. But can recommend, was excellent.
|To Akka or not to Akka... Actually, there's no question|
Had lunch with a Scala friend (hi there Carlos!) while explaining which talks I attended and exchanging impressions on the ones he attended. Also discussing freelancing/contracting, situation in Spainâ€¦ Standard stuff.
Keynote: Architectural patterns in building modular domain models with Debasish Ghosh
It may have been my usual after-lunch sleepiness, but I didnâ€™t enjoy this talk, even if it seemed interesting overall. Might need to rewatch the video to get a second impression.
Shapeless is dead! Long live shapeless with Miles Sabin
This was a bit too deep into the internals of shapeless, but Miles is a great speaker so it was quite fun, even if I didnâ€™t get a lot of mileage out of it (yet).
|Turning the problem around?|
Introduction to Freestyle and Freestyle RPC with Raul RajÃ¡
After getting a better grasp on the free vs tagless dichotomy earlier in the day, I got to enjoy Raulâ€™s presentation on the library he has written with the other folks at 47 Degrees (they are also the organisers of LambdaWorld and LXScala and maybe others). The gist of this library, donâ€™t bother with free or tagless: use freestyle and you can switch from one to the other as you see fit with ease.
|He walked around as I was shooting...|
Lightning sessions: Optic algebras
This is the only talk I remember, by Jesus Lopez. It was very interesting, but would love to see a full talk on it. I got into the wrong room for the second lightning, and chose wrongly for the third, so wonâ€™t even mention.
Keynote: The Magic behind Spark with Holden Karau
Iâ€™ve had the pleasure of hearing Holden speak something like 6 times already, and she always delivers fun talks. I mostly knew this one, since it was a Scalafication of the keynote she gave on PyData Barcelona 2017 (which focused on the Python side of things, youâ€™ll also see me introducing her first time in the morning, by surprise, before coffeeâ€¦). You wonâ€™t see garden gnomes the same after this talk.
|Take the red pill|
Freestyle, Free and Tagless: Separation of concerns on steroids with MichaÅ‚ PÅ‚achta
This one was mind blowing, enjoyed a lot MichaÅ‚ â€™s style. After the warmup on free/tagless/freestyle the day before, I finally got the gist of why we bother with all these programs-as-data-kind-of-functional-encodings. Ticked for several rewatches. You can find the slides here.
|But, which is the Good, the Bad, the Ugly, MichaÅ‚?|
Building scalable, back pressured services with Akka, with Christopher Batey
This was an interesting, technical talk about services, TCP and backpressure. A bit too close to metal for what I do currently, but good to be aware of. Also, Christopher gave an excellent presentation, first time Iâ€™ve seen him, will repeat.
Impromptu: Using dependent types to build a better API for async call graphs with Jon Pretty
I had seen a previous version of this talk at the London Scala User Group meetup, and understood nothing. This time though I got it (not sure if Jon did anything magical with the talk or it was me knowing more), and it has gotten me thinking about similar, graph-related problems and the approach taken (use the types, Luke!) Also, Heiko raised an issue in the repository (since, the code fits in a slide!) and I wrote the small PR to address it. Now I want to do something more useful for the library than that though!
|Standing room for Jon!|
A reactive database of facts with Peter Brachwitz
I wasnâ€™t overly interested in any of the talks in this slot, so went with this, somehow â€œdatabase of factsâ€� in my head sounded like Prolog, which made it interesting. It was not (for me), it was more like how to access Datomic with Scala/Akka and doing it properly. Not specially useful for me, but probably is for someone else.
I sincerely donâ€™t remember which talk I attended in this block. Iâ€™m pretty sure it was not Peter Hiltonâ€™s How to name things
, since I saw that one last year (was great). It might have been Refinement types in practice
with Peter Mortier, but donâ€™t remember anything
except vaguely mentioning refined types to a coworker for an API we have. Okay, I just checked the video and definitely it was Peterâ€™s. You can find the slides here.
Keynote: Composing programs by RÃºnar Bjarnason
Coauthor of The Red Book of Scala (beware, affiliate link), and an excellent explainer. This was an outstanding close to a very categorical conference. Even though Iâ€™m a mathematician, my working knowledge of category theory has improved 100x after learning Scala and seeing how my colleagues here approach problems in a very categorical, functional, typed way of seeing the world.
Last year we had a PR hackathon, where together with Carlos we contributed a WIP for regexes to scala-native. This year we had more of a workshop/live coding event, where we could choose among subjects. I donâ€™t remember all of them. Raul was there for Freestyle (missed on this one). There was one about writing stuff for Minecraft in Scala...
Well, I attended what I think were the coolest: how to actually use Akka Typed, with Heiko and a tour of typelevel libraries and how type classes help in the implementation with Travis Brown. They were oh-so-interesting.
Next year, again and more.