Ipswitch

Ipswitch: software and DevOps engineer, Nairobi

0
0
0
0
0
0
0
0

One engineer. The whole line.

I build it, ship it, and keep it running, often inside limits that would stop a bigger team. Software and DevOps, from Nairobi.

Open a line

Eight plates

Tilt any lever. Each opens the back of its plate here. Violet, turquoise and yellow are the three flagship projects; the silver ones lead to the rest of the site.

500 MB. One server. Live.

A Kenyan party’s public site, admin console and uploads, all inside a 500 MB cPanel quota. A normal npm install on the server would not fit, so the frontend is built off-server and only what it uses ships.

  • 37 MB Next.js standalone frontend (9 MB compressed)
  • 60 MB Python virtualenv, plus a 53 KB backend
  • ~23 MB everything else (derived from the 500 MB total)
  • ~380 MB left for the database and every uploaded image

The part nobody writes down: the cPanel Python selector leaves the app broken in two silent ways. It omits PassengerAppType wsgi from public_html/api/.htaccess, so Apache inherits the frontend’s Node settings, and it overwrites passenger_wsgi.py with a stub that loads itself forever. Both show up as the same blank 500. Both are now documented with the fix.

Where it started

Dates and roles as listed on my CV.

2020 – 2022
Contract frontend and systems engineer. Dashboards and offline-tolerant apps for field teams on unstable networks, with idempotent actions so state stays recoverable.
2022 – now
Freelance senior engineer: payments, reliability, CI/CD and ops tooling for clients, and my own platforms alongside: Chama Cha Mimi na Wewe (live), RentPin (pre-launch) and Ouroboros Network (testnet).

How it is built

From client and contract engagements, 2022 to now, as described in my CV.

Idempotent by default
Payout jobs that are safe to replay: no duplicate disbursements, with a full audit trail across providers.
Reconcile, don’t trust
Workers that match provider callbacks against the internal ledger and hand operations an audit-ready CSV.
Readable when it breaks
Structured logs, per-batch metrics and runbooks, so an incident takes minutes to diagnose and not hours.

A limit is a spec, not an apology.

Open a line