Various

(Lead Consultant, Senior Consultant, Senior Developer)

March 2013 - June 2016
Melbourne ๐Ÿ‡ฆ๐Ÿ‡บ

I held a variety of roles at Readify between 2013 and 2016, increasing in seniority. Below are some of the projects that I participated in.

Skills

Agile
Akka.NET
ASP.NET MVC
C#
CSS
Dapper
Distributed Computing
Entity Framework
F#
HTML
JavaScript
LLBL Gen Pro
MSSQL
Redis
Scrum
SpecFlow

Projects

Distributed Computing (Akka.NET)

My client had a back office processing system which could only run outside of business hours and needed to execute daily. At the time, it could take around 12 hours for it process and the amount of data to process was only increasing. Billions of dollars of wealth and equity were being processed by this system.

I designed and led the development of a high-scale distributed computing solution as a pilot to be used as a basis to eventually replace the aging system. It used an actor model architecture powered by Akka.NET. The pilot was then greenlit to be developed into a production ready solution.

There was significant complexity in what we were trying to achieve as we needed to ensure that the data integrity of financial records remained intact whilst at the same time needing to manage large amounts of state across multiple servers whilst processing.


Akka.NET
C#
Dapper
Distributed Computing
MSSQL

Performance & Scale

A large enterprise customer had a multitude of performance and scale issues which made the platform slower than expected, and at times inoperable without a restart. They established a task force (team) to investigate issues, identify root causes, and then remediate if possible. I was responsible for leading the .NET element of that team.

My team would dig into the architecture & design of the product, use tools such as SQL Performance Profiler and looking at memory dumps using WinDbg. Some of the initiatives we undertook were:

  • Introducing Redis to reduce the load on the database, including for session state management.
  • Identifying areas where IDisposable was not being called and introducing patterns (including a Roslyn analyzer to identify possible breakages) to ensure that unmanaged memory resources were cleaned up to remove memory leaks.
  • Running brownbags on performance and scale topics (as well as other .NET topics).
  • Making (or attempting to make) changes to the client's core libraries to optimise their memory and database utilisation, or by creating reference design patterns that could be rolled out across the large implementation by other teams.

ASP.NET MVC
C#
Entity Framework
MSSQL
Redis

Accounting - Performance & Scale

A client that has a cloud-based account software product was experience performance and scale issues, as one of their products had not originally architected and designed for the cloud. One of the issues related to the performance of executing SQL queries through LINQ to SQL. I was part of a team that was responsible for replacing those queries with LLBLGen Pro. As this was also an opportunity to reduce technical debt, we also refactored associated code to make it testable and created BDD (behaviour driven development) tests using SpecFlow.

In addition, the client wanted to improve their import data capability. I was able to convince them to try doing this with F# as it provided far better mapping capability and could produce the outcome with much less code than C#.


C#
F#
LLBL Gen Pro
MSSQL
SpecFlow

Travel Client

A travel industry client had recently acquired another business and was looking to use their existing website code as a replacement for the system their acquisition currently had, but with the acquisitions branding. I was brought in to assist with this migration.

Throughout this engagement, I also identified a significant bug (which was the result of a design issue) with a particular edge case of the flight search engine that they had, requiring me to rewrite a major portion of that algorithm.


ASP.NET MVC
C#
CSS
HTML
JavaScript
MSSQL