Android · Kotlin · Jetpack Compose

Android apps that work where the network doesn't — and everywhere it does.

I'm Timothy Serem, an Android engineer in Nairobi. For 5+ years I've built for people who work far from a signal — pastoralists, vets, growers — with data that stays encrypted on the device, maps that render offline, and sync that survives a dead network. Lately I run that work with AI agents in the loop: a modularization we'd scoped in months landed in weeks.

Featured work

A flagship product and open-source Compose components.

View all projects →
Flagship · Android app

InfoRange

Offline-first Android app bringing rangeland monitoring and veterinary access to pastoralists in Northern Kenya and Namibia — engineered for zero and intermittent connectivity.

  • Kotlin
  • Jetpack Compose
  • MapLibre
  • Room + DB encryption
  • Ktor
  • Clean Architecture
InfoRange resource map with satellite imagery and field markers
Offline resource map
Library

CanvasWeightPicker

A reusable Jetpack Compose weight picker drawn entirely with Canvas — my highest-starred open-source component.

View on GitHub
Android app

ComposeCalorieTracker

Multi-module Android app that tracks calorie consumption, with data visualization drawn using Compose Canvas.

View on GitHub
Library

CanvasAnalogClock

A reusable analog clock component built with Jetpack Compose Canvas.

View on GitHub

Latest writing

All articles →

Have a resilient app to build?

I'm open to Android roles and select freelance work. Tell me about the project and I'll get back to you.

Strictly necessary storage is always on; everything else is your call.

Strictly necessary

Needed for the site to work and remember basic choices. These never track you across sites.

Always on
  • theme (This site) — Remembers your dark/light theme preference. localStorage — kept until you clear your browser data.
  • cookie-consent (This site) — Remembers the cookie choices you make here. localStorage — kept until you clear your browser data.

Analytics

Anonymous, aggregate page-view and interaction statistics via self-hosted Plausible Analytics. Plausible sets no cookies or persistent identifiers, and analytics only runs when you allow it.