# Stories by Matthew Dolan on Medium

Stories by Matthew Dolan on Medium

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Android Security: mobsfscan

DevFeed: [Android Security: mobsfscan](<https://devfeed.tech/articles/android-security-mobsfscan-27032.md>)

Original publisher: [Read original article](<https://blog.stackademic.com/android-security-mobsfscan-7cd9f52e19a0?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2026-01-16T17:51:35Z

Content type: tutorial

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Android Security](<https://devfeed.tech/topics/android-security.md>), [Mobile Security](<https://devfeed.tech/topics/mobile-security.md>), [Security](<https://devfeed.tech/topics/security.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Docker Image](<https://devfeed.tech/topics/docker-image.md>)

Tags: [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-security](<https://devfeed.tech/tags/android-security.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [build-secure-apps](<https://devfeed.tech/tags/build-secure-apps.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [docker-image](<https://devfeed.tech/tags/docker-image.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [mobile-security](<https://devfeed.tech/tags/mobile-security.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

A tutorial on using the free, open-source mobsfscan tool to detect insecure code patterns in mobile applications. It focuses on running mobsfscan with GitHub Actions and uploading SARIF results to GitHub's Security tab.

### Source excerpt

Not a medium member? "Read for free" Continue reading on Stackademic "

## Orbit Multiplatform wins Kotlin Foundation Grant: A Journey and a Look Ahead

DevFeed: [Orbit Multiplatform wins Kotlin Foundation Grant: A Journey and a Look Ahead](<https://devfeed.tech/articles/orbit-multiplatform-wins-kotlin-foundation-grant-a-journey-and-a-look-ahead-27030.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/orbit-multiplatform-wins-kotlin-foundation-grant-a-journey-and-a-look-ahead-6b949cf8133e?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2024-10-02T13:30:16Z

Content type: article

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Library](<https://devfeed.tech/topics/library.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Android](<https://devfeed.tech/topics/android.md>), [RxJava](<https://devfeed.tech/topics/rxjava.md>), [reactive](<https://devfeed.tech/topics/reactive.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [development](<https://devfeed.tech/tags/development.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [mvi](<https://devfeed.tech/tags/mvi.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [orbit](<https://devfeed.tech/tags/orbit.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>)

### AI overview

The article announces that the Kotlin Foundation awarded a grant to Orbit Multiplatform and reviews the open-source library's evolution. It describes Orbit 1's reactive, RxJava-inspired architecture and debugging and maintenance challenges, then explains the redesign leading to Orbit 2, including Kotlin coroutines, structured concurrency, composition, direct function calls, and a simplified DSL.

### Source excerpt

We're thrilled to announce that the Kotlin Foundation has awarded Orbit Multiplatform a grant! This recognition is a tremendous honour and a chance to reflect on Orbit's journey and share our vision for the future. Orbit's Origins Orbit began as an open-source project over five years ago, in September 2019. It was one of the first libraries I co-created with Mikołaj Leszczyński, and its development has been a journey of constant learning and evolution. The Early Days: Orbit 1 I first encountered Orbit when I joined the Android team at Babylon Health in July 2018. Mikołaj had already developed the initial version of Orbit, heavily inspired by RxJava and talks such as Jake Wharton's Managing The Reactive World with RxJava. RxJava's influence was evident in Orbit's reactive approach, with chained operations driving the architecture. However, while this design worked well in some cases, it posed significant challenges -- especially with debugging. For instance, one event could trigger multiple others, leading to hard-to-trace bugs. Additionally, we ran into issues with type erasure due to the use of generics, which made it even harder to maintain the library. Here's an example of the syntax from Orbit 1: data class State(val total: Int = 0) data class AddAction(val number: Int) class CalculatorMiddleware: Middleware<State, Unit> by middleware(State(), { perform("addition") .on<AddAction>() .withReducer { state, action -> state.copy(state.total + action.number) } }) While the initial approach was a valuable learning experience, it became clear that Orbit needed a shift. The Transition: Kotlin Coroutines and Orbit 2 In October 2018, Kotlin 1.3 introduced coroutines, offering an opportunity to rethink Orbit's architecture. Coroutines brought structured concurrency to Kotlin, making asynchronous programming more straightforward and less error-prone. However, it wasn't until May 2020 that we began redesigning Orbit's syntax to leverage coroutines. By August 2020, we released

## Keeping Up with Android Through Observation, Practice, and Teaching

DevFeed: [Keeping Up with Android Through Observation, Practice, and Teaching](<https://devfeed.tech/articles/see-one-do-one-teach-one-27031.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/see-one-do-one-teach-one-77ff1b43386c?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2024-05-01T16:07:18Z

Content type: opinion

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [article](<https://devfeed.tech/tags/article.md>), [developer](<https://devfeed.tech/tags/developer.md>), [development](<https://devfeed.tech/tags/development.md>), [education](<https://devfeed.tech/tags/education.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [upskilling](<https://devfeed.tech/tags/upskilling.md>)

### AI overview

This commentary explains a learning approach for keeping up with Android: observe new code, technologies, and techniques, practice them, and teach them to others. It also points readers to Android Developer News and notes that many posts include video and podcast formats.

### Source excerpt

Keeping Up-to-Date with Android in 2024 Continue reading on Medium "

## Kotlin Multiplatform conversions in Android Jetpack libraries

DevFeed: [Kotlin Multiplatform conversions in Android Jetpack libraries](<https://devfeed.tech/articles/kotlinconf-23-kotlin-multiplatform-conversions-at-android-jetpack-scale-by-dustin-lam-and-james-27027.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-kotlin-multiplatform-conversions-at-android-jetpack-scale-by-dustin-lam-and-james-ad34bd3427c8?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-05-22T22:41:11Z

Content type: article

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Android](<https://devfeed.tech/topics/android.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-jetpack](<https://devfeed.tech/tags/android-jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

This article discusses a KotlinConf'23 talk about adding Kotlin Multiplatform support to Android Jetpack libraries. It covers compatibility challenges, annotation issues, testing choices, and the unofficial port of Google Truth called Kruth.

### Source excerpt

KotlinConf'23 -- Kotlin Multiplatform Conversions at Android Jetpack Scale by Dustin Lam and James Wardhttps://medium.com/media/bd8000e7fe715e2cd79b4ed752779a84/href While Google have been busy updating Jetpack libraries with Kotlin Multiplatform support this talk by Dustin Lam and James Ward covers some of the technical challenges in delivering those while keeping compatibility. This is no easy task especially when you consider compatibility isn't just about the version of Android you are running against but also the language you are coding with. The talk highlighted some interesting issues Google faced with the JvmName annotation. One of the other parts of the talk I found particularly interesting was focussed on testing. Choosing an assertion framework is an important choice for the new Kotlin Multiplatform code. There are now a handful of multiplatform libraries to choose from, for example, Atrium, Kotest Assertions and Assert4K, however, as Googles stats show a lot of the tests within Jetpack libraries use Google Truth. 50,000+ usages of Google Truth Instead of switching to one of the other libraries they made the decision to port Truth to Kotlin Multiplatform as (unofficially) "Kruth". At the moment the code for Kruth is internal, although given Android and Jetpack is open source you can find the source code at testutils-kmp. I look forward to seeing Kruth released as an independent library, otherwise there is always the unofficial Truthish. Of course one question that often comes up is what the future holds, and as expected Google likes to remain quiet. However, it was nice to hear about the possibility of Cashapp multiplatform-paging perhaps being merged upstream back into Jetpack. It's important to note that even as an individual we can contribute to Jetpack given its open source nature. You can find my thoughts on more KotlinConf'23 talks at KotlinConf'23. Please let me know your thoughts. Join medium to read all of my articles or subscribe for e-mail updat

## KotlinConf'23-5 years of Multiplatform Settings by Russell Wolf

DevFeed: [KotlinConf'23-5 years of Multiplatform Settings by Russell Wolf](<https://devfeed.tech/articles/kotlinconf-23-5-years-of-multiplatform-settings-by-russell-wolf-27023.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-5-years-of-multiplatform-settings-by-russell-wolf-cd6dd878e697?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-05-22T10:51:25Z

Content type: opinion

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Library](<https://devfeed.tech/topics/library.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [library](<https://devfeed.tech/tags/library.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [release](<https://devfeed.tech/tags/release.md>), [v1](<https://devfeed.tech/tags/v1.md>)

### AI overview

Russell Wolf's KotlinConf'23 lightning talk covers the five-year history and continued development of the Multiplatform Settings library, including its v1.0.0 release. The article also emphasizes that supporting open-source projects can involve more than contributing code.

### Source excerpt

https://medium.com/media/a9a3748121a191830750225521b6dffb/href In Russell Wolf's captivating lightning talk, he takes us on a journey through the history of his library, Multiplatform Settings. Surprisingly, it has already been 5 years since its initial launch and it's great to see it's continued development (and the release of v1.0.0) as one of the cornerstone libraries of multiplatform development. One of the important messages in his talk is for us to remember that this is an open source library and requires the communities support to help its future development. It's always worth remembering to contribute to open source you don't have to contribute code. You can find my thoughts on more KotlinConf'23 talks at KotlinConf'23. Please let me know your thoughts. Join medium to read all of my articles or subscribe for e-mail updates.

## KotlinConf'23 talk explains Kotlin range operators and the new rangeUntil operator

DevFeed: [KotlinConf'23 talk explains Kotlin range operators and the new rangeUntil operator](<https://devfeed.tech/articles/kotlinconf-23-why-code-autocompletion-works-faster-on-weekends-by-egor-tolstoy-27029.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-why-code-autocompletion-works-faster-on-weekends-by-egor-tolstoy-bade67a21742?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-05-19T18:23:58Z

Content type: opinion

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [code](<https://devfeed.tech/tags/code.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

A recap of Egor Tolstoy's KotlinConf'23 lightning talk about Kotlin range operators. It explains the difference between closed and open ranges and notes that the new rangeUntil operator, ..<, was expected to become stable in Kotlin 1.9.0.

### Source excerpt

KotlinConf'23 -- Why code autocompletion works faster on weekends by Egor Tolstoyhttps://medium.com/media/2cb46188f14599c237dded7d4dcb3af9/href Egor Tolstoy, recently delivered an intriguing lightning talk about the work he does as a product manager on Kotlin. As an example, he touched on the subject of range operators, .. and until, in the language and as part of the journey showed some interesting stats of their use. Of course, as highlighted, when we see the use of the range operators is it clear what they mean? For instance, what do each of these lines print? println((1..4).toList()) println((1 until 4).toList()) The answer to the above is: [1, 2, 3, 4] // 1..4 is a closed range so end is inclusive [1, 2, 3] // 1 until 4 is an open range so end is exclusive The talk nicely emphasised the usefulness of testing peoples understanding of Kotlin code to drive how the language evolves, with the outcome of the above leading to the introduction of the new rangeUntil operator, ..<, which will become stable in Kotlin 1.9.0. 1..4 // 1, 2, 3, 4 1..<4 // 1, 2, 3 Of course that leaves one final question, why does code autocompletion work faster at the weekends? Because developers typically work on smaller personal projects at weekends. You can find my thoughts on more KotlinConf'23 talks at KotlinConf'23. Please let me know your thoughts. Join medium to read all of my articles or subscribe for e-mail updates.

## KotlinConf'23 -- Meta-programming with KSP and Kotlin compiler plugins by Tadeas Kriz

DevFeed: [KotlinConf'23 -- Meta-programming with KSP and Kotlin compiler plugins by Tadeas Kriz](<https://devfeed.tech/articles/kotlinconf-23-meta-programming-with-ksp-and-kotlin-compiler-plugins-by-tadeas-kriz-27028.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-meta-programming-with-ksp-and-kotlin-compiler-plugins-by-tadeas-kriz-45dd57d30e47?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-04-15T01:27:49Z

Content type: opinion

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-compiler](<https://devfeed.tech/tags/kotlin-compiler.md>), [kotlinconf](<https://devfeed.tech/tags/kotlinconf.md>), [ksp](<https://devfeed.tech/tags/ksp.md>)

### AI overview

The article reflects on a KotlinConf'23 talk about metaprogramming with KSP and Kotlin compiler plugins. It compares approaches for generating or altering code during compilation, discusses Kotlin compiler extensions and JVM IR, and recommends using KSP where possible.

### Source excerpt

KotlinConf'23 -- Meta-programming with KSP and Kotlin compiler plugins by Tadeas Krizhttps://medium.com/media/5209f3d53633efc6fd3a4ca4879001cc/href I really enjoyed watching the talk on meta-programming by Tadeáš Kříž at KotlinConf'23 where he provided an excellent overview of the two main options for generating and/or altering code during compilation. It was great to see the pros and cons of each option even compared to Java's annotation processing which more developers are familiar with. "there are the things that break your heart 💔" The lack of documentation around writing a Kotlin Compiler Plugin makes getting started hard work. Fortunately the speaker provides plenty of links to resources you can use to help you on your way -- I wish I'd seen this talk before writing my own compiler plugin last week! Perhaps you were aware of the move to JVM IR; for most Kotlin developers the compiler implementation doesn't really matter unless, of course, you are writing a compiler plugin. As such it was interesting to have an overview of both SyntheticResolveExtension and IrGenerationExtension. How do you decide what to use for meta-programming? Prefer KSP where possible. The talk mentions plenty of examples of KSP and Kotlin Compiler Plugins you can check out to help you write your own plugin. Additionally, during the conference I had the opportunity to talk with Tadeas about a Kotlin Compiler Plugin he's been writing, Skie (pronounced sky) which, by the way, looks awesome. We both have our fingers crossed that it can become open source so the Kotlin community has another good example of how to write a compiler plugin. "What do you do next. Hopefully profit." You can find my thoughts on more KotlinConf'23 talks at KotlinConf'23. Please let me know your thoughts. Join medium to read all of my articles or subscribe for e-mail updates.

## KotlinConf'23-Dissecting Kotlin: Unsealing the Sealed, the SAM, and Other Syntax by Huyen Tue Dao

DevFeed: [KotlinConf'23-Dissecting Kotlin: Unsealing the Sealed, the SAM, and Other Syntax by Huyen Tue Dao](<https://devfeed.tech/articles/kotlinconf-23-dissecting-kotlin-unsealing-the-sealed-the-sam-and-other-syntax-by-huyen-tue-dao-27025.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-dissecting-kotlin-unsealing-the-sealed-the-sam-and-other-syntax-by-huyen-tue-dao-330153f0eeac?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-04-14T07:42:38Z

Content type: opinion

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [code](<https://devfeed.tech/tags/code.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [sealed-classes](<https://devfeed.tech/tags/sealed-classes.md>)

### AI overview

The author reflects on Huyen Tue Dao's KotlinConf'23 talk about idiomatic Kotlin code, examining sealed classes and interfaces, unsigned integers, bytecode, and value classes. The talk's conclusion is that the best coding approach depends on the problem and the developer's needs.

### Source excerpt

KotlinConf'23 -- Dissecting Kotlin: Unsealing the Sealed, the SAM, and Other Syntax by Huyen Tue Daohttps://medium.com/media/7939209b034172cf8e3f81cfd7f162f5/href I had the pleasure of attending the fascinating talk by Huyen Tue Dao at KotlinConf'23 where she explored the question of idomatic Kotlin code. While the conclusion that "it matters what is best for you" might seem slightly disappointing, the journey to that conclusion was both informative and enlightening. What code is best to solve your problem? One of the highlights of the talk for me was when the speaker delved into the internals of Kotlin and showed us the byte code. This helped to demystify some of the more advanced concepts and made the talk feel very practical and grounded in real-world examples. The speaker started by discussing sealed classes and interfaces, and went on to cover several other interesting Kotlin features. These included unsigned integers, which are useful for representing values that need to use the full bit-width, such as color codes in ARGB format. Exploring the byte-code for unsigned types lead us to a discussion on value classes and their usefulness for maintaining the identity of a class even when the underlying value is primitive. You can find my thoughts on more KotlinConf'23 talks at KotlinConf'23. Please let me know your thoughts. Join medium to read all of my articles or subscribe for e-mail updates.

## KotlinConf'23-Kotlin & Functional Programming: pick the best, skip the rest by Urs Peter

DevFeed: [KotlinConf'23-Kotlin & Functional Programming: pick the best, skip the rest by Urs Peter](<https://devfeed.tech/articles/kotlinconf-23-kotlin-functional-programming-pick-the-best-skip-the-rest-by-urs-peter-27026.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-kotlin-functional-programming-pick-the-best-skip-the-rest-by-urs-peter-8958d3dcb432?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-04-14T06:32:47Z

Content type: opinion

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [exceptions](<https://devfeed.tech/topics/exceptions.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [arrow](<https://devfeed.tech/tags/arrow.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [monad](<https://devfeed.tech/tags/monad.md>), [optional](<https://devfeed.tech/tags/optional.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

A review of Urs Peter's KotlinConf'23 talk on functional programming, covering monoids, functors, monads, and selective use of the Arrow framework. It highlights using Either for recoverable service errors, nullable comprehensions, and Arrow Optics for nested data updates.

### Source excerpt

KotlinConf'23 -- Kotlin & Functional Programming: pick the best, skip the rest by Urs Peterhttps://medium.com/media/b5b95f6bdbb507930534ef8279ba1d05/href I recently had the pleasure of listening to Urs Peter's talk on Kotlin & Functional. The speaker gave a great, simple summary of what a Monad is and how it works. In essence: a Monoid is combinable (plus) and has an identity (empty) element which when combined with another value returns that other value. a Functor is mappable (map) a Monad is composable (flatMap) The talk then went on to discuss some common monads, such as Collections and Optional. The highlight of the talk for me was when the speaker talked about cherry-picking the best features between Kotlin and Monads (using the Arrow framework). Use Monads selectively where needed and useful. Why use a Monad to replace try-catch blocks for the 95% of use cases? Let exceptions bubble up to a GlobalExceptionHandler. For the other 5%, where we're typically recovering in our service, prefer Either<A,B> over Result as it makes the contract explicit with easy access to the error reply. Prevent tedious null checks with Arrow's nullable{ } comprehension. With deeply nested data structures where you want to change something at the leaf level, use Arrow Optics instead of nested copy calls. While I enjoyed the talk, I would have loved to hear more best features. You can find my thoughts on more KotlinConf'23 talks at KotlinConf'23. Please let me know your thoughts. Join medium to read all of my articles or subscribe for e-mail updates.

## KotlinConf'23

DevFeed: [KotlinConf'23](<https://devfeed.tech/articles/kotlinconf-23-27024.md>)

Original publisher: [Read original article](<https://appmattus.medium.com/kotlinconf23-d03fe60af719?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2023-04-14T06:29:10Z

Content type: article

Language: en

Sources: [Stories by Matthew Dolan on Medium](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Swift](<https://devfeed.tech/topics/swift.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlinconf](<https://devfeed.tech/tags/kotlinconf.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

Personal notes from KotlinConf'23 in Amsterdam covering talks on Kotlin, functional programming, Kotlin Multiplatform, compiler plugins, Android Jetpack, and a Swift-friendly API generator called SKIE.

### Source excerpt

I recently attended KotlinConf'23 Amsterdam; these are some of my thoughts on talks I enjoyed. Kotlin & Functional Programming: pick the best, skip the rest by Urs Peter. Dissecting Kotlin: Unsealing the Sealed, the SAM, and Other Syntax by Huyen Tue Dao Meta-programming with KSP and Kotlin compiler plugins by Tadeáš Kříž Why code autocompletion works faster on weekends by Egor Tolstoy Kotlin Multiplatform 5 years of Multiplatform Settings by Russell Wolf Kotlin Multiplatform Conversions at Android Jetpack Scale by Dustin Lam and James Ward One of the most promising demos I saw was SKIE. The premise of SKIE is a Swift-friendly API Generator for Kotlin Multiplatform. You may already be familiar with MOKO KSwift but SKIE looks incredibly more powerful. NOTE: I will be adding to this as I continue to write up my notes. Join medium to read all of my articles or subscribe for e-mail updates.