Languages

  • C#
  • SQL
  • PowerShell
  • JavaScript
  • TypeScript

Backend

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.

  • .NET / .NET Framework
  • ASP.NET
  • Web API
  • Entity Framework
  • WinForms
  • Windows Services
  • .NET Remoting
  • Refit / HttpClient pipelines
  • LINQ to SQL
  • Node.js

Integrations

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.

  • REST / HTTP APIs
  • Windows services as an integration layer
  • Hardware and device APIs
  • Long-polling event streams
  • Smart-card readers (PC/SC)
  • Lotus Notes / Domino

Databases

Schema and query work on high-throughput applications, versioned migration scripts per release, plus the profiling to find out why a page got slow.

  • Microsoft SQL Server
  • SSDT database projects
  • Oracle Database
  • MongoDB

Frontend

Enough to build and maintain the UI a service needs, rather than enough to call myself a frontend specialist.

  • Razor
  • React
  • Angular
  • Vue
  • CSS

Cloud and infrastructure

  • AWS
  • Microsoft Azure
  • Docker
  • Linux servers
  • Windows servers
  • Active Directory / LDAP

Testing

Including the simulators and stubs that make hardware-dependent code testable on any developer machine, and load tests to size throttling limits empirically.

  • xUnit
  • NUnit
  • MSTest
  • SpecFlow
  • Cypress
  • WireMock.Net
  • API simulators / hardware stubs
  • Load testing

Tools

  • git
  • GitHub
  • GitLab
  • Bitbucket
  • TFS
  • Jenkins
  • TeamCity
  • npm
  • Jira
  • Confluence
  • Datadog
  • WiX / WixSharp / MSI installers
  • log4net

AI assistants

Used across exploration, implementation, refactoring, test generation, review and documentation — and rolled out to a team as repository-level agent instructions and reusable skills.

  • Claude Code
  • GitHub Copilot
  • Agent instructions / custom skills
  • LLM chat tools

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