KotlinConf 2019 has come to a close, and overall it was a fantastic event. The Kotlin community is an extremely diverse group of folks who genuinely love thier Kotlin, and are basically all just the nicest people in the world. This was my first time at KotlinConf and I’ll be doing everything I can to make sure I don’t miss it next year. The team had a great conference lined up starting with the locale.
Copenhagen was a very cool place to host KotlinConf this year. For starters, the city itself is gorgeous, and even though the conference center wasn’t located downtown, Copenhagen has one the best (if not the best) Metros in the world which made getting downtown a breeze. It was also super easy to get transportation from Kastrup airport, and all of the locals were very friendly and willing to help when asked. Everyone I interacted with also spoke great English, which made it quite easy to communicate given my futile attempt to pronounce any Danish words.
The Bella Sky Center had enough space for attendees to move around comfortably, and the auditoriums for talks were spacious and it was easy to hear and see screens even from the back. The food was also great for a conference! Lots of tables with food during meal times, and healthy snacks in-between. There were espresso machines at the back of the main hall too, which meant coffee was always fresh and available.
Day 0: Workshops
Workshops were sold as a separate ticket, but I’d heard from people that attended KotlinConf in the past that they’re worth doing, and those people weren’t wrong. I was very torn between Garth Gilmour’s Deep Dive on Kotlin/Native and Salomon Brys’ workshop on Kotlin/Multiplatform. I’ve been a big fan of playing with the non-mobile use-cases for Kotlin/Native, but I ultimately opted for the latter since I felt I’d be able to turn around and use Multiplatform knowledge in my day-to-day work.
Solomon did a great job with the workshop in preparing the right content for an audience that would have some variation in their interests. We also ran into a few unexpected hiccups along the way like flakey wifi, and compiler/IDE updates that came out right before the workshop, and he and Romain Boisselle rolled with the punches and were able to work through issues that cropped up with ease. In the end, I feel like I came away with a better understanding of the Kotlin/Multiplatform infrastructure and ecosystem, and I look forward to using what I’ve gained to work toward building more shared components and maybe trying some more front-end Kotlin/JS stuff.
Day 1: Keynote? Space? Sounds like a party!
“Have I ever seen 1700 people in one room? Maybe, but not at KotlinConf…” -Andrey Breslav
Of course Keynotes are always meant to be full of energy and hype to kick things off. Andrey did this, but he did it in what was essentially a thank you note to the vibrant community that formed around his language. No, we didn’t get any releases, but I certainly can’t blame the team for not trying to push to plan a release and a world-class conference at the same time. Instead we got some insight into what’s coming in the near future, and some really big changes that are happening under the covers that’s going to enable some functionality that the community has been clamoring for over the past few years. Yes, I’m talking about the new compiler.
Kotlin is getting a new compiler that uses an IR (internal representation) to help smooth over the differences between the different back-end runtimes. I won’t try to explain or summarize any further here, but if this sounds interesting to you then you should go read about it from an expert in Svetlana’s blog post. Along with the new compiler, Kotlin will be settling on the Klib format for packaging libraries like we’ve been using on the Kotlin/Native side for a while now. This means Klib will be the format across all back-ends, and moving between platforms means the compiler can just produce a new artifact based on the IR stored in the Klib itself. Last but arguably most exciting for many is that the new compiler will have proper support for compiler plugins, which will enable all sorts of processing during compile time that’s otherwise difficult to do during runtime (like mocking in Kotlin/Native).
Beyond a look ahead into Kotlin 1.4, the rest of the Keynote circled around community. JetBrains reported that over 30,000 people attended a Kotlin/Everywhere event this year! That’s a huge number of folks that were gathered together in community-organized events to help teach and spread the love of Kotlin all around the world. If you missed it, we had one in Boston as well! Andrey also shared that Kotlin’s user-base has nearly doubled over the past year to over 4 million users, which is an amazing feat in itself.
To top it all off, the Keynote was in a room that sat all 1700 of us comfortably, and just an hour long, which I think is a perfect amount of time. Take note, AWS!
JetBrains teased attendees with promise of a new product announcement at KotlinConf this year. Leading up, the only hint that we were given was that it was a “product for teams”, and ultimately the product that was announced is called “Space”. Space is intended to be a central spot for teams (both technical or otherwise) to have everything they need at their fingertips for effective collaboration. While it wasn’t a Kotlin-centric IDE that would have been exciting to see and has been rumored in the past, what makes Space a compelling story for KotlinConf is that the entire application is written in Kotlin. Every component across every platform is Kotlin, which means JetBrans is affirming their commitment to Kotlin/Multiplatform and really starting to put more focus on the non-JVM use-cases for Kotlin.
Why would I talk about a conference after-party? Because, like everything else thus far, it was quite well done! The space was very large, so there was plenty of room to spread out. There was lots of food and drink availability, the only thing that could have used a bit more availability was some of the games that were spread around the room. I think there were 2 pinball machines, 1 air hockey table, 1 pool table, and 1 foosball table, which means there’s probably some room for improvement here. The one other notable piece: the music. There was a dance floor with music being piped all throughout the space, but at a volume that groups could still hold a conversation rather than being an all out rave like at other tech conferences. I enjoyed getting to spend this time interacting and networking with some of the folks that I met with earlier in the day, and it seemed like a lot of people were doing the same.
Day 2: Another Keynote, and the Closing Q&A Panel
The second day opened with another keynote, this time not by a JetBrains speaker. This keynote wasn’t explicitly technical in nature, but rather was an inspirational discussion on not being afraid to change and push boundaries, all set to a theme of space travel (fitting given the announcement of the day prior).
At the end of the conference, we wrapped up with a Q&A panel consisting of a collection of speakers that had given talks over the past two days. This gave both us in-person and the community online a chance to ask questions to some of the leaders in the Kotlin space, and fittingly a large majority of these questions were answered by Andrey himself. I think this was a really cool chance to be able to ask pointed questions not only about the future of Kotlin development, but also to hear more about the experiences of the non-JetBrains panelists. For example, Ana Redmond sat on the panel and gave some insight into her experiences being a very early adopter of Kotlin/Native to port years of Android game code to iOS for educational games for kids. She gave an entire talk on this, but people who weren’t able to attend could still hear some of her story.
My Favorite Talks
This is just a small sample of some of the talks that I attended that really stood out to me (though they were all fantastic). There’s a bunch of other talks that were going on at the same time that I couldn’t attend, so be sure to check out the full playlist on YouTube.
By far one of my favorite talks of the entire conference was Christina Lee’s Testing: Testing. I’d highly recommend this talk to any engineer, even those that aren’t using Kotlin day-to-day. Christina discusses a hot topic (testing) while showing ways that your tool choices can help you write safer code without necessarily writing more tests.
Anyone who’s into the weeds with Kotlin will probably enjoy the 3rd installment of Anton Keks’ Kotlin Puzzlers. There were some interesting ones this year, with some interesting points made where the Kotlin/JS compiler exhibited different behavior than the JVM compiler, plus a puzzler from Boston’s Anton Spaans.
Kotless - Kotlin Serverless Framework
I was super happy to see a serverless talk featured this year given that a large portion of the work that I do involves serverless platforms. Kotless is an interesting project that combines Spring-esque annotations and some clever Gradle configuration to deploy serverless applications from Kotlin code alone. The project is relatively early, but there’s already a large chunk of functionality that’s in place. This looks to be an interesting project going forward as an alternative to using things like Serverless framework, Cloudformaton, or Terraform.
Kotlin in Space
JetBrains’ big new announcement of the conference was Space, a new tool for team collaboration. The key point for a lot of us at KotlinConf was the announcement that Space is built entirely in Kotlin, on every platform. This reaffirmed JetBrains’ commitment to Kotlin/Multiplatform, and helped show us that we’ll be seeing a lot more work on Multiplatform in the near future.
KotlinConf 19 was a fantastic event, and should be used as an example of how tech conferences should be run. KotlinConf brings together all different types of individuals in the community, from language experts to those looking to adopt it as part of their day-to-day work, and provides an opportunity for everyone to walk away better for attending. I know for sure that I’ll be looking forward to next year’s event, and I’m excited to see what the Kotlin community comes up with over the next year until then.