Mike Penz

@mikepenz.dev

Open source enthusiast | ♥️ Android | Director of Engineering @ Cox Automotive Writing helpful things @ blog.mikepenz.dev

I published vibrance-0.1.0 on Maven, now with support for Compose for Desktop (JVM). The APIs let you mix colors yourself, or draw gradients as modifiers or Compose brushes. Next steps: refine the model training to improve some color transitions, better alpha support. github.com/romainguy/vi...

BildBild

Let me share the '.kar' (Kotlin Archive) file format 🙇‍♂️! A single binary you can publish, which shall carry everything necessary to build your project! While this is a prototype, I really would like to share some of our early measurements! 🥳

One of the usual problems when dealing with bugs is not recording screen at the right moment. Emu records everything you do including semantically, so capturing bugs is just one button away. Examine screen or actions later, send it to colleagues. And LLM can capture these too. And reproduce issues

I'm honestly shocked they took on this burden for so long. What I'd like to see is companies that rely on Maven and OSS projects to pay for this kind of infrastructure. It would make more sense than taking a cut from GitHub sponsors.

I've been working on a Kotlin/Compose Multiplatform to interpolate sRGB colors as mixtures of paints/pigments. It can produce results that are more appealing than the traditional sRGB interpolation that Composes uses (see screenshot). Not quite ready for release yet. github.com/romainguy/vi...

A screenshot of an Android application comparing gradients rendered with paint mixtures vs traditional sRGB gradients. There are four rows: the first row shows an orange to red vertical gradient, with the paint mixture version on the left, sRGB on the right. The second and third rows show a horizontal yellow to blue gradient: the top one is a paint mixture, the bottom one is traditional sRGB. The paint mixture version shows that the gradient becomes green in the middle. The last row compares a white to blue vertical gradient, with a paint mixture on left, and tradition sRGB on the right. The paint mixture version show a blue becoming brighter/lighter, whereas the traditional version becomes purple.

"The desktop app is running with Hot Reload. Navigate to the Speakers screen, filter for JetBrains speakers, and check if any of their names is too long to fit on a single line. If yes, make the columns larger until they all fit." Video at 3x speed.

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

Bild

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 0.13.0 adds top-level contribution providers, Circuit code gen, and a new @DefaultBinding annotation. This also removes most deprecated APIs as Metro prepares to go stable (!!). If you have runtime API feedback, now is the time! github.com/ZacSweers/me...

Release 0.13.0 · ZacSweers/metro

New Circuit codegen Metro now includes experimental built-in support for Circuit, a Compose-first architecture for building kotlin apps. See the docs for more details. In the long term, this will e...

github.com

Snapshot of Compose "Snapshot" 🦢 Working on another snapshot feature for HotSwan, which captures a device screenshot after every successful hot reload and pairs it with code diff that triggered the reload. You can do Code Time Traveling (revert) to a specific snapshot moment.