About
I build Android applications and the platform underneath them — the build system, the CI pipelines, the observability, and the shared libraries other teams depend on.
Over 12 years I’ve worked across travel, fintech, food delivery, and e-commerce, mostly on the unglamorous parts: crash rates, cold start, Gradle builds, release pipelines, deeplinks that quietly stopped working. I’ve taken a CI pipeline from 90 minutes to 20, crash-free users from 95% to 99.6%, and mentored engineers who now lead teams.
Right now I’m ramping up on hybrid app development with Angular and Ionic, learning the web half of that stack properly.
Experience
Frontend Lead — FINN
- Lead the frontend team behind a hybrid consumer app — an Angular web app shipped inside an Android shell over Capacitor.
- Manage 4 frontend engineers and share ownership of frontend QA.
- Hiring manager for senior frontend roles. Carried 2 candidates through to offer in my first month, including salary negotiation, and sourced 2 more from my own network who are now in process.
- Brought in to improve the native side of the hybrid stack: startup time, Android vitals, and the boundary between the web app and the platform.
- Proposed and got approval for rebuilds of the web app's logging system and its A/B experimentation system.
- Proposed DESIGN.md, a design language specification that lets AI agents produce work consistent with the product. Currently in review.
- Built two internal tools — Flightdeck, a release tracker modelled on Runway, and Experiment Pulse, which flags GrowthBook experiments that are misconfigured or receiving no data.
- Ramped into an unfamiliar Angular codebase by building an interactive reference that maps Angular modules and components onto Dagger and the Android application lifecycle. It's now the team's onboarding doc.
Staff Mobile Engineer — EarnIn
- Designed and led a referral framework supporting multiple products, shipped on Android, iOS, and web by a cross-functional group of 8 engineers over 4 months. Generalised the API from a single product object to an array, so adding a product no longer required client rework.
- Collapsed a duplicated source of truth between the experimentation platform and the backend that had been shipping stale reward values to the UI, moving campaign data behind the referral service. Contributed the backend changes in the Kotlin monorepo.
- Built the framework connecting native and WebView for hybrid onboarding — lifecycle-aware cookie injection and clearing, plus Kotlin-to-JavaScript bridges.
- Built a GitHub Actions proof of concept on a fork, fully parallelised with UI tests across 8 shards, and used it to make the case for accelerating the migration off Jenkins.
- Built an MCP server over the internal data loader API so AI agents and QA could generate test users in any account state on demand. Adopted by QA in Bangkok and the US.
- Implemented the Android side of a six-phase entry point rebuild, unifying deeplinks from push, in-app messaging, and WebViews behind a single adapter with success and failure telemetry.
- Owned measurement for every launch, building the Amplitude and Databricks dashboards behind each experiment.
- First Staff mobile engineer hired in APAC. Helped hire and mentored a senior Android engineer who took over APAC delivery.
Engineering Lead / Manager for Mobile — Honest
- Led a team of 4 Android engineers and 1 iOS contractor.
- Owned architecture direction across Android and iOS, and managed stakeholder expectations on delivery.
- Ran hiring and performance reviews for the mobile team.
Principal Android Engineer — Honest
- Cut CI pipeline time by 77%, from 90 minutes to 20, through job parallelisation and M1 runners.
- Wrote Gradle plugins that improved build times and build monitoring.
- Shipped NFC tap-to-pay with the Thales SDK, approved by MasterCard and Bank of Indonesia.
- Raised crash-free users from 95% to 99.6%, and cut ANR and frame drop rates with structured concurrency.
- Moved GitHub secrets to Terraform, deployed ReportPortal via ArgoCD and Helm, and integrated Mimir for Prometheus monitoring and PagerDuty alerting.
- Delivered Line of Credit data features in Go, and KYC and fraud risk models in DBT.
Senior Android Developer — talabat (Delivery Hero)
- Owned code for the user and location squads.
- Built and maintained the Android SDK (AAR) for Delivery Hero's shared authentication service, published to an internal Maven repository for use across sister brands.
- Presented an RFC on token management and optimised the Gradle build with the platform core team.
Senior Android Engineer — Agoda
- Led the Android property team for the core booking funnel, and mentored 3 engineers who are now dev managers and tech leads at Agoda.
- Engineered a custom LinearLayoutManager that removed scrolling jitter and enabled exact expand and contract animations on property screens. I wrote it up on Medium.
- Drove architecture decisions for scalability and owned performance KPIs.
- Contributed to the Maps team (Google Maps, Mapbox) and worked with the internal Dalvik team on core Android infrastructure.
Software Engineer — Freecharge
- Rebuilt home screens and fixed QR scanner ANRs by moving camera initialisation off the main thread.
- Built custom parallax animations with RecyclerView and CoordinatorLayout.
Software Engineer — Talview
- Cut the Candidate app crash rate from 15% to 0.5% through error handling and memory management.
- Built and maintained the Recruit app with GitLab CI/CD.
- Recorded interviews on the Camera 1 API with chunked resumable upload.
Associate Consultant — Neudesic
- Built an internal performance review system on the .NET stack (Entity Framework, Razor, ASP.NET).