Tech Stack

Tech Stack

These are the tools and technologies I work with day-to-day. I favour open-source, battle-tested solutions over hype — every item on this list earns its place by solving a real problem in production.


Languages & Frameworks

⚙️ .NET Core & Framework

My primary development platform. I’ve built and scaled production services in .NET across healthcare, handling high-volume transactional workloads and complex domain logic.

🔷 C#

The language I think in. Clean, expressive, and powerful — especially with modern C# features like records, pattern matching, and minimal APIs.

🐘 Kotlin DSL

Used for TeamCity pipeline configuration as code. Enables versioned, reviewable, and reusable CI definitions stored directly in the monorepo.


CI/CD & Delivery

🚀 TeamCity

Our primary build server. Using Kotlin DSL with versioned settings stored in Git, organised by vertical slices in a monorepo with trunk-based development.

🐙 Octopus Deploy

Deployment automation with OCL Config as Code. Handles multi-environment promotions, rollbacks, and per-slice deployment process scoping.

🦊 Bitbucket Pipelines

Used for repository-level automation, pull request validation, and lightweight build tasks integrated directly with our source control workflow.


Infrastructure & Orchestration

🏗️ HashiCorp Nomad

Our workload orchestrator. Lightweight, flexible, and far simpler to operate than Kubernetes at our scale. Handles scheduling across our VM host fleet.

🔗 HashiCorp Consul

Service mesh and service discovery. Enables zero-config service-to-service communication with health checking and dynamic configuration via KV store.

🌐 Tailscale / Headscale

Self-hosted WireGuard-based overlay network using Headscale as the coordination server. Connects 100+ nodes across environments securely without VPN complexity.


Observability

📡 OpenTelemetry

Vendor-neutral instrumentation across our .NET services. Captures traces, metrics, and logs in a consistent format that feeds our observability stack.

🔍 Grafana + Tempo

Distributed tracing with Tempo and dashboards in Grafana. Used to identify latency bottlenecks, trace slow requests end-to-end, and monitor service health.

📊 Prometheus + Loki

Metrics collection with Prometheus and log aggregation with Loki. Feeds into Grafana for unified observability across all services and infrastructure.


Code Quality & Package Management

🔬 SonarQube

Static analysis integrated into every build. Tracks code coverage, code smells, security vulnerabilities, and technical debt over time.

📦 ProGet

Self-hosted NuGet and npm package feed. Gives us control over internal packages and a vetted proxy for public registries — no surprise supply chain issues.

🗄️ SQL Server + PostgreSQL

Primary data stores for our healthcare platform. SQL Server for transactional workloads, PostgreSQL for newer services where open-source is preferred.


This stack evolves constantly. I’m always evaluating new tools — but only when they solve a problem I actually have.