Rafael Tonholo
rafael.tonholo.dev
Rafael Tonholo
@rafael.tonholo.dev
Android Developer

💜 Kotlin lover
📱 Jetpack Compose addicted
💡 Always trying to learn new things
Reposted by Rafael Tonholo
Using the Default Hierarchy Template in KMP? You probably shouldn't 👀

It creates intermediate source sets you might not need — with real build cost. ⚠️

New article on the hidden costs and when to use a custom hierarchy instead 👇

dev.to/rsicarelli/t...
The Hidden Cost of Default Hierarchy Template in Kotlin Multiplatform
Introduction The Default Hierarchy Template in KMP projects is a great way to reduce...
dev.to
November 14, 2025 at 10:58 AM
Reposted by Rafael Tonholo
At Mozilla we make tech that puts people before profit. We make tech that is designed to help people live better lives. We make tech that is GOOD.
We’re excited to join the Digital Public Goods Alliance (DPGA) to help expand global access to open, people-first technology. As we face rapid changes in AI and digital governance, strengthening the digital commons is more important than ever.
blog.mozilla.org/en/mozilla/d...
Mozilla joins the Digital Public Goods Alliance, championing open source to drive global progress  | The Mozilla Blog
Today, Mozilla is thrilled to join the Digital Public Goods Alliance (DPGA) as its newest member. The DPGA is a UN-backed initiative that seeks to advance
blog.mozilla.org
November 12, 2025 at 6:49 PM
Reposted by Rafael Tonholo
Anyone wants to make a cool OSS contribution to the Kotlin ecosystem?

Integrate the Amper dependency resolver in Kotlin scripts and solve KT-42775, make scripting easier for everyone and learn about Gradle metadata at the same time.

youtrack.jetbrains.com/issue/KT-427...
youtrack.jetbrains.com
November 10, 2025 at 2:32 PM
Reposted by Rafael Tonholo
I shared how I typicallyl debug my Gradle builds

mbonnin.net/2025-11-08_g...
Gradle debug recipes
Get insights into your Gradle build.
mbonnin.net
November 10, 2025 at 9:13 AM
I've upgraded to the last @androidstudio.bsky.social stable version and suddenly started to experience a few issues. The most annoying is the debugger randomly throwing Stack Overflow.

If you are experiencing the same, please consider voting for this issue: issuetracker.google.com/issues/45229...
Google Issue Tracker
issuetracker.google.com
November 7, 2025 at 9:01 PM
Reposted by Rafael Tonholo
I turned a leak investigation into a post on the Block eng blog to share a method that works well!

It's a bit long... I had to show how to encode code knowledge to automate leak investigations, and dig even deeper with YourKit Java Profiler.

engineering.block.xyz/blog/the-lea...

#AndroidDev
The LeakCanary Method
This blog post shares a method for root causing Android memory leaks
engineering.block.xyz
October 21, 2025 at 9:00 AM
Reposted by Rafael Tonholo
Working on a plugin that provides real-time stability analysis for Jetpack Compose functions in Android Studio.
October 20, 2025 at 1:16 PM
Reposted by Rafael Tonholo
If you're a senior+ developer and your GitHub looks like this.... I assume you have some mixture of positive work life balance, a spouse and children, and hobbies outside of coding.

What I don't assume is anything about your ability to write great software.
Your GitHub history can look like this, and it’s ok.

If you know you can do a job, apply. I've met so many great devs that weren't active on GitHub publicly.

We need to understand that not everybody prioritizes side projects, for many reasons. And that does not invalidate them for the job, at
September 9, 2025 at 12:08 PM
Reposted by Rafael Tonholo
Your GitHub history can look like this, and it’s ok.

If you know you can do a job, apply. I've met so many great devs that weren't active on GitHub publicly.

We need to understand that not everybody prioritizes side projects, for many reasons. And that does not invalidate them for the job, at
September 9, 2025 at 5:46 AM
Reposted by Rafael Tonholo
Open-sourced my Android-in-VS-Code experiment.

A Gradle plugin that generates workspace files for Kotlin LSP. Many things don't work, but some do 😅
github.com/desugar-64/k...

#AndroidDev #VSCode
August 30, 2025 at 1:11 AM
Reposted by Rafael Tonholo
There's no good reason why people distributing apps outside the Play Store should need to provide their personal data to Google.

This is just taking Android into the horrible world of dev accounts and notarization that Apple enforces.
August 26, 2025 at 4:27 AM
I was excited to upgrade a project I work to Kotlin 2.2.0 as it turns when-guards stable and I would be able to remove the annoying warning: "This build uses unsafe internal compiler arguments: --XXLanguage:+WhenGuards"

Android Studio: Nope.
August 7, 2025 at 12:05 PM
Reposted by Rafael Tonholo
Reminder that compat-patrouille makes it very easy to avoid the footguns of writing Gradle plugins in Kotlin.

github.com/GradleUp/com...
July 29, 2025 at 7:17 AM
Reposted by Rafael Tonholo
I wrote about new Gradle phases added by the configuration cache feature and how the cost of them can be minimized.

www.liutikas.net/2025/07/24/N...

#gradle
New Phases - Gradle Configuration Store and Load
For a long time Gradle had three distinct build phases which in simplified terms were:
www.liutikas.net
July 24, 2025 at 9:17 PM
Reposted by Rafael Tonholo
AOSP is full of bugs. It's open source, so you can file bugs and provide fixes, right? RIIIIIIIIIIGHT?

In 2021 I filed a bug that was introduced in 2018: issuetracker.google.com/issues/18856...

And I offered a fix: android-review.googlesource.com/c/platform/f...

2022: close, OBSOLETE

#AndroidDev
Google Issue Tracker
issuetracker.google.com
July 22, 2025 at 9:51 AM
Reposted by Rafael Tonholo
Compose added something wild:

PausableComposition lets the runtime start composing UI before it’s needed, split across idle frames, and pause/resume mid way. Really interesting to explore 🧐

https://blog.shreyaspatil.dev/exploring-pausablecomposition-internals-in-jetpack-compose
Exploring PausableComposition internals in Jetpack Compose
Explore the internals of the `PausableComposition` API in Jetpack Compose to improve UI performance by pre-composing elements during idle time in Android
blog.shreyaspatil.dev
July 20, 2025 at 12:51 PM
Reposted by Rafael Tonholo
The latest Thunderbird mobile update is out! We're getting closer to sharable iOS screenshots while sharing a sneak peak at the new Android account drawer and folders. And check out all the improvements from our team and community!

#Thunderbird #OpenSource

blog.thunderbird.net/2025/07/mobi...
Mobile Progress Report - June 2025 - The Thunderbird Blog
In the June update, we're making progress with JMAP for iOS, previewing drawer improvements for Android, and providing numerous updates!
blog.thunderbird.net
July 14, 2025 at 2:46 PM
Reposted by Rafael Tonholo
Our latest Thunderbird Monthly Development Digest is out! We have news about:

* The latest ESR, 140.0 "Eclipse"
* Details about new Exchange Support features
* Updates on Account Hub and the Global Message Database
* Features and Fixes

#Thunderbird #OpenSource

blog.thunderbird.net/2025/07/thun...
Thunderbird Monthly Development Digest - June 2025 - The Thunderbird Blog
The new Extended Support Release is out, Exchange Support is on by default in Daily, and Account Hub (and more) are moving forward.
blog.thunderbird.net
July 9, 2025 at 3:26 PM
Reposted by Rafael Tonholo
In two days Mikhail Zarechenskii, @sebi.io and I will be exploring the new features of @kotlinlang.org 2.2 in a livestream. Learn about the new tricks, and ask any questions you may have!

📅 July 10
⏰ 4:00 pm CET
👉 kotl.in/2-2-livestream
Live Webinar -
kotl.in
July 8, 2025 at 3:41 PM
Reposted by Rafael Tonholo
Blogged: why Jetpack Compose bottom sheets don't show in Android Studio previews and how to fix them saurabharora.dev/posts/curiou...

#AndroidDev
Curious case of missing Bottom Sheet Previews
While working on a Jetpack Compose project, I noticed my modal bottom sheet wasn’t appearing in Android Studio previews. I could preview the sheet’s contents by extracting them into a separate composable,...
saurabharora.dev
July 4, 2025 at 11:31 AM
How good is Compose for Web for a landing page? What about in terms of SEO?
My wife wants to build a new website for her UX/UI design portfolio and I decided to code for her.

Now I'm wondering if I should use either Compose for Web or Compose HTML...

#KotlinMultiplatform #ComposeWeb #Compose
June 28, 2025 at 2:41 PM
Reposted by Rafael Tonholo
Had a really great week in New York visiting droidcon and meeting lots and lots of Android developers! It's such a wonderful community.

I even forgot to post about my talk until just now - if anyone's looking for slides and resources, they're here:
zsmb.co/talks/blazin...
Blazing Fast UI Development with Compose Hot Reload - zsmb.co
Compose Hot Reload is a new JetBrains project that gives you live updates after code changes when running a Compose Desktop app - without having to relaunch the app at all.
zsmb.co
June 28, 2025 at 1:09 AM
Reposted by Rafael Tonholo
If you're heading to Droidcon in NYC this week, so are we! Two members from our Mobile team will be there, so if you see 'Thunderbird' on a name badge, say hi! We're looking forward to learning, making connections, and sharing our progress in the Android email space!

#dcnyc25 #Thunderbird #Android
June 23, 2025 at 4:46 PM
Reposted by Rafael Tonholo
Our May Mobile Progress Report shows how we're:

*getting ready for JMAP in iOS
* planing early for TestFlight
* coordinating localization for both apps
* asking for feedback with the Android beta
* improving the account drawer and more

#Thunderbird #Email

blog.thunderbird.net/2025/06/thun...
Thunderbird Mobile Progress Report: May 2025 - The Thunderbird Blog
In this month's update, we're discussing JMAP and TestFlight planning for iOS and beta and account drawer progress (and fixes) for Android.
blog.thunderbird.net
June 20, 2025 at 3:16 PM
I wish we had a Droidcon Canada so I could participate 😕

Probably it would be on Nova Scotia, but at least I could join without needing to get a new Visa...
June 21, 2025 at 1:34 PM