my name is Allen Firth

Software Developer and Architect

I’m a software developer and architect with over sixteen years of experience. I’ve worked in energy, finance, asset management, insurance and law in London for over six years and most recently FinTech out of Durban, South Africa. If you’re looking for a competent, experienced and enthusiastic developer / architect then I’m your man.

I have extensive experience with Microsoft technologies, primarily C# and ASP.NET MVC/API as well as web client technologies like HTML5, CSS, Javascript, AngularJS, gulp, bower and nodejs. For a more detailed breakdown of my skills and experience read on.

Phone : +27 060 840 7793 Mail : [email protected]

about

I’m looking to work on exciting projects and with people who care about technology and about providing cutting edge solutions to business problems. I’m interested in providing reliable tested software solutions to users who need them in short time frames consistently. If you’re interested in what I can bring to your team of developers and your software development cycles drop me a line.

I’m a predominantly Microsoft.NET C# developer with over sixteen years experience in architecting and developing software systems using industry recognized patterns and practises. I’m a believer of test driven development ( TDD) and the natural fit that it has with Agile and XP development methodologies. I’m interested in messaging based event driven architecture (EDA) and the loose coupling it achieves which in turn allows for highly scalable systems.

I’m also an avid supporter of domain driven design (DDD) as a way of bringing development closer to the business and effectively delivering business requirements whilst also delivering a system which mirrors in the code the way the business should run. Another paradigm I’m investigating and working with is command query responsibility segregation (CQRS) which fits nicely with the impedance mismatch between relational data structures and the object orientated world most developers live in.

Education

Bachelor of Commerce degree – Informatics

Obtained from the University of South Africa.

1999 - 2003

MCSD – MCP

Certified as a Microsoft Certified Solutions Developer & Microsoft Certified Professional

2000

skills

Core skills

  • C# / .NET / WPF / Visual Studio
  • RESTful ASP.NET Api
  • ASP.NET MVC / SignalR
  • HTML5 / CSS / jQuery / AngularJS / gulp / bower / node.js
  • Continuous Integration (TeamCity) / Deployment (Octopus Deploy)

Supporting

  • Resharper
  • TeamCity / Jenkins
  • xUnit / NUnit / NSubstitute / FakeItEasy
  • Castle Windsor / Autofac / Unity / Ninject
  • NServiceBus
  • Quartz.NET
  • Powershell

Other

  • Git / SVN / TFS
  • NAnt / MSBuild / WIX
  • TeamCity / Nuget / Octopus
  • SpecFlow

Interests

  • Behaviour Driven Design (BDD)
  • NoSql / document databases (RavenDB)
  • javascript frameworks (Knockout, Durandal, bower, grunt)

experience

Currently - SMEasy CTO (2015 - Present)

CTO - SMEasy

I am currently working as CTO of SMEasy, coordinating and managing all technical aspects of this exciting online accounting package startup for small to medium sized enterprises. My role is multi-faceted and includes the following:

Providing key technical insight to the SMEasy board in order to aid them in strategic decision making.

Overall technical leadership and guidance of the SMEasy product

Further development of product offerings

Managing and leading development resources and outside contractors

System architecture and development

Process reengineering & new technology investment

Recent Experience - Digiterre consultant (2011 - 2015)

DigiterreM & G Investments

As a consultant working for Digiterre, I am currently working with four other Digiterre consultants at M & G Investments. Our mandate is to introduce agile practices into the development team at M & G. We are incorporating Continuous integration into the development cycle, automated unit, integration and acceptance tests as well as automated application deployment and database deployment in all environments. We are also responsible for working closely with the M & G developers in a coaching and mentoring capacity to teach new skills and impart accepted industry patterns and practises and design principles.

Technologies & Methodologies used: Visual Studio, C# with DevExpress controls, ASP.NET MVC / WebAPI restful services, SQL Sever / Oracle, EntityFramework, NUnit, Git, Agile, Kanban, SCRUM, Continuous Integration, Automated deployments, Acceptance testing

DigiterreEDF Trading

As a consultant working for Digiterre, I worked on a small team of four developers in a highly agile fashion developing a small Master Data Management system and an Initial Margins tool used to calculate initial margins on all EDF Trading energy positions which would then be reconciled with the initial margin positions as specified by the clearing houses. The application wrapped a third party tool which performed the calculations and facilitated an automated process whereby input data from EDF systems was loaded on a daily basis and initial margin reports were automatically generated for the business to reconcile.

Technologies & Methodologies used: Visual Studio 2013, C#, WPF with Telerik WPF controls, SignalR, ASP.NET WebAPI restful service endpoints, SQL Sever, EntityFramework, xUnit, TFS, Agile, Kanban, SCRUM

DigiterreEON Transfer Pricing Tool

As a consultant working for Digiterre I worked primarily as the team lead on a large project for an EON Energy Trading developing a Transfer Pricing management tool. The project team was spread over London, Dusseldorf and India and required strong coordination and communication to keep the project on track. In the last two years we have brought this project to completion and are now in the process of handing it over for support and maintenance to an outsourced provider chosen by the EON.

The solution we provided made use of Oracle, server side service components and a WPF user interface. The system worked on large sets of data output by models and involved a series of calculations and data manipulation in order to output the required reports and data analysis required by the business.

Technologies & Methodologies used: Visual Studio 2013, C#, Oracle 11g, NHibernate, FluentNHibernate, NUnit, RhinoMocks, NAnt/MSBuild, DBDeploy.NET, WPF, Telerik, TeamCity, SVN, Agile, Kanban, SCRUM

Other experience (2000 - 2011)

MAN Investments – System Integration / Fx / Fund Accounting / Fee Calculation

I am working in a geographically distributed team working on systems integration of multiple disparate applications in the middle office of the worlds largest Fund of funds. Our development team facilitates systems communication between various data sources and applications using a variety of request/response and publish/subscribe messaging solutions built on Oracle weblogic / MSMQ and a custom inhouse messaging bus.

The team, uses SCRUM to run and manage month long sprints. SCRUM teams are located in different offices and communication is paramount to sucessfully completing work. Part of the teams mandate is to introduce in increasing measures the principles of Agile development, increase the test coverage of the code base and strongly push the ethos of TDD.

I have worked on various different systems including middle office fund accounting, Fee calculation, Foreign Exchange and Trade planning.

Following is a detailed list of technologies and methodologies used in this project. Development: Visual Studio 2010, C#.Data: Sql Server 2005, Oracle 10g, NHibernate. Testing: NUnit, Rhino.Mocks, TestDriven.Net Continuous Integration: NAnt scripts, Cruise Control, Hudson Other: Resharper 5, MSMQ/Oracle Weblogic for messaging and services, Log4Net for logging.

BritInsurance – Insurance - Policy Management System

I worked on a team of eight developing an online policy management system enabling BritInsurance to manage insurance sold through their network of brokers. The system was loosely coupled employing a publish/subscribe messaging model implemented with NServiceBus to achieve decoupling of logically separate components, high availability and reduce dependencies on other systems.

The team worked in an agile fashion using a continuous integration environment (Team City) alongside unit and integration testing and automated deployment to provide timely feedback to developers on the health of the codebase as a whole. A Kanban board was used to monitor and manage the project’s progress and the team operated in a self-managing style with emphasis on distribution of system knowledge amongst the whole team and each member taking responsibility for the whole system.

Following is a detailed list of technologies and methodologies used in this project. Development: Visual Studio 2008, C#, ASP.NET MVC 2.0, jQuery/JSON, X/HTML, CSS. Data: Sql Server 2005, NHibernate, fluent NHibernate. Testing: NUnit, Moq, TestDriven.Net Continuous Integration: MSbuild script, Team City Other: Resharper 4.5, Castle Windsor for dependency injection / Inversion of Control, WCF/MSMQ/NServiceBus for messaging and services, Log4Net for logging.

Freshfields Bruckhaus Derringer – Law - Contact & event management system

I worked on a team developing a contact and event management system for the management of business contacts and targeted communications with specific groupings of contacts about business events and full life-cycle tracking of those events. The application was developed using ASP.NET MVC and jQuery for client-side asynchronous UI updates.

This project was developed in an agile / XP fashion with daily stand-up meetings and an agile project management approach utilizing regular two week development iterations with tasks, defects and spikes assigned to team members for each iteration. The core technology platform was ASP.NET MVC 1.0, jQuery, WCF services and Sql Server 2005.

The application also made extensive use of existing business infrastructure components and datastores resulting in a loosely-coupled, strong SOA design in the backend.

Following is a detailed list of technologies and methodologies used in this project. Development: Visual Studio 2008, C#, ASP.NET MVC 1.0, jQuery, X/HTML, CSS. Data: Sql Server 2005, NHibernate, fluent NHibernate. Testing: NUnit, Rhino Mocks, TestDriven.Net, WaitN, QUnit. Continuous Integration NAnt build script, CruiseControl.NET, NCover for code coverage statistics, FXCop for rules adherence, Windows Installer XML (xml) for generating MSI installer file Other: Spring.NET for dependency injection / Inversion of Control, WCF/MSMQ for messaging and services, Log4Net for logging.

Freshfields Bruckhaus Derringer – Law - Budgeting management tool

I worked as part of large team developing a budgeting application for the firms internal budgeting and cost monitoring of matters. The application was a web based tool relying on data from disparate systems from finance to firm control work management systems. Users of the system would budget costs of estimated work catering for different partners, fee-earners and other resources at different exchange rates. The budget was then eventually compared against actual outcomes of work done on a matter and various reports were available to help monitor the progress of a budget.

The budgeting tool was developed using agile / XP practices and methodolgies. Daily stand-up meetings, bi-weekly development iterations and breakdown of work into stories, tasks, defects and spikes. the application was developed in ASP.NET with ASP.NET Ajax 1.0 for a responsive, interactive UI.

The MVC/Model 2 architecture was used and test coverage of over 90% was achieved on the code base. The application interacted with multiple firm-wide components using WCF services and messaging using SOAP over TCP resulting in a loosely-coupled, service orientated enterprise architecture.

Following is a detailed list of technologies and methodologies used in this project. Development: Visual Studio 2008, C#, ASP.NET, ASP.NET Ajax 1.0, X/HTML, CSS, Javascript Data: Sql Server 2005, NHibernate, fluent NHibernate Reporting: Sql Server Reporting Service 2005 Testing: Test-Driven NUnit, Rhino Mocks, TestDriven.NET Continuous Integration: NAnt build scripts, CruiseControl.NET, NCover for code coverage statistics, FXCop for rule adherence, Windows Installer XML (WIX) for generating MSI installer file Other: Spring.NET for dependency injection / Inversion of Control, WCF/MSMQ for messaging and services, Log4Net for logging.

TDH – Logit: Fault logging / helpdesk system

A web-based fault logging application for SMME’s in the service industry. A CRM based system for realtime logging of faults, call outs and maintenance requests. It is able to give customer references, track jobs, job priorties, job updates, customer follow-ups and alerting of exceptions and SLA outages. Additional features such as PDA compatibility for technicians who are out on call to log updates directly to central system.

I was the lead developer on a project developing an online help desk system covering ticket management from inception of the problem call to the help desk staff through the life-cycle management of the process of resolving the problem.

The project started out as an internal mechanism to track defects in the life cycle of systems development projects and later developed into a company product.

Following are the technologies and methodologies used in this project. Development: Visual Studio 2008, C#, ASP.NET, ASP.NET Ajax 1.0, X/HTML, CSS, Javascript. Data Sql Server 2005, custom object relational mapper built by myself.

TDH – SMS / Text message Portal

An online tool used to manage lists of contacts and manage the process of sending mobile text messages to individual contacts or customized groups of contacts.

Technology: Visual Studio 2008, C#, ASP.NET, ASP.NET Ajax 1.0, X/HTML, CSS, Javascript, Sql Server 2005, custom object relational mapper built by myself.

TDH – Genesis: Light weight Business Intelligence reporting tool

I was a developer on the Genesis product, a light weight business intelligence tool specializing in reporting and data analysis on diversified data platforms.

Technology: Visual Studio 2005, C#, Windows Forms, Sql Server 2005, MS Access.

TDH – Axon: A pharmaceutical SMS reminder service

A web-based applicaton that sends SMS reminders to patients on Chronic Medication. It comprehensively manages the automated sending of scheduled text messages as a reminder service for patients suffering from chronic diseases that are required to adhere strictly to specific drug regimen. It sends them a reminder message everytime they are required to take their medication.

Technology: Visual Studio 2005, VB.NET, ASP.NET, X/HTML, CSS, Javascript, Windows Forms, Sql Server 2005.

TDH – Esther: Patient management system for HIV/AIDS patients on Anti-Retroviral medication

An electronic management system for patients on Anti-Retroviral Treatment. It manages both the individual AIDS patient on treatment as well as the treatement site’s ARV programme. It was a server based application that could be used in the most resource poor settings such as a rural clinic or NGO treatment site as well as in large urban hospistals.

I developed a patient management system named Esther which had a strong monitoring and evaluation component, developed in C# 2.0 and SQL Server 2005. The system managed patients on anti-retroviral treatment (HIV/AIDS) and has TB, PMTCT, VCT and other modules. It reported on a wide variety of indicators including the KZN DOH Weekly Status Report, DORA indicators, charts and graphs.

The system included alerts as to number of patients due on a particular day for which area and other daily management reports. This system was developed as a desktop application. It contained a custom update mechanism to facilitate rollout of changes and updates and a licensing component to prevent illegal usage of the application. It was developed with a smart-client, partially disconnected architecture in mind and a central replication facility to centrally merge and report on data from disparate sites.

Development: Visual Studio 2005/8, C# Data: Sql Server 2005, custom object relational mapper (ORM) built by myself Reporting: Sql Server Reporting Defination Language (RDL) files Continuous Integration: MSBuild, NAnt build scripts.

TDH – JobLink: A recruitement application

A web-based job linkage system for skills matching of unemployed or under-employed candidates with vacancies in the job market. It is designed for SA municipalities and includes access to training opportunities, SETA (learnerships), Social Welfare information on candicates and a module for SMME profiling. Job-link is custom software designed for the public sector in South Africa.

I lead a small team of developers in building the job linkage system, which captured information on Candidates; Small Business Candidates; and Recruiters. It produced CVs for candidates from the fields captured that can be printed or emailed to prospective recruiters.

TDH – Veridot: Asset Management System

I was lead developer on the Veridot asset management and tracking application. A web application used to list and manage assets tagged with a special security microdot for identification.

Technology: Visual Studio 2005, C#, ASP.NET, ASP.NET Ajax 1.0, X/HTML, CSS, Javascript, Sql server 2005

contact

Contact Information

Email : [email protected]
Web : allenfirth.info
Tel : +27 060 840 7793