Automation, Observability, and Machine Learning

Software and infrastructure engineering

I build with Go, Python, and Bash. I use configuration management, containers, Infrastructure as Code (IaC) tools like Terraform, Continuous Integration / Continuous Delivery (CI/CD) pipelines, and Kubernetes (K8s) when the problem calls for it. The through-line: make systems easier to run, easier to understand, and harder to break by accident.

What that looks like in practice

Keeping production and the most prominent environments highly available (High Availability (HA)), and removing repetitive manual work. Internal services that simplify on-call and deploy workflows. Metrics tied to real user pain, alerts worth waking someone up for, and runbooks that match how incidents actually unfold.

ML learner

I’m growing in MLOps, not as a separate hobby but as the next layer of the same platform mindset. Training models, tracking experiments, serving predictions, watching for data drift (when live data stops matching what the model learned on), and closing the loop between production and model behavior. Homelab practice lives in ML Production Pipeline and related repos.

Tools I work with often

These show up regularly in platform and reliability work. They are examples, not the whole toolbox.

Prometheus, Grafana, Loki, Docker, Ansible, Terraform, Kubernetes, HAProxy, ElasticSearch/OpenSearch, Cloudflare, GitLab and Azure DevOps pipelines, and Linux across Red Hat–family and enterprise Windows where the job requires it.

Plenty of other tools have shown up on past teams and projects. I am comfortable picking up something new when the problem or the stack calls for it.

What I optimize for

Less manual effort, fewer false alarms, faster incident response, and infrastructure teams that can change confidently. If a script, service, or pipeline saves hours every month and makes behavior more consistent, that is the work I want to keep doing.