KotlinLeeds
15th Oct Leeds, UK Day 1 Book now
16th Oct Leeds, UK Day 2 Book now

Schedule

08:30 – 09:45
Registration & Breakfast

It's time to check in using your QR code-generated ticket and receive our famous swag. Please make your way up the stairs to be greeted by our famous warm and cold buffet-style breakfast options.

09:45 – 10:00
Prepare for takeoff 🛫

Adam Rush will be hosting your event this year and hear some thoughts about what is in store for you this year and a glimpse into some of the amazing talks we have lined up.

10:00 – 10:45
Opening Keynote (TBC)

Announced soon

10:45 – 11:30
Talk
The Dark Corners of Kotlin Multiplatform

Kotlin Multiplatform is powerful, flexible, and full of promise—but it’s not all smooth sailing. Behind the glossy headlines and official documentation lie subtle bugs, platform quirks, and surprising limitations that can trip up even experienced developers.

In this talk, we’ll take an honest look at the dark corners of Kotlin Multiplatform based on real-world usage. You’ll see concrete examples of things that break, don’t work as expected, or require strange workarounds—especially when working with Swift/Objective-C interop, background threading, dependency injection, or dealing with the iOS toolchain.

You’ll learn:

  • What breaks and why in real apps using KMP

  • Debugging tips and stack trace decoding (especially on iOS)

  • Build issues, performance bottlenecks, and memory management caveats

  • Workarounds that are ugly, but necessary—for now

This is not a “KMP is bad” talk. It’s a “here’s what to expect when you go beyond the tutorial” talk—ideal for anyone already using Kotlin Multiplatform or seriously considering it for production.

Andrea Della Porta
Andrea Della Porta

Mobile Manager @ Capgemini

11:30 – 11:45
Refreshment Break ☕️

11:45 – 12:15
Short Talk
Swift Export: Where We Stand

Swift Export, the much-anticipated project from the JetBrains team, has been in progress for some time and is currently in the Experimental state. The project’s goal is to make calling shared Kotlin code from Swift more intuitive and idiomatic for Swift developers (and dare I say, even fun?).

In this talk, we will see exactly what the current state of Swift Export is, with some live coding demonstrating how to go from the old “Objective-C bridge” way to the new “Swift Export” way. We will discuss the currently supported features and any subtleties we encountered while mapping Kotlin to Swift. We will also discuss what still needs further work and refinement, and how the community can get involved.

By the end of the session, you’ll be able to assess for yourself whether Swift Export is ready to adopt for your team and use case, based on some guidelines from the Swift Export team. More idiomatic Swift, happier team!

Pamela Hill-Galloway
Pamela Hill-Galloway

Developer Advocate at JetBrains

12:15 – 12:30
Attendee Group Photo 📸

12:30 – 13:30
Lunch 🍕

Lunch will be provided by The Leeds Market (a short walk from the main conference venue).

You'll be given a voucher to redeem across many local Leeds food traders.

A full list is available here: https://markets.leeds.gov.uk/kirkgate-market-traders

13:30 – 14:15
Talk
Keep It Secret, Keep It Safe: A Developer’s Journey with Android Keystore

Security shouldn’t be an afterthought—it should be built in. But let’s be real: as developers, many of us are more comfortable designing UI than dealing with encryption and secure key storage. In this talk, I’ll walk you through how I tackled this challenge by building a secure notes app using Android Keystore, a hardware-backed system for safely generating and storing cryptographic keys on Android devices. We’ll go beyond just theory. I’ll show how I used AES/GCM encryption to protect user data, and how I combined Android Keystore with Jetpack Compose and Room to create a seamless and secure user experience. You’ll learn how to encrypt and decrypt sensitive data without ever exposing your keys—and why this approach matters for apps that handle anything private, from journal entries to banking info. Whether you’re building your first app or looking to add stronger security to an existing one, this talk will give you real code, practical insights, and a clear path to making data protection part of your app’s foundation.

Jessica Randall
Jessica Randall

Android Enthusiast

14:15 – 15:00
Talk
Beyond Crashes: Mastering Monitoring & Observability for Android Apps 🚀

Monitoring is essential in the development of Android apps, but achieving efficient monitoring is the ultimate goal for every developer!

In this talk, we'll reveal some tips and strategies for implementing efficient monitoring using commonly used tools such as Firebase Crashlytics or Performance libraries, debug libraries like Chucker or log management platforms like Datadog. We'll also see how AI can help you better monitor your application and be a great companion while observing/solving issues. Lastly, you'll learn how to proactively anticipate issues and react promptly and effectively when problems arise, by that enhancing your app performances and user experience.

Discover how monitoring extends far beyond a crash or a simple log 🚀

Julien Salvi
Julien Salvi

Lead Android Engineer @ Aircall

15:00 – 15:30
Refreshment Break ☕️

15:30 – 16:15
Talk
How to make 2.1 million people feel special - an onboarding story by Yazio

Yazio’s onboarding is a bit unusual; It’s extremely long. It takes, on average, around 10 minutes to fully finish it. However, by the time you’ve finished it ,you’ve developed a relationship with Yazio, and with little green yettie that walked you through it all.

This is not by chance - the onboarding at Yazio has been meticulously tested, tweaked, refactored, and tested again, to find what it is that makes users feel the most welcome.

In this talk we will discuss the plan, pitfalls, successes and failures of having an onboarding that matters, at a very very large scale.

Noam Efergan
Noam Efergan

Self taught mobile developer and general nerd

16:15 – 16:45
Short Talk
Wait, That Compiles!? Kotlin Brain Teasers Explained

Kotlin is designed to be expressive, safe, and predictable—but some perfectly valid programs seem to break all the rules. What does 'throw return' actually do? What happens when you write 'null + null'? And more importantly… why? In this talk, we’ll explore a series of surprising Kotlin “brain teasers” that challenge your assumptions about the language. Each example looks confusing at first glance, but reveals something deeper about the design of the Kotlin language and its standard library.

Sam Cooper
Sam Cooper

Author of Kotlin Brain Teasers

16:45 – 17:30
Talk
The Single Source of Truth: Solving the "Backend vs. Mobile" Conflict with KMP

Every mobile developer has a story about a minor backend change that broke the app. Whether it’s a renamed JSON key, a sudden null value, or a regex update that only happened on the server, the friction between Backend and Mobile teams usually stems from one problem: we are maintaining two separate versions of the same truth.

In this session, I’ll show you how to move past documentation-heavy promises like Swagger and toward a code enforced Contract-First architecture using Kotlin Multiplatform (KMP). As a backend engineer, I will demonstrate how we can publish shared Kotlin libraries that house our DTOs and business invariants. We’ll explore the practicalities of sharing validation logic ensuring that an email or password is validated exactly the same way on a Spring Boot server as it is in a Jetpack Compose UI.

We won’t just look at the happy path. We’ll discuss the real world constraints of being a backender in a mobile world: How do we handle binary compatibility when the app in the wild is three versions behind the server? How do we manage the CI/CD overhead of publishing shared artifacts? This talk is for anyone tired of Slack-based documentation"who wants to build a more resilient, type-safe stack.

What attendees will take away: The "What": How to architect a shared "Contract" module that strictly defines the interaction between server and client. The "Why": The economic and technical benefits of compile-time safety over runtime documentation like OpenAPI. The "Who": Backend and Mobile engineers looking for a way to reduce integration bugs and he-said-she-said debugging sessions. The "Where/When": Practical strategies for versioning these shared contracts to support long-lived mobile app versions.

Mina Vojdanitafreshi
Mina Vojdanitafreshi

Fastned, Backend engineer

17:30 – 21:30
After Party 🥂

Will be hosted inside the Leeds Playhouse venue

08:30 – 09:45
Registration & Breakfast

It's time to check in using your QR code-generated ticket and receive our famous swag. Please make your way up the stairs to be greeted by our famous warm and cold buffet-style breakfast options.

09:45 – 10:00
Prepare for takeoff 🛫

Adam Rush will be hosting your event this year and hear some thoughts about what is in store for you this year and a glimpse into some of the amazing talks we have lined up.

10:00 – 10:45
Talk
Javascript is Dead: the Past, Present, and Future of Full-stack Development

Over the span of my career, I've seen Javascript evolve from a simple browser scripting language into the most popular programming language in the world. While some might love it, I would argue that its popularity is driven almost entirely by its runtime. With Web Assembly opening the door for other languages, it's time to re-evaluate how we approach coding for the web.

I'll give a brief history lesson on the evolution of the full-stack developer over the last 20 years, then describe my experience working on a huge Kotlin web project at Jetbrains, and finally I'll talk about the many ways we're improving the experience in Ktor.

Bruce Hamilton
Bruce Hamilton

Ktor Technical Lead

10:45 – 11:15
Short Talk
When "Refresh" is too slow: Making your app Real-Time

Most mobile apps still rely on polling, pull-to-refresh, or the pushes to synchronize with the backend. As apps scale, this approach quickly breaks down, leading to stale UI and frustrated users. Real-time can mean very different things depending on the use case. Sometimes a WebSocket is the right choice. Sometimes push notifications are enough. And sometimes polling is still the least bad option. In this talk, we’ll build a practical recipe for making mobile apps real-time, focusing on how to choose the right approach for different product and technical constraints. We’ll compare common patterns, including polling, push, persistent connections, and hybrid models, and discuss where each one works best in real mobile environments.

Michael Gerasymenko
Michael Gerasymenko

Mobile at ElevenLabs Inc.

11:15 – 11:30
Refreshment Break ☕️

11:30 – 12:15
Talk
Coroutines vs. Threads: The True Cost of a Context Switch

We've all been told that coroutines are "lightweight" and threads are "expensive." But what does this really mean at the OS and hardware level? This talk goes beyond the Kotlin APIs to explore the anatomy of a context switch.

We'll visualize the expensive journey of a blocked thread: the syscall, the kernel trap, the OS scheduler saving registers, and the resulting CPU cache invalidation. Then, we'll contrast it with the elegant, user-space dance of a suspending coroutine, which simply saves its state to a small object on the heap and returns control to its dispatcher.

This session connects high-level code to low-level mechanics. We'll prove this theory in a live demo, using the Android Studio Profiler to watch an app crash under the weight of a few hundred threads, only to then launch 100,000 coroutines with ease. Understanding why this happens will empower you to write, debug, and maintain truly efficient, performant, and scalable Android applications.

Ariella Mendel
Ariella Mendel

Senior Android Engineer & Adjunct Professor of Android

12:15 – 13:30
Lunch 🍕

Lunch will be provided by The Leeds Market (a short walk from the main conference venue).

You'll be given a voucher to redeem across many local Leeds food traders.

A full list is available here: https://markets.leeds.gov.uk/kirkgate-market-traders

13:30 – 14:15
Talk
Kotlin/Native for System Programming: Building a Low-Level Container Runtime

System programming has traditionally been dominated by languages like C, Go, and Rust. To evaluate Kotlin/Native in this domain, I developed a low-level container runtime that manages the container lifecycle by directly manipulating Linux features such as namespaces and cgroups.

In this session, I will start by briefly outlining how the LLVM-based compilation model enables Kotlin to execute without a JVM, providing the foundation for low-level system interaction. I will then demonstrate how Kotlin’s strong type system and null safety bring reliability to low-level programming, while also highlighting the efficient C interoperability provided by Kotlin/Native.

I will then dive into the inherent tension between the Kotlin runtime and Linux system calls. Specifically, I will address the conflict between the multi-threaded nature of the Kotlin runtime and the single-threaded requirements of unshare or fork. I will explain the architectural pattern I implemented to resolve this compatibility issue.

Finally, I will share performance metrics, such as binary size and startup speed, to evaluate the overhead of Kotlin/Native realistically against comparable C, Go or Rust implementations.

By the end of this talk, you will understand the practical viability of Kotlin/Native for system programming. You will leave equipped with patterns for safe C interoperability and strategies for managing runtime characteristics in native applications.

Ayako Hayasaka
Ayako Hayasaka

Software Engineer at LY Corporation

14:15 – 14:45
Short Talk
Things I would change in Kotlin Coroutines design

Part of my (ex) job at JetBrains was building mental models for different Kotlin language features, and after quite some time one necessarily starts seeing rough edges of the existing solutions.

In this talk, I want to present you the alternative execution of the 4 core parts of the core Coroutines design. We will even touch the infamously known "runCatching eats my cancellations" problem, and I will propose what I think is the solution to this problem.

I won’t keep you in suspense - here’s the list:

  1. First class code coloring for different kinds of suspendability (@RestrictSuspension replacement)
  2. Decouple CoroutineContext from the suspend keyword
  3. Get rid of intercepted Continuations
  4. Make Continuations Cancellable/Finalizable

The talk assumes familiarity with Coroutines, and Continuations API in particular (suspendCoroutine, Continuation.resume, suspendCoroutineUninterceptedOrReturn)

Nikita Bobko
Nikita Bobko

Open source contributor. ex-JetBrains, ex-Kotlin

14:45 – 15:15
Refreshment Break ☕️

15:15 – 15:30
Lightning
Your first Kotlin DSL

Do you have complex business rules that is hard to read because it's mixed into technical concerns?

Do you generate external data in a specific format and the code is hard to read?

In this lightning talk, we create a custom DSLs to generate CSV or Excel exports. We refactor a typical builder into an expressive idiomatic DSL that is easy to extend and maintain.

Ivan Canet
Ivan Canet

Software Engineer

15:30 – 16:15
Talk
Advanced DSLs in Kotlin

Kotlin has powerful support for building DSLs. In this talk we’ll explore all the existing techniques and language features used to build powerful DSLs for your applications.

We’ll dig into the building blocks Kotlin has and see how you can leverage them into your current applications in order to simplify your code, and promote more elegant Kotlin usage for your domain specific needs.

Simon Vergauwen
Simon Vergauwen

Developer Advocate at JetBrains & OSS (arrow-kt) Maintainer

16:15 – 16:45
The KotlinLeeds Quiz 🎱

Make sure you have been listening, heads down!

16:45 – 17:15
Closing Keynote

Announcement coming soon

17:15 – 21:15
After Party 🥂

Will be hosted inside the Leeds Playhouse venue

Kodee - Kotlin Mascot

Join us for KotlinLeeds 2026!

In full-time education? Choose our cheaper student pricing.

Why not join us for an extra few days with SwiftLeeds?

Coming with friends or colleagues? Get a discount when you book together.

15-16 OCT

KotlinLeeds 2026

QR Code
Buy ticket
from only £140
Top