2018.06.16. 20h • Márton Braun
The folks at Makery a mobile focused dev team have been running the Budapest Kotlin User Group for about a year now. With their experience of that, earlier this year they’ve set their sights on something grander - organizing a whole-day Kotlin themed conference with people from all over the community.
I think they’ve pulled it off - here’s how I experienced it.
Being always early for everything, I got to the venue slightly before the doors were supposed to open. Thankfully I could already pick up my badge (which was slightly messed up only by my mistake), and I even bumped into some of the speakers who were arriving around the same time.
The organizers introduced me specifically to one of the speakers, Wolfram Rittmeyer, who as I found out included my repository/article about Kotlin DSL design in their talk. Chatting with him throughout the day turned out to be one of the highlights for me, as he had interesting thoughts on a wide variety of topics.
I didn’t really know what to expect from the first talk of the day, but then Eugenio - both himself and his slides being fascinating and visually stunning - gave us a very interesting look at the metadata that the Kotlin compiler needs to add to its output to provide information not encodable in the bytecode itself.
While I haven’t written annotation processors before, the example shown made it look easy using Eugenio’s metadata inspection library, and I’ll be on the lookout for an opportunity to use it. Also, I think I will aspire to create slides as nice as his were for this talk for quite a while.
Zhixuan presented Scarlet, an open source library created by Tinder to easily handle WebSocket communication on Android. While the marketing in the beginning of the talk was a bit too much for me, the library itself looks rather neat and it’s great how it aligns with the tech stack we already use as Android developers: Gson, Moshi, RxJava, OkHttp, etc. It also uses familiar API design, based on Retrofit, which is well known by every Android developer.
Scarlet’s implementation builds on another library they’ve just open sourced, StateMachine. This is (surprise!) a state machine implementation in Kotlin, where you can define your states and transitions with a DSL.
Author of the wonderful Kotlin in Action book, Dmitry came to the conference to show off the progress that JetBrains has been making with multiplatform Kotlin projects. He explained how these projects are structured and compiled, what the rules are for code written in common modules, and how some of the important design decisions were made.
Perhaps equally as importantly as the contents of the talk, he was a really good sport about trying to answer everyone’s questions about all sorts of future development coming from JetBrains.
I won’t talk much about the food itself here, other than to mention that it was satisfactory for a conference lunch. However, the long lunch break was a good time to chat with people. I spent about half of it talking to Dmitry with a couple other people, he was very approachable and talked happily about anything related to the language and JetBrains.
The other half or so I talked to an Android developer from Amsterdam, who had stories to share both about using Kotlin and relocating when getting hired by a company in a different country. This was a great example of how friendly the mood all around was, and how easily you could start talking to anyone at the conference. (Ps. if you’re reading this, please message me somewhere, because I’m completely blanking on your name).
For the first talk of the afternoon, Annyce
told us that REST is now dead showed us a new way to think about server-client communication, in a more efficient and more dynamic way than before, using GraphQL. It was nice to see the implementation of this technology explained for both the server and client side, and I look forward to how APIs using GraphQL will spread in the future. Now if only using Apollo for Android didn’t require npm, and if I could convince a backend team to provide such an API for my Android client…
In addition to the great technical explanation, the example API and models used for the talk was excellent and the appropriately designed slides were spectacular, right up there with Eugenio’s great work mentioned earlier.
Paco gave a quite detailed talk about what the Arrow library provides for its users, as well as an update on their development progress.
While the depths of functional programming are still way over my head, I can at least say that I have a better idea of what the different tools offered by functional programming are for those who are brave enough to give them a try. It was especially reassuring to hear that it’s not an all or nothing proposition - you can pick and choose which packages of Arrow you want to include in your project as you learn about them.
I’ve had the pleasure of attending talks by Gyula before at the monthly User Group meetups, and he seems to have a format - which is certainly not a bad thing. He dives into certain technologies for what I feel like must be weeks (who knows where he finds the time), and then he presents his findings and experiences so that everyone can learn about said technology.
The talk here was about GraalVM, an Oracle project that lets you bring a whole range of very different languages together to run interoperably on a virtual machine - and even compile the resulting applications to native code. While this doesn’t quite apply to me as an Android developer, I’ll have to look into this for the web development I’m doing in my free time.
Other than including me in a small way in the talk, Wolfram did a very nice job of covering both the design decisions and guidelines you should keep in mind when you’re creating DSLs and the various language features you can use to achieve the desired syntax.
This was basically the same talk I would’ve put together about the topic for the given amount of time, and it was finely executed - and interesting to listen to even for someone already well-versed in Kotlin DSLs.
Last but not least, Andrei told us a success story about how they’ve managed to convince their management to use Kotlin on the backend, and showed us the journey they’ve taken over many months, while both their project and the language itself was evolving.
While I haven’t been scared to use Kotlin on the backend, it’s important to have strong voices advocating Kotlin not just for Android.
There was an unofficial-official afterparty in the evening at a nearby pub. It was great to see that even most speakers showed up, as well as several attendees. I didn’t know I needed this to end a tech conference, but it was a great wrap-up.
It was a good day to be a Kotliner yesterday. From the venue to the technical content and presentation of the talks to the friends I’ve made, I thoroughly enjoyed everything.
I look forward to what the organizers can do for next year, and who I’ll get the chance to meet then.
Funnily enough, after the previous conference report on this blog, I've got yet another one. I got to visit KotlinConf this year, these are my initial thoughts about it. Spoiler: it was awesome!
My experiences and thoughts after using Stack Overflow from the other side for over a year now, answering questions mostly under the Kotlin tag.
A fun little challenge in Kotlin API design. Give it a try!
Primary constructors play a fundamental role in Kotlin classes. Let's take a close look at them, and really understand what exactly is part of a primary constructor, and what makes this constructor so special.