Platforms:#

GitHub Activity#

1505 contributions on GitHub in the last year
0 contributions on 2025-07-130 contributions on 2025-07-144 contributions on 2025-07-150 contributions on 2025-07-160 contributions on 2025-07-171 contributions on 2025-07-180 contributions on 2025-07-190 contributions on 2025-07-200 contributions on 2025-07-210 contributions on 2025-07-220 contributions on 2025-07-230 contributions on 2025-07-240 contributions on 2025-07-250 contributions on 2025-07-260 contributions on 2025-07-272 contributions on 2025-07-282 contributions on 2025-07-290 contributions on 2025-07-300 contributions on 2025-07-312 contributions on 2025-08-010 contributions on 2025-08-020 contributions on 2025-08-030 contributions on 2025-08-040 contributions on 2025-08-051 contributions on 2025-08-060 contributions on 2025-08-070 contributions on 2025-08-080 contributions on 2025-08-090 contributions on 2025-08-100 contributions on 2025-08-110 contributions on 2025-08-120 contributions on 2025-08-130 contributions on 2025-08-140 contributions on 2025-08-150 contributions on 2025-08-160 contributions on 2025-08-170 contributions on 2025-08-180 contributions on 2025-08-190 contributions on 2025-08-200 contributions on 2025-08-210 contributions on 2025-08-220 contributions on 2025-08-230 contributions on 2025-08-240 contributions on 2025-08-250 contributions on 2025-08-261 contributions on 2025-08-270 contributions on 2025-08-280 contributions on 2025-08-290 contributions on 2025-08-300 contributions on 2025-08-310 contributions on 2025-09-010 contributions on 2025-09-020 contributions on 2025-09-030 contributions on 2025-09-040 contributions on 2025-09-050 contributions on 2025-09-060 contributions on 2025-09-071 contributions on 2025-09-081 contributions on 2025-09-090 contributions on 2025-09-100 contributions on 2025-09-110 contributions on 2025-09-120 contributions on 2025-09-130 contributions on 2025-09-140 contributions on 2025-09-150 contributions on 2025-09-160 contributions on 2025-09-170 contributions on 2025-09-180 contributions on 2025-09-190 contributions on 2025-09-200 contributions on 2025-09-210 contributions on 2025-09-220 contributions on 2025-09-230 contributions on 2025-09-240 contributions on 2025-09-250 contributions on 2025-09-260 contributions on 2025-09-270 contributions on 2025-09-281 contributions on 2025-09-291 contributions on 2025-09-300 contributions on 2025-10-010 contributions on 2025-10-021 contributions on 2025-10-030 contributions on 2025-10-040 contributions on 2025-10-050 contributions on 2025-10-061 contributions on 2025-10-072 contributions on 2025-10-080 contributions on 2025-10-090 contributions on 2025-10-100 contributions on 2025-10-110 contributions on 2025-10-120 contributions on 2025-10-130 contributions on 2025-10-141 contributions on 2025-10-152 contributions on 2025-10-160 contributions on 2025-10-170 contributions on 2025-10-180 contributions on 2025-10-190 contributions on 2025-10-203 contributions on 2025-10-210 contributions on 2025-10-220 contributions on 2025-10-230 contributions on 2025-10-240 contributions on 2025-10-250 contributions on 2025-10-260 contributions on 2025-10-274 contributions on 2025-10-284 contributions on 2025-10-291 contributions on 2025-10-300 contributions on 2025-10-310 contributions on 2025-11-010 contributions on 2025-11-021 contributions on 2025-11-031 contributions on 2025-11-040 contributions on 2025-11-050 contributions on 2025-11-060 contributions on 2025-11-070 contributions on 2025-11-080 contributions on 2025-11-092 contributions on 2025-11-100 contributions on 2025-11-110 contributions on 2025-11-122 contributions on 2025-11-130 contributions on 2025-11-140 contributions on 2025-11-150 contributions on 2025-11-160 contributions on 2025-11-170 contributions on 2025-11-180 contributions on 2025-11-190 contributions on 2025-11-200 contributions on 2025-11-210 contributions on 2025-11-220 contributions on 2025-11-230 contributions on 2025-11-240 contributions on 2025-11-250 contributions on 2025-11-260 contributions on 2025-11-270 contributions on 2025-11-280 contributions on 2025-11-290 contributions on 2025-11-301 contributions on 2025-12-011 contributions on 2025-12-020 contributions on 2025-12-030 contributions on 2025-12-040 contributions on 2025-12-050 contributions on 2025-12-060 contributions on 2025-12-071 contributions on 2025-12-080 contributions on 2025-12-090 contributions on 2025-12-100 contributions on 2025-12-110 contributions on 2025-12-120 contributions on 2025-12-130 contributions on 2025-12-140 contributions on 2025-12-151 contributions on 2025-12-160 contributions on 2025-12-170 contributions on 2025-12-183 contributions on 2025-12-190 contributions on 2025-12-200 contributions on 2025-12-2123 contributions on 2025-12-221 contributions on 2025-12-230 contributions on 2025-12-240 contributions on 2025-12-256 contributions on 2025-12-260 contributions on 2025-12-270 contributions on 2025-12-286 contributions on 2025-12-299 contributions on 2025-12-3018 contributions on 2025-12-310 contributions on 2026-01-019 contributions on 2026-01-020 contributions on 2026-01-030 contributions on 2026-01-044 contributions on 2026-01-055 contributions on 2026-01-0621 contributions on 2026-01-070 contributions on 2026-01-081 contributions on 2026-01-090 contributions on 2026-01-100 contributions on 2026-01-110 contributions on 2026-01-120 contributions on 2026-01-130 contributions on 2026-01-140 contributions on 2026-01-155 contributions on 2026-01-160 contributions on 2026-01-170 contributions on 2026-01-181 contributions on 2026-01-191 contributions on 2026-01-200 contributions on 2026-01-210 contributions on 2026-01-220 contributions on 2026-01-230 contributions on 2026-01-240 contributions on 2026-01-251 contributions on 2026-01-260 contributions on 2026-01-277 contributions on 2026-01-288 contributions on 2026-01-2916 contributions on 2026-01-300 contributions on 2026-01-310 contributions on 2026-02-010 contributions on 2026-02-021 contributions on 2026-02-031 contributions on 2026-02-044 contributions on 2026-02-053 contributions on 2026-02-060 contributions on 2026-02-070 contributions on 2026-02-080 contributions on 2026-02-091 contributions on 2026-02-100 contributions on 2026-02-113 contributions on 2026-02-120 contributions on 2026-02-130 contributions on 2026-02-140 contributions on 2026-02-155 contributions on 2026-02-168 contributions on 2026-02-175 contributions on 2026-02-183 contributions on 2026-02-198 contributions on 2026-02-200 contributions on 2026-02-210 contributions on 2026-02-225 contributions on 2026-02-2311 contributions on 2026-02-244 contributions on 2026-02-250 contributions on 2026-02-262 contributions on 2026-02-270 contributions on 2026-02-284 contributions on 2026-03-016 contributions on 2026-03-024 contributions on 2026-03-031 contributions on 2026-03-046 contributions on 2026-03-0515 contributions on 2026-03-060 contributions on 2026-03-070 contributions on 2026-03-081 contributions on 2026-03-094 contributions on 2026-03-100 contributions on 2026-03-112 contributions on 2026-03-125 contributions on 2026-03-130 contributions on 2026-03-140 contributions on 2026-03-150 contributions on 2026-03-165 contributions on 2026-03-170 contributions on 2026-03-182 contributions on 2026-03-1913 contributions on 2026-03-206 contributions on 2026-03-210 contributions on 2026-03-224 contributions on 2026-03-233 contributions on 2026-03-244 contributions on 2026-03-257 contributions on 2026-03-260 contributions on 2026-03-270 contributions on 2026-03-284 contributions on 2026-03-299 contributions on 2026-03-306 contributions on 2026-03-3137 contributions on 2026-04-0123 contributions on 2026-04-020 contributions on 2026-04-032 contributions on 2026-04-040 contributions on 2026-04-055 contributions on 2026-04-067 contributions on 2026-04-078 contributions on 2026-04-088 contributions on 2026-04-090 contributions on 2026-04-100 contributions on 2026-04-110 contributions on 2026-04-124 contributions on 2026-04-1316 contributions on 2026-04-144 contributions on 2026-04-153 contributions on 2026-04-161 contributions on 2026-04-171 contributions on 2026-04-180 contributions on 2026-04-190 contributions on 2026-04-207 contributions on 2026-04-219 contributions on 2026-04-226 contributions on 2026-04-2321 contributions on 2026-04-2453 contributions on 2026-04-251 contributions on 2026-04-2626 contributions on 2026-04-2715 contributions on 2026-04-284 contributions on 2026-04-293 contributions on 2026-04-303 contributions on 2026-05-010 contributions on 2026-05-020 contributions on 2026-05-038 contributions on 2026-05-042 contributions on 2026-05-051 contributions on 2026-05-061 contributions on 2026-05-070 contributions on 2026-05-080 contributions on 2026-05-090 contributions on 2026-05-100 contributions on 2026-05-1120 contributions on 2026-05-128 contributions on 2026-05-1337 contributions on 2026-05-1426 contributions on 2026-05-150 contributions on 2026-05-160 contributions on 2026-05-178 contributions on 2026-05-1816 contributions on 2026-05-190 contributions on 2026-05-2023 contributions on 2026-05-217 contributions on 2026-05-220 contributions on 2026-05-230 contributions on 2026-05-240 contributions on 2026-05-258 contributions on 2026-05-2626 contributions on 2026-05-2729 contributions on 2026-05-2819 contributions on 2026-05-290 contributions on 2026-05-300 contributions on 2026-05-3121 contributions on 2026-06-0112 contributions on 2026-06-0213 contributions on 2026-06-034 contributions on 2026-06-0431 contributions on 2026-06-053 contributions on 2026-06-060 contributions on 2026-06-0723 contributions on 2026-06-0830 contributions on 2026-06-097 contributions on 2026-06-108 contributions on 2026-06-118 contributions on 2026-06-120 contributions on 2026-06-1313 contributions on 2026-06-1420 contributions on 2026-06-1543 contributions on 2026-06-1637 contributions on 2026-06-1712 contributions on 2026-06-181 contributions on 2026-06-1938 contributions on 2026-06-2010 contributions on 2026-06-216 contributions on 2026-06-224 contributions on 2026-06-2319 contributions on 2026-06-244 contributions on 2026-06-2534 contributions on 2026-06-269 contributions on 2026-06-274 contributions on 2026-06-2883 contributions on 2026-06-2918 contributions on 2026-06-300 contributions on 2026-07-017 contributions on 2026-07-020 contributions on 2026-07-030 contributions on 2026-07-040 contributions on 2026-07-0515 contributions on 2026-07-0643 contributions on 2026-07-071 contributions on 2026-07-0812 contributions on 2026-07-097 contributions on 2026-07-105 contributions on 2026-07-110 contributions on 2026-07-127 contributions on 2026-07-1315 contributions on 2026-07-146 contributions on 2026-07-15
LessMore

Management Platforms & Cloud Providers#

Amazon Web Services (AWS)#

5 Years of Experience

Used heavily for production, security, and automation work. Strongest areas are IAM (administration and audit), EC2, ECS, SQS, DynamoDB, Bedrock, RDS, Route 53, VPC, and Textract.

Microsoft Azure#

2 Years of Experience

Roughly two years across client environments and personal projects. Most of that time was SQL, virtual machines, and containers. I can use Azure when needed, but I usually prefer not to.

VMware vSphere#

2 Years of Experience

Used extensively in client and prospect environments in prior roles. Broadcom owns VMware now, and I have not touched vSphere since that shift.

Proxmox#

5 Years of Experience

This is my homelab virtualization environment. It gives me clean KVM and LXC workflows, solid snapshots and backups, and none of the licensing pain. It is open source, stable, and straightforward once it is set up. Here’s a link if you aren’t familiar.

Container Platforms#

Amazon Elastic Container Service (ECS)#

5 Years of Experience

Used for production workloads on AWS: clusters, services, task definitions, networking, and operations.

Docker Compose#

3 Years of Experience

Used for multi-container stacks in homelab and smaller production deployments, plus local development workflows.

Portainer#

1 Year of Experience

Used as a Docker frontend in my homelab.

Code Management Platforms#

GitHub#

4 Years of Experience

Used across client projects and personal work for day-to-day source control and collaboration.

GitLab#

2 Years of Experience

Used internally for homelab projects, including my “X as Code” content.

Bitbucket#

2 Years of Experience

Used previously for projects at a prior employer.

CI/CD Platforms#

GitHub Actions#

4 Years of Experience

Used for pull request checks, Terraform validation and plan workflows, and production deployment automation in both client and personal repositories.

Configuration as Code#

Ansible Automation Engine#

2 Years of Experience

Used to configure and maintain EC2 fleets for clients, with hundreds of assets under management.

Chef Infra#

1 Year of Experience

Used previously to manage Linux configurations at a prior employer.

Syxsense Cortex#

3 Years of Experience

Used previously for Windows and Linux patch management at a prior employer.

Infrastructure as Code#

Terraform#

3 Years of Experience

Client environments are managed through PR-locked Terraform workflows.

Database Platforms#

PostgreSQL#

3 Years of Experience

Used for production database administration and operational support across on-prem and cloud-backed environments.

Amazon Aurora RDS (PostgreSQL)#

3 Years of Experience

Used for managed PostgreSQL workloads in AWS, including production operations and reliability-focused maintenance patterns.

Secrets Management Platforms#

HashiCorp Vault#

4 Years of Experience

Used for internal Proxmox projects where centralized secret management is needed.

AWS Secrets Manager#

4 Years of Experience

Used in production customer and client environments for storing and retrieving application and infrastructure secrets.

Infisical#

1 Year of Experience

Used for internal tooling workflows for clients where centralized secret management is needed.

Load Balancers#

Nginx#

5 Years of Experience

Used in homelab and production environments across multiple client projects.

AWS Application Load Balancer (ALB)#

3 Years of Experience

Used heavily in production environments for HTTP/HTTPS routing, TLS termination, and service front-door patterns. ALB is excellent and has been a reliable part of my AWS stack.

Caddy#

2 Years of Experience

Used in production as a reverse proxy and TLS edge. Automatic HTTPS and simple configuration make it easy to run and maintain with Ansible and config-as-code workflows. Here’s a link if you aren’t familiar. Great for when ALB is too much overhead.

Scripting Languages#

Bash#

5 Years of Experience

Bash handles the ad-hoc work that does not justify a full Ansible workflow. This xkcd is relevant.

Python#

5 Years of Experience

I do not write customer-facing software in Python as my primary job. I use it for internal automation, reports, audits, and API-driven glue work (Boto3, Atlassian libraries, and similar tooling).

Inference and Language Models#

I use language models heavily at work and at home, but with hard boundaries. I keep usage to domains where I already have depth, so I can catch mistakes quickly. I avoid shipping AI-generated customer-facing content. If it is an internal tool, internal note, or Dockerfile grunt work, then all bets are off. Frankly, I rarely write code from scratch anymore; the workflow is usually prompting -> modifying -> prompting -> modifying -> testing -> modifying -> testing -> committing. I wrote more about that loop here: Spec Driven Development.

Claude Code#

2 Years of Experience

Used extensively for debugging, technical drafting, and working through implementation options in areas where I already know the domain.

Cursor#

2 Years of Experience

Used daily for coding, issue investigation, and personal projects. I pay for the top personal tier (~$200/month) and use it constantly, but final customer-facing output stays human-authored.

Groq#

Ongoing · API inference (Python and other automation)

Groq (with a Q) is useful when I need fast API-based inference inside Python and automation workflows. It is easy to wire into internal tooling and fast enough for practical scripting loops.

Operating Systems#

Linux (RHEL & Debian)#

12 Years of Experience

Linux is what got me interested in computers in the first place. Being able to change how software behaved and how the UI looked was a big deal to me early on, and it still is.

These days I mostly run macOS on an M4 MacBook Pro, but most real work still happens over SSH on Linux systems and container hosts.

I spend a lot of time building containers, so yes: Linux turtles all the way down. This xkcd is relevant.

Windows#

4 Years of Experience

I can support it when needed, but I avoid it for development workflows when I have a choice. This xkcd is relevant.

macOS#

5 Years of Experience

Daily-driver laptop platform (M4 MacBook Pro). Solid hardware, good terminal environment, and easy SSH-first workflows into Linux systems.