Midhun Mohanan

Mobile architect.

Developer, engineer, architect. Midhun Mohanan designs the systems behind Android and Flutter products and ships them, from BLE indoor positioning to airline platforms.

Email me

Two domains, one job

I draw the architecture before the first screen: data, sync, identity, failure. Then I build on it, native Android since Eclair and Flutter since it arrived.

Mobile app building

Products used by airport staff, event visitors and super-app customers, built to stay fast when the network does not.

// Distance from signal strength (log-distance model)
fun distance(rssi: Int, tx: Int = -59, n: Double = 2.0) =
    10.0.pow((tx - rssi) / (10 * n))

// Where the phone is, from three beacons
fun trilaterate(a: Beacon, b: Beacon, c: Beacon): Point {
    val A = 2 * (b.x - a.x); val B = 2 * (b.y - a.y)
    val C = a.r.sq - b.r.sq - a.x.sq + b.x.sq - a.y.sq + b.y.sq
    val D = 2 * (c.x - b.x); val E = 2 * (c.y - b.y)
    val F = b.r.sq - c.r.sq - b.x.sq + c.x.sq - b.y.sq + c.y.sq
    return Point((C*E - F*B) / (A*E - B*D), (A*F - C*D) / (A*E - B*D))
}
The core of the beacon math behind indoor positioning, simplified.
  • Android
  • Kotlin and Java
  • Flutter and Dart
  • BLE and beacons
  • Room and SQLite
  • Retrofit and Rx

Developer utilities and delivery

The machinery that keeps a team shipping: pipelines that build every commit, gates that stop bad code before review, and a backlog people trust.

  • Jenkins and TeamCity
  • SonarQube quality gates
  • REST, SQL, Volley
  • Git, SVN, Bitbucket
  • Jira, Backlog, Slack
  • Scrum and Agile

Selected builds

ScoreEase scoreboard screen with four players and their scores.

ScoreEase

A free score keeper for game nights and matches. It began as a small Flutter app, was vibe coded with Antigravity, then polished with Claude into a production build people use.

Makuhari Messe exhibition halls near Tokyo, where CEATEC is held

CEATEC 2019 official app

The official app for CEATEC in Tokyo: a Flutter front end over native Android and iOS SDKs. It reached number one on both the Play Store and the App Store and stayed there for the whole event; the team took the Team Awesome Award.

Indoor positioning platform

An IoT product for Pinmicro: Android apps that read BLE beacons and use triangulation logic to plot beacons and people on an indoor floor plan.

Customer identity for a super app

The Flutter front end for customer identity in the Tata Neu e-commerce super app: authentication, address management and profile, from the screens to the flows behind them.

An airport executive lounge with a long shared table and leather chairs

Lounge management

An Android app for the travel and hospitality space: lounge staff check guests in, see occupancy and keep the room running between flights.

Meet and greet

An Android app for airport ground staff and crew: who to meet, at which gate, when the flight lands, and what happens next.

A Nexus One running Android 2.x, lying on a sketchbook of hand-drawn app screens

Apps for global clients

Android apps for clients across many domains, from first sketch to store release. First code on Eclair, first app shipped on Froyo, detours through Tizen, BlackBerry, Titanium and React, and always back to Android.

What fifteen years of work says about it.

  1. Indoor positioning platformBLE beacons and triangulation logic to plot beacons and people indoors, as product lead at Pinmicro.Android, BLE · 2020

Or try

A Nexus One phone from 2010 on an open sketchbook of wireframes
Nexus One, 2010. The Froyo era, when the first app shipped.

Say hello

LinkedIn

GitHub

Medium

Kochi, KeralaKerala backwaters in Kochi under a grey monsoon sky

IST, UTC+5:30