I'm Petrus, a Software Developer with a strong interest in design.
I love travelling, especially around Africa. And when I'm not busy writing code, you might find me climbing a mountain, jogging or staying up late to watch SpaceX launches.
“Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.”
- Antoine de Saint-Exupery
“I invented nothing new. I simply assembled the discoveries of other men behind whom were centuries of
- Henry Ford
|Android||Java, using Sqlite for client-side storage and packages like Firebase, Retrofit, Picasso etc.||
|UI & UX Design||"Design is not just what it looks like and feels like. Design is how it works."||
|Web Frontend||HTML, CSS & JS, using Bootstrap, React, D3 etc.||
|Persistence layer||Database modelling||
|PostgreSQL (with JSONB for handling unstructured data)||
|PostGIS (spatial queries right on the database)||
|SQLite (in-memory database)||
|Data migration (using Alembic & SQLALchemy)||
|Application Layer||Flask (minimal Python web framework)||
|Django (Python web framework)||
|SQLALchemy (Object Relational Mapper)||
|Redis (in-memory data store)||
|Flask-Admin (package for building admin interfaces)||
|Data science||Machine Learning for recommender systems (using LightFM)|
|Probabilistic programming / Bayesian inference (for calculcating uncertainties)|
|Pandas, Jupyter notebooks, Matplotlib|
|Version control||Git & Github|
|Server management||Ubuntu, on Amazon Web Services (EC2)|
|Docker & Docker-Compose|
|3rd Party tools||Google APIs for geocoding, directions etc.|
|SMS integration with Clickatell & Twilio|
|USSD integration with Vumi|
“Life can only be understood backwards; but it must be lived forwards.”
- Søren Kierkegaard
Cape Town, South Africa - February 2016 to September 2018
For my second startup I built an Android app to sell groceries in constrained emerging-market conditions. It first went live as timbuktu, but I later re-branded it as wagadugu after doing a full redesign and rewrite of the codebase.
I gave a talk at PyConZA where I tried to explain the reasoning behind the choice of business model, and some of the technical challenges it entailed.
Throughout the life of the startup, my focus was on trying out different designs for the e-commerce frontend, until I found one that clearly resonated with a small group of representative users. I tried to let go of any pre-conceived notions of what e-commerce should look like, rather designing something new from the ground-up. But unfortunately, after lots of iteration and a myriad of design changes, I still couldn't find something that works demonstrably better than the status-quo.
Cape Town, South Africa - April 2015 to January 2016
I worked as a remote contract developer, after my first startup couldn't get off the ground. The team of software developers that I worked with was distributed around the world, but managed from Canada. We maintained and made improvements to unhaggle, a site that generates sales leads for auto dealerships and gives consumers insight into the pricing of new vehicles, which they can use when negotiating with a dealership.
My role was focused on setting up automatic testing and refactoring a legacy codebase to expand test coverage and make it more reliable.
Cape Town & Limpopo, South Africa - February 2015 to August 2015
For my first startup, I built a platform for enabling distributed ownership of large, centrally managed cattle farms. Users could buy individual cattle and have them stay on the farm, while tracking their well-being through my web application.
Whilst the idea was probably sound, I couldn't get the right farming partner on board, and so the startup only ever made it to the demonstration phase, with a handful of cattle.
Cape Town, South Africa - November 2013 to January 2015
In-between several smaller projects, I was responsible for redesigning http://med-db.medicines.sadc.int/ (no longer active), which was a tool for tracking medicine prices across the SADC region. It helped public sector procurement officials when negotiating medicine prices with suppliers.
I also contributed a substantial amount towards a redesign of https://pmg.org.za/ for the Parliamentary Monitoring Group.
Cape Town, South Africa - April 2013 to October 2013
I built out Springlab's first venture: https://www.recomed.co.za/, which is an online directory for finding medical professionals, making bookings and leaving ratings.
As the technical lead, I was responsible for writing the frontend website client, the data-persistence layer and API on the backend. And I handled server setup and deployment.
Cape Town, South Africa - January 2011 to April 2013
Initially, I was hired for my Mechanical Engineering expertise, but we soon realised that the web-application was the most pressing problem for the company.
Chasseneuil, France - November 2007 to January 2008
For an internship during my Bachelor's studies, I was employed as a member of the Mechanical Design team.
My job consisted of the mechanical design of an enclosure for a GSM modem which is sold as an accessory to electricity meters in certain markets. The enclosure needed to conform to the relevant standards and had to be suitable for mass production by plastic injection-moulding techniques. The design was later taken into production.
Kampala, Uganda - July 2005 to January 2006
As part of an extensive backpacking trip through the continent, I took up a position with a Ugandan company, where I helped with the logistics of importing communications equipment into South Sudan (e.g. satellite phones, radio and VSAT equipment). I spent about half the time in Kampala and the rest in South Sudan.
Felixtowe, United Kingdom - May 2004 to December 2004
As a Student Engineer I was part of the Mechanical Design team, helping with the design of 3D models and testing prototype parts for conformance to the relevant specifications.
“The mind is not a vessel that needs filling, but wood that needs igniting.”
Stellenbosch University, South Africa
I completed a two-year Master's degree, on-time and with distinction. The thesis introduced a novel approach for formulating a specific class of structural design problems, in order to solve them more reliably using relatively simple optimization algorithms.
To support my thesis I wrote software in Python for analysing the stress distribution within physical structures, using the Axisymmetric Finite Element Method. On top of that I wrote an optimization routine, also in Python for finding the optimal combination of design parameters for a particular structural design problem.
The research output included a thesis, an article published in an academic journal, and a presentation given at an international academic conference.
Stellenbosch University, South Africa
After two gap-years spent working as a student engineer and then travelling through Africa, I returned to Stellenbosch to study a four-year bachelor's degree in Mechanical Engineering. In addition to the regular degree programme, I took French for three years at the Arts Faculty.
Some subjects taken as part of the degree include: