I'm typing this as I'm flying home from the 2018 KotlinConf conference. Just like everyone else I talked to about it, I've also had a blast. Here's a short account of my experience (with possibly more details about some aspects coming later).
The conference being hosted in Amsterdam gave me the perfect opportunity to attend, as it was just a 2 hour flight away. No excuses this year. (Of course my company graciously paying for the trip also helped a lot, thanks again!)
The city itself was awesome as a first-time visitor but I'll spare you my impressions of it now. The actual conference venue, the Beurs Van Berlage was a nice fit. Historic architecture, plenty of space, friendly staff, good catering.
Although I haven't attended a single talk in the notorious room with stained glass windows, I've still thoroughly enjoyed the building.
The organizers made an apparent effort to be inclusive of everyone in several ways, which I think should be emphasized and appreciated. The most obvious ones perhaps were the dedicated gender-neutral restrooms, the "no photos please" lanyards, and finally, the food selection which was in large part vegan, vegetarian, and even gluten-free.
While it might not exactly fit under this topic, the dedicated quiet room for people to take a break from the whirl of the conference or catch up on some work in peace was also a great idea.
I didn't personally need any of these things, but I still applaud the organizers having thought of them, and I really hope they were satisfactory for those in need of them as well.
I want to know who did all the design work for the conference. And I want to thank each and every one of them personally. They developed their own design language for this year's conference, which encompassed the Kotlin colours, the conference's bird logo, and symbolic elements of Amsterdam - windmills and tulips. And it was all over the place.
The banners, the flyers, the merch, the organizers' shirts (I want one of those so badly, please sell them online?), the signage, the JetBrains presentations, everything was in harmony. These delightful touches were a highlight of the conference that I never would've expected.
We wear t-shirts and all sorts of merchandise to communicate to the world what we're enthusiastic about, and for some of us Kotlin is one of these things. Being in a building full of people where wearing such things means absolutely nothing because everyone is a Kotlin fan is extraordinary - something I first experienced at the Kotliners 2018 conference.
There were mentions of how welcoming the Kotlin community is in Andrey's keynote - as well as about how people seem to love Kotlin (and of course, Kotlin loves us too).
My personal experience reinforces those statements. Maybe I just got lucky, but every Kotliner I met - whether at the conference or outside the venue, around the city - really was super friendly and welcoming. I got to talk to people from all over the world about this thing we all love (and with some people, about much more as well). We might be doing this online every day somewhat unknowingly, but it's still entirely different in person.
Let's get just a tiny bit technical. What did we actually learn about Kotlin this year through the talks?
Unsurprisingly, JetBrains is still pushing multiplatform projects heavily. Their dream of Kotlin being a general-purpose language that can run anywhere is alive and well. There were many talks about multiplatform and Native capabilities, and the latter is now in Beta.
Coroutines are constantly evolving. The recently introduced structured concurrency is a great step for managing them more consciously, and now we have the talks to share with people wishing to learn about it. Implementing logic in top level coroutine-aware functions instead of classes and then connecting them all through coroutine Channels was another highlight. And there's more to come later down the road: coroutine worker pools and a coroutine construct that can produce the behaviour of Rx Observables are just some of the things still in the works.
While we're talking about concurrency - shared mutable state is pure evil, as it has been repeatedly mentioned. Let's keep getting rid of it whenever possible.
Finally, sealed classes were trending all throughout the conference. And they really are great! I think we need not look further when we're representing state.
I'll also spare you a detailed description of every talk I attended in order, at least for now. However, I'd like to briefly mention just some of my favourites. Of course these are only out of the ones I attended there in person, I'll have to catch up on the rest from the recordings later.
There are two that I expected to love going in, and they delivered.
The first was Android Suspenders by Chris Banes , which was a journey with coroutines that I took myself in the last couple months almost step by step, and was very reassuring to see and hear that I did so correctly.
The second was Representing State: the Kotlin Edition by Christina Lee, which she presented in spite of all her troubles beforehand. This was a very slick talk about how to take the time to design state that's descriptive and in a sense, inherently correct.
And then there were the talks that surprised me.
The second day of the conference started with I am a developer at 54 by Alicia Carr, which, while having nothing to do with Kotlin, I still think might have been the best talk of the conference. She was inspiring, energetic, enthusiastic, and had excellent presence while telling her story. I had no real expectations for this talk, but it was truly amazing.
I followed someone else's advice to pick Best Practices for Unit Testing in Kotlin by Philipp Hauer in its time slot. This talk was fun, lively, and had lots of practical advice. For example, now I'll definitely have to look into moving to JUnit 5, as well as replacing mockito-inline with MockK...
Finally, while I expected to enjoy New Type Inference and Related Language Features by Svetlana Isakova based on the speaker, I didn't expect it to contain so much information that was news to me. The new inference features seem seriously magical, and I can't wait for them to be stable and widely available.
Well, that's it for now!
I fully expect next year's KotlinConf to not be in Europe, although the organizers have not yet revealed its location (but it's supposed to be announced soon). Wherever in the world it takes place, I'll do everything I reasonably can to get there, because for a Kotlin enthusiast at heart, this is an experience like no other.
See you there?