Technology

The tools behind the work

A working list of what I use, grouped by category and tagged by how close I am to each. Core means I run it daily. Fluent means I’ll pick it up without ceremony. Familiar means I read it well and have shipped with it, but it’s not where I’d default.

CoreFluentFamiliar

cloud platforms

Cloud Platforms

Most of my work lives on AWS, with regular GCP engagements and occasional Azure. I pick the cloud that fits the customer, not the one I prefer.

AWS

AWS

Core

Primary cloud for the majority of my engagements; deep on EKS, networking, IAM, and FinOps.

GCP

GCP

Core

Strong on GKE, Workload Identity, and BigQuery-adjacent platforms.

Azure

Azure

Fluent

AKS, Azure DevOps, and Entra ID; less frequent but well-trodden.

containers orchestration

Container & Orchestration

Kubernetes is the substrate I spend the most time on. Production-grade clusters, GitOps deploys, autoscaling, and the operational maturity to run them without drama.

Kubernetes

Kubernetes

Core

Production clusters, multi-tenancy, upgrade discipline, security baseline.

EKS

EKS

Core
GKE

GKE

Core
AKS

AKS

Fluent
Docker

Docker

Core

Image hardening, multi-stage builds, distroless bases.

Helm

Helm

Core

Chart authoring and library charts; opinionated about when not to use it.

ArgoCD

ArgoCD

Core

App-of-apps, ApplicationSets, sync waves, drift detection.

Flux

Flux

Fluent
Karpenter

Karpenter

Core

Pool design, disruption budgets, consolidation tuning.

infrastructure as code

Infrastructure as Code

Terraform is the default; OpenTofu for new work where that fits the customer. Pulumi when the team has a strong reason to write infra in TypeScript or Go.

Terraform

Terraform

Core

Module catalogues, workspace strategy, policy as code, drift detection.

OpenTofu

OpenTofu

Core
Pulumi

Pulumi

Fluent

Used selectively where TypeScript/Go infra is the right fit.

CloudFormation
CloudFormation

I read it; I don't recommend new work in it.

Familiar
Crossplane

Crossplane

Core

Self-service infrastructure compositions for platform teams.

ci cd

CI/CD

Pipelines that are fast, deterministic, and trustworthy. I have no religion about CI tools; I pick what fits the team.

GitHub Actions

GitHub Actions

Core

Default for most teams; reusable workflows, layered caching, OIDC into cloud.

GitLab CI

GitLab CI

Core
Buildkite

Buildkite

Fluent

Strong choice for heavy integration tests or self-hosted runners.

CircleCI

CircleCI

Fluent
Argo Rollouts

Argo Rollouts

Core

Canary and blue-green progressive delivery on Kubernetes.

Flagger

Flagger

Fluent

observability

Observability

SLOs grounded in user journeys, alerting that pages people only when it matters, distributed tracing across services, and logs as a managed product rather than a dumping ground.

Prometheus

Prometheus

Core

Metrics, alerting rules, recording rules, federation for multi-cluster.

Grafana

Grafana

Core

Dashboards designed to answer questions, not to look impressive.

Datadog

Datadog

Core

Used heavily; opinionated about how to keep the bill from running away.

Honeycomb

Honeycomb

Fluent

Strong choice for trace-driven debugging cultures.

OpenTelemetry

OpenTelemetry

Core

Instrumentation standard; collectors, sampling strategy, exporters.

Loki

Loki

Fluent
Tempo

Tempo

Fluent
New Relic

New Relic

Fluent

databases

Databases & Streaming

The boring half of reliability. Backup and restore that's tested, migrations that don't lock, replication that doesn't lag, and event pipelines that don't fall over at peak.

PostgreSQL

PostgreSQL

Core

HA topology, logical replication, online schema change with pgroll, performance tuning.

MySQL

MySQL

Fluent

gh-ost for online schema changes; ProxySQL for connection management.

Redis

Redis

Core

Caching strategy, sentinel/cluster, eviction policies tuned to workload.

MongoDB

MongoDB

Fluent
Kafka

Kafka

Core

Topic design, consumer group strategy, lag monitoring, schema discipline.

RabbitMQ

RabbitMQ

Fluent

languages

Languages

Languages I write in regularly for tooling, automation, and platform code. I don't write product code in any of them as part of an engagement.

Python

Python

Core

Most of my automation and tooling; data work and ML platform integration.

Go

Go

Core

Operators, controllers, CLI tooling, performance-sensitive platform code.

TypeScript

TypeScript

Core

Full-stack apps, internal tools, Pulumi programs, AI/agent code.

JavaScript

JavaScript

Core
Bash

Bash

Core

Where the right answer is genuinely a shell script.

Rust
Rust

I read it and contribute to it; not my primary language for new tooling.

Familiar
Java
Java
Familiar

frontend fullstack

Frontend & Full-stack

The stack I use for building product apps, marketing sites, internal tools, and admin dashboards.

Next.js

Next.js

Core

App Router, server components, server actions, edge + Node runtimes.

React

React

Core

Server and client components; React 19 with concurrent rendering.

TypeScript

TypeScript

Core

Strict mode end-to-end across UI, API, and infrastructure.

Tailwind CSS

Tailwind CSS

Core

v4 with CSS-variable design tokens.

Node.js

Node.js

Core

API routes, background workers, MCP servers.

Vercel

Vercel

Core

Edge deployment, ISR, OG image generation, env management.

Cloudflare

Cloudflare

Fluent

Workers, R2, D1, Pages, and Zero Trust.

Stripe

Stripe

Core

Subscriptions, metered billing, Tax, customer portal.

Resend

Resend

Core

Transactional email + inbound parsing.

ai stack

AI & Agents

Tooling for production AI features — RAG, agents, evals, and the orchestration that keeps them honest.

OpenAI

OpenAI

Core

GPT-4 / GPT-4o family, function calling, structured outputs.

Anthropic

Anthropic

Core

Claude 4 / 3.5 Sonnet for reasoning-heavy and coding workloads.

Gemini

Gemini

Fluent

Long-context retrieval and Vertex AI agent builds.

MCP

MCP

Core

Model Context Protocol servers exposing data to AI clients.

LangChain

LangChain

Fluent

Used selectively when the orchestration earns its weight.

pgvector

pgvector

Core

Postgres-native embeddings; default RAG store for most teams.

Pinecone

Pinecone

Fluent

Managed vector store at scale.

Ollama

Ollama

Fluent

Local model evals and dev workflows.

Hugging Face

Hugging Face

Fluent

vcs collab

VCS & Collaboration

Where the code lives and how the work gets coordinated.

Git

Git

Core

Worktrees, rebase discipline, monorepo with sparse checkout when sensible.

GitHub

GitHub

Core

Actions, Codespaces, branch policies, CODEOWNERS.

GitLab

GitLab

Fluent
Linear

Linear

Fluent
Notion

Notion

Fluent
Slack

Slack

Core

security

Security

Security baked into the pipeline. Threat modelling, supply chain integrity, secrets discipline, and runtime defence — without slowing engineers down or generating dashboards nobody reads.

HashiCorp Vault

HashiCorp Vault

Core

Dynamic secrets, PKI, transit, integration with Kubernetes auth.

Trivy

Trivy

Core

Container, IaC, and filesystem scanning in the pipeline.

Snyk

Snyk

Fluent
Cosign

Cosign

Core

Image signing and verification, SLSA provenance, keyless with OIDC.

OPA

OPA

Core

Policy as code for IaC, admission control, and authorisation.

Falco

Falco

Fluent

Runtime threat detection on Kubernetes.

Don’t see your stack?

These are the tools I lean on most. The work itself rarely depends on a specific tool — if your stack looks different, it’s usually fine.