I have worked on various projects, of which a selection are shown below.
I implemented a cron job integration to pull data from a third-party API and upload it to an AWS S3 bucket. I configured the job to run in AWS EventBridge on a daily schedule. The job calls an API endpoint that I implemented which in turn pulls data from a third-party.
I also created a bucket policy on the AWS S3 bucket to secure access whilst allowing access to internal systems. The AWS EventBridge rule was implemented in an AWS CloudFormation template.
The data uploaded to the S3 bucket enabled the business to gain analytical insights and identify opportunities to increase company revenue.
I delivered a complex financial calculation feature for end users to provide them with information about promotions and offers. This feature involved various calculations based on the product features, which I produced a thorough documentation for to ensure clarity, understanding and to promote knowledge sharing. The documentation covered the following
Providing information about promotions and offers empowered and instilled confidence in end users to help them make informed decisions whilst using the system and increased customer satisfaction. This in turn helped the reputation of the company in remaining competitive and relevant to the market.
I have implemented various API endpoints in .NET, some of which were queries and others which were commands. Some of these endpoints interacted with a third-party API whilst others interacted with an internal system (either through other APIs, database CRUD operations or sending email or messages to an AWS SQS queue).
Using CQRS with the MediatR package, these endpoints were developed using Clean Architecture to ensure a clear separation of the Presentation, Application, Infrastructure and Domain layers. I wrote an extensive suite of unit and integration tests to ensure as much code coverage as possible, carefully considering API inputs and outputs, validation, errors as well as edge cases.
The various endpoints developed provided new and enhanced features to end users such as enabling them to register for events, sending notifications and emails, expanding upon the existing business offerings.
Whilst maintaining several Azure DevOps Pipelines, I resolved build and deployment issues.
DotNetCoreCLI@2 task previously referred to *.dll files to run tests in .NET 6, but to get this working in .NET 8, I had to change that reference to point to *.csproj files instead.Resolving the issues removed critical blockers for other developers, enabling them to continue making deployments and keeping the pipeline in a working state.
Whilst investigating solutions for problems that arose during feature development and bug fixing, Copilot AI has formed part of my problem solving strategy balanced with Google searches, reading documentation, and watching YouTube videos.
It is important to me to fully understand, fact-check and verify what AI suggests as I am fully aware of AI hallucinations where there is potential for inaccurate information to be generated.
It is also important to me to have a balanced and reasonable use of AI in my day to day work. Ignoring it would leave me behind the curve, and over-reliance on it can produce problematic (unmaintainable and unscalable) solutions.
A reasonable and balanced use of Copilot AI has helped me to find solutions to problems more quickly, has helped to clarify my understanding of certain concepts and has helped to write test cases under my close supervision. This has enabled me to deliver features and bug fixes to end users more quickly and efficiently, increasing the reliability of the applications I've worked on and maintaining the reputation of the business.
I have created a suite of end-to-end automation tests using Selenium WebDriver with C# to cover core functionality and critical user journeys in various web applications such as logging in and out, navigating to different pages as well as performing various actions such as filling out and submitting forms.
The suite of end-to-end automation tests increased code and functionality coverage, enabling bugs to be caught earlier in the development lifecycle, reducing the cost of development and reducing manual effort in regression testing.