Zac Sweers
banner
zacsweers.dev
Zac Sweers
@zacsweers.dev
All this happened, more or less.
Currently funemployed 🌴
Blog: zacsweers.dev
Pinned
Wrote a lot of thoughts on junior developers, AI, and what I strongly feel is going to become the defining challenge of our industry's next generation.

www.zacsweers.dev/forklifts-re...
Forklifts Require Training
Sleepwalking into labor collapse
www.zacsweers.dev
Reposted by Zac Sweers
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
November 8, 2025 at 7:01 AM
Excited to share Metro's original design doc. Pulls back the curtain on a lot of the historical community feedback and discussions that went into it in its early days!

www.zacsweers.dev/metros-desig...
Metro's Design Doc
Back in December 2024, I was around a month into working on Metro (at the time still called Lattice) and realized it crossed the threshold from "is this anything" to "oh shit this has wheels". I'd bee...
www.zacsweers.dev
November 6, 2025 at 11:24 PM
Reposted by Zac Sweers
Zohran Mamdani in his victory speech:

"Donald Trump, since I know you're watching, I have four words for you: Turn the volume up."

The cheers in the room are deafening.
November 5, 2025 at 4:40 AM
Metro 0.7.3 adds member injection interop, Kotlin 2.3.0-Beta2 support, and a bunch of other smaller goodies and fixes.

github.com/ZacSweers/me...
Release 0.7.3 · ZacSweers/metro
New: Support interop with Dagger/Anvil-generated member injector classes. Enhancement: Skip reading members when loading externally compiled member injector classes. Parameters are now computed fro...
github.com
November 2, 2025 at 4:30 AM
Traveling to London tonight, but Metro 0.7.2 should mostly work with Kotlin 2.3.0-Beta2. There’s on API change that affects logging but is fixed in snapshots, will cut a new release prolly tomorrow after I fix a separate dagger multibinding interop issue.
October 29, 2025 at 12:26 AM
Reposted by Zac Sweers
School shootings and measles
complete batshit insanity
October 26, 2025 at 11:35 PM
Metro 0.7.1 improves diagnostic messages for missing dependencies and multibinding code gen optimizations.

github.com/ZacSweers/me...
Release 0.7.1 · ZacSweers/metro
New: Add missing dependency hints for missing bindings errors [Metro/MissingBinding] Cannot find an @Inject constructor or @Provides-annotated function/property for: FooImpl FooImpl is injecte...
github.com
October 21, 2025 at 8:17 PM
Metro 0.7.0 is out with dynamic graphs, implicit injects, and wasmWasi targets!

Dynamic graphs have been a long time in the making and should unlock some pretty powerful testing patterns.

github.com/ZacSweers/me...
Release 0.7.0 · ZacSweers/metro
Dynamic Graphs Dynamic graphs are a powerful new feature of the Metro compiler that allows for dynamically replacing bindings in a given graph. To use them, you can pass in a vararg set of binding ...
github.com
October 17, 2025 at 7:19 AM
Metro 0.6.10 introduces some new optional behaviors, interop with @BindsOptionalOf, and the usual host of other fixes and improvements!

github.com/ZacSweers/me...
Release 0.6.10 · ZacSweers/metro
Optional Dependency Behaviors Graph accessors can now expose optional dependencies, just use @OptionalDependency on the accessor. Note that the accessor must declare a default body that Metro will ...
github.com
October 12, 2025 at 2:54 AM
Reposted by Zac Sweers
What a crock of shit from Marc Benioff — who appears willfully ignorant of news and facts and so thirsty for approval and attention from the Trump tech bros (who in the past mocked him relentlessly) that he is soiling himself in public www.nytimes.com/2025/10/10/u...
Marc Benioff Says Trump Should Send Guard Troops to San Francisco
www.nytimes.com
October 11, 2025 at 1:03 AM
I left Slack for a few reasons and Marc was two of them.

www.nytimes.com/2025/10/10/u...
Marc Benioff Says Trump Should Send Guard Troops to San Francisco
www.nytimes.com
October 11, 2025 at 4:50 AM
Reposted by Zac Sweers
There it is!
In-depth on Metro — with Zac Sweers
YouTube video by Code with the Italians
youtu.be
October 9, 2025 at 7:09 PM
Was on @codewiththeitalians.it today with @sebastiano.dev and Ivan chatting about Metro and some of the more nitty gritty of how the newer IDE features work! Some fun live coding

www.twitch.tv/videos/25864...
In-depth on Metro — with Zac Sweers - codewiththeitalians on Twitch
codewiththeitalians went live on Twitch. Catch up on their Software and Game Development VOD now.
www.twitch.tv
October 8, 2025 at 7:44 PM
Metro 0.6.9 is out now with improved cross-compiler version support, support for Kotlin 2.3.0-Beta1, improved IDE support, configurable max error reporting, and a whole bunch more!

github.com/ZacSweers/me...
Release 0.6.9 · ZacSweers/metro
This release introduces new experimental support for multiple compiler and IDE versions. The primary goal of this is to better support running Metro's FIR extensions across different IntelliJ Kotli...
github.com
October 7, 2025 at 8:40 PM
Reposted by Zac Sweers
From 1939-1945 German officers also listened to speeches from civilians about how the laws of war didn’t apply to them. And then they participated in the Holocaust, starved millions of prisoners of war, destroyed villages and cities, and were defeated.
Hegseth: "We unleash overwhelming and punishing violence on the enemy. We also don't fight with stupid rules of engagement. We untie the hands of our warfighters to intimidate, demoralize, hunt, and kill the enemies of our country. No more politically correct and overbearing rules of engagement."
October 2, 2025 at 12:47 AM
Metro 0.6.7 brings a dedicated `@AssistedInject` annotation, Dagger module interop, and a bunch of other goodies!

github.com/ZacSweers/me...
Release 0.6.7 · ZacSweers/metro
New @AssistedInject annotation Assisted-injected classes must now use @AssistedInject instead of @Inject. This is for multiple reasons: It's more explicit at the source declaration site that this ...
github.com
September 26, 2025 at 2:09 AM
Designers when an android engineer ask to just use the system back arrow: “our custom back arrow is an expression of our brand, we cannot yield to looking like a Google app”

Designers when Liquid Glass looks like shit everywhere in their app: “LEROY JENKINSSSSSSS”
September 25, 2025 at 2:33 PM
Reposted by Zac Sweers
Suddenly "hate speech" is bad. Suddenly "dehumanizing" people is bad. Suddenly "cancel culture" is good. Suddenly words have consequences.

The modern American right in 2025, folks.
September 16, 2025 at 3:51 AM
Reposted by Zac Sweers
> the shooter is trans
> ok the bullets were trans
> ok the roommate is trans
September 14, 2025 at 1:48 AM
Every tech CEO handling moderation this week 🤦‍♂️
September 13, 2025 at 7:38 AM
Video is already up (!!)

youtu.be/jVfmtVKa604?...
September 13, 2025 at 3:00 AM
Here are the slides for the "Navigating Dependency Injection with Metro" talk I just gave at DroidKaigi. Great conference and super well-organized.

speakerdeck.com/zacsweers/na...
Navigating Dependency Injection with Metro
Metro is yet another compile-time dependency injection framework. How is this one different though? In this talk we’ll explore how it balances blazing-f…
speakerdeck.com
September 12, 2025 at 7:18 AM
Reposted by Zac Sweers
Navigating Dependency Injection with Metro by @zacsweers.dev at #DroidKaigi
September 12, 2025 at 5:29 AM
Couple Metro patches today!

0.6.5 - new @Origin annotation API + a bugfix

0.6.6 - same as 0.6.5 but targeting Kotlin 2.2.20 and another fix for conflicting overrides that relies on a fix in the compiler that came in 2.2.20

github.com/ZacSweers/me...
github.com/ZacSweers/me...
Release 0.6.6 · ZacSweers/metro
Enhancement: Optimize annotation lookups in some places in IR. Fix: If a graph declares an overridable declaration that matches one of a contributed supertype, transform it to add the requisite ove...
github.com
September 11, 2025 at 2:40 AM