Cloud and DevOps engineer and Python/Django developer who builds, releases and operates production platforms. I'm the sole infrastructure engineer on two live government systems: I write the AWS infrastructure, run the deployments and monitor production across QA, UAT and Production, with security scanning built into every release.
🏢 Founder of DevBridge, a Pretoria-based software and cloud infrastructure company serving government and enterprise clients across South Africa.
Note
Open to opportunities: hybrid or remote work in the Centurion / Pretoria area.
Several of these are government systems, so I don't link them directly. Full write-ups are on my portfolio.
Livi · liveMulti-tenant citizen-services platform, Office of the Premier, Mpumalanga
|
e-PGLUM · liveNationwide land-use and building-plan management, live for CoGHSTA, Mpumalanga
|
The Workplace Basics · not launchedDjango commerce and publishing platform (sole developer)
|
Community Web Modernization · pro bonoProgramme: 6 sites for schools, churches, NGOs and sports clubs
|
Our own products, with the codebases largely complete and now heading into users' hands. Feature additions and gap-filling follow once real feedback comes in.
EO Risk Platform · in developmentSatellite Imagery · Risk Analytics · REST API · Insurance A B2B satellite-imagery analytics API that turns Earth observation data into property risk scores for insurers. One call returns a composite score, hazard exposure and the evidence behind them. |
Heavy Fleet Intelligence · in developmentTelemetry · CAN / J1939 · MQTT 5 · Multi-Tenant A white-label, hardware-agnostic operational intelligence platform for mining and heavy logistics: live telemetry, trip reconstruction, route compliance and stop analysis over industrial gateways. |
Self-directed and public on GitHub.
- siteward: self-hostable passive web security scanner with JSON, Markdown and HTML export.
- speedward: self-hostable website performance tester with a global map.
- NetPulse: Django platform that discovers and monitors devices on a local network.
- Remote Workstation Anywhere: wake and connect to a home desktop with Tailscale, Wake-on-LAN, RDP and a Raspberry Pi gateway.
- aws-playground: dozens of AWS services explored through the CLI, infrastructure as code and SDKs.
- terraform_associate: code-first study notes and runnable examples.
| Languages | Python (expert), Java, JavaScript, C# (.NET MVC), Kotlin, SQL, Delphi |
| AWS compute & delivery | ECS Fargate, Lambda, CloudFront, Route 53, ACM, CloudFormation |
| AWS storage & data | S3, EFS, RDS, ElastiCache |
| AWS messaging & events | SQS, SNS, EventBridge, SES |
| AWS security & ops | IAM, KMS, Secrets Manager, WAF, CloudWatch, Rekognition |
| Data & messaging | PostgreSQL, PostGIS, MySQL, Redis, pgvector, RabbitMQ, Amazon MQ, Celery |
| DevOps & IaC | Docker, Git, GitHub Actions, CI/CD, CloudFormation, Terraform, Bash |
| DevSecOps | Trivy, pip-audit, AWS WAF |
| Monitoring & Linux | CloudWatch, production troubleshooting, Linux administration and hardening |
Only the bastion in the public subnet is reachable from the internet, and only from my own IP. The private VM has no public address, so the only way in is an SSH jump through the bastion.
flowchart LR
ME([My machine<br/>single allowed IP]) -- "SSH :22" --> NSG1{{NSG: allow SSH<br/>from my IP only}}
subgraph VNET["Azure Virtual Network"]
subgraph PUB["Public subnet"]
NSG1 --> BASTION[Bastion VM<br/>public IP]
end
subgraph PRIV["Private subnet"]
NSG2{{NSG: allow SSH<br/>from bastion subnet only}} --> TARGET[Private VM<br/>no public IP]
end
BASTION -- "SSH jump" --> NSG2
end
Network security groups restrict inbound SSH at both layers.
Certifications
|
Education
|
I keep my study notes in public at knowledgebase.devbridge.co.za: a regularly updated hub covering cloud, databases, Linux, networking, orchestration and programming. They're rough working notes, tidied with an LLM, written as I learn.
Pretoria · ZA · REF · SN—2026



