<?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/tags/bash/</loc><lastmod>2026-05-05T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/categories/</loc><lastmod>2026-05-05T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/cicd/</loc><lastmod>2026-05-05T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/categories/development/</loc><lastmod>2026-05-05T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/categories/devops/</loc><lastmod>2026-05-05T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/sed/</loc><lastmod>2026-05-05T00: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-05-05T00: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>Real sed patterns for log analysis: extract errors, filter time ranges, anonymize PII, parse multi-line stack traces, and merge sorted, production-tested logs.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/sed-gotchas-gnu-vs-bsd/</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/self-healing-bash.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-05-04T00: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 real 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/</loc><lastmod>2026-05-05T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/categories/cloud/</loc><lastmod>2026-05-04T10:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/cloud/</loc><lastmod>2026-05-04T10:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/devops/</loc><lastmod>2026-05-04T10:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/eks/</loc><lastmod>2026-05-04T10:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/kubernetes/</loc><lastmod>2026-05-04T10: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 I Got Wrong About Kubernetes in 2025</image:title><image:caption>A year-end retrospective on five expensive Kubernetes mistakes in 2025: an unneeded service mesh, unused autoscaling, unread Helm charts, and early platforms.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/aws/</loc><lastmod>2026-05-04T08:00:00-06:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/terraform/</loc><lastmod>2026-05-04T08: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-05-04T08: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-05-04T00:00:00+00:00</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url><url><loc>https://karandeepsingh.ca/tags/cli/</loc><lastmod>2026-02-21T14:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/golang/</loc><lastmod>2026-05-04T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/linux/</loc><lastmod>2026-05-04T00: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/tags/containers/</loc><lastmod>2026-05-04T02:01: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/docker/</loc><lastmod>2026-02-15T23:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></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-logs-and-docker-your-ultimate-guide/</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-05-04T00: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/envsubst-jinja2-templating-guide/</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/devops-trends-2026/</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/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/how-to-create-time-change-function-bash/</loc><lastmod>2026-02-20T18: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-02-20T16: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-02-20T00: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-02-20T00: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-02-20T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/tags/jenkins/</loc><lastmod>2026-05-04T00: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/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/posts/comprehensive-guide-to-jenkins-versions/</loc><lastmod>2026-05-04T00: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 21), 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-05-04T00: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/nodejs-deployments-cicd/</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/jenkinsfile-with-envsubst/</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/jenkinsfile-with-envsubst.jpg</image:loc><image:title>Jenkinsfile with envsubst: Simpler CI/CD Config</image:title><image:caption>Master Jenkinsfile with envsubst to simplify CI/CD pipelines. Learn how environment variable substitution improves Jenkins config management and deployments.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/sed-command-cheat-sheet-30-essential-one-liners/</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/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 from real production log analysis, covering substitution, deletion, line selection, and multiline patterns.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/templating/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></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/security-considerations-when-using-envsubst/</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/security-envsubst.jpg</image:loc><image:title>envsubst Security: How to Protect Your CI/CD Pipeline</image:title><image:caption>Essential security considerations for using envsubst in CI/CD pipelines. Learn how to protect secrets, prevent injection attacks, and process templates safely.</image:caption></image:image></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/categories/security/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/bash-sre-google-reliability-engineering/</loc><lastmod>2025-02-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/bash-sre-reliability.jpg</image:loc><image:title>Bash for SRE: Google's Reliability in Shell Scripts</image:title><image:caption>Implement Google SRE principles with Bash. Learn proven practices for monitoring, error budgets, toil reduction, and reliable, battle-tested automation.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/reliability/</loc><lastmod>2025-02-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/categories/system-design/</loc><lastmod>2026-02-20T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/bash-extract-filename-from-path-guide/</loc><lastmod>2026-02-20T07: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 500K File/Day Pipeline</image:title><image:caption>Learn filename extraction the way production log pipelines work: start with basename, hit the spaces bug, fix it, then benchmark against parameter expansion.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/json/</loc><lastmod>2026-02-20T00: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-02-20T00: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. A real incident where sed saved a deployment on a locked-down server. 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-02-20T02:01: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>User Management: From Simple useradd to SOC 2 Compliance</image:title><image:caption>Build a secure multi-tenant user system from scratch: start with useradd, fix file-access issues with groups and permissions, add sudo, and meet audit logging.</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/tags/database/</loc><lastmod>2026-02-20T02:01: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-02-20T02:01: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 in 18 Months</image:title><image:caption>Learn database scaling the way it happens in production: 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-02-20T02:01: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/apache-logs-and-docker-your-ultimate-guide/</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-02-20T00: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>Production Bash automation patterns from managing 200+ daily server deployments. Real scripts with error handling, retries, and validation that save hours.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/alternatives-to-envsubst/</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/alternatives-to-envsubst.jpg</image:loc><image:title>Alternatives to envsubst for CI/CD Templating</image:title><image:caption>Discover powerful alternatives to envsubst for CI/CD pipelines. Compare sed, Jinja2, Groovy templating, and more with code examples and recommendations.</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/simple-serverless-social-network/</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/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/buildspec-guide.jpg</image:loc><image:title>buildspec.yml for AWS CodeBuild: A Practical Tutorial</image:title><image:caption>A practical buildspec.yml tutorial for AWS CodeBuild: phases, environment variables, artifacts, and caching, with a complete React-on-S3 example you can copy.</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-02-20T00: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/leveraging-envsubst-in-bash-scripts-for-automation/</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/leveraging-envsubst.jpg</image:loc><image:title>envsubst in Bash: Template-Based Automation Guide</image:title><image:caption>Master envsubst in Bash scripts to build powerful template-based automation. This guide covers everything from basic setup to advanced techniques.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/jinja2/</loc><lastmod>2023-08-28T02:01:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/lambda-website-integration-guide/</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/lambda-website-integration.jpg</image:loc><image:title>Lambda Website Integration: When and Why You Should Use It</image:title><image:caption>Discover how Lambda website integration turns static sites into dynamic web apps. Learn best practices, strategies, and use cases for serverless capabilities.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/posts/mastering-bash-scripting/</loc><lastmod>2026-02-20T02:01: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/posts/self-healing-bash-functions/</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/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/nodejs-error-handling-best-practices/</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-02-20T00: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-02-20T00: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>A real WordPress-to-S3 migration with CloudFront, custom domain, security hardening, and CI/CD. Production lessons that cut hosting cost and load time.</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-02-20T00: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>Production-tested Bash string manipulation functions for ETL pipelines, log processing, and data transformation, based on real-world enterprise log volumes.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/boto3/</loc><lastmod>2026-02-20T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/boto3-and-aws-lambda-a-match-made-in-serverless-heaven/</loc><lastmod>2026-02-20T00: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>A real serverless data pipeline processing millions of events daily with Boto3 and Lambda: cold start tuning, error handling, DLQ setup, and cost lessons.</image:caption></image:image></url><url><loc>https://karandeepsingh.ca/tags/python/</loc><lastmod>2026-02-20T00:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://karandeepsingh.ca/posts/troubleshooting-common-ec2-issues/</loc><lastmod>2022-12-30T07:00:00+00:00</lastmod><changefreq>weekly</changefreq><priority>0.5</priority><image:image><image:loc>https://karandeepsingh.ca/images/posts/troubleshooting-ec2.jpg</image:loc><image:title>Troubleshooting common EC2 issues</image:title><image:caption>Common Amazon EC2 issues and how to troubleshoot them, including the tools and resources to resolve problems plus best practices for avoiding them.</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/9-jenkins-hacks-that-will-make-your-life-easier-devops/</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/9-ansible-hacks-to-make-your-life-easier-devops/</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/posts/let-s-build-image-with-ec2-image-builder/</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/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/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>