<?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/bash-error-handling.jpg</image:loc><image:title>Sed for Log Analysis: Extract Errors, Filter by Time, Find 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 log streams. Production-tested on application 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, In-Place Backup, and Safety Patterns</image:title><image:caption>The sed gotchas that bite in production: GNU vs BSD differences (`-i` syntax, `-E` support, `\b` word boundaries), in-place editing safety, escape sequence traps, and the portable patterns that work …</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></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/advanced-bash-scripting.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, address ranges, and how to match across lines without losing your mind. Production examples for stack traces, YAML blocks, and SQL …</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/mastering-bash.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. Real DevOps tasks side by side, performance observations on real log data, and the rule of thumb that ends the debate (hint: 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/containers-from-scratch-go.jpg</image:loc><image:title>What I Got Wrong About Kubernetes in 2025</image:title><image:caption>A year-end retrospective on five expensive mistakes I made running Kubernetes in 2025: a service mesh nobody needed, autoscaling we never used, Helm charts I never read, an internal platform built too …</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/bash-scripting-meets-aws.jpg</image:loc><image:title>The DevOps Stack I'd Pick If I Started Over in 2026</image:title><image:caption>After years of production work and a few painful migrations, here is the DevOps stack I would pick if I started over today. Strong opinions on cloud, IaC, CI/CD, observability, and the tools I would …</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 Terminal 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 Step by Step</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. Every step shows the command, the output, and …</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 for quick answers, then build a Go log parser. Extract response times, find slow endpoints, detect error spikes, build a …</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 commands for S3, EC2, and IAM, then build the same thing in Go with the AWS SDK. List instances, sync buckets, check costs, build a Go …</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 simple variable substitution, then build the same thing in Go with text/template. Handle missing variables, add conditionals, build a …</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 the same thing in Go. Send signals, manage child processes, build a mini process supervisor with health checks and …</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, starting with sudo and file permissions, then build the same thing in Go. Parse /etc/sudoers, audit file permissions, build a security scanner that flags …</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 the same thing in Go. Hit the DST parsing bug, fix it, build a log timestamp normalizer, and end with a multi-zone …</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 the same thing in Go. Read /proc/stat, get confused by jiffies, fix it with the delta trick, add per-core bars, and end with …</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 tool that monitors log files using the same patterns.</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>Build a Go API and put it behind Nginx step by step. Start with a bare HTTP server, hit the port 80 permission problem, add a reverse proxy, lose the client IP, fix it, then add rate limiting and …</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, no libraries, just Linux namespaces, chroot, cgroups, and about 150 lines of Go.</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 from scratch. Start with one message, discover the visibility timeout trap, add batch operations, 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. Learn Put, Get, Query, Update, and Delete the practical way.</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 incrementally 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, step-by-step guide to building your first AWS Lambda function with Go. Start with a basic handler, hit real errors, fix them, then add API Gateway, the way real learning works.</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 your CI/CD setup. Learn YAML-based configuration, 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 for your team. LTS vs Weekly compared, version evolution, JVM compatibility (Java 8 → 11 → 17 → 21), and how to migrate between major releases without breaking your …</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 covering its Unix origins, core options, task-based examples, quirky tricks, and a handy cheat sheet. Everything you need 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. Includes Groovy examples, security best practices, and real-world use cases from 20+ years of Jenkins experience.</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 that deploys applications 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: Simplifying CI/CD Pipeline Configuration</image:title><image:caption>Master Jenkinsfile with envsubst to simplify your CI/CD pipelines. Learn how environment variable substitution can improve your Jenkins configuration management and deployment workflows.</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/bash-code-shortening.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. Substitution, deletion, line selection, multiline patterns — each with input, command, output, and when to use it.</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>Discover essential security considerations when using envsubst in your CI/CD pipelines. Learn how to protect sensitive data, prevent injection attacks, and implement best practices for secure template …</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: A Step-by-Step Guide</image:title><image:caption>Master the art of replacing text across multiple files with sed. This step-by-step guide covers everything from basic substitutions to advanced pattern matching, with practical examples for developers …</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>Discover how to implement Google's Site Reliability Engineering (SRE) principles using Bash scripts. Learn proven SRE practices from Google's renowned books with practical examples for monitoring, …</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: From basename to a 500K File/Day Pipeline</image:title><image:caption>Learn filename extraction the way production log pipelines actually work. Start with basename, hit the spaces-in-filenames bug, fix it, then benchmark against parameter expansion. Based on processing …</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 Manipulation: Emergency Patterns When jq is Unavailable</image:title><image:caption>When jq is unavailable, sed can manipulate JSON in emergencies. Real production incident where sed saved a critical deployment on a locked-down corporate server. Use jq whenever possible - this is the …</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: A Detailed Guide to Configuration and Analysis</image:title><image:caption>A complete guide to NGINX logs. Learn how to configure, manage, and analyze access and error logs to optimize your NGINX server's performance and troubleshoot issues effectively.</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 simple useradd, hit the security issue (users accessing each other's files), fix with groups and permissions, add sudo access properly, …</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 on the Linux top command. Learn how to monitor and manage system resources, discover practical examples, and work through advanced techniques to optimize your Linux system's …</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>Discover how to use vmstat for detailed system monitoring and performance tuning. This guide covers everything from basic usage to advanced techniques, including 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. Start with AWS CLI commands to check IAM, security groups, and S3 policies, then build a Go security scanner that finds misconfigurations automatically.</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 actually happens in production. Start with a single Postgres database, hit connection limits at 100K users, add read replicas, encounter replica lag, implement …</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 Log Management: From docker logs to a Go Log Collector</image:title><image:caption>Learn Docker logging from the ground up. Start with docker logs and logging drivers, then build a Go log collector that tails, parses, and aggregates container logs in real time.</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+ server deployments daily for Calgary-based infrastructure. Real scripts that reduced deployment time from 4 hours to 12 minutes with error …</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 your CI/CD pipelines. This guide compares sed, Jinja2, Groovy templating, and other options with detailed code examples and use case 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>Discover proven Bash code shortening techniques from industry experts to simplify your shell scripts while maintaining readability and performance. This full guide shares personal experiences, …</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>Discover essential Bash error handling techniques that turn fragile scripts into reliable automation tools. Learn how to implement proper exit codes, trap signals, and create defensive Bash scripts …</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 complete URL shortener from scratch. Start with Linux networking concepts like TCP, HTTP, and redirects, then build a Go web service with URL storage, redirect handling, and click 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 the Simple Way: AWS Lambda and S3</image:title><image:caption>Learn how to build a serverless YouTube-like video platform using AWS Lambda and S3. This straightforward guide shows you how to implement video uploading, processing, and delivery with a simple, …</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 tutorial for buildspec.yml in AWS CodeBuild. Structure, phases, environment variables, artifacts, caching — with a complete React-on-S3 example you can copy. Need Python, Go, ECR, or EKS? …</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 and collect results, then build a Go CI runner that watches git repos, runs build steps, and reports 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 create powerful template-based automation workflows. This comprehensive guide covers everything from basic setup to advanced implementation techniques for envsubst …</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 can turn your static sites into dynamic web applications. Learn best practices, implementation strategies, and real-world use cases for adding serverless …</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 scripting the way you actually learn it — by solving real problems. Start with a simple echo script, add variables, hit the set -e trap that breaks everything, debug with set -x, build …</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/jenkins-configuration-as-code.jpg</image:loc><image:title>Mastering sed for YAML, JSON, TOML Config Files</image:title><image:caption>Discover how to become an expert at using sed to precisely manipulate configuration files. This comprehensive guide covers advanced sed techniques for updating YAML, JSON, TOML, and properties files …</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 the art of self-healing Bash functions that can detect, troubleshoot, and recover from failures automatically. This guide provides practical coding examples for creating resilient scripts that …</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 the ground up. Start with curl, ping, and /proc, then build a Go health monitor that checks HTTP endpoints, TCP ports, disk space, 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 Hosting for Modern Web Applications</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>Discover why adding Amazon SQS to your YouTube-like platform provides critical scalability and reliability. Learn how to implement a queuing layer between S3 uploads and Lambda processing for improved …</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-bash-scripting.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 experience processing production log volumes in enterprise systems.</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>Real-world serverless data pipeline processing millions of events daily using Boto3 and Lambda. Includes cold start optimization, error handling patterns, DLQ configuration, and cost optimization …</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 issues that can arise when working with Amazon EC2 instances, with tips for troubleshooting these problems. Covers the tools and resources that can be used to resolve issues, plus best …</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>Want to make your Jenkins installation faster, more reliable, and easier to manage? Learn how to create a custom AMI of Jenkins that's perfect for 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 and Automation: From Shell Hooks to a Go Webhook Server</image:title><image:caption>Learn Git automation from scratch. Start with shell-based git hooks for pre-commit and pre-push checks, then build a Go webhook server that listens for push events 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 Configuration: From SSH Loops to a Go Config Tool</image:title><image:caption>Learn remote server configuration from scratch. Start with SSH loops and bash scripts, then build a Go tool that connects to multiple servers, pushes configs, and verifies 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-custom-ami-jenkins.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/terraform-getting-started.jpg</image:loc><image:title>Create Freeform Feature Flag from S3 Object</image:title><image:caption>Step-by-step guide to creating freeform feature flags using AWS AppConfig and S3 objects. Manage application configurations and toggle features without redeploying.</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 that breaks 90% of first attempts, EKS kubectl deploys with parameter-store secrets, and reports/cache …</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>