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

# Content Library

Nine kinds of thing, from a one-screen tip to a whole roadmap. Start wherever your afternoon actually is.

## 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)

[65 not published yet](/coming-soon)

## Pick up where you left off

## [Latest Blog Posts](/blog)

109

[View All](/blog)

[![Kubernetes Health Probes: Building Self-Healing Applications](/assets/blog/0109-kubernetes-health-probes-self-healing/hero.png)](/blog/post/kubernetes-health-probes-self-healing)

## [Kubernetes Health Probes: Building Self-Healing Applications](/blog/post/kubernetes-health-probes-self-healing)

-   [Kubernetes](/blog/categories/kubernetes)
-   [Site Reliability Engineering](/blog/categories/site-reliability-engineering)
-   15 Aug 2026
-   08 Mins read

Kubernetes has a reputation for keeping applications online, but it is not magic. Out of the box, the cluster is blind to what happens inside your container. If your application deadlocks or exhausts

[#Kubernetes](/blog/tags/kubernetes)[#Liveness probe](/blog/tags/liveness-probe)[#Readiness probe](/blog/tags/readiness-probe)+5 tags

[Read Post](/blog/post/kubernetes-health-probes-self-healing)

[![Testing Terraform: Static Analysis, Native Tests, and Terratest](/assets/blog/0108-terraform-testing-terratest-native-tests/hero.png)](/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 Post](/blog/post/terraform-testing-terratest-native-tests)

[![tRPC: End-to-End Type-Safe APIs in TypeScript Without Codegen](/assets/blog/0107-trpc-end-to-end-typesafe-apis/hero.png)](/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 Post](/blog/post/trpc-end-to-end-typesafe-apis)

## [Cheatsheets](/cheatsheets)

41

[View All](/cheatsheets)

[Python Virtual Environments CheatsheetPython](/cheatsheets/python-venv)

[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)

## [Code snippets](/codesnippets)

18

[View All](/codesnippets)

[![Bash Script Locking: Prevent Concurrent Runs with a PID File](/assets/codesnippets/0018-bash-script-locking-pid-file/hero.png)](/codesnippets/post/bash-script-locking-pid-file)

## [Bash Script Locking: Prevent Concurrent Runs with a PID File](/codesnippets/post/bash-script-locking-pid-file)

-   [Bash](/codesnippets/categories/bash)
-   [Automation](/codesnippets/categories/automation)
-   18 Aug 2026
-   04 Mins read

Quick Tip Wrap any script that must not run twice at once in a PID-file lock, and a second copy simply exits instead of corrupting your data. The Problem The Problem Cron does not c

[#Bash](/codesnippets/tags/bash)[#Pid file](/codesnippets/tags/pid-file)[#Locking](/codesnippets/tags/locking)+3 tags

[Bash](/codesnippets/bash)

[View Code](/codesnippets/post/bash-script-locking-pid-file)

[![AWS DynamoDB CRUD Operations in Node.js with the AWS SDK v3](/assets/codesnippets/0017-nodejs-dynamodb-crud-aws-sdk-v3/hero.png)](/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](/assets/codesnippets/0016-python-async-http-aiohttp-concurrent-requests/hero.png)](/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)

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

6

[View All](/case-studies)

[![Multi-Region Active-Active for a Payments API](/assets/case-studies/0006-multi-region-active-active-payments/hero.png)](/case-studies/post/multi-region-active-active-payments)

## [Multi-Region Active-Active for a Payments API](/case-studies/post/multi-region-active-active-payments)

-   [Architecture](/case-studies/categories/architecture)
-   [Cloud Computing](/case-studies/categories/cloud-computing)
-   16 Aug 2026
-   06 Mins read

A payments API that moves real money had been running comfortably in a single AWS region for years. It was reliable until the day it was not: a regional control-plane incident took the whole service o

[#Multi Region](/case-studies/tags/multi-region)[#Active Active](/case-studies/tags/active-active)[#Payments](/case-studies/tags/payments)+5 tags

[Read Case Study](/case-studies/post/multi-region-active-active-payments)

[![Building an Internal Developer Platform on Backstage and GitOps](/assets/case-studies/0005-internal-developer-platform-backstage-gitops/hero.png)](/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 and waiting for someone to provision a repo, wire up CI, wri

[#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](/assets/case-studies/0004-zero-downtime-postgres-upgrade/hero.png)](/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)

## [DevTips](/devtips)

18

[View All](/devtips)

[![Terraform Workspaces vs. Directory-Based Environments: What Actually Scales](/assets/devtips/0018-terraform-workspaces-vs-directory-environments/hero.png)](/devtips/post/terraform-workspaces-vs-directory-environments)

## [Terraform Workspaces vs. Directory-Based Environments: What Actually Scales](/devtips/post/terraform-workspaces-vs-directory-environments)

-   [Cloud & Infrastructure Automation](/devtips/categories/cloud--infrastructure-automation)
-   19 Aug 2026
-   03 Mins read

Why this choice matters Hey, want to stop sweating every prod apply? The way you split dev, staging, and prod in Terraform decides how much damage a single mistake can do. Get it right and a

[#Terraform](/devtips/tags/terraform)[#Workspaces](/devtips/tags/workspaces)[#Environments](/devtips/tags/environments)+3 tags

[Read Tip](/devtips/post/terraform-workspaces-vs-directory-environments)

[![GitHub Actions Secrets and Environment Variables: Handle Config the Right Way](/assets/devtips/0017-github-actions-secrets-environment-variables-guide/hero.png)](/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 cle

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

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

[![Docker Multi-Stage Builds: Smaller, Safer Images for Production](/assets/devtips/0016-docker-multi-stage-builds-smaller-production-images/hero.png)](/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 Image size is really about what is inside Hey, want to stop shipping a toolshed to production? If your Dockerfile builds and runs the app in one stage, your

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

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

## [Flashcards](/flashcards)

11

[View All](/flashcards)

[![Docker and Container Fundamentals Flashcards](/assets/flashcards/0011-docker-container-fundamentals-flashcards/hero.png)](/flashcards/post/docker-container-fundamentals-flashcards)

## [Docker and Container Fundamentals Flashcards](/flashcards/post/docker-container-fundamentals-flashcards)

-   [Containers](/flashcards/categories/containers)
-   [DevOps](/flashcards/categories/devops)
-   41 Cards
-   ~17 min
-   22 Aug 2026

A spaced-repetition deck covering images, containers, Dockerfiles, volumes, networking, Compose, and registries.

[#Docker](/flashcards/tags/docker)[#Containers](/flashcards/tags/containers)[#Dockerfile](/flashcards/tags/dockerfile)+3 tags

[View Deck](/flashcards/post/docker-container-fundamentals-flashcards)

[![Terraform Associate Flashcards (TA-003)](/assets/flashcards/0010-terraform-associate-ta003-flashcards/hero.png)](/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)](/assets/flashcards/0009-kubernetes-administrator-cka-flashcards/hero.png)](/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)

## [Glossary](/glossary)

7

[View All](/glossary)

[![CI/CD & Automation](/assets/glossary/0007-ci-cd-and-automation/hero.png)](/glossary/post/ci-cd-and-automation)

## [CI/CD & Automation](/glossary/post/ci-cd-and-automation)

-   [Devops](/glossary/categories/devops)
-   35 Terms
-   23 Aug 2026

A quick-reference glossary of the terms you meet when automating builds, tests, and deployments: pipeline anatomy, test gates, and release strategies like canary and blue-green.

[#Ci cd](/glossary/tags/ci-cd)[#Automation](/glossary/tags/automation)[#Pipelines](/glossary/tags/pipelines)

[View Glossary](/glossary/post/ci-cd-and-automation)

[![Kubernetes Advanced](/assets/glossary/0006-kubernetes-advanced/hero.png)](/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: scheduling, networking, storage, security, extensibility, and the workload controllers that keep applications runni

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

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

[![Cloud Computing on AWS](/assets/glossary/0005-cloud-computing-aws/hero.png)](/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: compute, storage, networking, databases, and the identity controls that keep it all secure.

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

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

## [Quizzes](/quizzes)

62

[View All](/quizzes)

[![Spring Boot: Java Application Framework Essentials](/assets/quizzes/0062-spring-boot-fundamentals-quiz/hero.png)](/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](/assets/quizzes/0061-java-fundamentals-quiz/hero.png)](/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](/assets/quizzes/0060-rust-fundamentals-quiz/hero.png)](/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](/roadmaps)

8

[View All](/roadmaps)

[![Full-Stack Developer Beginner to Expert](/assets/roadmaps/0008-full-stack-developer-roadmap/hero.png)](/roadmaps/post/full-stack-developer-roadmap)

## [Full-Stack Developer Beginner to Expert](/roadmaps/post/full-stack-developer-roadmap)

-   [Web development](/roadmaps/categories/web-development)
-   All Levels
-   18 Stages
-   50 Topics
-   12 Aug 2026

Full-Stack Developer Beginner to Expert This roadmap walks you from your first web page to shipping and operating a complete production application. Work the stages in order. Build the frontend fun

[#Full stack](/roadmaps/tags/full-stack)[#Frontend](/roadmaps/tags/frontend)[#Backend](/roadmaps/tags/backend)+5 tags

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

[![Backend Developer Beginner to Expert](/assets/roadmaps/0007-backend-developer-roadmap/hero.png)](/roadmaps/post/backend-developer-roadmap)

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

-   [Web development](/roadmaps/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/tags/backend)[#Api](/roadmaps/tags/api)[#Rest](/roadmaps/tags/rest)+5 tags

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

[![Frontend Developer Beginner to Expert](/assets/roadmaps/0006-frontend-developer-roadmap/hero.png)](/roadmaps/post/frontend-developer-roadmap)

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

-   [Web development](/roadmaps/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/tags/frontend)[#Html](/roadmaps/tags/html)[#Css](/roadmaps/tags/css)+5 tags

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