Zac Sweers
@zacsweers.dev
All this happened, more or less Blog: zacsweers.dev 📍NYC
Metro 1.4.0 brings suspend providers! ⚡ github.com/ZacSweers/me...
Release 1.4.0 · ZacSweers/metro
New Experimental support for suspend providers This release introduces experimental support for suspend providers. This is disabled by default and can be enabled by the metro.enableSuspendProviders...
github.com
Enough statements, enough words, enough "careful consideration", enough private disgust. It's time for UEFA and Europe to take action against what FIFA and Infantino are doing to football: www.theguardian.com/football/202...
Uefa has to show backbone: concrete action can make Fifa’s World Cup plans untenable | Nick Ames
European football has shown an increased willingness to talk tough with Fifa but words can only be wielded so many times
theguardian.com
Circuit 0.35.1 begins removing Parcelable requirements and migrating to AndroidX retain! github.com/slackhq/circ...
Release 0.35.1 · slackhq/circuit
New Pluggable Screen/PopResult persistence with CircuitSaver Circuit's saveable back stacks no longer mandate how Screens and PopResults are persisted. A new CircuitSaver abstraction in circuit-run...
github.com
Contributed R8 support to shadow, main benefit is you could produce pretty optimized uber jars now (on top of just tree-shaking). Should be pretty handy for CLIs. github.com/GradleUp/shadow/re...
Release 9.5.0 · GradleUp/shadow
Added Check DuplicatesStrategy for merging transformers. (#2026) This will log warnings when an incompatible DuplicatesStrategy (e.g., EXCLUDE) is applied in Gradle configuration for built-in Reso...
github.com
My "Metro Under the Hood" talk from KotlinConf is available on YouTube now! Video: youtu.be/KVmogsSbic8 Slides: speakerdeck.com/zacsweers/met...
Metro Under the Hood | Zac Sweers
Recording brought to you by American Express. https://americanexpress.io/kotlin-jobs
youtu.be
Metro 1.3.0 has rich diagnostics and experimental runtime tracing! github.com/ZacSweers/metro/re...
Release 1.3.0 · ZacSweers/metro
New [IR] Revamp graph-validation diagnostics with structured output. Taking some inspiration from Rust error messages. Stable diagnostic IDs Compact dependency chains Aligned binding traces...
github.com
How to Take an 11 Month Sabbatical www.zacsweers.dev/how-to-take-...
How to Take an 11 Month Sabbatical
A sequel to the last one, but a bit longer. On Leaving Slack After nearly 6 years, I left Slack in August of 2025. It was for a combination of reasons that added up to "it's time". The biggest rea...
zacsweers.dev
Coming in Metro 1.3.0! Was awesome working with Rahul on this
I collaborated with @zacsweers.dev (who did most of the heavy lifting) to add automatic tracing for Graph bindings generated by Metro. If you are using DI, then you should be cognizant of it's costs. Metro automatically adds traces for all generated bindings when you enable Runtime tracing.
Introducing kempt: a single-entry point CLI that delegates to language-specific formatters with easy installation, automatic binary management, git hook integration, license headers, whitespace handling, and simple configuration. www.zacsweers.dev/introducing-...
Introducing Kempt
Formatting should be boring, in the best possible way.
zacsweers.dev
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
Best thing about Mamdani is that he's one of the only Democrats who understands you can just do things
When James Dolan cancels the watch party outside MSG, we bring the watch party to you. Thanks to the @nba.com, Knicks Game 4 is now playing on dozens of LinkNYC screens across our city. LGK.
Metro 1.2.0 has Hilt interop, provider inlining, improved compiler performance, and leaner runtime primitives! github.com/ZacSweers/metro/re...
Release 1.2.0 · ZacSweers/metro
New [interop] This release introduces experimental support for Hilt @InstallIn and @EntryPoint interop. Enabled with metro { interop { includeHilt() } } A @DependencyGraph(<scope>) automatically ...
github.com
I've been a broken record on this for three years and I'll be a broken record for as long as that fucking website exists: X is a viciously racist far-right organising platform that ONLY WORKS because a huge number of centrists, lefties and progressivs cannot stop propping it up
Elon Musk accused of fuelling unrest after Belfast knife attack
The use of social media in planning violent protests over the Belfast knife attack has drawn condemnation, with Britain's ruling Labour Party accusing Elon Musk of stoking divisions. The tech billiona...
yahoo.com
⚡️Circuit 0.34.0 is out 🚀 🆕 SubCircuit - A lightweight presenter/UI pair for reusable components that need to cooperatively delegate events to a parent. Plus a new composite-presenter Inbox sample, support for Compose 1.11, and a variety of fixes! github.com/slackhq/circ...
Release 0.34.0 · slackhq/circuit
SubCircuit SubCircuit is a lightweight version of Circuit for rendering nested presenter/UI pairs that delegate events to an outer component rather than handling navigation themselves. Use it for n...
github.com
Moreover, what Apple and Google and all these other companies haven't learned that movie studios have is you need to make the non-human companion character functionally a cat. Toothless, Rocky, BB8, R2, Stitch, WALL-E, Groot, list goes on
I want a Rocky voice in all these assistants
—Guy gets a potato egg and cheese taco —republicans decide to make it a campaign issue —they call him vegan instead of vegetarian even though vegans don’t eat eggs or cheese, because vegan sounds “worse” —guy isn’t even vegetarian, he just likes tacos
RNC Chair Joe Gruters: "Tala-freako is a creep. He's a vegan. He thinks God is nonbinary. He wants to mutilate children."
Here are the slides: speakerdeck.com/zacsweers/me...
Metro Under the Hood
speakerdeck.com
I'll be giving a talk about Metro's internals tomorrow at @kotlinconf.com! This'll be an advanced talk that assumes familiarity with Metro, and is a sort of part 2 of my "Navigating Dependency Injection with Metro" talk last year. You can find it here: www.youtube.com/watch?v=jVfm...
I'll be giving a talk about Metro's internals tomorrow at @kotlinconf.com! This'll be an advanced talk that assumes familiarity with Metro, and is a sort of part 2 of my "Navigating Dependency Injection with Metro" talk last year. You can find it here: www.youtube.com/watch?v=jVfm...
Metro 1.1.0 and 1.0.1 are out now! This is largely a performance release. They are identical except 1.1.0 drops Kotlin 2.2.0 - Improved compiler performance - Lots of tracing improvements - SwitchingProvider now generates tableswitch bytecode - Kotlin 2.4.20 support github.com/ZacSweers/metro/re..
Release 1.0.1 · ZacSweers/metro
New [FIR] Add a diagnostic warning that @Module.subcomponents is ignored by Metro (when Dagger interop is enabled). [FIR] Add a diagnostic error for annotating @AssistedInject types with @Contribu...
github.com
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...
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
Metro 1.0.0-RC3 is out now and promotes function providers to the default! github.com/ZacSweers/metro/re...
Release 1.0.0-RC3 · ZacSweers/metro
This is the third release candidate for Metro 1.0! This means that its runtime APIs (runtime, metrox artifacts, Gradle plugin, etc) will be API stable unless annotated with an experimental annotati...
github.com
Big +1. Joel and Jacob deserve so much credit for this. A project this big, hit with this kind of organizational instability...it's a real relay race. I know Cash also benefitted from their work.
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!
Joel and Jacob are two of the most talented (and most pleasant!) people I have ever worked with.
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!
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...