I measured how much faster an agent can navigate an app and read its state by skipping the UI. Spoiler alert: the difference is significant. Another reason to decouple your business logic and navigation entirely from the UI layer. ralf-wondratschek.com/blog/headles...
Ralf
@ralf-wondratschek.com
https://ralf-wondratschek.com/ | Member of Technical Staff at OpenAI, formerly Block / Square, Amazon and Evernote | GoogleDevExpert for Android
This is a reminder to write a hype doc to document your wins and achievements. AI can help you a lot and this can be fully automated.
I'm still maintaining App Platform and just pushed a list-detail sample for different screen sizes and how to handle this with the unidirectional dataflow. The sample runs as a web app too: vrallev.github.io/app-platform...
App Platform
A lightweight application framework for state and memory management suitable for Kotlin Multiplatform projects.
vrallev.github.io
Is anyone using App Platform? github.com/amzn/app-pla... I wanted to give a heads up that ownership of the repo was transferred to me and I'm considering to change the coordinates and packages to detach the project from Amazon. How much pain would this cause for consumers?
GitHub - vRallev/app-platform: A lightweight application framework for state and memory management suitable for Kotlin Multiplatform projects.
A lightweight application framework for state and memory management suitable for Kotlin Multiplatform projects. - vRallev/app-platform
github.com
I'm excited to share that I joined OpenAI this week, where I'll be working on Android infrastructure. My second stint at Block was shorter than expected, but I'm grateful for the time together with my team. I'm proud of what we accomplished and excited for what's next.
I've used Metro, and it's better than anything else, imo. It not only speeds up your builds, but makes DI easier, and also provides simpler upgrade paths if you're transitioning from other common DI frameworks. Huge thanks to @zacsweers.dev
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...
Thank you, Zac!
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...
I picked up some work on App Platform again, which I created during my time at Amazon. Metro now works perfectly well in KMP projects and therefore it's the recommended default! The latest version also comes with a compiler plugin to avoid KSP. github.com/amzn/app-pla...
Releases · amzn/app-platform
A lightweight application framework for state and memory management suitable for Kotlin Multiplatform projects. - amzn/app-platform
github.com
Joel and Jacob are two of the most talented (and most pleasant!) people I have ever worked with.
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...
Metro Migration at Square Android
How Square Android migrated its monorepo from Dagger 2 and Anvil to Metro over nine months and saved thousands of hours of build time.
engineering.block.xyz
This is one of the best podcast episodes I have listened to in a while. Highly recommend podcastaddict.com/the-peterman...
podcastaddict.com
I'm more excited about this than I should be.
We've updated an essential part of the code editing experience – the caret and selection behavior. Selections are now clearer, and you can choose between "Snappy" and "Gliding" modes for smoother, easier-to-follow caret movement.
KotlinPoet 2.3.0 supports typealias declarations inside types, has new convenience API for adding annotations and ships with a healthy dose of bug fixes. Time for a version bump! 🤜🤛 github.com/square/kotli...
Release 2.3.0 · square/kotlinpoet
Thanks to @haruue, @hfhbd, @yz4230, @mina-jaff, @BoD, @RaoPrashanth for contributing to this release. New: Kotlin 2.3.20. New: KSP 2.3.6. New: Support for defining type aliases inside other types....
github.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. This was all I needed
Actually, OpenJDK 25 is 18% faster than OpenJDK 17 and 21 and a whopping 84% faster than OpenJDK 11. Upgrade now!
I recently migrated our codebase away from Ktlint to Ktfmt and Detekt. I summarized the reasons and migration steps in a blog post: engineering.block.xyz/blog/adoptin...
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.
engineering.block.xyz
Kotlin compiler plugins are amazing! ✅ Expressive syntax ✅ Compile-time checked ✅ Fast at runtime
Cash Android has recently switched to Metro, a new, fast dependency injection framework built for K2. That was a fun project and we're really happy with the results! Sharing details on how we approached the migration to help teams adopt Metro: code.cash.app/cash-android...
Cash Android Moves to Metro
The Cash Android team have completed the migration to Metro.
code.cash.app
This is fantastic and @zacsweers.dev deserves all the praise but it also is gonna give you a false idea of what Z is like as a maintainer and author, what the project is like, and how you might achieve something like this yourself
Hot take: Dependency Injection on Android just got a huge upgrade!! Square just moved Anvil to maintenance mode to adopt Metro - a DI framework built by ONE PERSON that's 47-56% faster than Dagger+Anvil. This is what "individual developers changing ecosystems" looks like 🧵 #AndroidDev
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.
Our KMP framework App Platform now supports Metro out of the box: github.com/amzn/app-pla... @zacsweers.dev 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.
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.com
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. facebook.github.io/ktfmt/
ktfmt - the Kotlin code formatter
facebook.github.io
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. amzn.github.io/app-platform...
Changelog - App Platform
A lightweight application framework for state and memory management suitable for Kotlin Multiplatform projects.
amzn.github.io
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.
Metro wouldn’t be where it is without the road that Anvil paved before it. I’ve really enjoyed working with Joel and Jacob on several Metro features already, with @ralf-wondratschek.com in its early design phase, and really looking forward continuing to work with all of them. Future’s bright 🚇
Version 0.34.0 of the gradle-maven-publish-plugin finally comes with configuration cache support. Dropping support for Sonatype OSSRH unblocked us from waiting for Gradle to resolve the underlying issue on their side. github.com/vanniktech/g...
Release 0.34.0 · vanniktech/gradle-maven-publish-plugin
Added configuration cache support for publishing. Removed support for publishing through Sonatype OSSRH since it has been shut down. See the 0.33.0 release notes for upgrade instructions if you hav...
github.com
I had problems upgrading to the latest version of IntelliJ IDEA and Android Studio with the new Kotlin Multiplatform plugin. But now that it's working and Compose Hot Reload is running the integration is pretty nice. (This was my issue: youtrack.jetbrains.com/issue/KMT-11... )
youtrack.jetbrains.com