MR3Y

@mr3yy
4 Followers
43 Following
92 Posts
Android Engineer

They've put Room on the web with its KMP-packed 3.0 release!

Check out the sample here:
https://github.com/danysantiago/room-web-demo/

To persist across page reloads, swap from the `inMemoryDatabaseBuilder` to a regular `databaseBuilder` and specify a file name.

FlexBox is an experimental Jetpack Compose container that lays out items in a single direction, dynamically resizing, wrapping, and aligning them to optimally fill the available space. We just launched new documentation for this feature last week:

https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox

#androidDev #JetpackCompose #FlexBox

FlexBox  |  Jetpack Compose  |  Android Developers

This document provides an introduction to FlexBox in Jetpack Compose, a flexible layout container inspired by CSS.

Android Developers

All the Kotlin versions in a single blog post!
(or almost all ^^)

https://mbonnin.net/2026-02-22-kotlin-versions/

Multiple versions of Kotlin

What does it mean to update Kotlin

mbonnin.net
Re: Dependency Injection vs. Service Locators

This is a port of a write-up I did in the Kotlin Lang slack here in response to the question "Dagger vs. Hilt vs. Koin vs. Metro vs. <what comes next>. Serious question: Are there any compelling reasons to switch from Koin to Metro in a Compose Kotlin multiplatform project?" I think it's</what>

Zac Sweers
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
written ’cause we don't all get this right
https://publicobject.com/2026/01/22/dont-block-suspend-functions/
Don’t Block Suspend Functions

Here’s a program that launches 3 jobs. The first runs forever and the other two exchange a value. @Test fun test() = runTest { val channel = Channel<String>() val deferredA = async { while (isActive) { delay(1_000) } } val deferredB = async { channel.send("hello") } val deferredC = async { channel.receive() } deferredB.await(

Public Object

Just as an FYI to all you Android folks upgrading to AGP 9, I made this tracker to help identify what plugins are compatible and how to workaround the ones that aren't. Feel free to update and contribute if anything is missing or out of date.

https://agp-status.frybits.com/agp-9.0.0/

AGP 9.0.0 - AGP Plugin Status

Provide 3rd party status on AGP adoption

If your engineering team is 'senior-only' + AI-assisted… where do tomorrow's seniors come from?

New blog post on the 'disappearing middle':

https://chrisbanes.me/posts/disappearing-middle-ai-software-apprenticeship/

The Disappearing Middle: How AI Coding Tools Are Breaking Software Apprenticeship

How AI coding agents are automating away the developer apprenticeship ladder. Discover three personas for using agentic programming effectively, when it accelerates work, and critical guardrails to protect junior engineer growth.

Chris Banes
Release v1.0.0 · JetBrains/compose-hot-reload

Release Summary Compose Hot Reload 1.0.0 is here 🎉. The core technology provides a stable experience, allowing you to quickly iterate on your UIs in Compose Multiplatform apps. We have worked hard ...

GitHub

If you are hitting a bunch of Gradle configuration cache invalidations, you might find my post helpful

https://www.liutikas.net/2025/11/21/Everchanging-CI.html

#gradle

Everchanging CI - Isolating Configuration Cache Inputs

In the post Input to Your Inputs we discussed reducing inputs to the configuration cache (CC) to increase your CC hit rate. One scenario that we had to tackl...