live

Kotlin Conf 2017

#kotlinconf17 @gyula_voros

Day 2

My Life as a Tech Transfer Monad

  • Erik Meijer is on stage! 🙌
  • briefly talks about Kotlin
  • changes subject to machine learning
  • we should change the way how we write software
  • embrace probabilistic programming (not just 0 and 1 but anything in between)
  • works on introducing PP into Hack (PHP)
  • Rx is dead 😉
  • the future is integration of machine learning models and imperative code (and coroutines)

Kotlin for the Pragmatic Functionalist

  • Paco Estévez García talks more about Kategory 🔥
  • Kotlin is ready for FP today
  • Kotlin has built in constructs that support FP (data classes, sealed classes, types aliases, extesnsion functions, etc.)
  • Kategory adds more constructs: extension interfaces, ad-hoc polymorphism, imperative async code, etc.
  • KEEP proposal: Type Classes as extensions in Kotlin
  • Kategory is a very ambitious project and they welcome all community contribution 🚀
  • kategory.io
  • slides

Sharing [Kotlin code across platforms] is Caring!

  • Eugenio Marletti talks about cross platform dev
  • they have passed a few iterations (C++, ObjC++, JavaScript)
  • they used to write TypeScript and run it on iOS (JavaScriptCore) and Android (WebView) 😱
  • Android WebView has lots of issues
  • migrated to Kotlin to compile JS for iOS and bytecode for Android
  • looking into multiplatform

Deep Dive into Kotlin/Native

  • Andrey Breslav showcases Kotlin Native 🚀
  • state of the project is tech preview
  • IDE for now is CLion
  • build tool for now is cmake
  • debugs code (with breakpoints) running on an iOS device!
  • it's hard to beleve that what's happening is real 🙂
  • more info here

Generating Kotlin Code

  • Alec Strong & Jake Wharton are on stage
  • lots of reasons why generating code is useful
  • you have to be careful generate code that is easy to access from both Kotlin and Java
  • it's OK if the code generator / generated code is complex, as long as the APIs are simple (goal is to make the user of the generated code happy)
  • KotlinPoet FTW ⚡️
  • automatically handles imports + lots of other concerns
  • high level API, fluent builders, reusable code blocks
  • ASM - to generate bytecode directly
  • Kotlin compiler uses internally
  • slides

Going Serverless with Kotlin

  • Marcos Placona demos his side project, a custom personal doorbell 🙂
  • the project is super fun
  • tried 3 solutions: Google AppEngine, OpenWhisk, Amazon Lambda
  • all of them have different trade-offs

Kotlin Types: Exposed

  • Svetlana Isakova covers some basic Kotlin stuff
  • all of you should read Kotlin in Action, period. 🙂

Testing Kotlin at Scale: Spek

  • Artem Zinnatullin talks about Spek
  • it's no longer in the JetBrains namespace, now a fully independent project
  • unit testing is cumbersome
  • usually test code is 2x LOC than source code
  • Spek brings structure to your tests (hierarchy)
  • you can choose your own assertation library
  • you can choose your own mocking library
  • Spek = test framework (instead of e.g. JUnit)
  • Spek 2.0 beta/rc will be available soon (~ 1-2 month)
  • until then, you should use Spek 1.x

Day 1

The conference's venue was in Pier 27, in the James R. Herman Cruise Terminal.
I arrived super early, so only a few people were around. I had breakfest, took a few pictures and talked to some ot the attendees. The schedule was really sharp, the keynote started precisely on time.

TL;DR

Keynote

  • Hadi Hariri opens the show
  • JetBrains CEO, Maxim Shafirov talks about the brief history of Kotlin
  • Andrey Breslav talks about multiplatform
  • On the JVM the topic is coroutines (though marked experimental, actually used in production by large companies)
  • Regarding JS support, Dmitry Jemerov does a live demo, showing debugging and hot reload
  • Turns out, that the KotlinConf conference app is written in Kotlin (backend, web, Android, iOS)

Cords and Gumballs

  • two talks in one: Corda + Gumball
  • Corda: distributed ledger platform
  • development started pre Kotlin 1.0
  • large codebase: ~118k LOC Kotlin, ~9800 commits
  • Kotlin turned out to be a huge success
  • creating a perfect Java API has caveats
  • Gumball: Java app packager (bundles app + JVM into a singel executable)
  • turnes a "fat-jar" into a cross platform binary
  • can embed SWT for GUI
  • mentions Graal as an alternative

Building Languages Using Kotlin

  • Federico Tomassetti talks about DSLs
  • not Kotlin DSLs (e.g. kotlinx.html)
  • you can actually create new programming languages (domain specific ones) with Kotlin 🔥
  • based on his experience, users can achieve up to 20x productivity
  • probably you want to use Antlr, but with Koltin the code looks much more simple
  • slides, code + more info can be found here

Frontend Kotlin from the Trenches

  • Gaetan Zoritchak talks about Koltin JS
  • he works on a library called data2viz
  • it is basically like D3.js but implemented in Kotlin
  • super high performance ⚡️
  • tooling around Kotlin JS can be tricky (different tool versions may conflict)
  • they chose to rely only on the Kotlin JavaScript compiler + they use JavaScript native tools (e.g. karma, mocha, webpack)
  • they use multiplatform build, so they can write & test a lot of things running on the JVM (really interestings stuff)
  • if you are interested in web development with Kotlin I highly recommend to check out the repo
  • BONUS: there is a blog post (got released before KotlinConf) discussing much of the things mentioned here

Kotlin for Data Science

  • presented by Thomas Nield (maintainer of e.g. kotlin-statistics)
  • data science FTW 🚀 one of my favorite talks!
  • goal: turn data into insight
  • problem is data scientists and software engineers are using very different technologies (e.g. Python, R, etc. vs Java, .NET, etc.)
  • it's hard to turn models into production software
  • Kotlin can help close the gap
  • live demo about problem solved with linear programming (algo4j) + Kotlin
  • much more info can be found here

How to Kontribute

  • Yoshinori Isogai's first talk in english! 🚀
  • he mostly contributed to the Kotlin IntelliJ plugin
  • setting up the Kotlin build env is a bit challenging (you need 3 JVM-s, the build tools is Ant 😱)
  • the process is kind of strict (in a good way)
  • if it's not in YouTrack, it doesn't exist - no PRs without a corresponding YouTrack issue
  • you have to add proper test code
  • review can take some time (the JetBrains team is busy, obviously 😉)
  • contributing is rewarding, they even mention you by name in release announcements
  • here are all the slides

Architectures Using Functional Programming Concepts

  • Jorge Castillo talks about FP in Kotlin
  • as (partailly) a Scala programmer, the topic resonates with me very well 🙌
  • the talk in not really about just FP in general, but rather an intro to a new Kotlin library called Kategory
  • the guys are seriously pros, the techniques used in Kategory are real pieces of art ✨
  • there is example code showing how to introduce common behaviours into the codebase (DI, error handling, async) by types, step by step
  • tough the topic is definitely not an easy one, Jorge did a great job explaining the different concepts
  • slides are here

Party Keynote

  • Michael Carducci doing a stand-up magic show
  • He was formerly a software engineer, uses tech terminology a lot 😀
  • I really hope that the videos will be available soon, do yourself a favour and watch it ASAP ♠♣♥♦

Party

  • the perfect way to end the day: snacks, food, beer, wine + Kotlin 🙂
  • also really good discussions, table football, ping-pong, and more Magic Mike!

Day 0

I've arrived in SF and also attended the Realm Community Event. The event took place in Realm's office, which looks really cool.

Eric Maxwell did a great talk about how library developers can create idiomatic APIs for both Java and Kotlin users. He showed examples from Realm's codebase, and also pointed out this GitHub Issue (#4701). They have already made really good progress with Kotlin support, but are looking for more feedback from the community. If you have any comments on the topic, you should definitely check out the ongoing conversation. Bonus: they are currently looking into coroutines support, so we might see something official soon.


Expectations

I first heard about Kotlin quite some time ago. Since then, a lot of things happened and events speeded up:

  • May 24, 2013 - My first Kotlin code (v0.5.429 🙂)
  • Feb 15, 2016 - Kotlin 1.0.0 released
  • Aug 17, 2016 - My first Android Kotlin code in production
  • May 17, 2017 - Google announced official support for Kotlin
  • Apr 6, 2017 - My first backend Kotlin code in production
  • Jun 9, 2017 - My team launched Kotlin Resources, a community-driven resource index for Kotlin
  • Jul 25, 2017 - My team launched the Kotlin Development (this) blog
  • Nov 2, 2017 - I'm attending to the very first KotlinConf 🙌

I'm really looking forward to the next few days, it will be nice to meet some of the Kotlin community in person. Also, the talks will be super exciting, so I've already assembled my schedule:

Day 1:

Day 2:

I'll also attend the Realm community event on the 1st of Nov, where Svetlana Isakova will talk about Kotlin for Java developers and Eric Maxwell about building libraries for Kotlin.

I would like to point out, that one of the keynote speakers is Erik Meijer (the original author of Rx.NET, among like 1000 other things), he was a huge influence on my professional career.

Live stream

Unfortunately, there won't be any official live streaming, but we are going to report live from the conference, so bookmark this page and hit refresh from time to time! 😉
And don't forget to follow me @gyula_voros and our Koltin Twitter for the updates.

Social

Also attending the conference? Come say hi, or message me via Twitter or email!