Work
Some problems I have spent time on, and why they kept me. Most start the same way, noisy data, infrastructure that will not stay up, research that is hard to move, or people who need a better tool.
Sometimes the answer became a production system, sometimes a library, sometimes research, and sometimes the useful thing was helping someone else learn to solve it. These are some of those.

The pipeline should outlive the platform it runs on
Data and ML teams rebuild the same infrastructure plumbing every time work moves between a laptop, a shared cluster and production. Ubunye Engine separates what a pipeline does from where it runs, so the logic stays still while the infrastructure underneath it is replaced.
The tools are not the problem. The same read, transform and write scaffolding gets rewritten per team and per platform, and a pipeline written for one environment quietly hardcodes it. The cost is duplicated engineering, results that are hard to reproduce anywhere else, and capability that belongs to whichever platform it was built on.
A pipeline is one YAML file and a Python transform. Connectors, model registries, lineage stores and artifact storage are all plugins registered from outside the engine, so a new source or a new storage backend needs no engine edit. The same task folder runs on local Spark, Docker, Kubernetes, S3-compatible storage and spark-submit, and a build job fails unless all five produce byte-identical output.

You should not have to become a specialist to get a clean signal
Real sensors lie, and the mathematics that corrects them is well established but different for every method. TFiltersPy puts five Bayesian filters behind one familiar fit, predict and score interface, so choosing a method becomes a decision about the problem rather than a rewrite of everything around it.
Each filter has its own mathematics and its own implementation shape, so moving from a Kalman filter to a particle filter usually means rebuilding the surrounding code as well. That cost is why teams tend to stay with the first method they tried, or wait for the one person who can derive the right one.
Kalman, Extended, Unscented, Ensemble and Particle filters share one estimator interface, with online updates on all five, RTS smoothing on the linear and extended filters, and forecasting on the linear one. A worked radar example compares EKF against UKF on the same data, and a decision guide says which filter suits which problem. Published on PyPI, tested on Python 3.9 through 3.12.

Understand agents by building one, for free
A reader of the agents series asked where they could try it themselves. The kit is the answer: six stops, each adding one working piece, that end in an assistant answering questions from your own notes, with tools, search by meaning, safety controls, tests and CI.
Most material about agents is either a demo that hides the hard parts or a framework that hides everything. Readers could follow the argument of the series but had nowhere to see a planted instruction fool a model, a retrieval index return nothing, or a green build pass while the answer was wrong.
Six stops, sixty seven tests and a CI workflow that runs them on every push, all on free options: the free Gemini tier from Google, a small local model through Ollama, or a built in mock that needs no key and no internet.

Building the platform data science runs on at a bank
Good models are only one part of a working data-science function. The data, engineering, governance, tooling and team around them decide whether anything survives in production.
Moving analytics from infrastructure not built for big data toward a cloud first, engineering oriented capability is what lets analytical products be built, deployed, governed and improved repeatedly rather than once.
Telematics processing cut from months to under a day, and a data engineering capability, running on Ubunye Engine, that 10+ products now sit on.

Deciding where a national network needs attention first
Enormous volumes of imperfect operational data had to become decisions about where resources, infrastructure and intervention were needed most across a national telecommunications network.
Fuel, crews, capital and equipment are finite. The question was never how to collect telemetry, it was which of 15,000+ sites deserved attention next, and where that attention would create the most value.
Real-time systems processing tens of millions of telemetry and alarm events a day across 15,000+ sites, with the Smart Generator Optimisation work contributing approximately R1 billion in annual operational savings.

Turning environmental data into something people can use
Satellite, climate and environmental data is too large to treat as an ordinary dataset. The work was making it into information researchers, businesses and decision makers could act on.
Research only matters here if it reaches a system someone can use. That meant designing models and workflows for data far beyond a single machine, then getting them into a platform.
Climate-forecasting models deployed into IBM PAIRS Geoscope, an enterprise geospatial-temporal platform handling petabyte-scale data, plus a co-authored NeurIPS 2020 workshop paper.

Using data to help students and a university decide
A university holds a great deal of data about how students are doing. The work was turning it into something faculties and support staff could act on, early enough to matter.
Institutional data that is only reported is not much use. The value is in earlier visibility, so support reaches a student before a problem becomes terminal, and in leaving the skills behind.
A clustering-based recommendation system for the Faculty of Humanities, with more than R2 million a year in government subsidy impact attributed to the initiative, and analytics and ML workshops for staff and students.

Helping municipalities see where service delivery breaks
Public-sector data existed but was hard to act on. The work was building decision-support systems that gave municipal stakeholders operational visibility they could plan against.
Municipal decisions affect service delivery for residents. Value here is not revenue, it is planning that is better informed than it was.
Django-based decision-support systems serving 17 municipalities, including the City of Cape Town and 16 across Gauteng, with real-time access to analytics for public-sector stakeholders.

Teaching people to build for themselves
Township businesses can’t afford agencies and township youth aren’t taught the skills that now pay, so Kasilam teaches people to build with AI by doing real work.
Building everything for people creates dependency. Transferring the capability changes what they can do next: a website helps once; knowing how to build the next one is the thing that lasts.
A growing set of real sites shipped for local businesses at no cost, built by participants learning to earn with AI, not built by me.

Making practical AI knowledge easier to reach
Most people meeting AI for the first time get either hype or a research paper. This is the work of explaining what is actually true about building with it, in public.
Practical AI literacy is unevenly distributed, and the gap is widest where the opportunity is largest. Explaining the real engineering, plainly, is the cheapest way to move it.
Co-hosting FabAcademic Unfiltered with Prof. Mamokgethi Phakeng, with sessions reaching audiences of over 300,000 people, alongside public technical writing.