BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Pentabarf//Schedule 0.3//EN CALSCALE:GREGORIAN METHOD:PUBLISH X-WR-CALDESC;VALUE=TEXT:Kotlin devroom X-WR-CALNAME;VALUE=TEXT:Kotlin devroom X-WR-TIMEZONE;VALUE=TEXT:Europe/Brussels BEGIN:VEVENT METHOD:PUBLISH UID:14997@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T103000 DTEND:20230204T104500 SUMMARY:Kotlin DevRoom Welcoming Remarks DESCRIPTION:
Welcoming participants to the Kotlin DevRoom @ FOSDEM 2023 - We're back in person!
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/kotlin_devroom_welcome/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Nicola Corti":invalid:nomail ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Martin Bonnin":invalid:nomail ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Holger Steinhauer":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:15040@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T105000 DTEND:20230204T112500 SUMMARY:The State of Kotlin DESCRIPTION:Kotlin ecosystem is rapidly evolving over the years and 2022 was not an exception. Let's gather to recap everything that happened with Kotlin in the past year and to have a closer look at the language roadmap: from the new K2 compiler, to stable Kotlin Multiplatform and beyond.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/the_state_of_kotlin/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Marco Gomiero":invalid:nomail ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Sergei Rybalkin":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14260@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T113000 DTEND:20230204T115500 SUMMARY:Kotlin Multiplatform: From “Hello World” to the Real World DESCRIPTION:By now you’ve surely heard of Kotlin Multiplatform, and maybe tried it out in a demo. Maybe you’ve even integrated some shared code into a production app. If you have, you know that there are many subtle complications that come up when you want to ship shared Kotlin code. This includes things like modularization, translating between Kotlin and Swift, managing multiple repositories that depend on each other, and optimizing build times and binary sizes. It’s not as easy as it looks when you write your first “Hello World”!
At Touchlab, we’ve been involved with Kotlin Multiplatform since the very beginning, and we’ve learned a thing or two along the way about what does and doesn’t work well. Come hear about how we’ve solved some of these difficulties to ship Multiplatform code across all sorts of organizations and environments, so you’re ready to use KMP in the real world.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/kmp_from_hello_world_to_real_world/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Russell Wolf":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:13965@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T120000 DTEND:20230204T122500 SUMMARY:A mirror without reflection for Kotlin/Multiplatform DESCRIPTION:Reflection is a very powerful JVM feature that allows to create implementations of interfaces on the go, as well as exploring the type hierarchy, methods and properties of a given class.These capabilities do not exist in Kotlin/Multiplatform, so we will explore an alternative method to runtime reflection: a compile-time symbol processor to create compile time mirrors.Using Mocking as an excuse (as mocking typically needs reflection), we will explore how we can use KSP (Kotlin Symbol Processor) to circumvent the absence of reflection and generate efficient test mocks at compile time. We will also see the limitations that multiplatform brings to both the KSP generator and its associated runtime, and we will explain the tradeoff that needs to be made when using KSP, and why they are needed.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/a_mirror_without_reflection_for_kmp/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Salomon BRYS":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:13921@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T123000 DTEND:20230204T125500 SUMMARY:Toward better Kotlin Multiplatform architecture with Dependency Injection and KSP DESCRIPTION:Dependency Injection has become boring in Kotlin Multiplatform projects. Now compiler plugins can make the use of this pattern exciting again! Kotlin Symbol Processor (KSP) brings the fun back and helps us manage our dependencies with a nice fully typed API. Let's deep dive into it and see how it works.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/toward_better_kmp_architecture_with_di_and_ksp/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Romain Boisselle":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14332@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T130000 DTEND:20230204T132500 SUMMARY: KRuMP - Kotlin-Rust-Multiplatform?! DESCRIPTION:Rust is a fast rising star in the pantheon of programming languages and comes with some interesting properties in regard to Multiplatform. On the other side, Kotlin promises with KMP as well Multiplatform capabilities.Are both set up to be rivals, or could both complement each other? What could Kotlin learn from Rust, and where might Rust borrow from Kotlin?The talk will give you an opinionated introduction into KMP with Rust in terms of tooling, developer experience and all the things I discovered so far. It will not sell you a ready to go product, but rather an idea.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/krump_kotlin_rust_kmp/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Matthias Geisler":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14226@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T133000 DTEND:20230204T135500 SUMMARY:Kotlin Multiplatform for Android & iOS library developers DESCRIPTION:Kotlin Multiplatform Mobile is now in Beta, enabling a whole new series of possibilities to share code between platforms. But sometimes things don't go as planned, especially when using an out-of-the-box multiplatform library on a native iOS project. In this session, we'll talk about what we learned from our experience while porting some Android libraries to Multiplatform ones, with a focus on how it's possible to improve the user experience on Swift when consuming Kotlin Multiplatform artifacts.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/kmp_for_android_and_ios_library_developers/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Paolo Rotolo":invalid:nomail ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Anna Labellarte":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:13827@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T140000 DTEND:20230204T142500 SUMMARY:Functional fun in Kotlin DESCRIPTION:Kotlin is great language to do modern functional programming, and in my opinion perhaps the best language to do modern mainstream (hardcore) functional programming.With the power of Kotlin DSLs we can make functional programming idiomatic, simple and elegant. This talk takes us through the different techniques that we can apply in Kotlin to achieve modern, and elegant functional patterns.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/functional_fun_in_kotlin/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Simon Vergauwen":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14284@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T143000 DTEND:20230204T145500 SUMMARY:Be pushy! Let's join for wider and better Kotlin support worldwide DESCRIPTION:Come to see some of the actions the community has done to push Kotlin further, and get inspiration on how to join or lead that movement for higher software quality and compatibility.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/be_pushy_lets_join_for_wider_and_better_kotlin/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Louis CAD":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14107@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T150000 DTEND:20230204T152500 SUMMARY:How we moved SDKs to Kotlin Multiplatform DESCRIPTION:This year the Client SDK engineering team made the leap into the world of Kotlin Multiplatform.With one “simple” goal, to unify the Android, iOS and JS SDK.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/how_we_moved_sdks_to_kmp/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Zachary Powell":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14102@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T153000 DTEND:20230204T155500 SUMMARY:Improving the Kotlin Developer Experience in Koin 3.2 DESCRIPTION:Koin is the Kotlin dependency injection framework well known for its ease of use and efficiency. It has been greatly appreciated by the Android community since 2017.
In 2022, a new major version of the framework is released: Koin 3.2. Let’s explore the great new DSL that still continues to simplify our writings, also the new module hierarchy organization capacity, and much more.
The Koin Annotations project is also getting to its first stable version: 1.0. It’s a great time to see all you can do with these annotations, powered by Google KSP under the hood.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/improving_the_devx_in_koin_32/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Arnaud Giuliani":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14104@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T160000 DTEND:20230204T162500 SUMMARY:Shrinking in the Age of Kotlin DESCRIPTION:Java is now more than 25 years old and throughout the Age of Java there has been many tools for shrinking, optimizing and obfuscating Java bytecode. This was and is especially important for mobile devices, which have certain resource constraints, from the early J2ME devices to today's Android devices.
Today, in the Age of Kotlin, shrinking is more relevant than ever and not just for mobile applications. As well as mobile Android applications, desktop & server applications are also ever growing in size; for example Compose for Desktop typically generates large application packages. JetBrains has recently integrated ProGuard into the Compose for Desktop Gradle plugin to tackle this issue.
But what has changed and how does Kotlin affect shrinkers like ProGuard (which is 20 years old and originally created to process Java compiler produced bytecode)? How does ProGuard shrink classes produced by the Kotlin compiler? The Kotlin compiler just produces Java bytecode anyway, so nothing changes?
The talk will take a look at ProGuard under the hood and what's required to process Kotlin apps & libraries. In particular, there will be a deep dive into Kotlin metadata and how ProGuard (via the ProGuardCORE library) makes use of JetBrains' kotlinx.metadata library to read & write the metadata.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/shrinking_in_the_age_of_kotlin/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="James Hamilton":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14811@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T163000 DTEND:20230204T165500 SUMMARY:20 minutes from zero to a live chatbot with Tock DESCRIPTION:The challenge is to setup a live chatbot in 20 minutes, using exclusively Tock (https://doc.tock.ai) - the open conversational AI platform written in/for Kotlin.
The chatbot should implement, at least:- skills: Kotlin and no-code- multichannel capabilities- basic Web frontend- analytics
Bonus challenge: run the chatbot on a bare laptop, offline.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/20_minutes_from_zero_to_live_chatbot_with_tock/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Francois Nollen":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:13904@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T170000 DTEND:20230204T172500 SUMMARY:Data oriented programming in Kotlin DESCRIPTION:Data-oriented programming encourages us to model data as (immutable) data, and keep the code that embodies the business logic of how we act on that data separately. This means stepping away from the traditional OO approach. In this talk I will go into what problems this solves, when to apply this pattern and how Kotlin’s data classes, sealed classes and powerful pattern matching can help you with this.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/data_oriented_programming_in_kotlin/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Ties van de Ven":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14169@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T173000 DTEND:20230204T175500 SUMMARY:Take your shot of Vitamin! DESCRIPTION:Decathlon has more than 160 frontend products, including 50 dedicated to mobile applications. Due to this context, it is hard to align the user interface across all these projects while respecting the platform.
Vitamin is a Design System developed by Decathlon as a product which can be adapted to any context and with multiple technical implementations for Android, iOS and Web. In theory, you can use this Design System in your application and customize it to fit your theme and your needs.
In this presentation, I'll focus on Vitamin Compose, the design and technical architecture, biases and what are the next steps.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/take_your_shot_of_vitamin/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Gérard Paligot":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:14271@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T180000 DTEND:20230204T182500 SUMMARY:How to Test Your Compose UI DESCRIPTION:While Compose is easy to adopt, not creating legacy code right at the start of such a journey requires extra planning, awareness, and, most importantly, testing. We'll have a look at how we can test pure Compose UIs as well as hybrid ones that have Views and composables too.
In this talk, we'll learn what the semantics tree is, its relation to the composition, how we can manipulate it in composables using the Semantics modifier, how we can implement composables with testability in mind, and how we can test pure Compose, and hybrid UIs.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/how_to_test_your_compose_ui/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="István Juhos":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:15051@FOSDEM23@fosdem.org TZID:Europe-Brussels DTSTART:20230204T183000 DTEND:20230204T184500 SUMMARY:Kotlin DevRoom Closing Remarks DESCRIPTION:Closing the Kotlin DevRoom @ FOSDEM 2023
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Kotlin URL:https:/fosdem.org/2023/schedule/2023/schedule/event/kotlin_devroom_closing/ LOCATION:UB5.230 ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Nicola Corti":invalid:nomail ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Martin Bonnin":invalid:nomail ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Marco Gomiero":invalid:nomail ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Holger Steinhauer":invalid:nomail ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Sergei Rybalkin":invalid:nomail END:VEVENT END:VCALENDAR