Boring is the highest praise you can give a driver app at 5 a.m. Kotlin-first,
Compose-forward — dispatch, navigation and payments for more than a
million people across Southeast Asia.
The record
production numbers I moved
crash-free users
82%
99.3%
Moka POS · in 2 months
app modules
1
37
SWAT Mobility
releases via CI/CD
0%
100%
3 stores, from scratch
1M+ monthly users90 tables migrated to Room13 engineers led
Driver-facing dispatch and turn-by-turn navigation for a regional mobility
platform. Drivers open it before dawn and keep it open all day, so every
crash is a stranded passenger.
Rebuilt the Android architecture from a single module into 37
Migrated the map SDK from XML to Compose — 100%, live in production
Built the CI/CD pipeline from nothing: every release now ships through it to Play Store, Firebase and Huawei AppGallery
Built AI agents for UI automation, crash triage and PR review, lifting team throughput by up to 70%
Point-of-sale for Indonesian merchants — payments, KYC/KYB onboarding,
transactions and receipt printing. Three years as an engineer, then a year
leading the team that owned it.
Took crash-free users from 82% to 99.3% in two months by making stability the team's headline objective
Migrated 90 database tables from raw SQL to Room, shipped gradually over six months with no downtime
Shipped four core POS flows — checkout, KYC/KYB registration, payment and receipt printing — in under six months
Cleared 27 outdated platform integrations to keep the app compatible as Android OS requirements moved
Led 13 engineers across Android, QA and backend; set the team's OKRs and quality bar
Field-sales app for agents financing used vehicles. A short engagement with a
narrow brief: unblock the sales workflow and leave the team able to ship
without me.
Built the Android features sales operations was waiting on
Introduced the company's first CI/CD pipeline, on Jenkins
Set the code review bar and mentored the Android engineers on maintainable, scalable patterns
2022 — 23
Between Gojek and SWAT I freelanced for eight months while I learned Compose and
Flutter, took a three-month contract at Moladin, then spent that spring choosing
the next role rather than taking the first one. Happy to walk through it.
Claude Code, custom coding agents for automation, triage and review
Languages spoken
English, Indonesian
How I work
verification first, then the structure that keeps it true
Stability is not a phase at the end. It is the order I do things in.
Verification — fastest layer first
Unit tests
The cheapest place to catch a regression, and the only layer fast enough to
run on every commit.
UI automation
Gherkin keeps the specs readable by QA and product, not just engineers. This
is also where I put AI agents to work writing and maintaining the suite.
AppiumPlaywrightBDDGherkin
Manual, on real devices
For what automation cannot see: OEM quirks, unusual screen sizes, and how the
app behaves on a bad connection.
BrowserStack
Foundations
Multi-module
Android and Java libraries split so builds stay fast and teams stop blocking
each other. 37 modules at SWAT Mobility.
Clean Architecture
So the app outlives the team that wrote it, and the next engineer can find
things without being told where they are.
CI/CD
Every release ships through the pipeline, never from a laptop. I have built
this from nothing twice.
Open to
Senior Android IC roles, remote.
I spent a year managing 13 engineers at Gojek, then chose to go back to
building. IC is the work I am best at, not a rung I have not reached.
Currently at SWAT Mobility, in Indonesia, working GMT+7. If you are hiring for
an Android team that cares what its crash dashboard says, I would like to hear
about it.