Skip to content

Instantly share code, notes, and snippets.

@fitzterra
Last active September 15, 2025 06:10
Show Gist options
  • Select an option

  • Save fitzterra/dbf3ef3e5f98de3533b1228cab211257 to your computer and use it in GitHub Desktop.

Select an option

Save fitzterra/dbf3ef3e5f98de3533b1228cab211257 to your computer and use it in GitHub Desktop.
Resume/CV of Tom Coetser

Tom Coetser

Software Engineer, Maker and Tinkerer


Table of Content

  1. Introduction
  2. Skills Summary
    1. Engineering, Architecting and Development
    2. Leadership
  3. Work Experience
    1. Engineer Lead, Kazang, October 2021 - Current
    2. Senior Software Engineer, Kazang, May 2018 - October 2021
    3. CTO, Piccing Inc, 2010/11 - 2018
    4. Private Consulting and Contracting, 2001 - 2010
    5. Developer, Foschini Data, 1993 - 2001
  4. Technical Experience
    1. Languages and Environments
    2. Frameworks and libraries
    3. Databases
    4. Version Control
    5. Networking, Infrastructure and Other
  5. Projects
    1. Kazang / Banking Interface
    2. Kazang / Zambian National Financial Switch Integration
    3. Piccing / Curately
    4. Mobile Reporter for Mobile Picture Website, Switzerland
    5. MPW - Mobile Picture Website, Switzerland
    6. MPW Promotions, Mobile Picture Website, Switzerland
    7. LazyCat
  6. Other Skills and Hobbies
    1. Electronics
    2. 3D Printing
    3. 3D Technical Design

Introduction

I am a passionate software engineer and I love building stuff. Be that complex software systems or not so complex electronic projects.

I started off studying Electronic Engineering, with a focus on Digital Electronics, right at the time when personal computers became more available. I quickly realised I can program a computer to be a helpful system and tool AND control external electrons and other connected components.

It did not take long for my passion to design and program digital circuits to turn into a passion to build software systems.

I still do electronics as hobby projects, but Software Engineering has become my day job over the last 30+ years.

To know more about my work, how I think and how I do things, you can view my GitHub profile. This CV is available as a GitHub gist here.

Most of the repos on these platforms are mirrors from my home GitLab instance.

Skills Summary

Engineering, Architecting and Development

  • Engineered and built several large and complex web and client/server based systems, always with special care and focus on:
    • fully understanding scope and requirements
    • optimal usage of resources (people, time, money, hardware)
    • future maintainability - on both code and infrastructure level
    • extensibility (where it makes sense) without over engineering
  • Skilled at engaging with, critically analysing, building on and assisting in moulding conceptual ideas from ideators/business/clients, from a technical or product point of view, in order to reach a well documented product and technical requirement and scoping definition.
  • Designing and planning robust solutions and systems to best fit specifications and requirements. I'm comfortable doing this solo, as part of a strongly lead group/team, or leading the group/team.
  • Implementing and coding of a well planned design/specification, being extremely thorough in testing every aspect and line of code I generate in order to push or share bug free code with my team or clients.
  • Generating proper documentation, either external to, or as part of the code, to ensure future maintainers/developers would be able to quickly understand and onboard on code I have written or systems I have engineered.

Leadership

  • Experience in building and leading a technical strong team of Developers and Infrastructure/DevOps.
  • Placing extremely high value and focused on creating a mentoring and learning, and open and honest culture, encouraging and driving passion for what you do, while everyone still takes full ownership of their areas of responsibility.
  • Encouraging and engaging in open and transparent communication in order to better share and understand processes, procedures, requirements, needs, thought processes, ideas, etc. across areas, as well as within areas.
  • Keeping structures flat as far as possible, and where it makes sense, in order to encourage better communication, support and team work.
  • Leading by example.

Work Experience

Engineer Lead, Kazang, October 2021 - Current

  • Leading a team of software engineers, maintaining and adding features to existing system as well as building new green fields projects every so often.
  • Tightly engaging with the Product Team, Business and Quality Engineering, often driving the product and business requirements, in order to ensure a healthy Product Development Life Cycle and high quality and maintainable software systems.
  • Continuous mentoring of Engineers and other members in the team. This is done in code reviews, general tech talks and any opportunity I see where skills can be improved, or something worth sharing or learning is noticed.

Senior Software Engineer, Kazang, May 2018 - October 2021

  • Architecting, implementing and full Product Life Cycle for new systems.
  • Adding features and overall improvement to the current systems in Linux / Python (Django) / MySQL environment.
  • Integration with 3rd party systems using various industry standard protocols like REST, SOAP, XML-RPC, etc.
  • Using sound design and data definition principles to ensure well designed, documented and maintainable code.
  • Ensure highest level test coverage of all new, and where possible, existing code.

CTO, Piccing Inc, 2010/11 - 2018

  • Piccing was a startup with a very ambitious initial core concept of being able to use your phone to take a picture of any item, and you then get a pin on a map or link to an online store of where you buy this item, including price. This was long before Machine Learning and IMage recognition became a thing.
  • I worked with the CEO and Founder before, and was asked to build the initial PoC and then to head up the Technical Operations of the company.
  • As the company grew and expanded, some of my functions included:
    • Building a strong team by honest, down to earth leadership and mentoring.
    • Understanding and evaluating current technology trends and their application and possible usage and/or impact on our tech platform.
    • Ensuring the stable and maintainable growth of our platform on a technical level.
    • Drive and find solutions to the more complex technical challenges required for the platform.
    • Improve on, and introduce new procedures and processes to streamline development and communication between the various teams and groups within the company.

Private Consulting and Contracting, 2001 - 2010

  • Contracting mainly for a Swiss company called MPW.
  • The work for MPW started off taking over a concept based system developed in Perl. The first steps were to improve and fix this system to be more production ready. Once this step was completed I was contracted to re-architect and develop a fully production ready and scalable replacement system.
  • The solution involved:
    • Understanding the business requirements and consulting on improved business and product flows before getting to the final business goals.
    • Creating a detailed spec for the full requirements, ranging from hardware selection and hosting, infrastructure, systems and communications specifications, internationalization requirements and specifications, Database and storage, backend system and business logic specification, web UI specification, system administration console, reporting and monitoring.
    • Implementation of the defined specification, broken down into manageable sections to get to a minimum viable product as soon as possible, getting feedback, managing scope creep while adjusting direction where it made sense and making incremental additions towards the final spec.
  • Continuous enhancement and feature additions to the system and building and running additional sub-projects for the company.

Developer, Foschini Data, 1993 - 2001

  • Enhancing, maintaining and developing the Distribution Center Information System (DCIS) which was responsible for warehouse stock management, picking and distribution to retail stores.
  • The first system was built on a QNX cluster consisting of various software and hardware modules working together to form the complete system. I was responsible for hardware and software as a whole.
  • Part of the team to upgrade to a newer system based on AIX and Oracle and newer control electronics. Responsibilities included being part of the team generating the specifications for the new system, as well as being lead on hardware and electronics requirements, integration and implementation.

Technical Experience

Languages and Environments

  • Python: 10+ years, Expert
  • Javascript: 8+ years, Expert, but need to brush up on latest trends
  • HTML/CSS: 10+ years, Expert, but need to brush up on latests trends
  • PHP: 3+ years, but none for the last 6 years. Expert at the time, but will need a short project to level up to expert again.
  • Shell Scripting: bash, sed, awk, etc. - 10+ years. Expert.
  • Perl: 2+ years, but none for the last 8+ years. Intermediate at the time.
  • C: 15+, but mainly used for hobby purposes now
  • C++: 15+, but mainly used for hobby purposes now
  • SQL: 12+ years. Intermediate/Expert for DB design, Junior/Intermediate for RDMS tuning and administration.

Numerous other languages learnt but never applied in production systems. If understanding how to critically think about and solve problems, any language can be learnt as a vehicle for presenting the solution. Most newer languages follow very similar patterns for syntax and structure, so that having mastered one language is very often the stepping stone to quickly learning another. Becoming expert in any language of course, takes some more time and experience.

Frameworks and libraries

  • CherryPy: 8+ years. Expert.
  • JQuery: 8+ years. Expert.
  • Django: 2 years. Intermediate.

In my experience, frameworks allows rapid prototyping, but very often results in technical debt as systems grow and become more complex. I have used frameworks when required, but mostly for smaller once off projects.

  • Flask
  • Bottle
  • web2py

Databases

  • PostgreSQL: 8+ years. Intermediate
  • MySQL: 4+ years. Intermediate.

Version Control

  • GIT: 5+ years. Intermediate.
  • BZR: 6+ years, but very limited in the last 5+ years. Expert at the time.
  • SVN: 5+ years, but nothing for the last 8+ years. Expert at the time.
  • Various older VCS.

Networking, Infrastructure and Other

  • Networking: 13+ years. Intermediate
  • Protocols: 13+ years. Varied expertise on protocols like general routing, HTTP, DNS, SMTP, POP3, IMAP, SSH, DHCP, Telnet, etc.
  • Linux: 20+ years. Mainly Debian based the last 12+ years, but also RedHat, Mint, FreeBSD, AIX, QNX.
  • Virtualisation: Fair amount of experience with LXC and acute investigations into Docker. I fully understand the concepts of virtualisation but have only had the need to build production systems based on LXC. I have investigated and built small PoCs on other virtualisation and cloud systems, and will be able to fairly quickly onboard on such systems as required.

Projects

Some of my the more notable projects I built is listed here.

Kazang / Banking Interface

  • Description: A system to allow direct EFTs to bank accounts triggered by certain POS transactions. Kazang's has extremely strict controls around banking and auditing of EFTs, and this system had to comply to these controls as the first and most important requirement. Initial integration was to ABSA for a specific beneficiary, but when this proved the concept, we had to extend this for other beneficiaries. This required designing a new full Beneficiary Management System that also has very strict controls, like multi-step, beneficiary loading, AVS, approvals and strict audit controls. The EFT processing and Beneficiary Management System was eventually amalgamated into one Banking System.
  • Contribution: Architecting and design of EFT and Beneficiary systems withing the strict controls required by the finance team.
    The system was built for use by multiple Organization Units (OU) within the bigger organization, and includes optional remote auth per OU to leverage any existing system already managing users within the OU. Extensive security using PKI and signatures are implemented to ensure Beneficiary details can not be modified via external DB access.
    Full system documentation are maintained and built as part of the code base. This allows new developers to very quickly come up to speeed with the system, and API integrators to always have the latest API spec available via a convenient internal URL.

Kazang / Zambian National Financial Switch Integration

  • Description: Zambia has recently embarked on a large project to move away from 3rd party financial transaction switching, to implementing a Zambian owned and operated National Financial Switch (NFS).
    This allows all of the numerous banks in Zambia to use a local switching network, but most importantly, it also allows the previously informal E-Wallets, provided by almost all of the Mobile Network Operators (MNO), to also participate in controlled financial transaction switching.
    The NFS platform is built on top of the extensive ISO8583 standard with various specific adaptions required for the Zambian Bank/MNO integration.
    Kazang is a very strong player in the MNO space in Zambia and a solid integration into this network was required.
  • Contribution: Architecture and design of an NFS gateway and messaging system that would function as message converter between the Kazang and NFS system protocols.
    The NFS interface is an asynchronous messaging system, while all Kazang interfaces are synchronous. This required a robust solution to ensure reliable message flows between the two time domains, while still being able to handle many hundreds of transactions per minute.
    I was the sole developer on the project, but Kazang still had the first completed and fully integrated system into the NFS, even though there were many other institutions that started their development earlier than ours, and had more resources on their projects.
    The Kazang implementation has received many compliments and has had mention of being the reference implementation.

Piccing / Curately

  • Description: This project was born based on the first (very ambitious at the time) idea of being able to take a picture using your mobile, tag or mark one or more objects of interest in the image, and for the platform to then return details on where you could purchase the tagged item (circa 2010). In addition, the platform would have a social component based on leaders and followers, recommendations, a reward system, etc.
    At the time AI and deep learning was in it's infancy as far as object recognition goes, and getting coherent product data was extremely difficult. This lead to the initial ideas and vision going through many iterations of change, which had to be accommodated by the technical aspects of the platform, for which I was responsible.
    The current state of the platform can be seen here: https://curate.ly
  • Contribution: Infrastructure (hardware, hosting, DNS, SMTP, etc.), systems architecture and design (backend as well as frontend), database, security, 3rd party integrations, technical documentation. UI design was initially done externally, and later done in-house.
    I was the only one working on this up until late 2013 when we established a development and limited design office in Cape Town after the first larger investment rounds.
    From 2014 my role started changing from being the sole developer, to appointing additional developers, managing, mentoring and guiding them to continue delivering high quality output.
    Over the next two years I started handing off more of the system and infrastructure architecture to in-house teams as I needed to concentrate on the CTO role and also building the Cape Town office.
  • Link: https://curate.ly

Mobile Reporter for Mobile Picture Website, Switzerland

  • Description: With the video and audio quality improving on mobile devices (circa 2009), MPW product development came up with a concept of a Mobile Reporter. This would be reporters sent to cover specific events with video and images, only using a mobile phone and high quality microphone.
    Since internet connectivity was not very fast at the time, they would generate video and image content that will be kept on the phone, and synced to our backend server at a later time when they can connect to a faster WiFi connection.
    These media items could be syndicated for specific news broadcasters or events organisers, but could also be made available to anyone purchasing accessing to the specific channels.
    This allowed news worthy events and footage to be made available in a much shorter time span than the traditional camera crew, in-house footage editing, broadcasting cycle that was standard at the time.
  • Contribution: Infrastructure (hardware, hosting, DNS, SMTP, etc.), architecture, database, security, 3rd party API integration, all things technical, proper API documentation. Page design and layout were done by an independent design firm.
    This project required a rethink in architecture since there were potentially many 3rd party consumers of media feeds. For this reason the architecture was essentially a RESTful API server and database, with the UI a single page JavaScript application that will consume and feed the API server via AJAX requests.
    Mobile applications (Symbian OS and J2ME) were developed by a third party that use the API to sync new content to the servers. I had to manage these projects remotely w.r.t. technical specs, API integration, testing and release management.
    Also managed and mentored a junior developer helping on the project during this time.

MPW - Mobile Picture Website, Switzerland

  • Description: One of the first (if not the first) platform that allowed the user to upload their images from cellphones, just when cellphones started including cameras on the phone. Initially uploads were via MMS sent to your email account on our platform, where we extracted the image from the MMS email and then made available online on your profile. When cellphones were later able to make internet connections, uploads were via HTTP.
    Each user had their own mobile "site" linked to their phone number. Initial rollout were to Switzerland and some other neighbouring countries. For example a user with a Swiss number of +41796339571 would have their own personal URL of http://079.ch/6339571 - this meant registering and managing a large number of domains for the various mobile carrier prefixes.
  • Contribution: Infrastructure (hardware, hosting, DNS, SMTP, etc.), architecture, database, security, 3rd party API integration, internationalization and translation management, all things technical. Page design and layout were mostly supplied which I then implemented with feedback and changes where it made sense.
  • Link: Does not exist anymore, but a very minimal view can be found on the Wayback Machine at http://web.archive.org/web/20031228103836/http://078.ch/

MPW Promotions, Mobile Picture Website, Switzerland

  • Description: Based partly on the tech developed for the Mobile Picture Website component of MPW, this leg of the business became the focus of the company.
    The system involved taking pictures, using flagship phones by Sony Ericsson and Nokia, of visitors to large and well known events across Europe and the UK.
    These images were then instantly uploaded to our system and made available at one or more print stands close to the event entrances. By the time the visitors reaches the print stand, an operator would already have printer out the picture on photo stock. The printers used we're mostly photo printers by HP.
    The printed photo usually had some form of event logo and date, and was given to the visitor in a nice see through pouch, with information about the event, phone, printer and technology used to create the souvenir of the event. In addition, there will be a web site for the event that will contain all the images taken, and allows visitors to browse it later.
  • Contribution: Infrastructure (hardware, hosting, DNS, SMTP, etc.), architecture, database, security, 3rd party API integration, all things technical. Page design and layout were mostly supplied which I then implemented with feedback and changes where it made sense.

LazyCat

  • Description: Online Airtime Shop. We were the only online shop for airtime around 2001. We partnered with the then iCanOnline bank as well as Standard Bank as payment solutions. Due to payments handled by external parties, we also had an option to be able to buy airtime without registering and account with our platform - this was an extremely popular method which made purchasing airtime very easy.
  • Contribution: I was responsible for infrastructure, architecture, database, security, 3rd party API integration, pages design and layout, financial, accounting and some business and operation aspects. My partner was responsible mainly for the business and operational side.
  • Link: http://web.archive.org/web/20070401000000*/http://www.lazycat.co.za

Other Skills and Hobbies

Electronics

Electronics has always been a passion, and I now live this out by designing and building simple systems based on Arduino, RaspberryPi and other embedded and microcontroller systems, using the plethora of DIY electronics available today. I am mainly interested in in the area of mechatronics where electronics and mechanics are combined such as in robotics, CNC machines, 3D printers, etc. On these platforms development is mainly in C/C++ or Python on the higher level systems like the RaspberryPi.

3D Printing

I own two 3D Printers, one of which I have built myself based on a general Delta robot design available on the Internet, but with many modifications both in the mechanical and electronics areas to suit my needs.
I get tremendous satisfaction from seeing a design come to life from paper sketches to 3D computer design, through to a final printed product that you can hold in your hand and/or use in practical applications.

3D Technical Design

I have always enjoyed 2D CAD design for simple home projects, but with my interest in 3D printing, this interest has expanded to 3D design. I use both pure visual 3D CAD software (http://onshape.com , as one example), as well as programmatic 3D modeling like OpenSCAD.
With my background in software development, programmatic CAD modeling comes naturally to me, and I get a lot of satisfaction from writing code that then becomes a 3D model, from which I can print a physical object.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment