Transmissions

2026-06-22
Transmission 017 · building

The pipeline is proven. The dashboard still has blank panels.

100 requests confirmed the API is stable. Prometheus Explore proved cAdvisor is scraping. The CPU Usage panel was fixed by removing a cluster label filter that Minikube never populates. The top stat cards and memory graphs are still blank — same fix, not yet applied.

Continue reading
2026-06-21
Transmission 016 · shipped

Restructured the codebase, built three new verticals, and closed every security vulnerability.

A Python script migrated 25 files into a feature-based layout. Travel Tickets, Courier & Moving, and Kampala Real Estate Broker were built from scratch. The monorepo came out of a security audit clean.

Continue reading
2026-06-18
Transmission 015 · shipped

The cluster ran out of room. Two pods broke. Scaling down fixed both.

A Helm upgrade to revision 5 triggered new monitoring pods on a node already out of CPU and memory. Grafana froze during a Docker Hub handshake. kube-state-metrics crashed 11 times. Scaling the API down to 2 replicas gave the node enough room. Both pods recovered.

Continue reading
2026-06-16
Transmission 014 · shipped

The quota I set in 012 blocked the rollout I ran today.

Fixed the cAdvisor TLS gap, bumped CPU limits for the 97-second startup problem, and hit three consecutive Helm errors before the upgrade landed. Then the namespace quota from 012 blocked every new pod. Deleted the quota. The rollout completed in 23 seconds. The pipeline is verified.

Continue reading
2026-06-15
Transmission 013 · shipped

One codebase, three shop types, and a Zustand subscription loop crash.

Hubal POS split into three adaptive variants — pharmacy, cosmetics, supermarket — from a single codebase. A Zustand subscription pattern crashed the app at the end of a long session.

Continue reading
2026-06-13
Transmission 012 · building

The quota landed. The utilisation panels still say nothing.

The slow pod from 011 came back late again — 97 seconds between gunicorn and application startup. Resource limits hit the namespace. Grafana's utilisation panels are still blank, and now I know exactly why.

Continue reading
2026-06-12
Transmission 011 · shipped

ResNet-50 saw the load. The dashboards learned to watch.

100 waves of traffic through all four pods. Grafana panels built from scratch. The request rate and inference latency are now visible in real time.

Continue reading
2026-06-10
Transmission 010 · shipped

The 404 was a ghost. The image was stale.

Prometheus scraped /metrics and got 404. The route existed in main.py on disk. It did not exist inside the running container. The pods were serving an image that predated all the monitoring code.

Continue reading
2026-06-09
Transmission 009 · building

Prometheus is in. The build keeps dying.

Wiring Prometheus into the cluster hit three walls: a broken package manager, a missing metrics route, and a Docker build that hangs for over an hour inside Minikube every time pip touches the network.

Continue reading
2026-06-08
Transmission 008 · shipped

ResNet-50 takes 60 seconds to load. The cluster didn't know that.

A slow PyTorch startup window caused 502s on freshly rolled pods. I added resource ceilings, a dual-metric HPA, and startup probes to close the gap.

Continue reading
2026-06-07
Transmission 007 · building

Tibibu: automated pipeline for publishing children's books

Building an automated pipeline using docx XML parsing, Gemini API rewriting, Pillow image processing, and a FastAPI/React creator tool.

Continue reading
2026-06-05
Transmission 006 · shipped

The heartbeat murder: diagnostic of a 502 bad gateway

Debugging PyTorch CPU-bound inference causing Gunicorn worker SIGKILL timeouts and HTTP 502 Bad Gateway responses.

Continue reading
2026-06-03
Transmission 005 · shipped

Auditing Minikube resource allocations to prevent unnecessary rebuilds

Using container inspection to verify cluster memory before deleting the environment.

Continue reading
2026-05-25
Transmission 004 · shipped

Simple Model API — Production ML Inference Service

A FastAPI service wrapping ResNet-50 for image classification. Production patterns: health probes, correlation IDs, structured errors.

Continue reading
2026-01-10
Transmission 003 · building

Hubal — offline-first POS and installment tracking

Two Vite+React apps for shop owners: a point-of-sale with IndexedDB offline sync, and a phone installment system with an immutable payment ledger.

Continue reading
2025-11-15
Transmission 002 · building

Nasez — financial controls for fuel stations

Shift-based verification engine for petroleum stations. PostgreSQL triggers calculate expected cash from meter readings. Variance triggers supervisor review.

Continue reading
2025-09-01
Transmission 001 · active

Fikalo — logistics and real estate for East Africa

A monorepo running logistics in Kampala and real estate in Mogadishu. One Supabase project, PostGIS geofencing, PesaPal payments.

Continue reading