Herbie Marais
Verified Expert in Engineering
Enterprise Architecture Developer
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
Experience
Availability
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)
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.
Software Development Manager
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.
Team Manager
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.
Senior Software Developer
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.
Senior Software Developer
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.
Software Developer
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.
Experience
eCommerce Systems Integration
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
- 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
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
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
Hardware Integration
Biometrics: Hand Geometry Identification/Verification
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.
Education
Professional Degree in Leadership Development
Dale Carnegie - Cape Town, South Africa
Bachelor of Science (Hons) Degree in Computer Science
University of Johannesburg - Johannesburg, South Africa
Bachelor of Science (IT) Degree in Information Technology
University Of Pretoria - Pretoria, South Africa
Skills
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
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, Nancy, .NET, Swagger
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), Windows Communication Foundation (WCF), Machine Learning, SIEM
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring