Harness Engineering: What I learned from 24,000 prompts building production apps
Since early 2026 I've been building my own harness around Claude Code. What held, who checks the agent's work, and what it actually costs.
Since early 2026 I've been building my own harness around Claude Code. What held, who checks the agent's work, and what it actually costs.
I write a lot of Compose UI with an AI coding agent now. It's fast at producing composables and completely blind to what they actually look like. It writes the code, says it's done, and the first time anyone sees whether the empty state overflows or
Most orgs treat "ownership" as a culture problem. It's not. It's a missing feature - the same way a form with no validation isn't a training issue, it's a spec gap. Every engineering culture doc I've read says
Four walls between you and a flight recorder for Compose state — verified against androidx source.
How a quick Slack thread about rate limits led to diagnosing a massive token leak in Claude Code and the exact steps taken to cut weekly API usage from 460M down to 212M tokens.
352 commits in 25 days. 179 AI sessions. One person doing the output of a small team. Here's what that actually looks like when you're honest about it.
We had stable data in prod for months. One feature change broke it. We shipped it. Nobody caught it because the recomposition count didn't look unusual — it just looked unusual for that composable. No existing tool makes that distinction. So we built one. Introducing Compose Rebound.
Hands-on exploration of compose-foundation 1.11.0-alpha06's experimental Styles API. 8 interactive labs covering interaction states, transforms, and more.
App crashes with "FirebaseApp is not initialized" only in Play Store Pre-Launch Reports? Fresh installs run in ART's interpreted mode, turning a 1ms race into 100ms+. A deep dive into verify mode, R8 Full Mode, and the latch fix.
Part 1 of three. This one covers the gesture system, spring physics, peel-off animation, and die-cut rendering. Part 2 gets into the holographic shader, tilt sensing, haptics, and cross-platform architecture. I built a sticker canvas app. You slap stickers on a surface, drag them around, pinch to resize, rotate with
Part 2 of three. Part 1 covers what the app is and the tech stack. This one goes deep on two features. Part 3 is the full end-to-end build. Two things people ask about most: the peel-off grab (sticker lifts with a shadow when you touch it) and the holographic
Part 3 of three. Part 1 covers what the app is. Part 2 goes deep on the peel-off effect and holographic shimmer. This one walks through everything else: die-cut rendering, tilt sensors, haptics, persistence, and the cross-platform architecture. Part 2 covered the peel-off grab and holographic shimmer. But a sticker
Every coachmark library I tried felt incomplete—not customizable enough for what I needed. Screenshot-based overlays that feel disconnected. Solid scrims that hide the actual UI. Z-index battles that never end. I saw the gap. So I built Lumen. Notice how the FAB remains tappable through the overlay: Lumen renders
Jetpack Compose is elegant. It's also a landmine. The same reactive model that makes Compose declarative can silently swallow your coroutines, fire effects multiple times, and leave users staring at frozen spinners. I've seen these bugs ship to production—in my own apps and in code
Your logging interceptor is lying. Here is what actually happens inside OkHttp - and how to finally see it.
Blog series explaining the thought process of how to build a custom design system and what went into building a new Jetpack compose open-source library called Andromeda.
Testing
Some fun and interesting bits of how do we manage a super app at @gojek - What goes into making and maintaining large projects. - How does a developer cater to new features. - What are some of the troubles they face. - How do junior developers collaborate with senior
Json
This post describes a way of using the GSON and Mosi library with Kotlin data classes with Polymorphic JSON data with null-safety and default values.
Dsl
In this post, we take a look at building our test cases by using a simpler language-like DSL. I wanted a “simple” low overhead way of setting up, expressing and testing many combinations of inputs and outputs.The goal is simple , create DSL for expressing the tests clearly and to
Dsl
In this post, we take a look at building a simpler API to work with Broadcast receiver, which will automatically unregister itself when the Activity pauses, and register again when it resumes. Broadcast Receiver To build this , we first create a class which observes lifecycle events class Broadcas
Dsl
In this post , we take a look at some of the use cases of DSLs in Android.
Dsl
Part 2 of series on how to work with Kotlin DSLs
Dsl
In this series , we will take a look at what DSLs are and how to build our custom Kotlin DSLs and apply them to multiple use cases for Android. What is DSLThe concept of DSL or domain-specific language is pretty simple. A domain specific language is a construct that allows
Android
Shared Element Transition : Having a view that moves from one activity to another in a smooth motion. Let’s say you have more than one view to do a shared element transition in your app, how do you do it in Kotlin ? We would like to transition multiple views like