Herbie Marais, Developer in Cape Town, Western Cape, South Africa
Herbie is available for hire
Hire Herbie

Herbie Marais

Verified Expert  in Engineering

Enterprise Architecture Developer

Location
Cape Town, Western Cape, South Africa
Toptal Member Since
February 15, 2016

Herbie has a passion for complex business logic and finding the right patterns to encapsulate it. He can work under immense pressure and is a natural leader who leads from the front. His code is always well-structured and extendable. He will always choose proven stability and scalability over bleeding edge.

Portfolio

MiX Telematics
Amazon Web Services (AWS), Azure, VMware, C#, SIEM, ISO 27001, ISO 27002
MiX Telematics
Swagger, Web, Redis, MSMQ, Microsoft SQL Server...
MiX Telematics
Redis, Service-oriented Architecture (SOA), Entity Framework, IIS, SQL, Nancy...

Experience

Availability

Part-time

Preferred Environment

Amazon Web Services (AWS), Subversion (SVN), Git, Microsoft SQL Server, C#

The most amazing...

...dev team I've led is my current team; they are creating a system that processes/calibrates live data coming in from thousands of vehicle tracking devices.

Work Experience

Software Development Manager (Operations)

2020 - PRESENT
MiX Telematics
  • Managed a team of highly skilled and passionate infrastructure engineers and database administrators tasked with information security compliance-related maintenance in our seven data centers worldwide.
  • Guided the department through our ISO 27001 certification.
  • Drove the development of tooling used in the maintenance and management of live environments.
  • Established best practices concerning business continuity within the team.
Technologies: Amazon Web Services (AWS), Azure, VMware, C#, SIEM, ISO 27002, ISO 27001

Software Development Manager

2016 - 2020
MiX Telematics
  • Led a team of eleven developers and four testers in an Agile development environment.
  • Reviewed functional specs with a business analyst (BA), drew technical specs, and reviewed them with the development team. Oversaw development and managed project delivery, giving regular feedback to stakeholders.
  • Conducted regular meetings under the guidance of the software architect and head of software development with peers to ensure common technological direction.
  • Contributed to the hiring process, from initial screening to final interviews.
Technologies: Swagger, Web, Redis, MSMQ, Microsoft SQL Server, Amazon Simple Queue Service (SQS), Apache Kafka, .NET Core, .NET, C#

Team Manager

2014 - 2016
MiX Telematics
  • Led a team of extremely skilled senior developers and testers.
  • Groomed new technical features to be implemented by the team.
  • Managed projects, responsible for all aspects of my team's work, including work allocations/scheduling and making sure target dates are met.
  • Worked closely with our H&O department, assisting them in infrastructure design and setup and making recommendations towards server specifications and more. I have become very familiar with the capabilities of the trade tools like Active Directory, Remote desktop tools like RD-Tabs, VMWare, Hyper-V, and AWS hosting services.
  • Supervised eleven people and with the expectation that I still have to generate code; I had to very quickly learn how to effectively manage my time, so that I am never the bottleneck for any of my team members to do their work.
Technologies: Redis, Service-oriented Architecture (SOA), Entity Framework, IIS, SQL, Nancy, MSMQ, C#

Senior Software Developer

2012 - 2014
MiX Telematics
  • Went off-site with team members to rewrite an entire suite of client-facing applications into a single web interface, backed by a REST API.
  • Assisted in the design and most of the development of the user management module of the new web-based platform.
  • Led the introduction of Entity Framework as an ORM for selected modules within the new platform.
  • Created various Windows services that process messages received via MSMQ. Messages are then either passed on to the next component within the SOA system or persisted into the target data store.
  • Created an engine that renders a user interface based on rules in a SQL database. This was needed because this particular system is extremely dynamic and constantly evolves. Having to make code changes to support each new feature that is released is not an option. Hence, the rules for the new features are distilled into the database and all the surrounding components simply act on it.
Technologies: Service-oriented Architecture (SOA), Entity Framework, IIS, SQL, Nancy, MSMQ, C#

Senior Software Developer

2010 - 2012
Tiple Point Technologies
  • Led the company's move from Dephi to C#.
  • Created an n-tier framework that uses Fluent-NHibernate as an ORM to be the backbone of all future development The framework's purpose was to be easy to develop against and to make sure that any third-party tools we used, like NHibernate, are properly abstracted and that no dependency to these tools bled into the business code.
  • Led a team of developers across multiple time zones. (US, India, South Africa).
  • Familiarized myself with the DevExpress WinForms tools to build rich desktop clients.
  • Created REST services exposed via WCF for WinForms apps to connect to.
  • Designed and implemented a caching framework so that data with different lifecycles could be cached seamlessly. The framework took care of cache creating, invalidation, and clean-up when the services are stopped.
  • Approved technical specifications for business code/features drawn up by other developers before development started. Wrote technical specifications for framework code to be implemented by myself and a select group of developers.
Technologies: IIS, Windows Communication Framework (WCF), SQL, C#

Software Developer

2007 - 2010
Saflec Systems
  • Rewrote a legacy application originally written in VB6 to C#.
  • Created a Windows service that controls the "Goldfinger" metal detection system.
  • Integrated various third-party biometric devices into our access control system.
  • Gained firsthand experience dealing with clients and installing both hardware and software on-site.
  • Created a data layer generator that would generate the data-access code for the existing system. This was chosen over an ORM like NHibernate because it generated code that could then be optimized by hand where needed.
Technologies: Transmission Control Protocol (TCP), SQL, Visual Basic, C#

eCommerce Systems Integration

I developed a complete system to integrate data flow between the storefront of a well known eCommerce platform with the warehousing and fulfillment system of my client.

The architecture was designed to be extensible and maintainable by any future developer my client could potentially employ and included the following workflows.

Order Import/Submission
- The storefront would submit orders in cXML form to an API I created. The API would then validate and process the order into the format required by my client's warehousing and fulfillment system.

Inventory updates
- The warehousing/fulfillment system periodically, or by user instruction, updates inventory levels from my client's system into into the storefront's back-end using their SOAP web services.

Shipment notifications
- The warehousing/fulfillment system notifies my integration system by means of a file drop that an order has been shipped. My system the collects the required information and submits it via XML post to

This system was written in C# using the following tools/frameworks
- Dapper.NET
- Entity Framework
- WebAPI2 + Swagger
- Quartz
- Windows Services
- IIS
- SQL Server
- SOAP
- cXML
- REST

Data Import/Transformation

I developed a data transformation system that would take an XLSX spreadsheet uploaded by the user and do the following:

- Validate the data
- Look up various data, like product keys and employee numbers
- Audit logging
- Output a CSV file with the data transformed from the user's XLSX format into the format required by the client's shipping/fulfillment system.

Data Procesing Services

This is a set of services that will eventually replace a component that was originally written in C++. The legacy component has almost no separation of concern and has grown into a single monolithic component that is the backbone of our business.

I designed the new data processing services to be modular and scalable, so that they can be deployed in a heavily load balanced environment. Efficiency and horizontal scalability were non-negotiable during the design.

The services use message-queuing to send messages between on another but great care was taken not to be bound to a specific queuing tech.

The goal of these services is to be able to handle the data coming in from more than 500,000 tracking devices, at frequencies greater than 1 message every five seconds from each devices. Even though the system is designed to run in a heavily load balanced environment, we have a mandate to keep the operating cost of the system as low as possible. To achieve this, I had to come up with a design that promotes modularity without sacrificing performance.

Data Driven UI

A core component at MiX Telematics that sets them apart from their competitors is what they call "unit configuration." In short, the onboard computers (OBC) execute a proprietary scripting language. For efficiency, the scripts are compiled into a binary format synonymous to machine code i.t.o. conventional programming languages.

This allows them to make the OBC do new things without firmware changes, they simply need to upload a new binary to the OBC.

Because of the dynamic nature of the business and the rate at which very diverse features are added, making code changes/deployments to the user interface every time a new feature is made available is out of the question.

To overcome this the new behavior is broken up into rules in the database.These rules are then consumed by an "engine" that renders a user-friendly web interface unique to that device/feature. The customer can then customize the behavior. Once the customer has saved the changes, a compilation service is invoked offline that will generate the configuration script and compile it into the binary format for the OBC. This allows for the rapid deployment of new features because it only requires that the new rule sets be added to the database.

N-Tier Framework

At Triple Point Technologies, I was the lead designer/developer for the new framework that was to carry the next generation of systems in the company. The framework was designed so that it had absolutely no dependency on the business code that the company deals with. It made sure that all third-party technologies, like logging, message queuing, and data access (NHibernate) are properly abstracted, not only to ensure that we don't get tied to a technology that might reach end-of-life, but also to make it easier for a developer that is not familiar with the tech to use it.

Hardware Integration

At Saflec Systems, I wrote modules to integrate with various third-party biometric devices. The most significant of which was an extension that integrated the HandPunch (http://www.handpunch.com/) into our access control system. This involved marshaling their undamaged C binaries into our C# software. I also bypassed some of the calls in their SDK and reverse-engineered the protocol by sniffing the packets on the TCP link between the device and the software in order to get better performance.

Biometrics: Hand Geometry Identification/Verification

As part of my honors degree at the University of Johannesburg, I created my own hand geometry identification/verification device/software.

I built an enclosure that created a controlled environment where the software uses a simple webcam to take multiple pictures of the subject's hand.

I then created my own algorithms to process these images into a template that can be matched against previously stored templates.

Using a very accurate scoring system, the best match is then pulled from the database and the subject is identified by only the shape of his/her hand.

What makes this solution so unique is the fact that the hand is held in free air, so there is no contact with the device. This is an existing limitation of most biometric devices, is that they require physical contact with the scanning device, and creates hygienic concerns.

The source code of this project belongs to the university, but I can make some of the documentation available upon request.

Languages

XML, C#, Visual Basic 6 (VB6), Visual Basic .NET (VB.NET), Java, Visual Basic, SQL, C, C++, JavaScript

Frameworks

ASP.NET Web API, NUnit, NHibernate, NancyFx, Entity 6, .NET Core, Windows Communication Framework (WCF), Nancy, .NET, Swagger

Libraries/APIs

REST APIs, Moq, Windows Forms (WinForms), Entity Framework

Tools

Azure DevOps Services, GitHub, Git, TortoiseSVN, TortoiseGit, Hyper-V, NuGet, TFS, Subversion (SVN), Amazon Simple Queue Service (SQS), AWS CodeDeploy, Amazon CloudWatch, VMware

Paradigms

RESTful Development, REST, Inversion of Control, Design Patterns, Agile Software Development, Waterfall Development, Scrum, Microservices Architecture, DevOps, Management, Service-oriented Architecture (SOA)

Platforms

Windows Server 2012, Windows Server 2016, Amazon Web Services (AWS), Amazon EC2, Apache Kafka, Web, Azure

Storage

Microsoft SQL Server, MySQL, Redis

Other

Domain-driven Design (DDD), Enterprise Architecture, Team Mentoring, System Architecture, Software Architecture, Windows Services, Multithreading, MSMQ, IIS, Data Structures, Information Security, Mentorship & Coaching, Leadership, Architecture, Neural Networks, SOAP, Biometrics, SMTP, ISO 27002, Cloud Security, Risk Management, Creative Problem Solving, ISO 27001, Transmission Control Protocol (TCP), Machine Learning, SIEM

2015 - 2015

Professional Degree in Leadership Development

Dale Carnegie - Cape Town, South Africa

2009 - 2010

Bachelor of Science (Hons) Degree in Computer Science

University of Johannesburg - Johannesburg, South Africa

2003 - 2007

Bachelor of Science (IT) Degree in Information Technology

University Of Pretoria - Pretoria, South Africa

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring