Ralf Wondratschek

325 Followers
71 Following
166 Posts
Senior staff engineer at Block / Square, formerly Principal Engineers at Amazon and Evernote | GoogleDevExpert for Android
Websitehttps://ralf-wondratschek.com/
One underrated improvement Metro brings is its easy setup. No more configuring KAPT, runtime modules, keeping versions in sync, etc. You apply the Gradle plugin, setup a tiny graph and the rest is driven through constructor injection, @ContributesBinding and its other features. In my toy project this was all I needed.
Flattening my Dependency Graph

Rounds has a Kotlin server that integrates a few things: PostgreSQL persistence via SQLDelight (hosted on PlanetScale!)WebAuthn4J for Passkeyskotlinx.html for dynamic web pagesKtor for HTTP bindingThe service uses six database tables. The business domain tables are Game and GameEvent. Support for auth, sessions, and collaborative editing adds Account,

Public Object

馃憢 Hi everyone, I鈥檓 enabling GitHub Sponsors for Metro

If Metro has improved your developer experience or saved your team's build times, I鈥檇 appreciate the support!

Full pitch and ROI napkin math here: https://www.zacsweers.dev/sponsoring-metro/

Sponsoring Metro

Metro is the proudest work of my career. Ever since starting it on vacation in November 2024, building it has been an incredible journey and the community reception has been nothing short of wonderful. It sits at the intersection of several fields I've come to specialize in, ranging from metaprogramming

Zac Sweers
I recently migrated our codebase away from Ktlint to Ktfmt and Detekt. I summarized the reasons and migration steps in a blog post: https://engineering.block.xyz/blog/adopting-ktfmt-and-detekt
Adopting Ktfmt and Detekt

How Square Android replaced Ktlint with Ktfmt and Detekt and improved Kotlin formatting speed by 40% in a 60,000+ file codebase.

Block Engineering Blog

The Cash Android team wrote a post on their experience migrating to Metro. The build performance results 馃槏馃

https://code.cash.app/cash-android-moves-to-metro

Cash Android Moves to Metro

The Cash Android team have completed the migration to Metro.

Cash App Code Blog

After three wonderful years at Amazon I'm happy to share that I started this week at ... Square / Block again on my old team 馃獌 I'm excited to think about developer productivity more deeply again.

I'm quite proud of what I accomplished with my team at Amazon and will miss them. I'll keep working on App Platform as much as I can thanks to open source! https://amzn.github.io/app-platform/

App Platform

A lightweight application framework for state and memory management suitable for Kotlin Multiplatform projects.

Our KMP framework App Platform now supports Metro out of the box: https://github.com/amzn/app-platform/releases/tag/0.0.6

@ZacSweers is pushing the boundaries with Metro and there are still some Kotlin compiler bugs that need to be resolved, but on the JVM / Android it works.

Metro is conceptional very similar to Dagger + Anvil and kotlin-inject-anvil, which made this migration easy. I expect most new development to happen for Metro, so I wouldn't use kotlin-inject-anvil for new projects anymore.

Release 0.0.6 路 amzn/app-platform

Added Added support for Metro as dependency injection framework. User can choose between kotlin-inject-anvil and Metro. For more details see the documentation for how to setup and use both depende...

GitHub

I've been using ktfmt over KtLint for a few months for some projects. It's a blessing and so much easier to deal with. I forgot how much I missed 2 space indent in Kotlin.

https://facebook.github.io/ktfmt/

ktfmt - the Kotlin code formatter

We published a new version of App Platform with back button support. We also added recipes for saving presenter state, app bar integration and backstack navigation.

Working with Compose in the business logic (Molecule) and UI (Compose Multiplatform) is so much fun.

https://amzn.github.io/app-platform/changelog/#004-2025-07-25

Changelog - App Platform

A lightweight application framework for state and memory management suitable for Kotlin Multiplatform projects.

馃ゲ Anvil was quite successful inside and outside of Square, but now it's time for the next big improvement. Metro is 95% of what I pitched as Dagger 3 within Square. I'm excited.

https://github.com/square/anvil/issues/1149

Anvil Moves to Maintenance Mode 路 Issue #1149 路 square/anvil

Hey all! We wanted to share an update on the state and future of Anvil. We previously published a roadmap covering the major work we had planned, including K2 support and making Anvil a standalone ...

GitHub