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.
