Engineering topic / Jeffrey Monica
Android internals, Kotlin, and integrity signals
Android has plenty of tricky handoffs: a coroutine outliving a screen, a token expiring, or an integrity verdict that doesn't match the request. I collect those edge cases here.
Key engineering considerations
Integrity verdicts
Validate request details, package identity, freshness and the server's policy, rather than blindly trusting a boolean.
Structured concurrency
Tie work to the appropriate scope, preserve cancellation and avoid orphaned operations during navigation.
Platform credential UX
Handle passkeys and recovery without converting success on the UI into an implicit authorization decision.
Field guides and review checklists
Articles and reference guides
Mobile voice agents: keep the backend in chargeHow I connected Swift and Kotlin clients to agent workflows, built Core ML and TensorFlow Lite integration boundaries, and kept authorization on the backend.Android toll fraud: when the app can intercept consentThe trust failure I examined in Android toll-fraud reporting is the confirmation step: an OTP does not protect a purchase if malicious software on the same device can intercept or submit it. Microsoft documented Android toll-fraud workflows in which malware tried to subscribe victimJoker / Bread and the Android billing fraud problemIn reviewing the Joker/Bread campaigns, I focused on the separation between an app doing its advertised job and subscription activity the owner never authorized. Google's 2020 report on Bread—often called Joker—documented that exact billing-fraud problem. The family kept adapting as defenses aTriada: the Android firmware supply-chain backdoorTriada challenges an app-centric mobile threat model in an important way. Google's Android security team described a malware family that moved from rooting attempts into compromised system images. The malicious codFluBot: Android banking malware that spread by textThe entry point I focused on in FluBot was the delivery-text lure, because the later banking and contact-abuse behavior depended on the permissions granted after that initial deception. But FluBot used exactly that: convince someone to follow a delivery or voicemail lure, install a malicious Android application, and grant it unAndroid Play Integrity request binding and backend verdict policyWhat requestHash protects, what the server must verify, and why an integrity verdict is not a substitute for authorization.Device integrity is not authorization: an App Attest and Play Integrity decision modelA valid App Attest or Play Integrity result cannot authorize a user. I walk through the server decisions separately and test them with synthetic inputs.Kotlin coroutine cancellation and lifecycle boundaries on AndroidAvoid orphaned jobs and stale UI state by understanding cooperative cancellation, scopes, and background work.Mobile session recovery as an explicit state machineModel sign-in, refresh rotation, expiry, step-up recovery, and revocation without creating a hidden authentication bypass.
