RSSAmplifier

Blog

Marco Gomiero

Recent content on Marco Gomiero

marcogomiero.comRSS feed ↗161 posts

Latest posts

Code review comments are the rules you forgot to write down

If you work with AI agents, you have an instruction file (and if you don’t, you should!) usually called AGENTS.md (with CLAUDE.md symlinked to it, because standards are hard to follow).
This Markdown file is automatically added to the AI context, and it should contain all the guidelines for the project and everything that the agent should be aware of. For example, how to build the…

From messy inbox to actionable board, with one AI skill

Maintaining and developing a project is not only about building things. A significant portion of time is spent triaging issues, feature requests, and user questions. This is also the case for FeedFlow . I constantly receive feedback from different sources: 
 
 GitHub issues, given that the project is open source 
 Support emails 
 Crash reporting: Sentry and Firebase Crashlytics…

How to import multiple iOS signing certificates to CI

Some time ago, I shared the GitHub Actions workflow that I use for deploying the iOS version of FeedFlow to the App Store. 
 
 How to publish a Kotlin Multiplatform iOS app on App Store with GitHub Actions 
 
 One step of that CI job is setting up the required certificates for signing the app: Apple Development and Apple Distribution . In the past, it was possible to extract these…

Sliding Doors: ten years of RSS-Parser

Today marks ten years since the first commit of RSS-Parser . TEN YEARS . 
 I want to use this opportunity to reflect on the journey of this library, the sliding doors moments along the way, and the chain of events that made RSS-Parser an important part of my career. 
 The bare bones of the library started earlier, though; it was 2015 when I wrote my first app that I’ve published to the…

Building Shellporter: From Idea to Production in a Week

I work with multiple projects at the same time. My typical macOS setup is one Desktop/Workspace per project, with my IDE and a terminal window. I prefer using a standalone terminal over the one built into the IDE because TUIs, especially those from AI agents, tend to perform better there: no scrolling jank, no weird jumps, and a generally smoother experience. And also I prefer to have a full big…

Sunsetting spoton: Android 16 killed the hotspot toggle trick

spoton is getting sunset. 
 I started this project because I had a very specific (and very lazy) problem: I wanted to enable my phone hotspot without taking my phone out of my pocket. I do it often when I’m travelling or working somewhere without stable Wi-Fi, and every time it was the same ritual: unlock phone, quick settings, find the hotspot tile, toggle, put phone away. 
 At some…

Lessons learned after building apps with Kotlin Multiplatform

With Kotlin Multiplatform and Compose Multiplatform, you can share code and UI across multiple platforms, from Android and iOS to macOS, Windows, and Linux. But building apps on all these platforms brings unexpected challenges you don’t anticipate at the beginning. In this talk, I’ll share what I’ve learned (often the hard way) while developing apps with Kotlin Multiplatform. You’ll hear why…

Lessons learned after building apps with Kotlin Multiplatform

With Kotlin Multiplatform and Compose Multiplatform, you can share code and UI across multiple platforms, from Android and iOS to macOS, Windows, and Linux. But building apps on all these platforms brings unexpected challenges you don’t anticipate at the beginning. In this talk, I’ll share what I’ve learned (often the hard way) while developing apps with Kotlin Multiplatform. You’ll hear why…

Roundtable - Kotlin Multiplatform is here to stay

Many companies and developers use Kotlin Multiplatform on a daily basis, yet many still do not. Where should you start when proposing it for a project? What mistakes should you avoid? Let’s ask the experts who have been using it for a while. What about Compose Multiplatform?

From Kotlin to Native and back: accessing native macOS API in Compose Multiplatform

Compose Multiplatform makes it easy to build cross-platform desktop apps with Kotlin and Compose, but what about native APIs, like iCloud on macOS? Accessing such APIs isn’t possible through the regular Compose Multiplatform toolchain. However, with a bit of “magic”, we can turn dreams (or feature requests) into reality. In this talk, we’ll explore how to combine…

From Kotlin to Native and back: accessing native macOS API in Compose Multiplatform

Compose Multiplatform makes it easy to build cross-platform desktop apps with Kotlin and Compose, but what about native APIs, like iCloud on macOS? Accessing such APIs isn’t possible through the regular Compose Multiplatform toolchain. However, with a bit of “magic”, we can turn dreams (or feature requests) into reality. In this talk, we’ll explore how to combine…

Roundtable: Working with AI, Not for AI: Practical Strategies for Android Development

AI is reshaping how we write code—but for Android developers, the real question is: how do we make it genuinely useful, without slowing down, over-automating, or rewriting our process for the hype? In this roundtable, Android engineers and tech leads will share how they’re integrating AI tools like Gemini, Cursor, Copilot, and others into their Kotlin development workflows—from code generation to…

Accessing native macOS API in Compose Multiplatform

Compose Multiplatform is an amazing framework for building desktop applications that run on the JVM (Java Virtual Machine) on multiple platforms (macOS, Windows, and Linux). 
 However, things get trickier if platform-specific APIs, like iCloud on macOS, are needed. These APIs are tied to their native platforms and aren’t designed to be easily shared across multiple targets. Integrating such…

Fireside Chat: Meet your new remote collegue - AI

Gather around our metaphorical bonfire as we dive into the evolving role of AI as a teammate in our daily work. Together, we will explore how refining prompts can lead to better answers, how we’ve learned to roll with the moments when results go in the opposite direction, and how AI can even lighten the load by giving your pull requests an initial review. This session is open to everyone — bring…

The rollercoaster of releasing an Android, iOS and desktop app with Kotlin Multiplatform

With the rise of Kotlin Multiplatform, the possibility of expanding to multiple platforms has increased, especially for Android Developers. It’s easier than before to build for other platforms. But how to release your app to multiple platforms? In this talk, I will share all the things I’ve learned around distributing FeedFlow, an Android, iOS, macOS, Windows, and Linux app built with…

Testing a Gradle Plugin that interacts with Git

Some time ago, I built KMP Framework Bundler , a Gradle plugin for Kotlin Multiplatform projects that generates an XCFramework for Apple targets or a FatFramework for iOS targets and manages the publishing process to a CocoaPods repository. (Note: the plugin is currently in maintenance mode; using KMMBridge might be a better option.) 
 After building the Framework, the plugin handles the…

The curious case of a weird VerifyError crash


 This post can be considered as a journal entry. I had to clear my thoughts and vent off through writing after spending time debugging this issue. Maybe it will be helpful for future references or an example of the process to follow in such cases. 
 
 
 

 The other day I was doing the usual dependency update routine of FeedFlow when I discovered a runtime crash that…

From an Android to a Kotlin Multiplatform library

As Kotlin Multiplatform (KMP) continues to gain traction, more Android libraries are transitioning to support multiple platforms. However, this transition doesn’t always come for free; depending on the project, there could be different challenges. 
 Recently, I migrated an existing Android library ( RSS-Parser , a library to parse RSS feeds). In this article, I will share my experience, cover…

Watch out for transitive dependencies: an “obvious” rant


 This article is just a short “rant” and a “therapy session” to remind and warn my future self. 
 
 I was recently debugging a weird crash affecting some users. The issue was related to navigation, fragments, and backstacks. 
 After weeks spent trying to reproduce it, reading online reports, and cross-referencing previous libraries and SDK updates, I…

Don’t let Maven block you!

As developers, we’ve all encountered build failures in CI (or on our local machines) due to Maven repository issues preventing dependency downloads. 
 > Could not download foo - lib - 1.0 . aar (org . acme . foo:foo - lib: 1.0 )
 > Could not get resource 'https://mavenrepo.com/org/acme/foo/foo-lib/1.0/foo-lib-1.0.aar' . 
 > Could not GET…

Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition

After discovering a new interesting technology or framework, you will probably start asking yourself how to integrate it into an existing project. That’s because, the possibility of starting with a blank canvas is rare (not impossible, but rare). This is also the case for Kotlin Multiplatform, which is getting more and more hype every day. And now, that the technology has become stable,…

The rollercoaster of releasing an Android, iOS, and macOS app with Kotlin Multiplatform

With the rise of Kotlin Multiplatform, the possibility of expanding to multiple platforms has increased, especially for Android Developers. It’s easier than before to build for other platforms. But how to release your app to multiple platforms? In this talk, I will share all the things I’ve learned around distributing FeedFlow, an Android, iOS, and macOS app built with Kotlin…

The rollercoaster of releasing an Android, iOS, and macOS app with Kotlin Multiplatform

With the rise of Kotlin Multiplatform, the possibility of expanding to multiple platforms has increased, especially for Android Developers. It’s easier than before to build for other platforms. But how to release your app to multiple platforms? In this talk, I will share all the things I’ve learned around distributing FeedFlow, an Android, iOS, and macOS app built with Kotlin…

From Android to Multiplatform and beyond

With Kotlin Multiplatform getting increasingly established, many Android libraries became multiplatform. But how to make an existing Android library multiplatform? In this talk, we will cover the common challenges faced while migrating Android libraries to Kotlin Multiplatform, like handling platform-specific dependencies, re-organizing the project structure without losing the contributor’s…

Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition

After discovering a new interesting technology or framework, you will probably start asking yourself how to integrate it into an existing project. That’s because, the possibility of starting with a blank canvas is rare (not impossible, but rare). This is also the case for Kotlin Multiplatform, which is getting more and more hype every day. And now, that the technology has become stable,…

From Android to Multiplatform and beyond

With Kotlin Multiplatform getting increasingly established, many Android libraries became multiplatform. But how to make an existing Android library multiplatform? In this talk, we will cover the common challenges faced while migrating Android libraries to Kotlin Multiplatform, like handling platform-specific dependencies, re-organizing the project structure without losing the contributor’s…

Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition

After discovering a new interesting technology or framework, you will probably start asking yourself how to integrate it into an existing project. That’s because, the possibility of starting with a blank canvas is rare (not impossible, but rare). This is also the case for Kotlin Multiplatform, which is getting more and more hype every day. And now, that the technology has become stable,…

Hi, have you met Kotlin Multiplatform?

Kotlin Multiplatform is getting more and more hype every day. It started as an experimental technology, then alpha, beta, and now it’s finally stable. We constantly read of new companies and teams that are using KMP for experiments and production projects alike. And we’re left wondering: why pick KMP over any other cross-platform solution? How to approach it? And, most importantly, is…

Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition

After discovering a new interesting technology or framework, you will probably start asking yourself how to integrate it into an existing project. That’s because, the possibility of starting with a blank canvas is rare (not impossible, but rare). This is also the case for Kotlin Multiplatform, which is getting more and more hype every day. And now, that the technology has become stable,…

The rollercoaster of releasing an Android, iOS, and macOS app with Kotlin Multiplatform

With the rise of Kotlin Multiplatform, the possibility of expanding to multiple platforms has increased, especially for Android Developers. It’s easier than before to build for other platforms. But how to release your app to multiple platforms? In this talk, I will share all the things I’ve learned around distributing FeedFlow, an Android, iOS, and macOS app built with Kotlin…

${insert KotlinConf 2024 summary here}

A recap of KotlinConf 2024

Publishing a Compose macOS app on App Store: architectures, sandboxing and native libraries

When I released FeedFlow (an RSS Reader available on Android, iOS, and macOS, built with Jetpack Compose for the Android app, Compose Multiplatform for the desktop app, and SwiftUI for the iOS app), I decided to publish the macOS version outside the App Store. I went this path because publishing on the App Store has different requirements that I wanted to avoid tackling during the first launch.…

Publishing a Kotlin Multiplatform Android, iOS, and macOS app with GitHub Actions

It’s been almost a year since I started working on FeedFlow , an RSS Reader available on Android, iOS, and macOS built with Jetpack Compose for the Android app, Compose Multiplatform for the desktop app, and SwiftUI for the iOS app. 
 To be faster and “machine-agnostic” with the deployments, I decided to have a CI (Continuous Integration) on GitHub Actions to quickly deploy…

How to publish a Kotlin Multiplatform macOS app on the App Store with GitHub Actions


 SERIES: Publishing a Kotlin Multiplatform Android, iOS, and macOS app with GitHub Actions. 
 
 Part 1: How to publish a Kotlin Multiplatform Android app on Play Store with GitHub Actions 
 Part 2: How to publish a Kotlin Multiplatform iOS app on App Store with GitHub Actions 
 Part 3: How to publish a Kotlin Multiplatform macOS app on GitHub Releases with GitHub Actions 
…

How to publish a Kotlin Multiplatform macOS app on GitHub Releases with GitHub Actions


 

 
 
 
 
 


 
 
 SERIES: Publishing a Kotlin Multiplatform Android, iOS, and macOS app with GitHub Actions. 
 
 Part 1: How to publish a Kotlin Multiplatform Android app on Play Store with GitHub Actions 
 Part 2: How to publish a Kotlin Multiplatform iOS app on App Store with GitHub Actions 
 Part 3: How to publish a Kotlin…

The rollercoaster of releasing an Android, iOS, and macOS app with Kotlin Multiplatform

With the rise of Kotlin Multiplatform, the possibility of expanding to multiple platforms has increased, especially for Android Developers. It’s easier than before to build for other platforms. But how to release your app to multiple platforms? In this talk, I will share all the things I’ve learned around distributing FeedFlow, an Android, iOS, and macOS app built with Kotlin…

Hi, have you met Kotlin Multiplatform?

Kotlin Multiplatform is getting more and more hype every day. It started as an experimental technology, then alpha, beta, and now it’s finally stable. We constantly read of new companies and teams that are using KMP for experiments and production projects alike. And we’re left wondering: why pick KMP over any other cross-platform solution? How to approach it? And, most importantly, is…

How to publish a Kotlin Multiplatform iOS app on App Store with GitHub Actions


 

 
 
 
 
 
 
 
 
 


 
 
 SERIES: Publishing a Kotlin Multiplatform Android, iOS, and macOS app with GitHub Actions. 
 
 Part 1: How to publish a Kotlin Multiplatform Android app on Play Store with GitHub Actions 
 Part 2: How to publish a Kotlin Multiplatform iOS app on App Store with GitHub Actions 
 Part 3: How…

How to publish a Kotlin Multiplatform Android app on Play Store with GitHub Actions


 

 
 
 
 
 


 
 
 SERIES: Publishing a Kotlin Multiplatform Android, iOS, and macOS app with GitHub Actions. 
 
 Part 1: How to publish a Kotlin Multiplatform Android app on Play Store with GitHub Actions 
 Part 2: How to publish a Kotlin Multiplatform iOS app on App Store with GitHub Actions 
 Part 3: How to publish a Kotlin…

Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition

After discovering a new interesting technology or framework, you will probably start asking yourself how to integrate it into an existing project. That’s because, the possibility of starting with a blank canvas is rare (not impossible, but rare). This is also the case for Kotlin Multiplatform, which is getting more and more hype every day. And now, that the technology has become stable,…

Hi, have you met Kotlin Multiplatform?

Kotlin Multiplatform is getting more and more hype every day. It started as an experimental technology, then alpha, beta, and now it’s finally stable. We constantly read of new companies and teams that are using KMP for experiments and production projects alike. And we’re left wondering: why pick KMP over any other cross-platform solution? How to approach it? And, most importantly, is…

Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition

After discovering a new interesting technology or framework, you will probably start asking yourself how to integrate it into an existing project. That’s because, the possibility of starting with a blank canvas is rare (not impossible, but rare). This is also the case for Kotlin Multiplatform, which is getting more and more hype every day. And now, that the technology has become stable,…

Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition

After discovering a new interesting technology or framework, you will probably start asking yourself how to integrate it into an existing project. That’s because, the possibility of starting with a blank canvas is rare (not impossible, but rare). This is also the case for Kotlin Multiplatform, which is getting more and more hype every day. And now, that the technology has become stable,…

Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition

After discovering a new interesting technology or framework, you will probably start asking yourself how to integrate it into an existing project. That’s because, the possibility of starting with a blank canvas is rare (not impossible, but rare). This is also the case for Kotlin Multiplatform, which is getting more and more hype every day. And now, that the technology has become stable,…

Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition

After discovering a new interesting technology or framework, you will probably start asking yourself how to integrate it into an existing project. That’s because, the possibility of starting with a blank canvas is rare (not impossible, but rare). This is also the case for Kotlin Multiplatform, which is getting more and more hype every day. And now, that the technology has become stable,…

From Mobile to Backend with Kotlin and Ktor

As mobile developers, we often see the backend world as something magical that “does things”. But what if I tell you that you can easily build a backend even if mobile is your thing? With this talk, I want to show how it is possible to bring your mobile knowledge (and shift it a little bit) to build a backend with Kotlin and Ktor. I will show how to structure the project, set up…

Hi, have you met Kotlin Multiplatform?

Kotlin Multiplatform is getting more and more hype every day. It started as an experimental technology, then alpha, beta and now it’s on the path of becoming stable. We constantly read of new companies and teams that are using KMP for experiments and production projects alike. And we’re left wondering: why pick KMP over any other cross-platform solution? How to approach it? And, most…

Using annotations to improve iOS APIs on Kotlin Multiplatform

Kotlin 1.8 has introduced new annotations to improve the interoperability of Kotlin with Objective-C and Swift: 
 
 @ObjCName : allows to customize the name that will be used in Swift or Objective-C 
 @HiddenFromObjC : allows hiding a Kotlin declaration from Objective-C (and Swift). 
 @ShouldRefineInSwift : it marks a Kotlin declaration as swift_private in the Objective-C API,…

From Mobile to Backend with Kotlin and Ktor

As mobile developers, we often see the backend world as something magical that “does things”. But what if I tell you that you can easily build a backend even if mobile is your thing? With this talk, I want to show how it is possible to bring your mobile knowledge (and shift it a little bit) to build a backend with Kotlin and Ktor. I will show how to structure the project, set up…

Adopting Jetpack Compose Safely

If you want to start adopting Jetpack Compose in an existing, large codebase worked on by multiple teams, you can’t just add the dependency and start creating composables right away. In such projects, there are already established conventions and architectural decisions that such a revolutionary change might disrupt. In this talk, we will share our journey of integrating Compose into the TIER app…