I’m a big fan of “the right tool for the right job”. For some things, the right tool is a shell script. For others, it is Python. But sometimes… it is both. A lot of times I find myself writing a ...
Azure Key Vault Certificates with Let's Encrypt as the Issuer CA
Azure Key Vault is a great product for managing data protection, and one of the main features is the ability to handle TLS/SSL certificates. The way Azure Key Vault works with certificates is that ...
Setting Conditional Breakpoints in Go
Being able to debug your code is a necessary skill for any programmer. Setting conditional breakpoints allows you to efficiently and effectively inspect your code workflow. Take this simple (but co...
Query Azure Resources by Tags with the Azure CLI
Azure resource tags are one of the really great features that I don’t think gets talked about as much as it should. Tags are key-value pairs that you can put on your Azure resources. Although tags...
Create a Release and Upload Artifacts with GitHub Actions
When working in the full software lifecycle, CI/CD is one of the key mechanisms for providing software to the end users. The “D” in “CI/CD” refers to “delivery” and “deployment”. This blog post wi...
Emotionally Investing Yourself in Tools
As programmers and Information Technology professionals we are craftspeople. We require tools to accomplish our tasks. It’s common to invest ourselves heavily in these tools. In this blog post I wa...
Collect Custom Metrics in AKS
Part of running a production-quality Kubernetes cluster is being able to monitor it. One of the nice things about having your Kubernetes cluster in Azure is that many things are easy to setup and w...
Debug a Python Application Running in Kubernetes
Software breaks. It stops doing what we think it should be doing. It throws errors, and it fails in unexpected ways. This is the reality that we live in. As a software programmer, it is absolutely...
Create a Quick and Easy Prometheus Exporter
Prometheus is a clear leader in the cloud native world for metrics. Prometheus follows an HTTP pull model: It scrapes Prometheus metrics from endpoints routinely. Typically the abstraction layer be...
Why You Should Typically Use Named Arguments in Python
When invoking functions in Python, you can usually pass your arguments either by position or name. There are advantages (and disadvantages) to each approach. This blog post will discuss why you wo...