Matt McKenna

@mmckenna.me

🤖 #AndroidDev and GDE 💼 Mobile @ ramp.com 🌐 International Speaker 🐾 Dog lover 📝 blog.mmckenna.me

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!

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.

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 🧵👇

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....

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.

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.

/plugin marketplace add https://github.com/himattm/skills
/plugin install android@himattm
/plugin install review@himattm
/plugin install utilities@himattm

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

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.

Claude usage with opus 4.7 equalling 30 days of Opus 4.6 use

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!

Ralf@ralf-wondratschek.com · 4mo ago

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...