Invite Freelancer to Project
You don't seem to have an active project at the moment. Why not post a project now? It's free!Post a Project
- N/AJobs Completed
- N/AOn Budget
- N/AOn Time
- N/ARepeat Hire Rate
Senior Software EngineerJan 2016
Involved in designing and building a smart meter top-up solution for energy sector. The solution involves building a number of Rest Web API services that talk to different systems, including a HSM module.
Senior C# DeveloperAug 2015 - Jan 2016 (5 months)
Part of Cloud team, which is responsible for developing a Web API which will be consumed by the Web UI application. Implemented an exception management framework using functional programming and monads. The application is written in [login to view URL] MVC 5 using C#, and is hosted in Azure. The backend is a MS SQL Server.
Senior Software EngineerMay 2015 - Aug 2015 (3 months)
Worked as a Symbio consultant. Responsible for maintaining and developing a clearing application called Clearing Workstation.
Senior Software EngineerMar 2015 - Aug 2015 (5 months)
Involved in designing and developing a Web application for a startup company called Mitigram ([login to view URL]). The system manages Letters of Credit and International Guarantees between the banks and companies. The application is written in [login to view URL] MVC 5 using C#, and uses RabbitMQ for passing messages between the [login to view URL] and the server. The backend is a MS Sql Server 2012.
Senior Software EngineerOct 2014 - Mar 2015 (5 months)
Part of the test engineering team which is responsible for building tools for testing (regression, performance, throughput, etc) the suite of the server apps. Server apps and the tests produce a large number of logs that are saved in files. I was responsible for researching and suggesting a solution for mining the logs and then extracting searching and out recurring patterns. The tool investigated and proposed was Elasticsearch.
Commodities DeveloperJul 2013 - Oct 2014 (1 year)
Part of the eDealing team which uses Jira for keeping the backlog items, TeamCity as a build server and SVN as source control. Responsible for designing and developing new commodities trading application. The application is used by internal and external clients to trade commodities directly with GS.
FIX Software EngineeerJun 2012 - Jun 2013 (1 year)
Involved in developing FX FIX server. FX FIX server uses FIX protocol to provide quotes and manage FX trades between CS and external clients. The application is a multi-threaded WCF app. Part of the service is the Dashboard (front-end application) that is used by support to check and manage the FIX Server. Was responsible for designing and writing a Commodities module for the FIX Service. The module was written in C# and uses RX and design patterns (Factory, Chain of Responsibility).
Software EngineerSep 2011 - May 2012 (8 months)
Risk Explorer team is agile team with monthly sprints, and uses Jira for for keeping the backlog items, TeamCity as a build server and SVN as source [login to view URL] in developing Risk Explorer application. Risk Explorer is used by risk managers to view risk by different dimensions. The data then can be pivoted and aggregated in different ways. The application is a multi-threaded WPF app and uses MVVM pattern. The application can also be registered as an Excel addin.
Senior Risk DeveloperMay 2010 - Oct 2011 (1 year)
Designing and implementing different multi-threaded WPF (front-end) applications utilising M-V-VM pattern (Model-View-ViewModel) using a number of WCF services to obtain the different information. Back end database is MS SQL Server. The application uses Service Locator and Event Aggregator patterns. Technologies used are: C#, .NET 4, VS 2010, WPF 4, WCF 4, Parallel extensions, LINQ, Expression Trees, IL Emit, Unity.
Vice PresidentSep 2009 - May 2010 (8 months)
Designing and developing applications for Credit Risk Department. The user is able to select the dimensions to work with, and can create queries to execute against the dimensions. The user is able to drill-through and rotate the data. The front-end is a multi-threaded WPF application utilising M-V-VM pattern (Model-View-ViewModel) that talks to a middle-tier (implemented as a WCF service) and as a back end database is used Oracle.
Senior Software EngineerAug 2006 - Sep 2009 (3 years)
Currently involved in designing and developing a new pricing system for all securities. The application is a multi-threaded smart client application written in C# and .NET 2.0. The application uses pluggable architecture based on services (SOA). Backend is MS SQL Server 2000 and MS Reporting Services 2005. Skills used: C# and .NET 2.0, [login to view URL], .NET Remoting, Windows Services, WEB Services, Reflection, Design Patterns, SOA, UML, MS Reporting Services 2005, Transact-SQL.
HND in Computing1991 - 1993 (2 years)
MSc, Advanced Computer Systems Development2001 - 2004 (3 years)
MSc in Computing (Advanced Computer Systems Development) (2004)University of Paisley, UK
Building Robust and scalable software systems using architectural and design patterns
Very Lightweight Data Access Layer in C#
A small framework for accessing data in the database using custom attributes and reflection. The article was submitted in April 2007. The link to article : [login to view URL]
Using Chain Of Responsibility Instead of if/else Statement
An article of how the Chain Of Responsibility design pattern can be used instead of a number of if/else statements. The link to article: [login to view URL]
Combining RX and MVVM
An article that explains how Reactive Extensions can be combined with MVVM pattern in building WPF application in C#. At the end of the article user is left with a small reusable framework that combines RX and MVVM pattern The link to article: [login to view URL]
Using Monads to manage exception handling
An article that explains how monads and monadic structures borrowed from functional languages can be used in C# to manage exception handling. The link to article: [login to view URL]
Build Where Clause Dynamically in Linq
An article that shows how expressions can be used in creating a dynamic where clause in LINQ. By using similar pattern the reader is able to extend the functionality to dynamically build LINQ statements. Link to article: [login to view URL]