---
title: "DevTips - Quick Developer Tips and Best Practices"
lang: "en"
author: "Mohammad Abu Mattar"
canonical: https://mkabumattar.com/page/2
---

# DevTips

One tip per page, each small enough to try before your coffee cools. Mostly the fixes and flags I wish someone had told me sooner.

[All Tips18](/devtips)[Devops devsecops5](/devtips/categories/devops--devsecops)[Kubernetes containers2](/devtips/categories/kubernetes--containers)[Cloud infrastructure automation4](/devtips/categories/cloud--infrastructure-automation)[Containers docker1](/devtips/categories/containers--docker)[Developer tools productivity1](/devtips/categories/developer-tools--productivity)[Kubernetes devops1](/devtips/categories/kubernetes--devops)[Kubernetes cloud native1](/devtips/categories/kubernetes--cloud-native)[Devops kubernetes1](/devtips/categories/devops--kubernetes)[View All…](/devtips/categories)

CategoryAllDevOps & DevSecOps (5)Cloud & Infrastructure Automation (4)Kubernetes & Containers (2)Containers & Docker (1)Developer Tools & Productivity (1)DevOps & Kubernetes (1)DevOps & Observability (1)Kubernetes & Cloud Native (1)Kubernetes & DevOps (1)Observability & Monitoring (1)TagAllDevOps (7)Kubernetes (5)Terraform (5)IaC (4)CI/CD (3)DevSecOps (3)Docker (3)Infrastructure as Code (3)Microservices (3)Cloud Automation (2)Cloud Infrastructure (2)Cloud Native (2)Deployment (2)GitOps (2)Helm (2)Infrastructure (2)Monitoring (2)Observability (2)Security (2)Terragrunt (2)AI Agents (1)AI Tools (1)ArgoCD (1)Automation (1)Bash (1)BuildKit (1)CDKTF (1)CICD Security (1)Cloud Security (1)ClusterIP (1)Command Line (1)Compliance (1)Container Image (1)Container Orchestration (1)Container Security (1)Containerization (1)Containers (1)Continuous Delivery (1)Credentials (1)Developer Productivity (1)Developer Tools (1)Distributed Tracing (1)Distroless (1)Docker Cleanup (1)DRY Principle (1)Elasticsearch (1)ELK Stack (1)Environment Variables (1)Environments (1)GitHub Actions (1)GitHub Copilot (1)Governance (1)HashiCorp (1)Home Lab (1)IAM Roles (1)IDE Extensions (1)Image Optimization (1)Infrastructure Maintenance (1)K8s Services (1)Kibana (1)Least Privilege (1)LimitRange (1)Linux (1)LoadBalancer (1)Logging (1)Modules (1)Multi Stage Build (1)Multi Tenancy (1)Namespaces (1)NetworkPolicy (1)NodePort (1)OIDC (1)OPA/Rego (1)OpenTelemetry (1)OpenTofu (1)Pipeline Security (1)Platform Engineering (1)Policy as Code (1)Productivity (1)PruneMate (1)Pulumi (1)RBAC (1)Remote state (1)ResourceQuota (1)Secrets (1)Shell Scripting (1)Storage Management (1)Supply Chain Security (1)Terminal (1)Trivy (1)VS Code (1)Vulnerability Scanning (1)Workspaces (1)SortNewest firstOldest firstA to ZShortest read first

[![Policy-as-Code Governance with OPA/Rego](/_astro/hero.CwAJ64Mi_1WeH9p.webp)](/devtips/post/policy-as-code-opa-rego)

## [Policy-as-Code Governance with OPA/Rego](/devtips/post/policy-as-code-opa-rego)

-   [DevOps & DevSecOps](/devtips/categories/devops--devsecops)
-   24 Feb 2026
-   03 Mins read

Why policy-as-code matters The governance problem Managing infrastructure at scale gets complicated fast. As your infrastructure grows, keeping it consistent and compliant gets harder. M

[#Policy as Code](/devtips/tags/policy-as-code)[#OPA/Rego](/devtips/tags/oparego)[#Compliance](/devtips/tags/compliance)+4 tags

[Read Tip](/devtips/post/policy-as-code-opa-rego)

[![Setting Up GitHub Copilot Agent Skills in Your Repository](/_astro/hero.CCW95PMK_ZaDUPy.webp)](/devtips/post/github-copilot-agent-skills-setup)

## [Setting Up GitHub Copilot Agent Skills in Your Repository](/devtips/post/github-copilot-agent-skills-setup)

-   [Developer Tools & Productivity](/devtips/categories/developer-tools--productivity)
-   26 Jan 2026
-   06 Mins read

Why teach Copilot new skills? What a skill actually is If you're ready to teach Copilot some new tricks, Agent Skills are your answer. Built on the agentskills.io op

[#GitHub Copilot](/devtips/tags/github-copilot)[#AI Tools](/devtips/tags/ai-tools)[#VS Code](/devtips/tags/vs-code)+4 tags

[Read Tip](/devtips/post/github-copilot-agent-skills-setup)

[![7 Reasons Learning the Linux Terminal is Worth It (Even for Beginners)](/_astro/hero.Ci9C_A6W_1AKnQ0.webp)](/devtips/post/7-reasons-learning-linux-terminal-worth-it-beginners)

## [7 Reasons Learning the Linux Terminal is Worth It (Even for Beginners)](/devtips/post/7-reasons-learning-linux-terminal-worth-it-beginners)

-   [DevOps & DevSecOps](/devtips/categories/devops--devsecops)
-   05 Jan 2026
-   03 Mins read

Why learn the Linux terminal? Why it still matters Even with the graphical tools and AI assistants available now, the terminal is the most direct way to work with a Linux system. It's a core

[#Linux](/devtips/tags/linux)[#Terminal](/devtips/tags/terminal)[#Command Line](/devtips/tags/command-line)+4 tags

[Read Tip](/devtips/post/7-reasons-learning-linux-terminal-worth-it-beginners)

[![Docker Is Eating Your Disk Space (And How PruneMate Fixes It)](/_astro/hero.BD8-gtdG_26qrXW.webp)](/devtips/post/docker-disk-space-prunemate)

## [Docker Is Eating Your Disk Space (And How PruneMate Fixes It)](/devtips/post/docker-disk-space-prunemate)

-   [Containers & Docker](/devtips/categories/containers--docker)
-   02 Jan 2026
-   05 Mins read

The problem: Docker is eating your disk space What it looks like when it happens Your Docker host is running out of space. Again. You've been spinning up containers, testing new services

[#Docker](/devtips/tags/docker)[#Containers](/devtips/tags/containers)[#Home Lab](/devtips/tags/home-lab)+5 tags

[Read Tip](/devtips/post/docker-disk-space-prunemate)

[![Understanding Kubernetes Services: ClusterIP vs NodePort vs LoadBalancer](/_astro/hero.DBNjupL__148EQW.webp)](/devtips/post/kubernetes-services-clusterip-nodeport-loadbalancer)

## [Understanding Kubernetes Services: ClusterIP vs NodePort vs LoadBalancer](/devtips/post/kubernetes-services-clusterip-nodeport-loadbalancer)

-   [DevOps & Kubernetes](/devtips/categories/devops--kubernetes)
-   23 Dec 2025
-   04 Mins read

If you're working with Kubernetes, you've probably noticed that Pods come and go, and their IP addresses keep changing. That's where Services come in. They give you a stable way to keep your apps acce

[#Kubernetes](/devtips/tags/kubernetes)[#K8s Services](/devtips/tags/k8s-services)[#ClusterIP](/devtips/tags/clusterip)+5 tags

[Read Tip](/devtips/post/kubernetes-services-clusterip-nodeport-loadbalancer)

[![Managing Terraform at Scale with Terragrunt](/_astro/hero.DUZZoi07_ZRPUOh.webp)](/devtips/post/terraform-terragrunt-wrappers)

## [Managing Terraform at Scale with Terragrunt](/devtips/post/terraform-terragrunt-wrappers)

-   [Cloud & Infrastructure Automation](/devtips/categories/cloud--infrastructure-automation)
-   21 Dec 2025
-   03 Mins read

The problem with Terraform at scale Duplicated code across environments If you're managing infrastructure with Terraform across several environments or projects, you've probably hit the point

[#Terraform](/devtips/tags/terraform)[#Terragrunt](/devtips/tags/terragrunt)[#Infrastructure as Code](/devtips/tags/infrastructure-as-code)+4 tags

[Read Tip](/devtips/post/terraform-terragrunt-wrappers)

[![HashiCorp Pulls the Plug on CDKTF](/_astro/hero.BBIsBB2t_Z22hNwP.webp)](/devtips/post/cdktf-deprecation-hashicorp-terraform)

## [HashiCorp Pulls the Plug on CDKTF](/devtips/post/cdktf-deprecation-hashicorp-terraform)

-   [Cloud & Infrastructure Automation](/devtips/categories/cloud--infrastructure-automation)
-   15 Dec 2025
-   03 Mins read

CDKTF is officially deprecated The deprecation announcement Well, it finally happened. HashiCorp (now owned by IBM) officially deprecated the Cloud Development Kit for Terraform (CDKTF)

[#Terraform](/devtips/tags/terraform)[#CDKTF](/devtips/tags/cdktf)[#HashiCorp](/devtips/tags/hashicorp)+6 tags

[Read Tip](/devtips/post/cdktf-deprecation-hashicorp-terraform)

[![Tracing Microservices with OpenTelemetry](/_astro/hero.BOHz8WyH_Z1IEpz3.webp)](/devtips/post/tracing-microservices-opentelemetry)

## [Tracing Microservices with OpenTelemetry](/devtips/post/tracing-microservices-opentelemetry)

-   [Observability & Monitoring](/devtips/categories/observability--monitoring)
-   23 Jun 2025
-   03 Mins read

Why monitor your microservices? The complexity of distributed systems If you're juggling multiple services, it's hard to track how they work together. OpenTelemetry lets you follow one reques

[#OpenTelemetry](/devtips/tags/opentelemetry)[#Microservices](/devtips/tags/microservices)[#Distributed Tracing](/devtips/tags/distributed-tracing)+4 tags

[Read Tip](/devtips/post/tracing-microservices-opentelemetry)

[](/devtips)

[1](/devtips)[2](/devtips/page/2)[3](/devtips/page/3)

[](/devtips/page/3)Page 2 of 3

### [Categories](/devtips/categories)

-   [Devops devsecops5](/devtips/categories/devops--devsecops)
-   [Kubernetes containers2](/devtips/categories/kubernetes--containers)
-   [Cloud infrastructure automation4](/devtips/categories/cloud--infrastructure-automation)
-   [Containers docker1](/devtips/categories/containers--docker)
-   [Developer tools productivity1](/devtips/categories/developer-tools--productivity)
-   [Kubernetes devops1](/devtips/categories/kubernetes--devops)
-   [Kubernetes cloud native1](/devtips/categories/kubernetes--cloud-native)
-   [Devops kubernetes1](/devtips/categories/devops--kubernetes)
-   [Devops observability1](/devtips/categories/devops--observability)
-   [Observability monitoring1](/devtips/categories/observability--monitoring)

### [Tags](/devtips/tags)

[#Linux1](/devtips/tags/linux)[#Terminal1](/devtips/tags/terminal)[#Command line1](/devtips/tags/command-line)[#Bash1](/devtips/tags/bash)[#Shell scripting1](/devtips/tags/shell-scripting)[#Developer tools1](/devtips/tags/developer-tools)[#Productivity1](/devtips/tags/productivity)[#Argocd1](/devtips/tags/argocd)[#Gitops2](/devtips/tags/gitops)[#Kubernetes5](/devtips/tags/kubernetes)[#Continuous delivery1](/devtips/tags/continuous-delivery)[#Helm2](/devtips/tags/helm)[#Cicd3](/devtips/tags/cicd)[#Deployment2](/devtips/tags/deployment)[#Terraform5](/devtips/tags/terraform)[#Cdktf1](/devtips/tags/cdktf)[#Hashicorp1](/devtips/tags/hashicorp)[#Infrastructure as code3](/devtips/tags/infrastructure-as-code)[#Devops7](/devtips/tags/devops)[#Pulumi1](/devtips/tags/pulumi)[#Opentofu1](/devtips/tags/opentofu)[#Iac4](/devtips/tags/iac)[#Cloud infrastructure2](/devtips/tags/cloud-infrastructure)[#Container security1](/devtips/tags/container-security)[#Vulnerability scanning1](/devtips/tags/vulnerability-scanning)[#Trivy1](/devtips/tags/trivy)[#Docker3](/devtips/tags/docker)[#Supply chain security1](/devtips/tags/supply-chain-security)[#Devsecops3](/devtips/tags/devsecops)[#Containers1](/devtips/tags/containers)[#Home lab1](/devtips/tags/home-lab)[#Storage management1](/devtips/tags/storage-management)[#Prunemate1](/devtips/tags/prunemate)[#Docker cleanup1](/devtips/tags/docker-cleanup)[#Infrastructure maintenance1](/devtips/tags/infrastructure-maintenance)[#Multi stage build1](/devtips/tags/multi-stage-build)[#Container image1](/devtips/tags/container-image)[#Distroless1](/devtips/tags/distroless)[#Buildkit1](/devtips/tags/buildkit)[#Security2](/devtips/tags/security)[#Image optimization1](/devtips/tags/image-optimization)[#Github actions1](/devtips/tags/github-actions)[#Secrets1](/devtips/tags/secrets)[#Environment variables1](/devtips/tags/environment-variables)[#Oidc1](/devtips/tags/oidc)[#Credentials1](/devtips/tags/credentials)[#Github copilot1](/devtips/tags/github-copilot)[#Ai tools1](/devtips/tags/ai-tools)[#Vs code1](/devtips/tags/vs-code)[#Developer productivity1](/devtips/tags/developer-productivity)[#Ai agents1](/devtips/tags/ai-agents)[#Automation1](/devtips/tags/automation)[#Ide extensions1](/devtips/tags/ide-extensions)[#Containerization1](/devtips/tags/containerization)[#Microservices3](/devtips/tags/microservices)[#Infrastructure2](/devtips/tags/infrastructure)[#Namespaces1](/devtips/tags/namespaces)[#Multi tenancy1](/devtips/tags/multi-tenancy)[#Rbac1](/devtips/tags/rbac)[#Networkpolicy1](/devtips/tags/networkpolicy)[#Resourcequota1](/devtips/tags/resourcequota)[#Limitrange1](/devtips/tags/limitrange)[#Platform engineering1](/devtips/tags/platform-engineering)[#K8s services1](/devtips/tags/k8s-services)[#Clusterip1](/devtips/tags/clusterip)[#Nodeport1](/devtips/tags/nodeport)[#Loadbalancer1](/devtips/tags/loadbalancer)[#Container orchestration1](/devtips/tags/container-orchestration)[#Cloud native2](/devtips/tags/cloud-native)[#Modules1](/devtips/tags/modules)[#Cloud automation2](/devtips/tags/cloud-automation)[#Policy as code1](/devtips/tags/policy-as-code)[#Oparego1](/devtips/tags/oparego)[#Compliance1](/devtips/tags/compliance)[#Governance1](/devtips/tags/governance)[#Cicd security1](/devtips/tags/cicd-security)[#Iam roles1](/devtips/tags/iam-roles)[#Least privilege1](/devtips/tags/least-privilege)[#Cloud security1](/devtips/tags/cloud-security)[#Pipeline security1](/devtips/tags/pipeline-security)[#Logging1](/devtips/tags/logging)[#Elk stack1](/devtips/tags/elk-stack)[#Elasticsearch1](/devtips/tags/elasticsearch)[#Kibana1](/devtips/tags/kibana)[#Observability2](/devtips/tags/observability)[#Monitoring2](/devtips/tags/monitoring)[#Terragrunt2](/devtips/tags/terragrunt)[#Dry principle1](/devtips/tags/dry-principle)[#Workspaces1](/devtips/tags/workspaces)[#Environments1](/devtips/tags/environments)[#Remote state1](/devtips/tags/remote-state)[#Opentelemetry1](/devtips/tags/opentelemetry)[#Distributed tracing1](/devtips/tags/distributed-tracing)
