---
title: "Content Library"
author: "Mohammad Abu Mattar"
canonical: https://mkabumattar.com/content
---

## How much time do you have?

-   [5 minutesDevTipsOne idea, one screen.](/devtips)
-   [15 minutesCheatsheetsLook something up, get out.](/cheatsheets)
-   [A long sittingRoadmapsWork through a whole subject.](/roadmaps)

## Pick up where you left off

## Latest Content & Resources

Explore my latest blog posts, cheatsheets, code snippets, DevTips, flashcards, glossary entries, quizzes, and roadmaps. Real-world insights from production environments and battle-tested practices.

### [Latest Blog Posts](/blog)

108

[View All](/blog)

[![Testing Terraform: Static Analysis, Native Tests, and Terratest](/_astro/hero.QFNhZZd9_Z1MKEy5.webp)](/blog/post/terraform-testing-terratest-native-tests)

## [Testing Terraform: Static Analysis, Native Tests, and Terratest](/blog/post/terraform-testing-terratest-native-tests)

-   [Infrastructure as Code](/blog/categories/infrastructure-as-code)
-   [DevOps](/blog/categories/devops)
-   20 Jul, 2026
-   07 Mins read

If you treat infrastructure as code, you have to test it like code. Most of us have lived the alternative. You change one input on a shared module, run a quick plan against staging, and merge. A few h

[#Terraform](/blog/tags/terraform)[#Terratest](/blog/tags/terratest)[#CI/CD](/blog/tags/cicd)+4 tags

[read more](/blog/post/terraform-testing-terratest-native-tests)

[![tRPC: End-to-End Type-Safe APIs in TypeScript Without Codegen](/_astro/hero.DhkOXI-y_wLRX0.webp)](/blog/post/trpc-end-to-end-typesafe-apis)

## [tRPC: End-to-End Type-Safe APIs in TypeScript Without Codegen](/blog/post/trpc-end-to-end-typesafe-apis)

-   [Web Development](/blog/categories/web-development)
-   [Backend Engineering](/blog/categories/backend-engineering)
-   20 Jul, 2026
-   08 Mins read

The line between the frontend and the backend has always been a place where types go to die. In a normal REST setup you define the shape of a request and a response on the server, then you write those

[#TRPC](/blog/tags/trpc)[#TypeScript](/blog/tags/typescript)[#Node.js](/blog/tags/nodejs)+4 tags

[read more](/blog/post/trpc-end-to-end-typesafe-apis)

[![FinOps in Practice: How to Build a Cloud Cost Accountability Culture on AWS](/_astro/hero.BjXbzaTR_Z2jXzr9.webp)](/blog/post/finops-cloud-cost-accountability-aws)

## [FinOps in Practice: How to Build a Cloud Cost Accountability Culture on AWS](/blog/post/finops-cloud-cost-accountability-aws)

-   [Cloud Computing](/blog/categories/cloud-computing)
-   [DevOps](/blog/categories/devops)
-   14 Jul, 2026
-   08 Mins read

Cloud computing changed how businesses pay for technology. Instead of a slow procurement cycle to buy physical servers, a single engineer can spin up thousands of dollars of infrastructure in minutes.

[#FinOps](/blog/tags/finops)[#AWS](/blog/tags/aws)[#Terraform](/blog/tags/terraform)+6 tags

[read more](/blog/post/finops-cloud-cost-accountability-aws)

### [Quick Reference Cheatsheets](/cheatsheets)

40

[View All](/cheatsheets)

[GitHub ActionsDevOps & Tools](/cheatsheets/github-actions)

[Linux NetworkingDevOps & Tools](/cheatsheets/linux-networking)

[kubectlDevOps & Tools](/cheatsheets/kubectl)

[Terraform CheatsheetInfrastructure as Code](/cheatsheets/terraform)

[AWS CLICloud Computing](/cheatsheets/aws-cli)

[Docker SwarmDevOps & Tools](/cheatsheets/docker-swarm)

### [Code Snippets & Examples](/codesnippets)

17

[View All](/codesnippets)

[![AWS DynamoDB CRUD Operations in Node.js with the AWS SDK v3](/_astro/hero.CceR-orf_Z2scRI0.webp)](/codesnippets/post/nodejs-dynamodb-crud-aws-sdk-v3)

## [AWS DynamoDB CRUD Operations in Node.js with the AWS SDK v3](/codesnippets/post/nodejs-dynamodb-crud-aws-sdk-v3)

-   [Nodejs](/codesnippets/categories/nodejs)
-   [Aws](/codesnippets/categories/aws)
-   05 Aug, 2026
-   07 Mins read

Quick Tip Wrap the low-level DynamoDB client in a DynamoDBDocumentClient so you pass plain JavaScript objects in and get plain objects back, then guard your writes with ConditionExpression an

[#DynamoDB](/codesnippets/tags/dynamodb)[#Node.js](/codesnippets/tags/nodejs)[#AWS SDK v3](/codesnippets/tags/aws-sdk-v3)+3 tags

[Typescript](/codesnippets/typescript)

[View Code](/codesnippets/post/nodejs-dynamodb-crud-aws-sdk-v3)

[![Python Async HTTP Requests with aiohttp: Fetch Multiple URLs Concurrently](/_astro/hero.DFXqyT8a_Zqhl7o.webp)](/codesnippets/post/python-async-http-aiohttp-concurrent-requests)

## [Python Async HTTP Requests with aiohttp: Fetch Multiple URLs Concurrently](/codesnippets/post/python-async-http-aiohttp-concurrent-requests)

-   [Python](/codesnippets/categories/python)
-   [Async](/codesnippets/categories/async)
-   26 Jul, 2026
-   05 Mins read

Quick Tip Reuse one aiohttp session, fan your requests out with asyncio.gather, and cap them with a semaphore to fetch hundreds of URLs in the time one loop would take. The Problem \*\*The

[#Python](/codesnippets/tags/python)[#Aiohttp](/codesnippets/tags/aiohttp)[#Asyncio](/codesnippets/tags/asyncio)+3 tags

[Python](/codesnippets/python)

[View Code](/codesnippets/post/python-async-http-aiohttp-concurrent-requests)

[![Bash Retry Function: Automatically Retry Failing Commands with Exponential Backoff](/_astro/hero.Dap62rVN_Z1q0nar.webp)](/codesnippets/post/bash-retry-function-exponential-backoff)

## [Bash Retry Function: Automatically Retry Failing Commands with Exponential Backoff](/codesnippets/post/bash-retry-function-exponential-backoff)

-   [Devops](/codesnippets/categories/devops)
-   [Shell scripting](/codesnippets/categories/shell-scripting)
-   20 Jul, 2026
-   05 Mins read

Quick Tip Wrap any flaky command in one reusable retry function and stop re-running red pipelines by hand. The Problem The Problem Some commands fail for reasons that have nothing to

[#Bash](/codesnippets/tags/bash)[#Retry](/codesnippets/tags/retry)[#Exponential Backoff](/codesnippets/tags/exponential-backoff)+3 tags

[Bash](/codesnippets/bash)

[View Code](/codesnippets/post/bash-retry-function-exponential-backoff)

### [Case Studies](/case-studies)

5

[View All](/case-studies)

[![Building an Internal Developer Platform on Backstage and GitOps](/_astro/hero.Dq3xrist_1gdSPN.webp)](/case-studies/post/internal-developer-platform-backstage-gitops)

## [Building an Internal Developer Platform on Backstage and GitOps](/case-studies/post/internal-developer-platform-backstage-gitops)

-   [DevOps](/case-studies/categories/devops)
-   [Platform Engineering](/case-studies/categories/platform-engineering)
-   03 Aug, 2026
-   09 Mins read

Product teams were spending more time waiting on the platform team than building features. Spinning up a new service meant opening a ticket, waiting for someone to provision a repo, wire up CI, write

[#Backstage](/case-studies/tags/backstage)[#GitOps](/case-studies/tags/gitops)[#Argo CD](/case-studies/tags/argo-cd)+4 tags

[Read Case Study](/case-studies/post/internal-developer-platform-backstage-gitops)

[![Zero-Downtime PostgreSQL Major-Version Upgrade at Scale](/_astro/hero.C03RcOLI_141vsK.webp)](/case-studies/post/zero-downtime-postgres-upgrade)

## [Zero-Downtime PostgreSQL Major-Version Upgrade at Scale](/case-studies/post/zero-downtime-postgres-upgrade)

-   [DevOps](/case-studies/categories/devops)
-   [Databases](/case-studies/categories/databases)
-   25 Jul, 2026
-   08 Mins read

A multi-terabyte PostgreSQL 12 database was reaching end of life, and the business ran around the clock, so the usual answer of "schedule a maintenance window" was off the table. We upgraded it to Pos

[#PostgreSQL](/case-studies/tags/postgresql)[#Logical Replication](/case-studies/tags/logical-replication)[#Zero Downtime](/case-studies/tags/zero-downtime)+3 tags

[Read Case Study](/case-studies/post/zero-downtime-postgres-upgrade)

[![Migrating a Monolith to Kubernetes Without a Big-Bang Cutover](/_astro/hero.CAKh7bXG_Z1PnEBt.webp)](/case-studies/post/monolith-to-kubernetes-strangler-migration)

## [Migrating a Monolith to Kubernetes Without a Big-Bang Cutover](/case-studies/post/monolith-to-kubernetes-strangler-migration)

-   [DevOps](/case-studies/categories/devops)
-   [Cloud Native](/case-studies/categories/cloud-native)
-   20 Jul, 2026
-   07 Mins read

Almost every failed "let's move off the monolith" project shares one detail: the plan was a big-bang cutover. Rewrite in parallel, pick a weekend, flip the switch, and pray. This is the opposite of th

[#Kubernetes](/case-studies/tags/kubernetes)[#EKS](/case-studies/tags/eks)[#Migration](/case-studies/tags/migration)+4 tags

[Read Case Study](/case-studies/post/monolith-to-kubernetes-strangler-migration)

### [DevTips & Tricks](/devtips)

17

[View All](/devtips)

[![GitHub Actions Secrets and Environment Variables: Handle Config the Right Way](/_astro/hero.DSfz34Ly_ZH1GxC.webp)](/devtips/post/github-actions-secrets-environment-variables-guide)

## [GitHub Actions Secrets and Environment Variables: Handle Config the Right Way](/devtips/post/github-actions-secrets-environment-variables-guide)

-   [DevOps & DevSecOps](/devtips/categories/devops--devsecops)
-   08 Aug, 2026
-   04 Mins read

Why Secrets Handling Matters? Most CI leaks are config mistakes, not attacks Hey, want to stop leaking credentials in your pipelines? Most secret leaks in CI are not the result of some cl

[#GitHub Actions](/devtips/tags/github-actions)[#Secrets](/devtips/tags/secrets)[#Environment Variables](/devtips/tags/environment-variables)+4 tags

[Read More](/devtips/post/github-actions-secrets-environment-variables-guide)

[![Docker Multi-Stage Builds: Smaller, Safer Images for Production](/_astro/hero.CI-H9NMO_1DjM7c.webp)](/devtips/post/docker-multi-stage-builds-smaller-production-images)

## [Docker Multi-Stage Builds: Smaller, Safer Images for Production](/devtips/post/docker-multi-stage-builds-smaller-production-images)

-   [Kubernetes & Containers](/devtips/categories/kubernetes--containers)
-   27 Jul, 2026
-   04 Mins read

Why Multi-Stage Builds Matter? Small images are not just about disk space Hey, want to stop shipping a toolshed to production? If your Dockerfile builds and runs the app in one stage, you

[#Docker](/devtips/tags/docker)[#Multi Stage Build](/devtips/tags/multi-stage-build)[#Container Image](/devtips/tags/container-image)+4 tags

[Read More](/devtips/post/docker-multi-stage-builds-smaller-production-images)

[![ArgoCD GitOps: Sync Kubernetes Deployments Automatically from Git](/_astro/hero.D4Pcicvc_VlKXt.webp)](/devtips/post/argocd-gitops-kubernetes-deployments-git-sync)

## [ArgoCD GitOps: Sync Kubernetes Deployments Automatically from Git](/devtips/post/argocd-gitops-kubernetes-deployments-git-sync)

-   [Kubernetes & Containers](/devtips/categories/kubernetes--containers)
-   22 Jul, 2026
-   04 Mins read

Why GitOps for Kubernetes? From kubectl apply to Git as the source of truth Hey, want to stop deploying to Kubernetes by hand? If your releases still come from someone running \`kubectl ap

[#ArgoCD](/devtips/tags/argocd)[#GitOps](/devtips/tags/gitops)[#Kubernetes](/devtips/tags/kubernetes)+4 tags

[Read More](/devtips/post/argocd-gitops-kubernetes-deployments-git-sync)

### [Flashcards & Decks](/flashcards)

10

[View All](/flashcards)

[![Terraform Associate Flashcards (TA-003)](/_astro/hero.Cv_c4UNt_28IcAi.webp)](/flashcards/post/terraform-associate-ta003-flashcards)

## [Terraform Associate Flashcards (TA-003)](/flashcards/post/terraform-associate-ta003-flashcards)

-   [Terraform](/flashcards/categories/terraform)
-   [Certification](/flashcards/categories/certification)
-   [Devops](/flashcards/categories/devops)
-   61 Cards
-   ~25 min
-   09 Aug, 2026

Full exam coverage for the HashiCorp Certified Terraform Associate (TA-003) exam using spaced repetition. Covers IaC concepts, CLI, HCL, state, modules, backends, and Terraform Cloud.

[#Terraform](/flashcards/tags/terraform)[#Ta 003](/flashcards/tags/ta-003)[#Hcl](/flashcards/tags/hcl)+5 tags

[View Deck](/flashcards/post/terraform-associate-ta003-flashcards)

[![Kubernetes Administrator Flashcards (CKA)](/_astro/hero.BfnQQLsx_Zc80Sl.webp)](/flashcards/post/kubernetes-administrator-cka-flashcards)

## [Kubernetes Administrator Flashcards (CKA)](/flashcards/post/kubernetes-administrator-cka-flashcards)

-   [Kubernetes](/flashcards/categories/kubernetes)
-   [Certification](/flashcards/categories/certification)
-   [Devops](/flashcards/categories/devops)
-   54 Cards
-   ~23 min
-   28 Jul, 2026

Full exam coverage for the Certified Kubernetes Administrator (CKA) exam using spaced repetition. Covers cluster architecture, workloads, scheduling, networking, storage, security, and troubleshooting.

[#Kubernetes](/flashcards/tags/kubernetes)[#Cka](/flashcards/tags/cka)[#Kubectl](/flashcards/tags/kubectl)+5 tags

[View Deck](/flashcards/post/kubernetes-administrator-cka-flashcards)

[![AWS SysOps Administrator Associate Flashcards (SOA-C02)](/_astro/hero.BgTF6r2Y_TJ9ml.webp)](/flashcards/post/aws-sysops-administrator-associate-flashcards)

## [AWS SysOps Administrator Associate Flashcards (SOA-C02)](/flashcards/post/aws-sysops-administrator-associate-flashcards)

-   [Aws](/flashcards/categories/aws)
-   [Certification](/flashcards/categories/certification)
-   [Devops](/flashcards/categories/devops)
-   50 Cards
-   ~21 min
-   28 May, 2026

Full exam coverage for the AWS Certified SysOps Administrator Associate (SOA-C02) exam using spaced repetition. Covers monitoring, reliability, deployment, security, networking, and cost optimization.

[#Aws](/flashcards/tags/aws)[#Sysops](/flashcards/tags/sysops)[#Soa c02](/flashcards/tags/soa-c02)+6 tags

[View Deck](/flashcards/post/aws-sysops-administrator-associate-flashcards)

### [Glossary & Terms](/glossary)

6

[View All](/glossary)

[![Kubernetes Advanced](/_astro/hero.CRGMYrKF_ZUVOtB.webp)](/glossary/post/kubernetes-advanced)

## [Kubernetes Advanced](/glossary/post/kubernetes-advanced)

-   [Kubernetes](/glossary/categories/kubernetes)
-   [Platform](/glossary/categories/platform)
-   39 Terms
-   10 Aug, 2026

This glossary covers the advanced Kubernetes terminology platform engineers rely on, from scheduling and networking to storage, security, extensibility, and the workload controllers that keep applicat

[#Kubernetes](/glossary/tags/kubernetes)[#Orchestration](/glossary/tags/orchestration)[#Platform](/glossary/tags/platform)+5 tags

[View Glossary](/glossary/post/kubernetes-advanced)

[![Cloud Computing on AWS](/_astro/hero.DGzICRow_2rLKwd.webp)](/glossary/post/cloud-computing-aws)

## [Cloud Computing on AWS](/glossary/post/cloud-computing-aws)

-   [Cloud](/glossary/categories/cloud)
-   [Aws](/glossary/categories/aws)
-   51 Terms
-   29 Jul, 2026

This glossary covers the essential Amazon Web Services terms every cloud engineer and architect should know, from compute and storage to networking, databases, and the identity controls that keep it a

[#Aws](/glossary/tags/aws)[#Cloud](/glossary/tags/cloud)[#Infrastructure](/glossary/tags/infrastructure)+5 tags

[View Glossary](/glossary/post/cloud-computing-aws)

[![Networking Fundamentals](/_astro/hero.CcGlr5M6_2oFVtq.webp)](/glossary/post/networking-fundamentals)

## [Networking Fundamentals](/glossary/post/networking-fundamentals)

-   [Networking](/glossary/categories/networking)
-   [Fundamentals](/glossary/categories/fundamentals)
-   47 Terms
-   28 May, 2026

This glossary covers the core networking concepts every developer, DevOps engineer, and system administrator should know, from how data is layered and addressed to how it gets routed across the intern

[#Networking](/glossary/tags/networking)[#Tcp ip](/glossary/tags/tcp-ip)[#Dns](/glossary/tags/dns)+5 tags

[View Glossary](/glossary/post/networking-fundamentals)

### [Interactive Quizzes & Assessments](/quizzes)

62

[View All](/quizzes)

[![Spring Boot: Java Application Framework Essentials](/_astro/hero.XZK6SCtC_Z1afUa6.webp)](/quizzes/post/spring-boot-fundamentals-quiz)

## [Spring Boot: Java Application Framework Essentials](/quizzes/post/spring-boot-fundamentals-quiz)

-   [Spring Boot](/quizzes/categories/spring-boot)
-   [Java](/quizzes/categories/java)
-   20 Questions
-   ~5 min
-   11 Aug, 2026
-   Level: Intermediate

Spring Boot removed most of the ceremony from Java backend development, but the framework still does a lot of work you cannot see. This quiz walks through dependency injection, auto-configuration, RES

[#Spring Boot](/quizzes/tags/spring-boot)[#Java](/quizzes/tags/java)[#Dependency Injection](/quizzes/tags/dependency-injection)+3 tags

[Take Quiz](/quizzes/post/spring-boot-fundamentals-quiz)

[![Java: Core Language & JVM Fundamentals](/_astro/hero.MRO-sQtF_2x4c20.webp)](/quizzes/post/java-fundamentals-quiz)

## [Java: Core Language & JVM Fundamentals](/quizzes/post/java-fundamentals-quiz)

-   [Java](/quizzes/categories/java)
-   [JVM](/quizzes/categories/jvm)
-   20 Questions
-   ~5 min
-   01 Aug, 2026
-   Level: Intermediate

Java has quietly powered banks, Android, and countless backend systems for decades, and the language keeps evolving with records, sealed classes, and virtual threads. This quiz walks through the core

[#Java](/quizzes/tags/java)[#JVM](/quizzes/tags/jvm)[#OOP](/quizzes/tags/oop)+3 tags

[Take Quiz](/quizzes/post/java-fundamentals-quiz)

[![Rust: Ownership, Borrowing & Memory Safety](/_astro/hero.D5y5Mms9_1OrNm1.webp)](/quizzes/post/rust-fundamentals-quiz)

## [Rust: Ownership, Borrowing & Memory Safety](/quizzes/post/rust-fundamentals-quiz)

-   [Rust](/quizzes/categories/rust)
-   [Systems Programming](/quizzes/categories/systems-programming)
-   20 Questions
-   ~5 min
-   28 May, 2026
-   Level: Intermediate

This quiz tests your grip on the parts of Rust that trip up newcomers and pay off later: ownership and moves, borrowing and lifetimes, traits and generics, pattern matching, error handling with \`Resul

[#Rust](/quizzes/tags/rust)[#Ownership](/quizzes/tags/ownership)[#Borrow Checker](/quizzes/tags/borrow-checker)+3 tags

[Take Quiz](/quizzes/post/rust-fundamentals-quiz)

### [Roadmaps & Learning Paths](/roadmaps)

7

[View All](/roadmaps)

[![Backend Developer Beginner to Expert](/_astro/hero.CJjzYc77_Z1IeaC6.webp)](/roadmaps/post/backend-developer-roadmap)

## [Backend Developer Beginner to Expert](/roadmaps/post/backend-developer-roadmap)

-   [Web development](/roadmaps/post/categories/web-development)
-   All Levels
-   17 Stages
-   57 Topics
-   02 Aug, 2026

Backend Developer Beginner to Expert This roadmap walks you from your first server-side program to designing scalable, secure systems. Work through the stages in order: nail a language, the command

[#Backend](/roadmaps/post/tags/backend)[#Api](/roadmaps/post/tags/api)[#Rest](/roadmaps/post/tags/rest)+5 tags

[View Roadmap](/roadmaps/post/backend-developer-roadmap)

[![Frontend Developer Beginner to Expert](/_astro/hero.CDk17Z8E_Z1Sha1E.webp)](/roadmaps/post/frontend-developer-roadmap)

## [Frontend Developer Beginner to Expert](/roadmaps/post/frontend-developer-roadmap)

-   [Web development](/roadmaps/post/categories/web-development)
-   All Levels
-   18 Stages
-   81 Topics
-   28 May, 2026

Frontend Developer Beginner to Expert This roadmap walks you from absolute beginner to a strong, hireable frontend engineer. Work through the stages in order: the early ones build the mental model

[#Frontend](/roadmaps/post/tags/frontend)[#Html](/roadmaps/post/tags/html)[#Css](/roadmaps/post/tags/css)+5 tags

[View Roadmap](/roadmaps/post/frontend-developer-roadmap)

[![Release Engineer Beginner to Expert](/_astro/hero.BQKRuG1k_Z1pbg3o.webp)](/roadmaps/post/release-engineer-roadmap)

## [Release Engineer Beginner to Expert](/roadmaps/post/release-engineer-roadmap)

-   [Devops](/roadmaps/post/categories/devops)
-   [Cloud](/roadmaps/post/categories/cloud)
-   [Release engineering](/roadmaps/post/categories/release-engineering)
-   All Levels
-   26 Stages
-   112 Topics
-   25 Apr, 2026

This roadmap takes you from release engineering principles and version control mastery through to advanced GitOps patterns and multi-account AWS delivery at scale. Each stage builds on the last treat

[#Aws](/roadmaps/post/tags/aws)[#Ci cd](/roadmaps/post/tags/ci-cd)[#Terraform](/roadmaps/post/tags/terraform)+4 tags

[View Roadmap](/roadmaps/post/release-engineer-roadmap)
