Skills

I am a seasoned veteran of the software development industry with over 22 years of experience. I am passionate about computing, enjoying both the art and science of software development, and have a commitment to continuous improvement and learning new technologies. My experience encompasses all aspects of the analysis, design, development and integration of software systems, including providing mentoring and training to team members.

My knowledge of software development encompasses back-end, desktop, web service and web development within the Windows platform, using both Win32 and managed APIs (.NET Framework), and proprietary and open source packages.

I have extensive experience designing and building platform architectures that support complex, modular and customised solutions for clients. This includes building N-Tier, distributed systems, and interfacing with real-time (SCADA) systems.

I believe in building high quality code that meets both the functional requirements and best of breed code quality standards. I strive to ensure code is readable, modular, clean, and accurately conveys intent at all times.

I am a strong advocate of testable code, and ensuring that key components and their interfaces are tested both at the unit and integration test level - I believe that this is critical to the construction of high quality code.

Platforms:

  • .NET 1.0 - 4.5, .NET Core
  • C#
  • WinForms / WPF
  • WCF
  • ASP.NET (MVC, Web API)
  • Windows Workflow
  • XNA, DigitalRun

Languages:

  • C#
  • T-SQL
  • Typescript
  • Javascript
  • Powershell
  • Delphi

Open Source:

  • NHibernate
  • Castle Windsor
  • NSubstitute
  • Log4Net
  • AureliaJs
  • DurandalJs
  • KnockoutJs
  • UnderscoreJs
  • Orchard CMS
  • Frameworks:
  • DevExpress (DXperience)
  • JQuery (and JQuery.UI)
  • CAB - Composite Application Block (WinForms)
  • Twitter Bootstrap 3

Process:

  • Agile Methodology (Scrum)
  • Unit Testing
  • Code Reviews

Specialities:

  • Application Architecture Design and Implementation
  • Large Scale Refactoring
  • Meta-Programming (Reflection-based)
  • Code Generation techniques
  • Aspect-based programming
  • Asynchronous message-based systems
  • Defining Standards, Processes

Tools:

  • Visual Studio 2003-2017
  • SQL Server 2000-2018
  • TFS / Azure DevOps
  • Git
  • IIS
  • CodeRush
  • Beyond Compare
  • Microsoft Azure Cloud
  • Blender / SketchUp