RSSAmplifier

Blog

El's Blog

El is blogging about tech and life.

2bab.meRSS feed ↗20 posts

Latest posts

A2UI, AG-UI, and GenUI Beyond the Chat Box

I recently took another look at Google's A2UI and AG-UI. Compared with my first pass last year, my view is clearer now: both are valuable, and they complement each other, but they should not be simplified into "dynamic UI protocols are finally standardized." More precisely, A2UI and AG-UI are still clearly centered around a chat-like style today: agent conversations, copilots, search/chat, and…

Harness Engineering Essentials: Nine Practices for Taming AI Coding Agents

In late 2025, Anthropic published Effective Harnesses for Long-Running Agents , introducing the concept of a harness — using architectural means to constrain an unstable model into a sustainably running engineering system. They later expanded on multi-agent division of labor and evaluation separation in Harness Design for Long-Running Application Development . The book Harness Engineering: Claude…

Building the Team While Building the Product: Notes from an AI Startup

Over the past few years, I have grown into a hands-on Tech Lead Manager (TLM) role. I still deliver technical work while managing engineers, making product decisions, and building the team. After reading several books, I tried some of their ideas in practice. I wanted to record what worked, what fell short, and what I am still figuring out. These notes cover the role itself, management planning,…

Responsive Layout Fundamentals

Getting started with responsive design really comes down to two things: where to put the navigation, and how to arrange content. As screens get larger, each of these has a well-established set of patterns. Android's developer docs have the most thorough summary, complete with ready-made components. iOS and Web follow similar ideas but require more manual work. 1. Navigation The core question: as…

Some Personal Takes on Metro DI

Metro is a compile-time DI framework for Kotlin Multiplatform, created by Zac Sweers (formerly Android Infra at Slack). Cash App and Vinted are already using it in production. This post is aimed at developers who have some DI experience or are coming from other frameworks — not a comprehensive guide, just notes from my own exploration with some comparisons along the way. Core Concept: Binding At…

Teaching AI Coding Agents with Submodules

Coding agents have knowledge cutoff dates — they tend to hallucinate when dealing with new frameworks or newer API versions. Even Context 7's documentation knowledge is roughly a month-old snapshot, which can already be outdated for fast-moving frameworks. So "how to feed AI the correct framework knowledge" is a practical problem. I recently came across antfu's skills repo. The idea is to process…

Automated AI Workflow - We Localized Popular Documentation for the Community

Recently, together with community partners, I built a site called Open AIDoc . It's a public welfare project powered by Gemini, aimed at tracking and translating popular open-source library documentation into Simplified/Traditional Chinese, Japanese, Korean, and multiple other languages . In today's v0.1.0 release, we've provided synchronized translations of the latest Kotlin and Koin…

Four Ways to Optimize SDK Initialization Callbacks in Kotlin

In Android development, we often need to carefully handle the initialization and callbacks of various SDKs, especially when asynchronous operations are involved. In this article, we'll discuss four ways to optimize these callbacks in Kotlin, primarily using several of Google's Android SDKs as examples like Firebase, AdMob, etc. Problems with the Traditional Callback Mechanism First, let's revisit…

Adapting MediaPipe Demos for Kotlin Multiplatform: Object Detection

Following our previous exploration of porting Mediapipe's LLM Inference, this article delves into migrating the Object Detection Demo. By reading this, you'll learn: How to port Mediapipe's official Object Detection Android Demo to Kotlin Multiplatform (KMP), enabling it to run on iOS. Project link: https://github.com/2BAB/MediaPiper/tree/object-detection Integrating Compose Multiplatform with iOS…

Adapting MediaPipe Demos for Kotlin Multiplatform: LLM Inference

By reading this post, you'll learn about: Porting the MediaPipe "LLM Inference" Android demo to Kotlin Multiplatform (KMP) to support iOS. Project repository: https://github.com/2BAB/mediapiper Two common ways of calling iOS SDKs in KMP: Directly invoking third-party libraries added via Cocoapods in Kotlin. Calling third-party libraries from the iOS project in Kotlin. Tips for dependency injection…

KotlinConf 2024 Experience

The annual Kotlin festival has arrived again. I mentioned "Next year, see you again" in last year's KotlinConf 2023 Experience and delivered on that promise. This time I posted the ticket release information in some Android groups in mainland China at the first opportunity and naturally got myself a super early bird ticket. This article is also a quick note on my phone, so please forgive…

2023 Global Odyssey: My Six 'Firsts' in the Tech Community

Having navigated through the Covid-19 pandemic, I believe many of us share a renewed emphasis on the importance of life experiences. In 2023, my second year as an Android GDE, I ventured into several "firsts" in tech community involvement. These experiences not only recharged me with new energy but also sparked fresh ideas, which I'm eager to share with everyone. April at Kotlin Conf in Amsterdam…

I/O 23 and AGP's 10th Anniversary: Why Can't I Still Learn Gradle?

It's been ten years since Google first released Android Gradle Plugin (AGP) 0.1 at I/O 2013. However, even experienced Android developers may feel confused about using and deeply mastering Gradle and AGP. I've written many Gradle/AGP related articles, done online sharing, and even written a book and a booklet. But through daily communication, I find it's still hard for most people to find a…

KotlinConf 2023 Experience

Just finished the KotlinConf 2023 journey, my heart is surging with excitement. While the feeling is still fresh, I'm recording what I saw and heard. In just two days, I gained numerous life experiences I'd never had before. The conference's agenda arrangement, booth setup, high-quality attendees and content sharing, even the peripheral support like food, coffee, and Party band were all top-tier.…

Build Guide #12 Enabling Plugin Features Based on Variant

Anyone who has used third-party Gradle plugins in Android development should have encountered this problem: I only want to apply this plugin in certain buildTypes or flavors, but I can't find a suitable way. The root cause of this problem is that Variant (buildType + flavor) is not a Gradle concept, but comes from Android Gradle Plugin (AGP)'s multi-channel configuration. So from Gradle's platform…

Build Guide #11 BundleTool Gradle Plugin

App Bundle (.aab) as the officially promoted new delivery format for Android has been around for a while. This year's PlayStore policy mandating that "all new apps must use .aab" for submission has become a major driver for everyone to make the switch. Making your app compatible with and packaging into .aab format is not complicated - simply add the corresponding DSL configuration and replace the…

Build Guide #10 Android Development Tool Compatibility

"Build Guide" is a series of articles exploring Android build-related topics, covering Gradle, Android Gradle Plugin, Kotlin Script, and other tools, as well as their architectural applications. Discovering problems, solving problems, sharing new knowledge, and improving efficiency. Due to my CPU burning out a few months ago, I was forced to switch to an M1 Mac Mini, so I rebuilt the entire…

Moving Forward: Google I/O 21 Android Gradle Plugin Update Summary

It's been nearly a month since Google I/O 2021. In the past few days, I've been reviewing the Android Gradle Plugin (AGP) content, mainly focusing on the "What's new in Android Gradle plugin" session. However, since there was no Google I/O in 2020 and all offline events were suspended due to the pandemic, this 11-minute session contains an enormous amount of information - it's essentially a…

Pitfalls of MavenCentral Publishing Integration

Due to JCenter shutting down , I recently migrated the publishing process of several active open-source projects to MavenCentral . The two reference articles below already explain the details of each step quite well: Publishing your Kotlin Multiplatform library to Maven Central Publishing Android libraries to MavenCentral in 2021 However, I still encountered some pitfalls during this process, as…

Build Guide #9 Debugging Gradle Scripts

"Build Guide" is a series of articles exploring Android build-related topics, covering Gradle, Android Gradle Plugin, Kotlin Script, and other tools, as well as their architectural applications. Starting from problem discovery and resolution, and landing on sharing new knowledge to improve productivity. This article discusses the current debugging support for *.gradle.kts scripts in IDEA / Android…