Ba·ran·ga

/bɑːˈrɑːŋɡɑ/   Keith, n.   Nairobi, Kenya

  1. 1Senior Mobile Engineer at Tappi. Android and Kotlin, five years, most of it on software people use to move money.
  2. 2Builds software for the condition most software assumes away: the network is gone, the transaction still has to settle, and the server will disagree with you in four hours.
  3. 3Works a layer below where most people stop — the sensor, the schema, the board itself. Electronics by background, which is why the answer is usually to open the thing up.

Work

Tappi: Caller ID & Expenses

n., Kotlin, at Tappi
  1. 1A caller ID and expense manager for small businesses: who is calling, and what the money did. Built from the ground up — around ten thousand installs, two thousand of them opening it on any given day.
  2. 2Local-first for privacy, not merely for patchy networks: transactions are parsed and classified on the handset and stay there. The on-device SQLite database is the system of record, with the schema design and versioned migrations that implies.
  3. 3Parsing and classification by regex, heuristics and rules, reconciled across several payment sources so income and expense land in the right place.
  4. 4A chat assistant, also mine. An orchestration layer hands DeepSeek the question and the app's tool definitions and asks it for one thing only: which tool to run. The tool executes locally against the on-device data, and the app draws the result as a chart inside the conversation.
  5. 5Which is what keeps it honest. The model never receives a figure, so it is never in a position to invent one — hallucinated arithmetic is not a risk mitigated here so much as one the architecture removes.
  6. 6Unit tests cover essentially every feature in the app, and CI runs them on every build.

Sensitive financial data, so the interface decisions were mine to own. Clarity first, then trust, then convenience.

Kotlin, Jetpack Compose, MVVM, Hilt, SQLite, Retrofit / OkHttp, LLM tool-calling, Firebase, CI/CD

Telemetri

n., Android, in progress
  1. 1A driver-behaviour and trip telematics stack, built from the sensors up rather than assembled from a vendor SDK — and then packaged as an SDK of its own.
  2. 2An argument that the parts a commercial provider abstracts away — trip segmentation, noisy accelerometer data, deciding what counts as a hard brake — are the parts worth understanding.

Damoov solves this commercially. I wanted to know how, and then whether I could hand it to someone else.

Kotlin, Coroutines, Hilt, Room, WorkManager, Retrofit / OkHttp, Play Services Location, Android sensors

Kamusi 2.0

n., lexicography
  1. 1Swahili definitions, digitised into a structured and queryable lexicon.
  2. 2The observation behind it: an English speaker has a good dictionary in every app store, and a Swahili speaker does not have one that is genuinely ubiquitous.

The lexicon is the unglamorous half. It is also the half everything else depends on.

Kotlin, SQLite / FTS, Structured data modelling

Longtail

n., simulation, in progress
  1. 1A boat simulator built around one mechanic: on a Thai longtail, thrust and steering are the same input. Aiming the engine is how you turn, so you cannot turn without accelerating.
  2. 2Three prototypes so far — 2D top-down to find the feel, Three.js in 3D to see it, then a multi-engine variant to break it.

Three.js, TypeScript

Reddit fine-tuning

n., applied ML
  1. 1QLoRA fine-tuning of open-weight models on conversational Reddit corpora.
  2. 2r/changemyview turned out to be the useful subset: the delta system labels which arguments actually moved someone, which is a quality signal most scraped dialogue does not carry.

Python, PyTorch, QLoRA

Where

Tappi

v., 2022–
  1. 1Junior to Senior Mobile Engineer in three years, Java first and then Kotlin. Digital tools for small businesses across Africa, which means designing for the network conditions those businesses actually have.
  2. 2Four Android applications on the Play Store along the way — Tappi, MTN Thryve, MTN GoDigital and PBP Agent — plus Tappi Link, internal tooling in Flutter and Dart that runs on Android and iOS alike, and the Firebase CI/CD that ships all of it.
  3. 3Now a senior technical reference for architecture reviews and long-term maintainability decisions.

GT Bank Kenya

v., 2022
  1. 1Banking systems with a team in Nigeria, including a paperless automated account-creation process that replaced paper onboarding.
  2. 2Led the regional money transfer service spanning GTBank's African subsidiaries. Cross-border transfers are where the discipline of having money on the other end of the request gets taught properly.

Enigma Consultancy

v., 2021
  1. 1Led a custom CRM in Java for partnered businesses; customer interaction went up fivefold.
  2. 2Deployed and maintained across thirty-odd handheld devices in the field, with Firestore behind the feedback collection and the error handling that field conditions demand.

Off-screen

Workshop

n., off-screen
  1. 1A Bambu Lab A1, a soldering rework station, a bench of tools and a desk given over to Fusion 360. Three years of printing is long enough to have learned what the machine will forgive and what it will not.
  2. 2Robot builds, ongoing. The interesting problem is never a single component — several microcontrollers, a mechanism whose kinematics have to be right, and a printed body all have to be made to agree with one another before any of it is one object rather than a pile of parts.

Fusion 360, Bambu Lab A1, Microcontrollers, Rework and soldering