After 4.5 rewarding years at Square, my time there came to an unexpected end. It’s a transition that feels all too familiar right now, but it cleared the path for an amazing new opportunity. I'm excited to start my next chapter at Ramp!
Matt McKenna
@mmckenna.me
🤖 #AndroidDev and GDE 💼 Mobile @ ramp.com 🌐 International Speaker 🐾 Dog lover 📝 blog.mmckenna.me
Something big might happen to the Kotlin Multiplatform Ecosystem 👀 We were never too happy about how Kotlin publishes and resolves KMP libraries. It takes up significantly more space than it has to, produces a ton of artifacts and Maven modules, and is just... complex!
Experimenting with something new in the latest Heron release. Heron now let's you download a local inference model to translate text and it works completely offline on your device. Nothing gets sent to any server.
Finally working on cleaning up PRs for dejavu, including working on Compose 1.11 support. github.com/himattm/dejavu
GitHub - himattm/dejavu: A lightweight framework for tracking and asserting against Jetpack Compose recompositions.
A lightweight framework for tracking and asserting against Jetpack Compose recompositions. - himattm/dejavu
github.com
Super sympathetic to Sonatype's situation, hosting isn't free. But announcing this with paltry limits and no public pricing options (a sales contact ain't it) is bad for everyone and going to be a major disruption to the JVM and Kotlin ecosystems. central.sonatype.org/publish/mave...
Maven Central Publishing Limits
central.sonatype.org
Maybe the most harmful thing about LLMs for a learning community is that you won't learn about anything unrelated to what you asked for.
Hi! I shipped jetc.dev Newsletter Issue #315! Google I|O 2026! Compose Multiplatform 1.11.0! Android is Compose-first! And... an LLM-powered layout?!? jetc.dev/issues/315 #JetpackCompose #AndroidDev
Hunting down Jetpack Compose recomposition issues manually is a huge time sink I’ve spent the past few weeks using @mmckenna.me’s Dejavu to simplify this: - Write Dejavu tests to establish a baseline - Tell the agent to hunt for issues and A/B fixes - Profit
If you somehow missed the KotlinConf keynote last week, here are the top 10 KMP announcements with links to learn more about each 🧵👇
Introducing Touch Robot, something that has materially changed how I write screenshot tests. We've been using it at Block for ~2 years to catch animation and gesture bugs that static screenshots miss. saket.me/touch-robot/
Introducing Touch Robot, for writing interactive screenshot tests in Compose UI
The best parts of a UI are usually in motion. The bugs are too.
saket.me
Situation 1: dev A thinks approach X is correct, dev B thinks Y is the right way. They argue and try to convince each other. Situation 2: dev A thinks approach X is correct, tells the LLM to implement it. There is SO MUCH learning in Situation 1, lost when using LLMs....
Screaming into the void some thoughts on AI coding. androidessence.com/leave-me-beh...
Leave Me Behind | Android Essence
Simplified Android Development
androidessence.com
I built Dejavu because agents don't feel extra recompositions. They write Compose code that compiles and passes its tests while the UI quietly does ten times the work. Dejavu turns that hidden work into a failing test, giving the agent a count to optimize against.
💠 Haze 2.0-alpha01 is out! This is a big release, splitting Haze up into layers, with the goal of enabling pluggable visual effects. Let me know what you think! chrisbanes.me/posts/haze-2...
Haze 2.0: A Pluggable Visual Effects Engine
Haze 2.0-alpha01 turns blur into a pluggable effect, splitting it into a separate module and opening the door to custom visual effects built on top of a shared rendering infrastructure.
chrisbanes.me
Finally got around to bundling the skills I'm using every day into a repo and Claude Code marketplace so anyone can install them. I'm still rebuilding from what I was using daily at work, but we'll get there.
Metro reaches 1.0! It's the proudest work of my career and I strongly feel this is how dependency injection in Kotlin should be. Thank you to everyone that's contributed and helped this project get to where it's at. Metro wouldn't be where it is without you. www.zacsweers.dev/metro-is-sta...
🚇 Metro is Stable
Metro 1.0.0 is out now and stable. This means that its runtime APIs (runtime, MetroX artifacts, Gradle plugin, etc.) are now API-stable unless annotated with an experimental annotation. This is an ex...
zacsweers.dev
Wrote up something small about how I started using interface inheritance to handle inserting into multiple tables at a time in Room, when you have a common type used by multiple Daos and don't want to duplicate code. #AndroidDev androidessence.com/multi-table-...
Managing Multi Table Inserts With Room | Android Essence
Simplified Android Development
androidessence.com
Hit Claude limits for the first time ever with Opus 4.7 It's somehow equivalent to my last 30 days of Opus 4.6 use. This makes the model not worth using imo.
Live now! Come hang out for some chill Wednesday night coding twitch.tv/adammc
Twitch
Twitch is the world
twitch.tv
Just released version 0.3.1 of Dejavu! This release has some version bumps and a bug fix by @jamescullimore.bsky.social, our first contributor!! github.com/himattm/deja...
Release v0.3.1 · himattm/dejavu
Fixed Android tag-mapping failure when Dejavu.enable() is called after the test activity is already resumed (#52) seedActiveActivity() now explicitly seeds the current activity from DejavuCompose...
github.com
I finally did it. I finally decided to declare that I am #OpenToWork. See commonsware.com/blog/2026/04... for more!
#OpenToWork
If you have a problem, if no one else can help, and if you can find him... maybe you can hire... me! 😁
commonsware.com
Halogen 0.2.0 is out now with the halogen-image module! github.com/himattm/halo...
Release Halogen v0.2.0 · himattm/halogen
What's Changed Add halogen-image module for image-to-theme extraction by @himattm in #19 Full Changelog: v0.1.0...v0.2.0
github.com
Halogen will support images soon!
I know there's a lot of people that worked on this behind the scenes but on top of Ralf and Tom, I also wanna give a huge shout out to Joel Wilcox and Jacob Applin for a ton of contributions, pairing sessions over tuple, and starting work with me on Metro as far back as January 2025. Hire them!
We're wrapping up our migration to Metro internally for Square Android. I summarized some of our challenges and steps we took in a blog post. If you use Dagger 2 for a Kotlin project, then you should migrate to Metro sooner rather than later. engineering.block.xyz/blog/metro-m...