Salomon is the creator and maintainer of the KODEIN multiplatform open source initiative as well as the founder of KODEIN Koders. Deeply rooted in the Open-Source philosophy, he is dedicated to making tools and libraries to make programming easier, safer, and more exciting. He is a Kotlin GDE, Kotlin certified trainer, Kotlin meetup Paris co-organiser, and conference speaker (you guessed it... about Kotlin!). He also loves dancing Rock, playing boardgames, and flying small planes.
Designing an effective API is a challenge every developer faces when they start developing with someone else. Whether you are a library or an application developer, your API defines how you communicate with other developers – it serves as the rules and practices that govern the usage of your work. As we all know, if an API can be abused, it will be, so expressing a tight and precise API is a very important skill that saves a lot of debug and verbal communication time. However, being tight and precise should come in the way of being concise, expressive, and powerful.
Kotlin offers many features that can be combined together to provide efficient APIs and DSLs. This workshop is for those who want to discover and understand the complex and advanced features of the Kotlin language. We will first discover each of them individually, and have a look at their compiler implementations, in order to understand their best usage and optimizations. We will then combine them to write tight, precise, concise, expressive, and powerful APIs and DSLs!
Finally, we will see that writing APIs for a Server, Android, or Multiplatform usage, means taking different design decisions. We'll have a look at the different constraints each Kotlin target imposes, and how we can use our knowledge of the Kotlin language to adapt our APIs for each platform.
Kotlin/Multiplatform is very often seen by iOS developers as an additional pain point, rather than a productivity tool. Let's go beyond the front line and try to understand this point of view. What can we do to ease their journey to using KMP, and facilitate their integration to our Kotlin/Multiplatform project? We will explore the entire pipeline of integrating a KMP core into an iOS project: tooling, coding, building, deploying, integrating, and using. We will discuss the current limitations that KMP imposes on each step, and try to understand their consequences on the quality of life of an iOS developper. Finally, we will show some tools and practices to alleviate these constraints & create a shared narrative with all platform developers, as well as discuss what's in the future of KMP for iOS.