<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"><url><loc>https://karandeepsingh.ca/cheatsheets/languages/golang/</loc><lastmod>2025-07-08T09:50:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/terminal/tmux/</loc><lastmod>2025-07-02T08:55:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/devops/jenkins/</loc><lastmod>2025-06-11T12:35:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/python/python-basics-cli/</loc><lastmod>2025-05-12T09:15:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/containers/docker/</loc><lastmod>2025-04-18T13:40:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/bash/bash-basics/</loc><lastmod>2025-03-30T08:20:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/devops/cloudformation/</loc><lastmod>2025-07-15T10:10:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/terminal/ubuntu-terminal/</loc><lastmod>2025-06-28T14:15:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/python/python-threading-concurrency/</loc><lastmod>2025-06-03T14:30:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/containers/kubernetes/</loc><lastmod>2025-05-27T15:25:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/bash/bash-sed-awk/</loc><lastmod>2025-04-25T16:10:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/devops/ansible/</loc><lastmod>2025-07-19T17:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/python/python-boto3/</loc><lastmod>2025-06-21T10:45:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/bash/bash-cli/</loc><lastmod>2025-05-19T11:05:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/terminal/al2-terminal/</loc><lastmod>2022-07-23T09:30:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/python/</loc><lastmod>2025-07-23T08:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/bash/</loc><lastmod>2025-07-23T08:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/containers/</loc><lastmod>2025-07-23T08:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/devops/</loc><lastmod>2025-07-23T08:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/terminal/</loc><lastmod>2025-07-23T08:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/cheatsheets/languages/</loc><lastmod>2025-07-23T08:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/aurora/</loc><lastmod>2026-07-27T04:15:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/aws/</loc><lastmod>2026-07-27T04:15:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/categories/</loc><lastmod>2026-07-27T04:15:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/aurora-clone-copy-on-write/</loc><lastmod>2026-07-27T04:15:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.8</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aurora-clone-creating.png</image:loc><image:title>Cloning an Aurora PostgreSQL Cluster (Copy-on-Write)</image:title><image:caption>Create a copy-on-write Aurora clone in minutes, prove it is isolated from the source, and learn when to use one, when to delete it, the limits, and whether to add readers or Regions.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/categories/cloud/</loc><lastmod>2026-07-27T04:15:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/categories/devops/</loc><lastmod>2026-07-27T04:15:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/postgresql/</loc><lastmod>2026-07-27T04:15:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/</loc><lastmod>2026-07-27T04:15:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/aurora-rds-data-api-postgresql/</loc><lastmod>2026-07-27T04:00:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.8</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aurora-enable-rds-data-api.png</image:loc><image:title>Running SQL Over HTTPS with the RDS Data API (Aurora PostgreSQL)</image:title><image:caption>Enable the RDS Data API on Aurora PostgreSQL and run SQL over HTTPS with no persistent connection, no VPC, and IAM auth, from the browser Query Editor and the CLI.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/aurora-write-forwarding-postgresql/</loc><lastmod>2026-07-27T03:00:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.8</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aurora-enable-local-write-forwarding.png</image:loc><image:title>Aurora Write Forwarding: Writing Through a Read Replica</image:title><image:caption>Let a read replica accept writes with Aurora write forwarding. Hands-on local write forwarding in PostgreSQL, plus the global cross-region variant, latency, versions, and limits.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/aurora-add-aws-region-global-database/</loc><lastmod>2026-07-27T00:30:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.8</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aurora-global-database-created.png</image:loc><image:title>Adding an AWS Region to Aurora PostgreSQL (Global Database)</image:title><image:caption>Turn an Aurora PostgreSQL cluster into a global database by adding a second AWS Region: the r-class upgrade, the reboot, the opt-in region trap, and the scaling limits.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/aurora-add-reader-read-replica/</loc><lastmod>2026-07-26T03:30:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.8</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aurora-cluster-writer-reader.png</image:loc><image:title>Adding a Read Replica (Reader) to Aurora PostgreSQL</image:title><image:caption>Add a reader to Aurora PostgreSQL to scale reads: create the replica, learn the writer vs reader endpoints, prove it is read-only, and route reads to it.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/find-slow-queries-aurora-postgresql/</loc><lastmod>2026-07-26T01:00:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url><url><loc>https://karandeepsingh.ca/tags/python/</loc><lastmod>2026-07-26T00:30:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/valkey/</loc><lastmod>2026-07-26T00:30:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/valkey-cache-aside-aurora-postgresql/</loc><lastmod>2026-07-26T00:30:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.8</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aurora-database-connectivity.png</image:loc><image:title>Valkey as a Cache in Front of Aurora PostgreSQL (Cache-Aside)</image:title><image:caption>Put Valkey in front of Aurora PostgreSQL with the cache-aside pattern in Python, and measure a real 67x speedup on cached reads, with every gotcha I hit.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/aurora-postgresql-setup-guide/</loc><lastmod>2026-07-25T20:00:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.8</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aurora-create-database-engine.png</image:loc><image:title>How to Set Up Aurora PostgreSQL (and Why Each Setting Matters)</image:title><image:caption>A walkthrough of creating an Amazon Aurora PostgreSQL cluster, explaining why each choice, provisioned vs serverless, storage, security groups, and public access.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/elasticache/</loc><lastmod>2026-07-25T02:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/valkey-aws-elasticache-guide/</loc><lastmod>2026-07-25T02:00:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.8</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/valkey-elasticache-dashboard.png</image:loc><image:title>Valkey on AWS ElastiCache: A Hands-On Guide</image:title><image:caption>Set up Valkey on AWS ElastiCache step by step: security groups, an EC2 client, TLS, valkey-cli testing, and a Python health-check script, with the real errors I hit.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/jenkins/</loc><lastmod>2026-06-27T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/jenkins-upgrade-and-migration-guide/</loc><lastmod>2026-06-27T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/jenkins-versions.jpg</image:loc><image:title>Upgrading Jenkins: Migration Strategies for Major Version Jumps</image:title><image:caption>How to plan and execute Jenkins upgrades safely, including in-place, blue-green, and phased paths for large multi-version jumps.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/containers/</loc><lastmod>2026-06-18T07:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/devops/</loc><lastmod>2026-07-16T00:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/docker/</loc><lastmod>2026-06-18T07:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/docker-compose-multi-container-guide/</loc><lastmod>2026-06-18T07:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/docker-compose-multi-container-guide-card.jpg</image:loc><image:title>Docker Compose, Bake & ECR: Build and Ship Apps</image:title><image:caption>Build a multi-container app with Docker Compose, then build images with Docker Bake and push them to Amazon ECR, ready to run on ECS, Fargate, or EKS.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/eks/</loc><lastmod>2026-06-18T05:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/kubernetes/</loc><lastmod>2026-07-16T00:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/kubernetes-eks-setup-eksctl/</loc><lastmod>2026-06-18T05:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/kubernetes-eks-setup-eksctl-card.jpg</image:loc><image:title>Kubernetes on AWS: EKS Setup with eksctl</image:title><image:caption>Set up a Kubernetes cluster on AWS EKS with eksctl: prerequisites, one-command cluster creation, deploy and expose a workload, and tear it down to control cost.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/fix-kubernetes-crashloopbackoff/</loc><lastmod>2026-06-18T04:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/fix-kubernetes-crashloopbackoff-card.jpg</image:loc><image:title>Fix Kubernetes CrashLoopBackOff: Causes and Solutions</image:title><image:caption>Kubernetes CrashLoopBackOff explained: a workflow to diagnose it and fix the six most common causes, from bad config to OOMKilled and failing probes.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/kubernetes-fundamentals-pods-deployments-services/</loc><lastmod>2026-06-18T03:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/kubernetes-fundamentals-card.jpg</image:loc><image:title>Kubernetes Fundamentals: Pods, Deployments, Services</image:title><image:caption>Learn Kubernetes fundamentals hands-on: deploy your first pod, understand Deployments and self-healing, and expose apps with Services on a local kind cluster.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/cli/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/kubectl-cheat-sheet/</loc><lastmod>2026-06-18T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/kubectl-cheat-sheet-card.jpg</image:loc><image:title>kubectl Cheat Sheet: 30+ Essential Commands</image:title><image:caption>A practical kubectl cheat sheet: 30+ essential commands for pods, deployments, services, logs, and debugging, grouped by task with copy-paste examples.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/bash/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/cicd/</loc><lastmod>2026-07-16T00:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/categories/development/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/sed/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/sed-for-log-analysis/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/sed-for-log-analysis-card.jpg</image:loc><image:title>Sed for Log Analysis: Errors, Time Filters, Patterns</image:title><image:caption>Practical sed patterns for log analysis: extract errors, filter time ranges, anonymize PII, parse multi-line stack traces, and merge sorted logs.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/sed-gotchas-gnu-vs-bsd/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/mastering-sed.jpg</image:loc><image:title>Sed Gotchas: GNU vs BSD and Safe In-Place Editing</image:title><image:caption>The sed gotchas that bite in production: GNU vs BSD differences, in-place editing safety, escape sequence traps, and portable patterns that work everywhere.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/sed-in-ci-cd-pipelines/</loc><lastmod>2026-05-05T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/bash-scripting-aws-network.jpg</image:loc><image:title>Sed in CI/CD: Safe Patterns for GitHub Actions and Jenkins</image:title><image:caption>Use sed safely in CI/CD pipelines: idempotent edits, exit-code checks, dry-run patterns, and the gotchas that break Jenkins, GitHub Actions, and CodeBuild jobs.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/sed-multiline-patterns/</loc><lastmod>2026-05-05T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/sed-multiline-patterns-card.jpg</image:loc><image:title>Sed Multiline Patterns: How to Match Across Lines</image:title><image:caption>Sed multiline patterns explained: the hold space, the N/D/P commands, and address ranges. Production examples for stack traces, YAML blocks, and SQL statements.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/sed-vs-awk-vs-grep/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/sed-vs-awk-vs-grep-card.jpg</image:loc><image:title>Sed vs Awk vs Grep: When to Use Which (with Decision Matrix)</image:title><image:caption>Sed vs awk vs grep: a decision matrix for picking the right tool, with common DevOps tasks side by side, performance notes, and the rule of thumb that settles it.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/cloud/</loc><lastmod>2026-07-16T00:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/what-i-got-wrong-about-kubernetes-2025/</loc><lastmod>2026-05-04T10:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/what-i-got-wrong-about-kubernetes-2025-card.jpg</image:loc><image:title>What Teams Got Wrong About Kubernetes in 2025</image:title><image:caption>Five expensive Kubernetes mistakes the industry kept making in 2025: an unneeded service mesh, unused autoscaling, unread Helm charts, and premature platforms.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/terraform/</loc><lastmod>2026-07-16T00:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/devops-stack-i-would-pick-2026/</loc><lastmod>2026-07-16T00:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/devops-stack-i-would-pick-2026-card.jpg</image:loc><image:title>The DevOps Stack I'd Pick If I Started Over in 2026</image:title><image:caption>The DevOps stack I would pick if I started over today, after years of production and painful migrations: cloud, IaC, CI/CD, observability, and tools to avoid.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/about/</loc><lastmod>2026-06-18T00:00:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url><url><loc>https://karandeepsingh.ca/tags/golang/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/linux/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/mastering-tmux-go-session-manager/</loc><lastmod>2026-02-21T14:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/mastering-tmux-go.jpg</image:loc><image:title>Master tmux: From Multiplexer to a Go Session Manager</image:title><image:caption>Learn tmux from scratch — sessions, windows, panes, and scripting — then build a Go CLI tool that launches your dev environment from a YAML config.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/tmux/</loc><lastmod>2026-02-21T14:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/log-aggregator-from-scratch-go/</loc><lastmod>2026-02-16T14:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/log-aggregator-go.jpg</image:loc><image:title>Log Aggregator From Scratch in Go</image:title><image:caption>Build a log aggregator in Go from scratch. Tail files with inotify, survive log rotation, parse syslog and JSON, and shut down gracefully in 200 lines.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/logging/</loc><lastmod>2026-02-16T14:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/terraform-getting-started-aws/</loc><lastmod>2026-02-16T10:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/terraform-getting-started.jpg</image:loc><image:title>Terraform From Scratch: Provision AWS Infrastructure</image:title><image:caption>Learn Terraform with AWS from scratch: start with a single S3 bucket, hit real errors, fix them, then build a VPC with an EC2 instance you can SSH into.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/nginx/</loc><lastmod>2026-02-15T23:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/nginx-log-analysis-grep-to-go/</loc><lastmod>2026-02-15T23:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/nginx-logs-docker.jpg</image:loc><image:title>Nginx Log Analysis: From grep to a Go Log Parser</image:title><image:caption>Learn nginx log analysis step by step: start with grep and awk one-liners, then build a Go parser that finds slow endpoints and detects error spikes.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/automation/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/bash-scripting-meets-aws/</loc><lastmod>2026-02-15T22:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/bash-scripting-meets-aws.jpg</image:loc><image:title>AWS CLI Automation: From Bash Scripts to Go</image:title><image:caption>Learn AWS automation step by step: start with AWS CLI for S3, EC2, and IAM, then build the same in Go with the AWS SDK, ending with an infrastructure report.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/config-templating-envsubst-to-go/</loc><lastmod>2026-02-15T21:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/envsubst-jinja2-templating.jpg</image:loc><image:title>Config Templating: From envsubst to Go</image:title><image:caption>Learn config templating step by step: start with envsubst for variable substitution, then build a Go multi-environment generator with conditionals and defaults.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/envsubst/</loc><lastmod>2026-02-15T21:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/process-management-linux-to-go/</loc><lastmod>2026-02-15T20:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/devops-trends.jpg</image:loc><image:title>Process Management: From Linux Commands to a Go Supervisor</image:title><image:caption>Learn process management step by step: start with ps, kill, and systemctl, then build a Go supervisor that sends signals, manages children, and auto-restarts.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/sudo-mastery-and-best-practices/</loc><lastmod>2026-02-15T19:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/sudo-mastery.jpg</image:loc><image:title>Linux Access Control: From sudo to a Go Security Scanner</image:title><image:caption>Learn Linux access control step by step: start with sudo and file permissions, then build a Go scanner that parses /etc/sudoers and flags dangerous configs.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/categories/security/</loc><lastmod>2026-02-15T19:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/security/</loc><lastmod>2026-02-15T19:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/timezones-in-production-linux-to-go/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/time-change-bash.jpg</image:loc><image:title>Timezones in Production: From Linux Commands to Go</image:title><image:caption>Learn timezone handling step by step: start with date and timedatectl, then build a Go log timestamp normalizer, hit the DST bug, and add multi-zone monitoring.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/mastering-cpu-cores/</loc><lastmod>2026-02-15T17:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/mastering-cpu-cores.jpg</image:loc><image:title>CPU Monitoring: From Linux Commands to a Go Dashboard</image:title><image:caption>Learn CPU monitoring step by step: start with lscpu and nproc, then build a Go tool that reads /proc/stat, fixes the jiffies delta, and shows a live dashboard.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/monitoring-and-observability/</loc><lastmod>2026-02-15T17:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/weird-unix-commands/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/weird-unix-commands.jpg</image:loc><image:title>Unix Power Tools Every DevOps Engineer Should Know</image:title><image:caption>Discover underrated Unix commands that solve real production problems: start with basic pipes, build up to xargs parallelism, then write a Go log monitor.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/go-nginx-reverse-proxy/</loc><lastmod>2026-02-15T14:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/go-nginx-reverse-proxy.jpg</image:loc><image:title>Go + Nginx: Deploy a Go API Behind a Reverse Proxy</image:title><image:caption>Put a Go API behind Nginx step by step: start with a bare HTTP server, hit the port 80 problem, add a reverse proxy, restore the client IP, add rate limiting.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/networking/</loc><lastmod>2026-02-15T14:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/containers-from-scratch-go/</loc><lastmod>2026-02-14T14:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/containers-from-scratch-go.jpg</image:loc><image:title>Containers From Scratch in Go</image:title><image:caption>Build a mini container runtime in Go using only the standard library. No Docker, just Linux namespaces, chroot, cgroups, and about 150 lines of Go code.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/go-sqs-message-queue/</loc><lastmod>2026-02-14T13:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/go-sqs-message-queue.jpg</image:loc><image:title>Go + SQS: Build a Message Queue Processor</image:title><image:caption>Build a Go app that sends and processes SQS messages: start with one message, hit the visibility timeout trap, add batching, and build a proper polling loop.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/serverless/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/sqs/</loc><lastmod>2026-02-14T13:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/dynamodb/</loc><lastmod>2026-02-14T12:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/go-dynamodb-crud/</loc><lastmod>2026-02-14T12:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/go-dynamodb-crud.jpg</image:loc><image:title>Go + DynamoDB: Build a Simple CRUD App</image:title><image:caption>Build a Go CRUD app with DynamoDB from scratch: start with raw attribute maps, hit the verbosity wall, then upgrade to structs with Put, Get, Query, and Delete.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/go-aws-s3-cli-tool/</loc><lastmod>2026-02-14T11:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/go-aws-s3-cli-tool.jpg</image:loc><image:title>Build a Go CLI Tool for AWS S3</image:title><image:caption>Build a real S3 CLI tool with Go from scratch: start with a one-liner that lists buckets, then add uploads, downloads, presigned URLs, and concurrent transfers.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/s3/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/build-deploy-go-lambda-function/</loc><lastmod>2026-02-14T10:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/build-deploy-go-lambda.jpg</image:loc><image:title>Build and Deploy a Go Lambda Function</image:title><image:caption>A hands-on guide to building your first AWS Lambda function with Go: start with a basic handler, hit real errors, fix them, then add API Gateway step by step.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/lambda/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/jenkins-configuration-as-code-jcasc-guide/</loc><lastmod>2026-02-14T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/jenkins-configuration-as-code.jpg</image:loc><image:title>Jenkins Configuration as Code: The Definitive JCasC Guide</image:title><image:caption>Master Jenkins Configuration as Code (JCasC) to automate CI/CD setup. Learn YAML-based config, Kubernetes integration, and production-ready best practices.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/cheatsheets/</loc><lastmod>2025-07-23T08:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/deploy-jenkins-eks-tutorial/</loc><lastmod>2025-06-24T20:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/deploy-jenkins-eks.jpg</image:loc><image:title>Deploy Jenkins on Amazon EKS: A Practical Tutorial</image:title><image:caption>Complete tutorial on deploying Jenkins to Amazon EKS. Learn what pods are, why deployments matter, and how to set everything up step by step.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/boto3/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/comprehensive-guide-to-jenkins-versions/</loc><lastmod>2026-06-27T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/jenkins-versions.jpg</image:loc><image:title>Jenkins LTS vs Weekly: Which Version Should You Use?</image:title><image:caption>Pick the right Jenkins version: LTS vs Weekly compared, version evolution, JVM compatibility (Java 8 to 25), and how to migrate major releases without breakage.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/linux-ls-command-comprehensive-guide/</loc><lastmod>2025-03-10T14:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/linux-ls-command.jpg</image:loc><image:title>Linux ls Command: History, Tricks, and Examples</image:title><image:caption>The definitive guide to the Linux ls command: its Unix origins, core options, task-based examples, quirky tricks, and a handy cheat sheet, all in one place.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/git/</loc><lastmod>2025-02-25T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/groovy/</loc><lastmod>2025-02-25T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/jenkins-userremoteconfig/</loc><lastmod>2025-02-25T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/jenkins-git-config.jpg</image:loc><image:title>Jenkins UserRemoteConfig: Dynamic Git in Pipelines</image:title><image:caption>Master Jenkins UserRemoteConfig for dynamic Git repository management, with Groovy examples, security best practices, and real-world pipeline use cases.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/linux-automation-tools/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/linux-automation-tools.jpg</image:loc><image:title>Linux Automation Tools: From Cron to a Custom Go Runner</image:title><image:caption>Compare the major Linux automation tools — cron, at, make, systemd timers — then build a custom Go task runner with scheduling, retries, and a status dashboard.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/deployment-automation-ssh-to-go/</loc><lastmod>2025-02-01T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/nodejs-deployments-cicd.jpg</image:loc><image:title>Deployment Automation: From SSH Scripts to a Go Deploy Tool</image:title><image:caption>Learn deployment automation from scratch: start with SSH, rsync, and shell scripts, then build a Go tool with health checks, rollbacks, and parallel execution.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/sed-command-cheat-sheet-30-essential-one-liners/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/sed-command-cheat-sheet-30-essential-one-liners-card.jpg</image:loc><image:title>Sed Cheat Sheet: 30 One-Liners from Real Production Logs</image:title><image:caption>A working sed cheat sheet: 30 one-liners for logs and config files, covering substitution, deletion, line selection, and multiline patterns.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/</loc><lastmod>2026-05-04T00:00:00-07:00</lastmod><changefreq>weekly</changefreq><priority>1</priority></url><url><loc>https://karandeepsingh.ca/posts/replace-text-multiple-files-sed-guide/</loc><lastmod>2025-01-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/replace-text-sed.jpg</image:loc><image:title>How to Replace Text in Multiple Files with Sed</image:title><image:caption>Master replacing text across multiple files with sed. This step-by-step guide covers basic substitutions to advanced pattern matching with practical examples.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/jenkins-java-compatibility/</loc><lastmod>2026-06-27T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/jenkins-versions.jpg</image:loc><image:title>Jenkins Java Compatibility: From Java 8 to Java 25</image:title><image:caption>Jenkins JVM requirements and the Java 8 to 11 to 17 to 21 to 25 transition timeline, with version-by-version compatibility and JVM tuning notes.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/bash-extract-filename-from-path-guide/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/bash-extract-filename.jpg</image:loc><image:title>Filename Extraction: basename to a Production File Pipeline</image:title><image:caption>Learn filename extraction through a log-filename processing exercise: start with basename, hit the spaces bug, fix it, then benchmark it against parameter expansion yourself.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/json/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/sed-json-manipulation-without-jq/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/sed-json-manipulation.jpg</image:loc><image:title>Sed for JSON: Emergency Patterns When jq Is Unavailable</image:title><image:caption>When jq is unavailable, sed can manipulate JSON in emergencies, such as on a locked-down server with no install permission. Use jq whenever you can.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/mastering-nginx-logs-guide/</loc><lastmod>2024-04-19T20:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/mastering-nginx-logs.jpg</image:loc><image:title>Mastering NGINX Logs: Configuration and Analysis Guide</image:title><image:caption>A complete guide to NGINX logs: learn how to configure, manage, and analyze access and error logs to optimize server performance and troubleshoot issues fast.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/linux-user-control-terminal-commands/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/linux-user-control.jpg</image:loc><image:title>Linux User Management: Commands, Groups, Permissions, and Security</image:title><image:caption>A hands-on Linux user management reference: create, modify, and delete users, manage groups, set file permissions and special bits, monitor user activity, and follow security best practices.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/mastering-top/</loc><lastmod>2024-03-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/mastering-top.jpg</image:loc><image:title>Advanced Guide to Using the top Command in Linux</image:title><image:caption>An in-depth guide to the Linux top command: monitor and manage system resources, work through practical examples, and apply advanced performance techniques.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/linux-monitoring/</loc><lastmod>2024-03-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/mastering-vmstat/</loc><lastmod>2024-03-24T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/mastering-vmstat.jpg</image:loc><image:title>Advanced Guide to Using the vmstat Command in Linux</image:title><image:caption>Learn how to use vmstat for system monitoring and performance tuning, from basic usage to advanced techniques, with practical examples and best practices.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/aws-security-features-guide/</loc><lastmod>2024-03-04T20:59:22+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aws-security.jpg</image:loc><image:title>AWS Security Audit: From AWS CLI to a Go Security Scanner</image:title><image:caption>Learn AWS security auditing from scratch: use the AWS CLI to check IAM, security groups, and S3 policies, then build a Go scanner that finds misconfigurations.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/jenkins-security-advisories-and-cves/</loc><lastmod>2026-06-27T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/jenkins-versions.jpg</image:loc><image:title>Jenkins Security: Advisories, CVEs, and Hardening</image:title><image:caption>Jenkins security evolution across versions, the CVE-2024-23897 CLI vulnerability, where the risk now lives in plugins, and hardening best practices.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/database/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/how-to-scale-database-in-microservices/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/scale-database-microservices.jpg</image:loc><image:title>Database Scaling: From 100K to 5M Users</image:title><image:caption>Learn database scaling through a worked example: start with one Postgres, hit connection limits, add read replicas, fix replica lag, then add sharding.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/microservices/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/categories/system-design/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/</loc><lastmod>2023-10-01T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/docker-logs-to-go-collector/</loc><lastmod>2023-09-10T20:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/apache-logs-docker.jpg</image:loc><image:title>Docker Logs: From docker logs to a Go Log Collector</image:title><image:caption>Learn Docker logging from the ground up: start with docker logs and drivers, then build a Go collector that tails, parses, and aggregates container logs.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/advanced-bash-scripting-techniques-for-automation/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/advanced-bash-scripting.jpg</image:loc><image:title>Advanced Bash Scripting for Automation</image:title><image:caption>Bash automation patterns for multi-server deployments: error handling, retries, parallel execution, and templating that make long-running scripts reliable.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/bash-code-shortening-techniques/</loc><lastmod>2025-01-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/bash-code-shortening.jpg</image:loc><image:title>Bash Code Shortening: Writing Concise Shell Scripts</image:title><image:caption>Proven Bash code shortening techniques to simplify shell scripts while keeping them readable and fast, with practical examples and best practices.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/bash-error-handling-bulletproof-scripts/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/bash-error-handling.jpg</image:loc><image:title>Bash Error Handling: Patterns for Bulletproof Scripts</image:title><image:caption>Essential Bash error handling techniques that turn fragile scripts into reliable automation. Learn exit codes, signal traps, and defensive failure patterns.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/url-shortener-from-scratch-go/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aws-social-network.jpg</image:loc><image:title>Building a URL Shortener: From Linux Networking to Go</image:title><image:caption>Build a URL shortener from scratch: start with Linux networking basics like TCP, HTTP, and redirects, then build a Go web service with storage and analytics.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/youtube-system-design-aws/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/youtube-system-design.jpg</image:loc><image:title>Building a YouTube-like System with AWS Lambda and S3</image:title><image:caption>Learn how to build a serverless YouTube-like video platform with AWS Lambda and S3, implementing upload, processing, and delivery with an event-driven design.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/jenkins-devops-best-practices/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/jenkins-hacks.jpg</image:loc><image:title>CI Pipeline Basics: From Shell Scripts to a Go Build Runner</image:title><image:caption>Learn CI pipeline fundamentals from scratch: start with shell scripts that run tests, then build a Go CI runner that watches repos and reports build results.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/cloudfront/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/development/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/mastering-bash-scripting/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/mastering-bash.jpg</image:loc><image:title>Mastering Bash: From echo to Production Deployment Script</image:title><image:caption>Master bash by solving real problems: start with a simple echo script, add variables, hit the set -e trap, debug with set -x, and build a deployment script.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/mastering-sed-update-remove-configuration-files/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/mastering-sed.jpg</image:loc><image:title>Mastering sed for YAML, JSON, TOML Config Files</image:title><image:caption>Become an expert at using sed to precisely manipulate config files. Covers advanced techniques for updating YAML, JSON, TOML, and properties with real examples.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/reliability/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/self-healing-bash-functions/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/self-healing-bash.jpg</image:loc><image:title>Self-Healing Bash: Functions That Recover From Failures</image:title><image:caption>Master self-healing Bash functions that detect, troubleshoot, and recover from failures automatically, with practical examples for resilient scripts.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/service-health-checks-curl-to-go/</loc><lastmod>2024-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/nodejs-error-handling.jpg</image:loc><image:title>Service Health Checks: From curl to a Go Health Monitor</image:title><image:caption>Learn service health monitoring from scratch: start with curl, ping, and /proc, then build a Go monitor that checks HTTP, TCP, and disk, and alerts on failures.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/static-hosting/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/aws-s3-hosting-guide/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aws-s3-hosting.jpg</image:loc><image:title>The Complete Guide to AWS S3 Static Website Hosting</image:title><image:caption>How to move a WordPress site to S3 and CloudFront: static export, custom domain, security hardening, CI/CD, and the caching mistakes to avoid.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/youtube-system-sqs-architecture/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/youtube-sqs-architecture.jpg</image:loc><image:title>Why YouTube-Scale Systems Need SQS: Architecture Notes</image:title><image:caption>Why adding Amazon SQS to a YouTube-like platform boosts scalability: a queuing layer between S3 uploads and Lambda for resilience and fault tolerance.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/advanced-string-operations-in-bash-building-custom-functions/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/advanced-string-operations-in-bash-building-custom-functions-card.jpg</image:loc><image:title>Advanced Bash String Operations</image:title><image:caption>An overview of custom Bash string functions for log processing and everyday scripting, linking to focused guides on trimming, splitting, and validation.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/bash-string-search-split-and-count/</loc><lastmod>2026-06-26T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/advanced-string-operations-in-bash-building-custom-functions-card.jpg</image:loc><image:title>Bash String Functions: Search, Split, Count, Extract</image:title><image:caption>Bash functions for length checks, case conversion, substitution, counting, splitting, and extracting fields from CSV and log data, with edge-case handling.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/bash-string-trimming-and-case/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/advanced-string-operations-in-bash-building-custom-functions-card.jpg</image:loc><image:title>Bash String Functions: Trimming, Case, and Reversal</image:title><image:caption>Bash trim functions (ltrim, rtrim, trim) and string reversal for cleaning whitespace in CSV imports and log normalization, with performance comparisons.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/bash-string-validation-and-generation/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/advanced-string-operations-in-bash-building-custom-functions-card.jpg</image:loc><image:title>Bash String Validation, Generation & a Library</image:title><image:caption>Bash functions for random IDs, input sanitization, CSV parsing, password strength, slug generation, plus a complete production string library to source.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/boto3-and-aws-lambda-a-match-made-in-serverless-heaven/</loc><lastmod>2026-07-16T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/boto3-lambda.jpg</image:loc><image:title>Boto3 + AWS Lambda: A Production Serverless Pipeline</image:title><image:caption>Build a serverless data pipeline for high-volume daily events with Boto3 and Lambda: cold start tuning, error handling, DLQ setup, and cost lessons.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/create-custom-ami-of-jenkins-devops/</loc><lastmod>2025-01-01T09:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/create-custom-ami-jenkins.jpg</image:loc><image:title>Create Custom AMI of Jenkins | DevOps</image:title><image:caption>Make your Jenkins installation faster, more reliable, and easier to manage. Learn how to create a custom AMI of Jenkins tailored perfectly to your environment.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/git-hooks-to-go-webhook-server/</loc><lastmod>2025-01-01T12:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/jenkins-hacks.jpg</image:loc><image:title>Git Hooks: From Shell Scripts to a Go Webhook Server</image:title><image:caption>Learn Git automation from scratch: start with shell pre-commit and pre-push hooks, then build a Go webhook server that listens for pushes and triggers builds.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/remote-server-config-ssh-to-go/</loc><lastmod>2023-04-06T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/ansible-hacks.jpg</image:loc><image:title>Remote Server Config: From SSH Loops to a Go Config Tool</image:title><image:caption>Learn remote server config from scratch: start with SSH loops and bash, then build a Go tool that connects to many servers, pushes configs, and checks services.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/ec2/</loc><lastmod>2026-02-14T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/ec2-image-builder-components/</loc><lastmod>2025-01-01T07:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/ec2-image-builder.jpg</image:loc><image:title>Build Image with EC2 Image Builder Components</image:title><image:caption>Learn how to build custom AMIs using EC2 Image Builder with Amazon Linux 2023. Step-by-step guide with modern best practices.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/create-a-new-image-recipe/</loc><lastmod>2026-02-14T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/create-a-new-image-recipe-card.jpg</image:loc><image:title>EC2 Image Builder: Create a New Image Recipe</image:title><image:caption>How to create a new version of an EC2 Image Builder image recipe, update the pipeline, and verify the AMI build through testing and distribution.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/appconfig/</loc><lastmod>2024-04-20T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/create-freeform-feature-flag-from-s3-object/</loc><lastmod>2024-04-20T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/create-freeform-feature-flag-from-s3-object-card.jpg</image:loc><image:title>Create Freeform Feature Flag from S3 Object</image:title><image:caption>A step-by-step guide to creating freeform feature flags with AWS AppConfig and S3 objects. Manage configs and toggle features without redeploying your app.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/codebuild/</loc><lastmod>2026-05-04T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/deploy-hugo-s3-codebuild/</loc><lastmod>2026-02-14T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/deploy-hugo-s3-codebuild.jpg</image:loc><image:title>Deploy a Hugo Site to S3 with CodeBuild</image:title><image:caption>Step-by-step guide to deploying a Hugo static site to Amazon S3 using AWS CodeBuild with a custom GoLang image, including buildspec.yaml configuration.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/aws-codebuild-advanced-buildspec-guide/</loc><lastmod>2026-05-04T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/aws-codebuild-buildspec.jpg</image:loc><image:title>Advanced buildspec.yml: Python, Go, ECR Push, EKS Deploy</image:title><image:caption>Advanced AWS CodeBuild buildspec.yml patterns: Python and Go pipelines, the ECR login fix, EKS kubectl deploys with Parameter Store secrets, and faster caching.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/privacy/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/contact/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset>