Languages

C#, SQL, JavaScript, TypeScript.

Backend

.NET and .NET Framework, ASP.NET, Web API, Entity Framework, WinForms, Windows Services, .NET Remoting, Node.js.

Day to day this means HTTP APIs, background and long-running services, multi-tier applications, and the concurrency work that goes with them — threading, synchronization, throttling, and the diagnostics needed to prove a live system is behaving.

Integrations

REST and HTTP APIs, Windows services as an integration layer, hardware and device integration over vendor APIs, and legacy platform integration including Lotus Notes / Domino.

On the advertising side, extensive work against the online marketing platform APIs — Facebook Marketing, Google Ads and Bing — including the rate limiting, pagination and failure handling that large-scale data pulls require.

Databases

Microsoft SQL Server, Oracle Database, MongoDB. Schema and query work on high-throughput applications, plus the profiling to find out why a page got slow.

Frontend

Razor, React, Angular, Vue, CSS. Enough to build and maintain the UI a service needs, rather than enough to call myself a frontend specialist.

Cloud and infrastructure

AWS, Microsoft Azure, Docker, Linux and Windows servers.

Testing

xUnit, NUnit, MSTest, SpecFlow, Cypress.

Tools

git, GitHub, GitLab, Bitbucket, TFS, Jenkins, TeamCity, npm, Jira, Datadog, WiX / MSI installers.

AI assistants

Claude Code, GitHub Copilot, and LLM chat tools — used across exploration, implementation, refactoring, test generation, review and documentation.

Practices

Area What that means in practice
Testing Unit tests for logic, integration and end-to-end tests for the paths that would silently break
CI/CD Automated build and deploy pipelines, repeatable packaging, no manual steps at release time
Observability Structured logging and diagnostics designed in, not bolted on after the first incident
Documentation Architecture and onboarding docs written so someone else can take the system over