Thomas Stringer
Software Engineer
HOME
TAGS
ARCHIVES
DEVOPS BOOK
VIM
ABOUT
Home
Archives
Archives
Cancel
Archives
2024
02
Dec
Goodbye Make and Shell, Hello... Python?
01
Sep
Configuring and Using an External Disk in Linux
22
Jun
Neovim Git Branch Aware Automatic Session Persistence
17
Jun
The Reality of Adding Nines to Your SLOs
06
Jun
Automatically Reopen Previous Files and Session in Neovim
05
Jun
Linux Disk Recover - initramfs Bug
11
May
Using Neovim as my PostgreSQL Client
20
Apr
What Determines if a Kubernetes Node is Ready?
26
Mar
OpenTelemetry Sample Application
19
Feb
Restrict HTTP Request Methods in Go
11
Feb
Get HTTP Route Values in Go
31
Jan
Handling Concurrent Errors in Go
03
Jan
Optimizing End-to-end (e2e) Test Performance
2023
31
Dec
2023 Blogging in Review
18
Nov
Adding Tests to Go Project Templates
16
Nov
The Lack of Compensation in Open Source Software is Unsustainable
06
Nov
Helm Hooks Are An Anti-Pattern and Should Be Avoided
25
Oct
Tools and Processes I Used For Writing My Book
20
Oct
Creating and Using Go Project Templates
18
Oct
How I Host, Run, and Publish Articles to My Blog
12
Oct
Using Vim as my PostgreSQL Client
25
Sep
Getting a User's Table Privileges in PostgreSQL
05
Jul
Troubleshooting the OpenTelemetry Target Allocator
03
Jul
Ingest Prometheus Metrics with OpenTelemetry
20
May
Peeling Back the Layers of the Code Review Onion
15
Mar
12 Tips for Effective Technical Blogging
08
Mar
When and How to Use Helm and Kustomize Together
23
Feb
Kubernetes Taints, Tolerations, and Understanding the PreferNoSchedule Effect
22
Feb
List Prometheus Scraping Targets
07
Feb
Troubleshooting Error 'Jwt issuer is not configured' in Istio and Envoy
04
Feb
Get Istio's Internal Service Registry
01
Feb
Restrict Routes to JWT-Authenticated Principals and Allow Unauthenticated Requests to Other Routes
26
Jan
Nested URL Routes to Different Services with Istio
21
Jan
Store Helm Charts in GitHub Container Repository
05
Jan
Install Istio with Flux
2022
23
Nov
Deploy Istio Egress Gateway After Installation
14
Oct
Go Slices - Passing By Reference or Value?
04
Sep
Optimize Redundant Operations with Memoization
15
Aug
Observability with OpenTelemetry Part 6 - Ecosystem
12
Aug
Observability with OpenTelemetry Part 5 - Propagation and Baggage
11
Aug
Observability with OpenTelemetry Part 4 - Collector
10
Aug
Observability with OpenTelemetry Part 3 - SDK and Exporting
09
Aug
Observability with OpenTelemetry Part 2 - Instrumentation
07
Aug
Observability with OpenTelemetry Part 1 - Introduction
28
Jun
Require a Label Prefix for GitHub Issues
18
Jun
Using Vim as Your MySQL Shell Editor
06
Jun
JWT Authorization Flow with an Identity Provider
28
May
Making GitHub API Requests with a JWT
18
May
Understanding GitHub App Authentication
28
Mar
Manual Approval in a GitHub Actions Workflow
21
Mar
Kubernetes Ingress with Contour
21
Feb
Analyze Current Goroutines in Go
14
Feb
Learning DevOps in 2022
03
Jan
2021 - A Year of Blogging in Review
2021
28
Dec
Errors and Error Wrapping in Go
22
Dec
Unstructured Kubernetes Components with client-go's Dynamic Client
15
Dec
Unit Testing Kubernetes Resources with Go
07
Dec
Connect to Kubernetes from Go
29
Nov
Dynamic Admission Control Certificate Management with cert-manager
22
Nov
Create a Basic Kubernetes Validating Webhook
15
Nov
Create a Basic Kubernetes Mutating Webhook
09
Nov
Dump Kubernetes Logs and Search for Errors
04
Nov
Why We Need mTLS in Kubernetes Service Meshes
25
Oct
15 Technical Leadership Qualities That I Try to Emulate
19
Oct
Automatically Create Self-Hosted Runners with GitHub Actions
11
Oct
Create Ephemeral Self-Hosted Runners for GitHub Actions
27
Sep
Deploy to AKS Using a Managed Identity from a GitHub Actions Self-Hosted Runner
20
Sep
Deploy to AKS from GitHub Actions
13
Sep
Create an AKS Cluster with Azure Bicep
07
Sep
Common Scenarios with Bash Parameter Expansion
30
Aug
Discover Kubernetes API Calls from kubectl
26
Aug
Search All Files Including Dot Files and Dot Directories in Vim
12
Aug
Handling Errors from Deferred Functions in Go
07
Aug
Reading and Writing an Azure Storage Blob from Python
26
Jul
Access an Azure Key Vault Secret from Python
19
Jul
20 Questions a Software Engineer Should Ask When Joining a New Team
12
Jul
Export Azure Monitor Logs to Azure Storage
06
Jul
Azure Monitor Log Analytics too Expensive? Part 2 - Save Some Money
28
Jun
Azure Monitor Log Analytics too Expensive? Part 1 - Find Out Why
22
Jun
Using the Azure Monitor Agent to Send systemd Journal Logs through Syslog
16
Jun
Send systemd Journal Logs to Azure Monitor through Syslog
07
Jun
5 of My Favorite Vim Features
31
May
Power Apps - The Easiest and Quickest Possible Way to Create a Mobile App
24
May
Find the Owning Resource Group From Within an Azure VM
17
May
Schedule AKS Clusters to Start and Stop Automatically
10
May
Understanding nil Interfaces and Interfaces with nil Values in Go
06
May
Azure Linux VM SSH Error - Connection refused
03
May
Automating the Easy Things with Power Automate
26
Apr
Top-Level Drop-In to Apply Settings to All Units of a Certain Type
19
Apr
SSH into AKS Nodes
12
Apr
Using Desktop Linux in a Microsoft Shop - Yes You Can
08
Apr
systemd Inhibitor Locks Deep Dive
05
Apr
Cheap AKS Update - Basic Load Balancer
01
Apr
Show the Current Azure CLI Subscription in the Terminal
29
Mar
Search for a Key Vault Certificate in an Azure Subscription
25
Mar
Audit Azure AD User Role Assignments
22
Mar
systemctl status Output Explained
18
Mar
Get Azure Key Vault Certificate Expiration Dates
15
Mar
Find which Azure RBAC Roles Contain a Permission
11
Mar
DefaultDependencies Can Cause a Unit Ordering Cycle
08
Mar
Using journalctl Effectively
04
Mar
Using Azure RBAC to Secure AKS Clusters
01
Mar
Authenticate to Azure from Python
25
Feb
Understanding systemd Critical Chains
22
Feb
Complete Binary Tree
18
Feb
Using xargs to Construct Dynamic Commands
15
Feb
Nginx Error - key values mismatch
11
Feb
8 Reasons Why I Like git Repositories for Documentation (Personal and Team)
08
Feb
Show and Browse the Kubernetes API Reference Documentation in the Terminal
04
Feb
Renew Azure Key Vault Certificates from Let's Encrypt
01
Feb
Run Python Code in a Shell Script
28
Jan
Azure Key Vault Certificates with Let's Encrypt as the Issuer CA
25
Jan
Setting Conditional Breakpoints in Go
21
Jan
Query Azure Resources by Tags with the Azure CLI
18
Jan
Create a Release and Upload Artifacts with GitHub Actions
14
Jan
Emotionally Investing Yourself in Tools
11
Jan
Collect Custom Metrics in AKS
07
Jan
Debug a Python Application Running in Kubernetes
04
Jan
Create a Quick and Easy Prometheus Exporter
2020
28
Dec
Why You Should Typically Use Named Arguments in Python
21
Dec
Change a Function's Output Based on Input Parameter Value in a Python Unit Test
17
Dec
Find the systemd Unit that Owns a Process
14
Dec
Sorting Algorithm Stability - What it is and When it Matters
11
Dec
Be Good at Referencing, Not Remembering
07
Dec
Go's append Behavior and Potentially Unintended Side Effects
30
Nov
Find Which apiVersion to Use for Kubernetes Resources
22
Nov
Azure Consumption Summary from the Command Line
16
Nov
Run Kubernetes Pods on Specific VM Types in AKS
06
Nov
Make HTTP Requests to the Azure REST API from the Command Line
02
Nov
Logging to Azure from an AKS Cluster
22
Oct
Run Kubernetes in Azure the Cheap Way
19
Oct
Output Multiline Strings in GitHub Actions
01
Oct
systemd Time Spans in Go
17
Sep
Beware of kubectl's -t (--tty) Option
16
Sep
Search Through Azure Locations and Their Names
03
Sep
Access the OS Disk from an Inaccessible Azure Linux VM
01
Sep
Azure Linux VM SSH Error - Permission denied (publickey)
31
Aug
AKS StorageClass Objects and Provisioners
28
Jul
Azure CLI Tips and Tricks
10
Jul
Azure Active Directory Service Principals and Permissions from the Azure CLI
22
Jun
Simple vs Oneshot - Choosing a systemd Service Type
15
Jun
Why Feature Flags Are Great
12
May
Kubernetes Application Upgrade Synchronization With Helm
30
Apr
Connect Kubernetes Applications to Azure Resources with Managed Service Identities
22
Apr
Why I Prefer systemd Timers Over Cron
03
Apr
Dump Manifests for all Revisions for a Helm Release
25
Feb
7 Reasons to Use the Terminal
05
Feb
Kubernetes API Groups, Resources, and Verbs
04
Feb
Running kubectl Commands From Within a Pod
03
Feb
Getting systemd unit dependencies
02
Feb
Moving Away From Medium (mostly) to GitHub Pages For My Blog
2019
20
Nov
Searching Through All systemd Unit Files for a String
12
Sep
Talking to systemd Through dbus with Python
06
Aug
Creating a Python package for Ubuntu... From code zero to apt install
2018
01
May
Kubernetes’ AlwaysPullImages Admission Control - the Importance, Implementation, and Security Vulnerability in its Absence
18
Apr
Extending Kubernetes - Create Controllers for Core and Custom Resources
08
Feb
Logging to systemd in Python
29
Jan
Get the History of an Installed Package with DNF
20
Jan
Logging, Flask, and Gunicorn... the Manageable Way
14
Jan
Debugging a Python Flask Application in a Container with Docker Compose
03
Jan
SSH Through a Jumpbox to a Protected Server
2017
05
Oct
Monitor, Log, and Alert CPU Throttling from Overheating on Linux
25
Sep
Running and Debugging Azure Functions Locally on Linux
17
Jul
Sherlock - a sandbox environment provisioning tool for your integration testing pipeline in Azure
31
May
Installing Python's cryptography package on Fedora Linux
13
May
Module Import Precedence in Python
20
Apr
Use Azure Blob Storage for Remote Terraform State
2016
22
Nov
Custom build logic post git push with Azure App Service and Kudu for a Node.js web app
21
Oct
The easy (and nice) way to do CLI apps in Python
Topics
aks
azure
azure functions
containers
debian
devops
docker
fedora
flask
github
gnome
golang
gunicorn
helm
istio
kubernetes
linux
mysql
openssl
opentelemetry
postgresql
prometheus
python
security
software development
sre
systemd
terraform
ubuntu
vim
Topics
opentelemetry
vim
openssl
istio
helm
prometheus
kubernetes
devops
azure
postgresql
fedora
linux
flask
debian
containers
ubuntu
terraform
sre
mysql
gunicorn
gnome
docker
azure functions
python
golang
software development
systemd
github
security
aks