Skip to content
Portrait of Eugene Kipchirchir Koech

Eugene Kipchirchir Koech

Nairobi, Kenya · --:-- EAT

I build software people rely on, and I'm teaching machines to learn.

Software Engineer in Nairobi. I work across the whole stack, from web and mobile apps to developer tooling and infrastructure. Right now I'm going deep on machine learning and Go.

See my work
model.train()
epoch 0000 · loss — · acc —
2 → 10 → 10 → 1 · tanh · adamclick to add

A real neural network, training in your browser right now.

01 / Selected work

Things I've built and shipped.

Developer infrastructure, SDKs, machine learning on real Kenyan data, and products running in production. Most of it is open source.

Infra · Open source · 2026

Tidepush

Self-hosted OTA updates for Expo apps, on Cloudflare.

A multi-tenant server for the open Expo Updates protocol. Ship JavaScript and asset fixes to React Native apps without waiting on store review, as a hosted service or self-hosted on your own Cloudflare account.

  • RSA-signed manifests and rollbacks, with staged percentage rollouts
  • Instant rollback to the previous or store-embedded bundle, and staging → production promotion
  • Hono API Worker on D1 and R2 with edge-cached bundles, plus a TanStack Start dashboard
  • tidepush CLI on npm, backed by 120+ tests and CI with a JavaScript budget
TypeScriptCloudflare WorkersHonoD1R2TanStack StartTurborepo
~/payd-app

$ npx tidepush publish --channel production

✓ bundle uploaded

✓ manifest signed with app key

rollout
10% → 100%

↺ tidepush rollback ready

Archived. This SDK no longer works. The code is kept for reference.

Developer tools · 2026

Payd SDKs

Typed SDK for payments and payouts across Africa.

An open-source TypeScript client for the Payd API: collections (including M-Pesa STK Push), payouts and transactions, with an interactive playground for testing API keys.

  • Published to npm as payd-node-sdk
  • 101 unit tests backed by shared JSON fixtures
  • Shipped with a playground for testing webhooks and API keys
TypeScriptNode.jsExpress
collect.ts

const payd = new PaydClient({ apiUsername, apiPassword });

await payd.collections.mpesa({

amount: 500, phoneNumber: "0700000000",

});

✓ 101 tests passed

Machine learning · 2026

Who Gets Heard?

Predicting which Kenyans reach their county representative.

Binary classification over Afrobarometer survey data joined to budget records for all 47 counties. scikit-learn baselines compared with Keras Sequential and Functional networks.

  • Five public datasets joined across all 47 counties, with no synthetic data
  • Gradient Boosting scored the best PR-AUC on 480 held-out Kenyans
  • Finding: county budget transparency does not predict who contacts their MCA
  • Fairness audit: the model misses engaged women and young people
Pythonscikit-learnTensorFlow / Keraspandas
PR-AUC on 480 held-out Kenyans (higher is better)
ModelPR-AUC
Gradient Boosting
0.43
Keras (functional)
0.39
Random Forest
0.39
SVM (RBF)
0.38
Logistic Regression
0.36
Random guess
0.26

More projects

  • Civic tech · 2026

    Sauti Link

    Civic participation, in English and Kiswahili. Bilingual bill summaries, public feedback and county-level dashboards.

    React 19ConvexTypeScript
  • Mobile · 2025

    ScanTiko

    Ticket scanning at a live tournament. 2,000+ tickets validated at Kabeberi 7s.

    React NativeExpo
  • Mobile · 2025

    Planrr

    Group contributions and shared expenses. Shipped on iOS and Android.

    ExpoReact NativeGraphQL
  • Productivity · 2026

    Chora

    A whiteboard with as many sheets as you need. Saves to the cloud with a debounce.

    ReactExcalidrawConvex
Everything else on GitHub

02 / The lab

What I'm learning right now.

Two tracks. Machine learning and AI, from gradient descent by hand to CNNs on medical images. And Go, for small, fast backend services.

Machine learning & AI

python · numpy · keras

My learning log, in order. Every step is a notebook I worked through end to end.

  1. 01Regression analysis

    Linear models, loss functions, gradient descent by hand

  2. 02Classical ML

    scikit-learn pipelines, cross-validation, feature engineering

  3. 03Neural nets from scratch

    Forward and backward propagation in NumPy, building deep nets step by step

  4. 04MNIST

    My first end-to-end image classifier

  5. 05Malaria diagnosis CNN

    A CNN built from scratch, compared with ResNet50 transfer learning

  6. 06Who Gets Heard?

    Real civic data, classical ML compared with Keras networks

  7. still training…

Practice, not just notes. The network at the top of this page is about 200 lines of TypeScript, with backpropagation and the Adam optimiser written by hand. No ML libraries.

Go

stdlib first

After years of TypeScript I wanted a language that is small, fast and has concurrency built in. This is what I'm practising.

Goroutines & channelsnet/http servicesTable-driven testsCLIs & tooling
main.go
1package main
2
3import (
4 "fmt"
5 "sync"
6)
7
8func main() {
9 topics := make(chan string)
10 var wg sync.WaitGroup
11
12 for id := 1; id <= 3; id++ {
13 wg.Add(1)
14 go func() {
15 defer wg.Done()
16 for t := range topics {
17 fmt.Printf("gopher %d learned %s\n", id, t)
18 }
19 }()
20 }
21
22 for _, t := range []string{"goroutines", "channels", "net/http", "testing"} {
23 topics <- t
24 }
25 close(topics)
26 wg.Wait()
27}

// press run to start the goroutines

03 / Experience

Where I've worked.

Web, mobile and infrastructure, usually on small teams where I work on everything from the UI to the API.

  1. Current role:Jan 2026 — Now

    Nairobi

    Frontend & Mobile Developer at GetPayd Technologies

    Lead engineer on Payd's new Expo iOS and Android app, and a developer on the Vue 3 web app: wallets, payment links, invoices and cross-border payments.

    • Evaluated Expo against Flutter, then led the new Expo app (80%+ of commits) to full feature parity with the web product
    • Built the mobile auth model: phone OTP, biometric re-authentication with auto-lock, SecureStore tokens and Expo Router guards
    • Shipped deposits, withdrawals, transfers, mobile money and cross-border payouts on a shared Vue 3 composables layer
    • Wired PostHog remote flags for live maintenance banners, and wrote a Kotlin Expo native module
    • 295 Jest tests, with typecheck, lint and format gates on every pull request
    ExpoReact NativeVue 3TanStack QueryZustandZodJest
  2. Oct 2024 — Oct 2025

    Remote · Elkridge, MD

    Full-Stack Developer at Cybasoft

    Planrr, a mobile-first app for personal contributions and shared expenses.

    • Built user-facing features for financial activity and account workflows, keeping client state in sync with the backend
    • Wrote GraphQL queries and mutations for targeted, efficient data fetching
    • Shipped deadline tracking, status filters and UI improvements with a cross-functional remote team
    ExpoReact NativeGraphQL
  3. Feb 2025 — May 2025

    Nairobi

    Full-Stack Developer at Virgil Africa

    Client-facing web products.

    • Led the frontend of a new product, from UI prototype to production component architecture
    • Built responsive React interfaces that streamlined checkout
    • Built lightweight Python / FastAPI endpoints for asynchronous data and client sync
    • Set up GitHub Actions CI/CD for automated builds and deploys
    ReactPythonFastAPIGitHub Actions

Toolbox

Languages

TypeScript · JavaScript · Python · Go · Kotlin (basic) · SQL

Machine learning

NumPy · pandas · scikit-learn · TensorFlow / Keras · Jupyter

Frontend & mobile

React · Vue 3 · React Native · Expo / Expo Router · Vite · Tailwind

Backend & cloud

Node.js · Hono · FastAPI · GraphQL · Convex · Cloudflare Workers, D1, R2 · PostgreSQL

Education

  • African Leadership University

    BSc Software Engineering, concentration in Machine Learning & AI

    2024 — 2027 (expected)

  • Moringa School

    Certificate in Software Engineering

    2023 — 2024

04 / Contact

Have something worth building?

I'm happy to talk about a product, a collaboration, or ML, Go and developer tooling. Email is the quickest way to reach me.

learning
ML & AI · Go
building
Tidepush
based
Nairobi, Kenya
timezone
EAT · UTC+3