Morné Fourie - Senior .NET Developer and Team Lead

Hello, I'm Morné Fourie

Full-stack MVC .NET Developer. | Team Lead. | .NET Software Architect. | Javascript Developer. | SQL Developer. | Inquisitive Thinker. | Passionate Mentor.

Bellville, South Africa

Morné Fourie

.NET Software Architect. Team Lead. Full-stack MVC .NET Developer. Javascript Developer. SQL Developer. Inquisitive Thinker. Passionate Mentor.

.NET Development

ASP.NET Core & ASP.NET Framework
ASP.NET MVC & Web API framework
NancyFX MVC & API framework
Identity Server, OAuth2, OpenID Connect, JWT
Policy Server authorisation
REST, GraphQL, SOAP, WCF
Entity Framework, Dapper, Marten
StructureMap, SimpleInjector and ASP.NET Core built-in IoC Container
SeriLog, Log4Net and many more
xUnit, NUnit, MS Test
Active Directory, LDAP Integration
Windows Forms, WPF
ASP.NET Web Forms

Micro-services

Docker, Kubernetes, Helm
Rancher
OpenShift
ServiceFabric

DevOps

CI/CD & GitOps
Azure Pipelines
Jenkins
TeamCity
Octopus

Front-end Development

HTML5 & CSS3
Javascript, ES6, TypeScript
NPM, WebPack, JWT
Vanilla JavaScript, jQuery
Bootstrap & Material Design
(This very CV is a great example!)
End to End testing with Cypress.io

Database Development

Deep experience in SQL Server and PostgreSQL
Postgres JSONB and LTree
Database design
Database source control
Views and Stored Procedures
Custom DPEs for SSRS
SQL Server Geography and Geometry APIs
SQL Server Data Replication

I also have Java skills

Handy when .NET and Java teams integrate on larger projects.

Spring Boot / MVC / IOC
SOAP / REST Web Services / RetroFit
JSP / Vaadin
JPA / Hibernate / Gorm
JUnit
Log4J
Grails
LDAP / Active Directory Integration

Social Profiles

Professional Profile

I started programming at the age of 14, and received a national award in the same year.

 

Today I am a customer focussed senior .NET developer with a passion for well architected solutions that deliver business value early on. The detail is important to me.

 

I love exchanging ideas and mentoring hungry developers. My team often hears me rant about the importance of the SOLID principles and leaving architectural choices to the last responsible moment.

 

I believe in building the simplest solution first, allowing the relevant design patterns to emerge naturally as part of the refactoring process.

 

I follow best practice coding standards in the form of the .NET Framework Design Guidelines as documented on MSDN. Any developer who is familiar with the .NET framework, will be comfortable with the code conventions in the delivered codebase.

 

Robust, readable and maintainable code is important to me. Short deployment cycles are more important than avoiding minor bugs.

 

Every project is different. I use the best tools for the job. Refactoring and code quality tools are standard. I have a professional and systematic approach to everything I do.

 

I charge a little more because I invest a lot of time in sharpening my skills and staying abreast of the latest technologies.

“If you think hiring a professional is expensive, wait ‘til you see what an amateur costs you”

Cups of coffee

Lines of code

+

Unit tests

What I do

My Skills and Experience.

.NET Development

I specialise in ASP.NET Core web development, with a strong focus on Web API's and MVC frameworks.

  • ASP.NET Core & ASP.NET Framework
  • ASP.NET MVC & Web API framework
  • NancyFX MVC & API framework
  • Identity Server, OAuth2, OpenID Connect, JWT
  • Policy Server authorisation
  • REST, GraphQL, SOAP, WCF
  • MSMQ / NServiceBus / RabbitMQ / Redis
  • Entity Framework, Dapper, Marten
  • StructureMap, Lamar and Core built-in IoC Containers
  • SeriLog, Log4Net and many more
  • xUnit, NUnit, MS Test
  • Active Directory, LDAP Integration
  • Windows Forms, WPF
  • ASP.NET Web Forms

Micro-services

I help teams on their containerisation journey:

  • Deep experience in Docker, Kubernetes, Helm
  • OpenShift experience
  • ServiceFabric experience

Front-end Development

As a JavaScript and TypeScript developer, I spend my time with:

  • HTML5 / CSS3
  • Javascript / ES6 / TypeScript
  • NPM / WebPack / JWT
  • Angular / ReactJS / jQuery
  • Bootstrap / Material Design
  • Automated End to End testing

SQL Development

When database requirements go beyond CRUD and ORMs, I focus on:

  • SQL Server & PostgreSQL
  • Trees & Hierarchies
  • JSON & JSONB data
  • Database design
  • Database source control
  • Views and Stored Procedures
  • Indexing and Performance Tuning
  • Custom DPEs for SSRS
  • SQL Server Geography and Geometry APIs
  • SQL Server Data Replication
  • High Availability
  • Disaster Recovery

Java Development

My Java skills come in handy when .NET and Java teams integrate on larger projects. I have experience in:

  • Spring Boot / MVC / IOC
  • SOAP / REST Web Services
  • JSP / Vaadin
  • JPA / Hibernate / Gorm
  • JUnit
  • Log4J
  • Grails
  • LDAP / Active Directory Integration

Integration with Financial Systems

I have extensive experience in the financial sector. My billing engine (2011-2016) passed Deloite audits every year. I have a deep understanding of:

  • Accounting Systems
  • Corporate Investment Banking platforms
  • Peer to peer lending platforms
  • TransUnion and Experian credit bureau APIs
  • PaySoft Bank Verification API
  • Integration with Pastel Partner (my own API)
  • Integration with Sage Evolution SDK
  • SagePay Debit Orders
  • SagePay Payment Gateway
  • PayFast Payment Gateway
  • MyGate Payment Gateway
  • Absa Host-to-Host service
  • FNB SFTP service

DevOps and Infrastructure

I feel right at home with:

  • CI/CD & GitOps
  • TeamCity, Jenkins, Octopus
  • Azure Pipelines
  • Git, Git Flow, Trunk-based Development
  • IIS, Apache, Nginx, Kestrel
  • Jira & Confluence
  • Automated end to end testing
  • Postman & Fiddler

I'm a Lead .NET Product Engineer at ABSA Corporate and Investment Banking in Cape Town, where I design and develop an application platform for other teams to address cross-cutting concerns such as identity, permissions, auditing, languaging, notifications and more.

I work with an amazing team and I'm extremely happy at my current employer.

Curriculum Vitae

My education and experience.

Education

Self-study

I keep abreast of the latest technologies by following open source repositories, podcasts, blogs and Twitter feeds. I also watch training videos and read books on the latest development topics.

Self

2005 - Current

National Certificate in Datametrics

My studies centered around systems analysis and various design methodologies. I use UML, Use Case, Flow Control, Timelines and other diagrams in my technical documents.

UNISA

2003 - 2004

Advanced Delphi and Oracle Course

My first in-house CRM was written in Delphi. This course helped me to master the more advanced concepts, and also introduced me to Oracle databases.

Dakota Training Centre

2002

Microsoft Certified Systems Engineer (MCSE)

My MSCE certification enabled me to administer and maintain Microsoft Windows Servers and provided me with the necessary network skills.

Dynamix Training Centre

2000

Experience

Identity and Authorization platform

I'm a Lead Product Engineer at ABSA Corporate & Investment Banking, where I'm responsible for multiple micro-services. One of my personal highlights to date was designing the new permission system, and taking it to production.

ABSA CIB

2018 - Current

Peer to Peer Lending Platform

Rainfin invited us back to help solve inefficiencies in their system. We were able to address many performance issues and added much needed features for them to expand into new markets.

We also implemented a lending platform for the 4AX exchange, who partnered with Rainfin to boost SME growth in Africa.

DVT / RainFin / 4AX

2017

VIN Database

MiX Telematics needed to create more efficiencies in terms of their tracking device installations. As a DVT contractor I was asked to design and implement a VIN database and API that would query external providers to store the Make, Model, Year of a vehicle based on it’s VIN number. The application provided a way to build proprietory device scripts from known snippets based on the VIN number.

DVT / MiX Telematics / Matrix Vehicle Tracking

2017

Custom Data Processing Extensions (DLLs) for SSRS

It is estimated that only 20% of all data is tabular and can be stored in relational databases. MiX Telematics needed their SSRS reports to bind to other data sources like SOAP and REST Web Services.

Enter the Custom Data Processing Extension (DPE)! As a DVT contractor I was responsible for implementing a set of DLLs for deployment alongside SSRS, to enable RDLs to access non-SQL data via Web Services.

Complex business rules could be implemented and data could be merged from various sources, greatly simplifying the report design.

I was also responsible for implementing changes to the ETL processes from the OLAP databases to the Staging and Warehouse databases.

Part of my support duties was to troubleshoot trip data using SQL Server Geography and Geometry APIs.

DVT / MiX Telematics / Matrix Vehicle Tracking

2015 - 2016

Peer to Peer Lending Platform

RainFin's lending marketplace is an alternative way to borrow or lend money. It directly connects borrowers and lenders, allowing for cheaper credit for borrowers and better returns for lenders.

As a DVT contractor I was responsible for completing the SME version of the application, along with 3 other developers. I learnt from one of the best architects in South Africa.

We also ported the PHP version of the Personal Loans application to a .NET MVC application.

The Personal and SME applications consumed web services exposed by the core system, and also did live credit checks.

DVT / RainFin / Absa

2015

Solutions Architect and Project Manager

Curro Holdings upgraded both their academic and financial systems in 2014. The 3rd party academic system was retired in favour of a new in-house web-based system built on Grails and Vaadin.

As project manager I was responsible for gathering user requirements from academic and financial specialists. We collaborated on a shared specification document, which I enhanced with technical details and UI wireframes.

I managed an agile process with the external developers using Jira.

Curro Holdings

2014

Data migrations from Pastel Partner to Sage Evolution

The business needed to migrate their Customer, Supplier and General Ledger history from 50 separate Pastel Partner databases into 10 Sage Evolution databases. Evolution was configured with segmented GL's and branch accounting.

I combined my own Pastel Partner SDK with the Sage Evolution SDK to migrate the transactions to the new system.

The trial balances were signed off by the financial department and balanced to the cent. Deloitte audits were also successful.

Curro Holdings

2014

Budget Manager Application (Java EE)

When a junior Java developer unexpectedly resigned, I had to cross over to the "dark side" to rescue a Budget Manager Spring MVC application to meet deadlines.

The application was used by management for budget forecasting from historical data and external sources.

Curro Holdings

2013 - 2014

Database replication to 33 sites

Do you remember 4MB ADSL? Because of slow internet connections between schools, Curro could not centralise their critical systems. Financial data resided at the Head Office while academic data was managed at each school.

I implemented and monitored a replication strategy to synchronise financial and academic data between sites.

I used SQL Server Merge Replication and an ASP.NET web portal on each site so that the staff members could process invoices and billing remotely.

Curro Holdings

2012 - 2013

ETL implementations (SSIS)

We ran a very lean operation in those days. Besides Software Development I also wore the database administrator hat. I implemented ETL processes to stage subsets of data on the company's public facing website.

The data was used by the self-help customer portal.

Curro Holdings

2012 - 2013

Reporting (SSRS)

I designed a number of web-based reports using SSRS.

The reports were used by financial users, including auditors.

Curro Holdings

2012 - 2014

Debit Order implementation

Curro retired their bank's debit order system in favour of a new ASP.NET web platform where the school bursars could efficiently administer the parents' debit orders.

The debit order system interfaced with Netcash (now SagePay) and fed transactions into Pastel Partner (and later Sage Evolution).

Curro Holdings

2013

Billing Engine

I designed and implemented the Synergy billing engine which was at the heart of Curro's cashflow provisioning.

The billing system which would take inputs such as attendance records and class lists from the 3rd party academic system for monthly billing. I implemented an ASP.NET solution that would generate batches for import into Pastel Partner. Exception reporting helped the bursars to validate the external inputs before generating the monthly invoices.

In 2015 Synergy generated more than 30000 monthly invoices for study fees and other adhoc fees and stored them in Sage Evolution.

Parents could view their statements online and pay online.

Curro Holdings

2010 - 2014