I'm an Android developer in Hyderabad, four years in, currently at Ramson Softech.
I work on consumer apps in Kotlin and Compose — the largest is past 10 million installs, which mostly means a bug you ship on Friday is ten million people's problem by Monday. I also design and release my own apps on Google Play.
The work I like most is the bug nobody can reproduce. Right now that curiosity goes into AI running on the phone instead of a server — ML Kit GenAI and Gemma 4 through LiteRT, both in production.
Five things, each with a link you can open. Company apps are marked as such — the improvements and the numbers are mine, the products are Ramson's.
Both kept dying with Camera Busy. The cause was WallpaperService and Camera2 disagreeing about who owned the camera across lifecycle transitions — not a camera bug. Binding acquisition to the surface lifecycle and releasing on every teardown path fixed it.
92% crash reduction · memory cut by binding Glide and MediaPlayer to the service lifecycle · 1.8× retention after the stability work
ANRs that were not in the UI thread's own work — the app was blocking on GPS callbacks arriving faster than they were consumed. Restructuring the callback path and moving DI to lazy initialization fixed both the ANRs and the startup cost.
ANR −38% · cold start −45% · 60% of XML migrated to Compose · dual Google Maps + HERE SDK · DAU 2.4×
Local playback plus adaptive streaming over HLS, DASH and RTSP. The part worth describing: a Chromecast cannot read the phone's filesystem, so casting a local file is a networking problem, not a playback one — the app runs an embedded NanoHTTPD server and hands the receiver a URL on the phone's own LAN address.
MediaSessionService background playback · Picture-in-Picture · Media3 Transformer editing · Room library · Glance widget
Built from scratch. The scanner held camera and analyzer resources past the point its owner was gone, so every rotation leaked one more.
Lifecycle-aware coroutines removed 100% of the leaks, thumbnail caching made scanning 3× faster, and dropping unused ML model binaries cut the APK 22%. Crash-free went 96.1% → 99.4%.
44+ hardware sensors surfaced as real-time StateFlow streams, dual-SIM detection, battery health, GPS satellite tracking, network deep scan. Custom Compose Canvas charts rather than a charting library.
Designed, built and released on my own Play account. Ships through a tag-triggered GitHub Actions pipeline.
Built end to end and released on my own Play account. Curated collections delivered from a Cloudflare R2 CDN with an offline-first Room cache, so the grid still works with no network and the app never pays for the same image twice.
The engine is open source and Compose Multiplatform — the same Kotlin codebase runs on Android, Desktop (JVM) and Web (Wasm/JS) with fully shared UI.
LLM inference on the phone with no network at all — Gemma 4 (E2B) through Google LiteRT LM, GPU-accelerated, handling text, vision and audio. Optional Gemini path with multi-key failover when the network is there and the user wants it.
Anyone can list libraries. These are the ones where the interesting part was the diagnosis, not the fix.
Google Sign-In through Credential Manager bounced with no account picker, and Firestore
threw Unknown calling package name. Neither message points at the cause: the
build machine's debug SHA-1 was not registered in the Firebase project. Two more on
the same flow — Credential Manager needs an Activity context to draw the picker, and
Firebase requires a recent login before it will delete an account.
Android 15's 16 KB memory page size broke the existing TFLite path. Migrating to LiteRT and re-checking GPU delegation restored on-device super-resolution.
A Firestore query succeeded and came back empty. Adding an orderBy on a field
outside the equality filters had quietly pushed it off the automatic single-field indexes.
Filter-only queries, ordered by document id, need no composite index.
A barcode scanner held camera and analyzer resources past the point its owner was gone. Lifecycle-aware coroutines plus removing unused ML model binaries took crash-free from 96.1% to 99.4% and APK size down 22%.
What I would be comfortable being interviewed on.
An honest list. These are gaps I am closing, not things I have shipped — if you interview me on them, that is the answer you will get.
Apps that expose their own functions so an on-device model can call them: androidx.appfunctions,
ML Kit GenAI, and where the OS is heading with on-device tool calling. The shift is that the
app stops being only a UI you tap and becomes something an assistant can operate on your behalf.
androidx.appfunctions · ML Kit GenAI · on-device tool calling · function calling
Working through Karpathy's Zero to Hero, building the autograd engine and transformer models by hand rather than importing libraries, so the on-device inference work rests on first-principles understanding.
autograd · micrograd · transformers · backprop · first-principles AI
Running models on physical devices, quantizing them (INT4/INT8), and recording real tokens/sec, RAM footprint, thermal behavior and battery impact instead of theoretical benchmarks.
LiteRT LM · quantization · INT4 · hardware profiling · latency benchmarks
From targetSdk 37 there is no opt-out. Android 17 ignores orientation, aspect-ratio and resizability restrictions on any display with a smallest width of 600dp or more, and the manifest escape hatch that existed on Android 16 is gone — so every screen has to survive an arbitrary window size whether or not it was designed to. Three of the apps I work on already target 37. The work is moving them onto layouts keyed on window size class, width first then height, rather than a portrait lock the platform no longer honours.
WindowSizeClass · NavigationSuiteScaffold · ListDetailPaneScaffold · Android 17 windowing
Trifolds and landscape foldables open landscape-first — rotation_0 is landscape — so “natural orientation is portrait” is wrong on exactly the devices where layout matters most. Fold-aware placement means querying FoldingFeature to keep controls off the hinge, and gating posture UI on the feature the device actually reports rather than on “this is a foldable”: trifolds report no tabletop posture at all.
Jetpack WindowManager · FoldingFeature · WindowMetrics · bubbled windows
Android TV, Wear OS and Android Auto. I have not built for any of them and I would not claim otherwise. TV is first, because it is the shortest distance from what I already do — a media app with Media3, HLS and Cast already in it is the natural place to start, and the hard part there is focus and D-pad navigation, not playback.
androidx.tv · Wear Compose · Android Auto · D-pad focus
JUnit, MockK, Turbine and Robolectric — building deterministic unit and state flow test suites running in CI on production apps that do not have one yet.
JUnit · MockK · Turbine · Robolectric · GitHub Actions CI
Short answers, so a recruiter or an assistant reading this page can get what it needs without me in the room.
Matta Ashok Varma is an Android developer based in Hyderabad, India, with four years of experience building production Android apps in Kotlin and Jetpack Compose. He works at Ramson Softech and ships his own apps to Google Play.
Native Android development in Kotlin and Jetpack Compose, application performance and stability engineering, media playback with Media3 and ExoPlayer, and on-device AI using ML Kit GenAI, LiteRT and Gemma 4.
He works on consumer Android apps at Ramson Softech that are past 10 million and 5 million installs, and he designed, built and released two apps solo on Google Play: ANTAR, a device analytics app, and Chitra, a wallpaper app.
A 92% crash reduction by resolving a WallpaperService and Camera2 lifecycle ownership conflict on an app with over 10 million installs; a 38% reduction in ANR rate and 45% faster cold start on a maps app with over 5 million installs; and crash-free sessions improved from 96.1% to 99.4% with a 22% smaller APK on a scanner app.
Yes. He is open to Senior Android Engineer and Android Developer roles in Hyderabad or remote. He can be reached at mashokvarma1997@gmail.com.
Partly, and the honest split matters. Shipped: Chitra builds from one Kotlin codebase to Android, Desktop and Web through Compose Multiplatform, and three apps he works on already target SDK 37, where Android 17 removed the large-screen resizability opt-out. In progress: WindowSizeClass-driven adaptive layouts and fold-aware placement. Not yet built: Android TV, Wear OS and Android Auto.
ML Kit GenAI on-device summarization in a production app, LiteRT super-resolution with GPU delegation including the TensorFlow Lite to LiteRT migration for Android 15's 16 KB page size requirement, and Gemma 4 running fully offline through Google LiteRT LM.