<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Karandeep Singh - DevOps in Calgary</title><link>https://karandeepsingh.ca/posts/</link><description>Recent content in Posts on Karandeep Singh - DevOps in Calgary</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 10 Aug 2026 19:45:00 +0000</lastBuildDate><atom:link href="https://karandeepsingh.ca/posts/feed.xml" rel="self" type="application/rss+xml"/><item><title>Tuning AWS Lambda for Cost: The Memory Myth, Measured</title><link>https://karandeepsingh.ca/posts/lambda-cost-tuning-memory-graviton/</link><pubDate>Mon, 10 Aug 2026 19:45:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/lambda-cost-tuning-memory-graviton/</guid><description>Most Lambda cost advice repeats folklore. This walks through what AWS actually documents and bills — GB-seconds, the 1,769 MB one-vCPU line, the exact 20% arm64 discount and where it does not apply — then shows how to measure your own function instead of guessing.</description></item><item><title>I Gave My Blog an MCP Server (and You Can Too)</title><link>https://karandeepsingh.ca/posts/blog-mcp-server-netlify/</link><pubDate>Sun, 09 Aug 2026 19:30:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/blog-mcp-server-netlify/</guid><description>A walkthrough of building a public MCP server for a static blog — one serverless function, a build-time index, and all three MCP primitives — plus the mistakes that cost me an hour and why it runs for free.</description></item><item><title>Livestream From Your Phone to AWS with IVS (and What Every Setting Means)</title><link>https://karandeepsingh.ca/posts/livestream-phone-to-aws-ivs/</link><pubDate>Fri, 07 Aug 2026 10:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/livestream-phone-to-aws-ivs/</guid><description>How to livestream from your phone to other devices through AWS with Amazon IVS, no server and no code, plus a plain-English explanation of every setting in the create-channel wizard and the real gotchas (RTMP auth, &amp;ldquo;Can not find channel&amp;rdquo;, why Chrome won&amp;rsquo;t play the URL).</description></item><item><title>Handling a Million Users an Hour with AWS Lambda (Think Like a System Designer)</title><link>https://karandeepsingh.ca/posts/lambda-million-users-per-hour/</link><pubDate>Thu, 06 Aug 2026 10:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/lambda-million-users-per-hour/</guid><description>A system-designer&amp;rsquo;s walkthrough of running a million users an hour on AWS Lambda, the capacity math, concurrency and cold starts, which language to pick, the database bottleneck that actually breaks first, and how to handle logs and metrics without the bill or the noise getting out of hand.</description></item><item><title>S3 Files on EC2: Mount an S3 Bucket as a File System (the Honest Guide)</title><link>https://karandeepsingh.ca/posts/ec2-s3-files-mount-bucket-file-system/</link><pubDate>Thu, 06 Aug 2026 09:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/ec2-s3-files-mount-bucket-file-system/</guid><description>Amazon S3 Files lets you mount an S3 bucket as a folder on EC2. This is the honest version, the setup gotchas (versioning, subnet, port 2049, a brutal Ubuntu build), how its latency compares to EBS and EFS, and whether Jenkins, config files, and logs belong on it.</description></item><item><title>AWS Lambda Configuration Explained: What to Care About (and Why)</title><link>https://karandeepsingh.ca/posts/lambda-configuration-explained/</link><pubDate>Wed, 05 Aug 2026 10:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/lambda-configuration-explained/</guid><description>Most of AWS Lambda is configuration, not code, and the defaults aren&amp;rsquo;t always right. This explains what each setting means, memory, timeout, concurrency, architecture, IAM, VPC, environment variables, and what to actually care about when you set them.</description></item><item><title>EC2 Storage in Plain English: Root Volumes vs File Systems</title><link>https://karandeepsingh.ca/posts/ec2-root-volumes-vs-file-systems/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/ec2-root-volumes-vs-file-systems/</guid><description>The EC2 launch wizard&amp;rsquo;s storage step has two very different parts, the root volume and the File systems panel, and beginners mix them up. This explains both in plain words, plus when to reach for each.</description></item><item><title>Cloning an Aurora PostgreSQL Cluster (Copy-on-Write)</title><link>https://karandeepsingh.ca/posts/aurora-clone-copy-on-write/</link><pubDate>Mon, 27 Jul 2026 04:15:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/aurora-clone-copy-on-write/</guid><description>How Aurora copy-on-write cloning makes a fast, isolated copy of a cluster in minutes regardless of size, proven hands-on, plus when and why to use one, whether to keep or delete it, the benefits and limits, and whether it makes sense to add readers or Regions to a clone.</description></item><item><title>Running SQL Over HTTPS with the RDS Data API (Aurora PostgreSQL)</title><link>https://karandeepsingh.ca/posts/aurora-rds-data-api-postgresql/</link><pubDate>Mon, 27 Jul 2026 04:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/aurora-rds-data-api-postgresql/</guid><description>Turn on the RDS Data API for Aurora PostgreSQL and run SQL over an HTTPS endpoint with no persistent connection and no VPC, shown from both the in-console Query Editor and the AWS CLI, plus when to use it, when not to, and its limits.</description></item><item><title>Aurora Write Forwarding: Writing Through a Read Replica</title><link>https://karandeepsingh.ca/posts/aurora-write-forwarding-postgresql/</link><pubDate>Mon, 27 Jul 2026 03:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/aurora-write-forwarding-postgresql/</guid><description>How Aurora write forwarding lets a read replica take writes and pass them to the writer, done hands-on with local write forwarding on Aurora PostgreSQL, plus the global cross-region variant, the latency cost, which engines support it, and why you still need an instance in every Region you serve.</description></item><item><title>Adding an AWS Region to Aurora PostgreSQL (Global Database)</title><link>https://karandeepsingh.ca/posts/aurora-add-aws-region-global-database/</link><pubDate>Mon, 27 Jul 2026 00:30:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/aurora-add-aws-region-global-database/</guid><description>A hands-on walkthrough of extending an Aurora PostgreSQL cluster to a second AWS Region with Aurora Global Database, including the instance-class upgrade and reboot, why the whole cluster shows Modifying, the opt-in region gotcha, and how far regions and readers scale.</description></item><item><title>Adding a Read Replica (Reader) to Aurora PostgreSQL</title><link>https://karandeepsingh.ca/posts/aurora-add-reader-read-replica/</link><pubDate>Sun, 26 Jul 2026 03:30:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/aurora-add-reader-read-replica/</guid><description>How to add a read replica (reader) to an Aurora PostgreSQL cluster, understand the writer and reader endpoints, prove the reader is read-only, and send read traffic to it, all from the AWS console.</description></item><item><title>Finding and Fixing Slow Queries in Aurora PostgreSQL</title><link>https://karandeepsingh.ca/posts/find-slow-queries-aurora-postgresql/</link><pubDate>Sun, 26 Jul 2026 01:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/find-slow-queries-aurora-postgresql/</guid><description>How to find slow queries in Aurora PostgreSQL the way you actually would, starting in the AWS console with Performance Insights and CloudWatch, then dropping into pg_stat_statements and EXPLAIN to fix one query from 17 ms to 0.1 ms.</description></item><item><title>Valkey as a Cache in Front of Aurora PostgreSQL (Cache-Aside)</title><link>https://karandeepsingh.ca/posts/valkey-cache-aside-aurora-postgresql/</link><pubDate>Sun, 26 Jul 2026 00:30:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/valkey-cache-aside-aurora-postgresql/</guid><description>The hands-on second half, connecting Python to Aurora PostgreSQL and Valkey, implementing the cache-aside pattern, and measuring a real 46 ms database read drop to 0.7 ms from cache.</description></item><item><title>How to Set Up Aurora PostgreSQL (and Why Each Setting Matters)</title><link>https://karandeepsingh.ca/posts/aurora-postgresql-setup-guide/</link><pubDate>Sat, 25 Jul 2026 20:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/aurora-postgresql-setup-guide/</guid><description>The reasoning behind every choice when creating an Amazon Aurora PostgreSQL cluster, from provisioned vs serverless to the security-group model, so the settings make sense instead of being guessed.</description></item><item><title>Valkey on AWS ElastiCache: A Hands-On Guide</title><link>https://karandeepsingh.ca/posts/valkey-aws-elasticache-guide/</link><pubDate>Sat, 25 Jul 2026 02:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/valkey-aws-elasticache-guide/</guid><description>A start-to-finish walkthrough of running Valkey on AWS ElastiCache, built from a real hands-on session, complete with the security-group mistake, the TLS surprise, and a small health-check script.</description></item><item><title>Upgrading Jenkins: Migration Strategies for Major Version Jumps</title><link>https://karandeepsingh.ca/posts/jenkins-upgrade-and-migration-guide/</link><pubDate>Sat, 20 Jun 2026 09:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/jenkins-upgrade-and-migration-guide/</guid><description>How to plan and execute Jenkins upgrades, including large multi-version jumps, safely with in-place, blue-green, and phased strategies.</description></item><item><title>Docker Compose, Bake &amp; ECR: Build and Ship Apps</title><link>https://karandeepsingh.ca/posts/docker-compose-multi-container-guide/</link><pubDate>Thu, 18 Jun 2026 06:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/docker-compose-multi-container-guide/</guid><description>A hands-on guide that takes a web + Postgres + Redis stack from a single Docker Compose file in local dev, to building images with Docker Bake, to pushing them to Amazon ECR for ECS, Fargate, or EKS.</description></item><item><title>Kubernetes on AWS: EKS Setup with eksctl</title><link>https://karandeepsingh.ca/posts/kubernetes-eks-setup-eksctl/</link><pubDate>Thu, 18 Jun 2026 05:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/kubernetes-eks-setup-eksctl/</guid><description>A practical, zero-to-running guide to AWS EKS with eksctl — install the tools, create a cluster with one command, deploy a workload behind an AWS load balancer, and clean up so you do not get a surprise bill.</description></item><item><title>Fix Kubernetes CrashLoopBackOff: Causes and Solutions</title><link>https://karandeepsingh.ca/posts/fix-kubernetes-crashloopbackoff/</link><pubDate>Thu, 18 Jun 2026 04:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/fix-kubernetes-crashloopbackoff/</guid><description>A practical playbook for Kubernetes CrashLoopBackOff — the diagnosis workflow (describe, previous logs, events) plus fixes for the six causes you will actually hit, including OOMKilled, failing liveness probes, and missing config.</description></item><item><title>Kubernetes Fundamentals: Pods, Deployments, Services</title><link>https://karandeepsingh.ca/posts/kubernetes-fundamentals-pods-deployments-services/</link><pubDate>Thu, 18 Jun 2026 03:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/kubernetes-fundamentals-pods-deployments-services/</guid><description>A hands-on introduction to Kubernetes fundamentals — pods, deployments, replicasets, and services — built step by step on a local kind cluster, with the mistakes and fixes that make the concepts stick.</description></item><item><title>kubectl Cheat Sheet: 30+ Essential Commands</title><link>https://karandeepsingh.ca/posts/kubectl-cheat-sheet/</link><pubDate>Thu, 18 Jun 2026 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/kubectl-cheat-sheet/</guid><description>The kubectl commands you actually reach for, grouped by task — inspecting pods, managing deployments and services, reading logs, and debugging — with copy-paste examples and notes on when to use each.</description></item><item><title>Sed for Log Analysis: Errors, Time Filters, Patterns</title><link>https://karandeepsingh.ca/posts/sed-for-log-analysis/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/sed-for-log-analysis/</guid><description>Practical sed recipes for working with production logs — error extraction, time-range filtering, multi-line stack trace handling, anonymization, and pre-pipeline cleanup before grep/awk.</description></item><item><title>Sed Gotchas: GNU vs BSD and Safe In-Place Editing</title><link>https://karandeepsingh.ca/posts/sed-gotchas-gnu-vs-bsd/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/sed-gotchas-gnu-vs-bsd/</guid><description>The sed gotchas every DevOps engineer hits — GNU vs BSD differences, in-place editing dangers, escape traps, and the portable patterns that work on Linux, macOS, and Alpine without modification.</description></item><item><title>Sed in CI/CD: Safe Patterns for GitHub Actions and Jenkins</title><link>https://karandeepsingh.ca/posts/sed-in-ci-cd-pipelines/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/sed-in-ci-cd-pipelines/</guid><description>A safety-first guide to running sed in automated pipelines — idempotency, exit codes, dry-run flags, in-place backup, and patterns that survive multiple runs without corrupting config files.</description></item><item><title>Sed Multiline Patterns: How to Match Across Lines</title><link>https://karandeepsingh.ca/posts/sed-multiline-patterns/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/sed-multiline-patterns/</guid><description>A walkthrough of sed multiline editing — pattern space, hold space, N/D/P commands, address ranges — built up step by step with real DevOps examples (stack traces, YAML blocks, SQL).</description></item><item><title>Sed vs Awk vs Grep: When to Use Which (with Decision Matrix)</title><link>https://karandeepsingh.ca/posts/sed-vs-awk-vs-grep/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/sed-vs-awk-vs-grep/</guid><description>A practical comparison of sed, awk, and grep with a decision tree, performance notes for large log files, and ten side-by-side examples of the same task in all three tools.</description></item><item><title>What Teams Got Wrong About Kubernetes in 2025</title><link>https://karandeepsingh.ca/posts/what-i-got-wrong-about-kubernetes-2025/</link><pubDate>Mon, 04 May 2026 10:00:00 -0600</pubDate><guid>https://karandeepsingh.ca/posts/what-i-got-wrong-about-kubernetes-2025/</guid><description>A year-end look at Kubernetes mistakes the industry kept making in 2025. Five things teams overinvested in, underinvested in, or simply got wrong on EKS this year.</description></item><item><title>The DevOps Stack I'd Pick If I Started Over in 2026</title><link>https://karandeepsingh.ca/posts/devops-stack-i-would-pick-2026/</link><pubDate>Mon, 04 May 2026 08:00:00 -0600</pubDate><guid>https://karandeepsingh.ca/posts/devops-stack-i-would-pick-2026/</guid><description>An opinionated DevOps stack pick from an engineer with years of production experience. Each layer is a vote, with what I would avoid and why.</description></item><item><title>Master tmux: From Multiplexer to a Go Session Manager</title><link>https://karandeepsingh.ca/posts/mastering-tmux-go-session-manager/</link><pubDate>Sat, 21 Feb 2026 14:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/mastering-tmux-go-session-manager/</guid><description>Learn tmux one concept at a time — sessions, windows, panes, configuration — then build a Go CLI tool that reads a YAML file and launches your entire dev environment automatically.</description></item><item><title>Log Aggregator From Scratch in Go</title><link>https://karandeepsingh.ca/posts/log-aggregator-from-scratch-go/</link><pubDate>Mon, 16 Feb 2026 14:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/log-aggregator-from-scratch-go/</guid><description>Build a log aggregator from scratch in Go. Tail files with inotify, survive log rotation, parse syslog and JSON, fan in from multiple sources, and wire up graceful shutdown.</description></item><item><title>Terraform From Scratch: Provision AWS Infrastructure</title><link>https://karandeepsingh.ca/posts/terraform-getting-started-aws/</link><pubDate>Mon, 16 Feb 2026 10:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/terraform-getting-started-aws/</guid><description>Learn Terraform with AWS step by step. Start with one S3 bucket, hit real errors, fix them, then build a full VPC + EC2 setup. Each step shows the command, the output, and the mistake.</description></item><item><title>Nginx Log Analysis: From grep to a Go Log Parser</title><link>https://karandeepsingh.ca/posts/nginx-log-analysis-grep-to-go/</link><pubDate>Sun, 15 Feb 2026 23:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/nginx-log-analysis-grep-to-go/</guid><description>Nginx log analysis from grep to Go — each step shows the command-line approach first, then builds it in Go. Parse access logs, find slow endpoints, detect error spikes, build a log analysis dashboard.</description></item><item><title>AWS CLI Automation: From Bash Scripts to Go</title><link>https://karandeepsingh.ca/posts/bash-scripting-meets-aws/</link><pubDate>Sun, 15 Feb 2026 22:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/bash-scripting-meets-aws/</guid><description>AWS automation from CLI to Go code. Each step shows the AWS CLI command first, then builds it in Go. List EC2 instances, manage S3, check costs, build an infrastructure report tool.</description></item><item><title>Config Templating: From envsubst to Go</title><link>https://karandeepsingh.ca/posts/config-templating-envsubst-to-go/</link><pubDate>Sun, 15 Feb 2026 21:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/config-templating-envsubst-to-go/</guid><description>Config templating from envsubst to Go: each step shows the shell way first, then builds it in Go. Handle missing variables, add conditionals, build a config generator for dev/staging/prod.</description></item><item><title>Process Management: From Linux Commands to a Go Supervisor</title><link>https://karandeepsingh.ca/posts/process-management-linux-to-go/</link><pubDate>Sun, 15 Feb 2026 20:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/process-management-linux-to-go/</guid><description>Process management from command line to Go code. Each step shows the Linux command first, then builds it in Go. Kill processes, send signals, set resource limits, build a process supervisor with auto-restart.</description></item><item><title>Linux Access Control: From sudo to a Go Security Scanner</title><link>https://karandeepsingh.ca/posts/sudo-mastery-and-best-practices/</link><pubDate>Sun, 15 Feb 2026 19:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/sudo-mastery-and-best-practices/</guid><description>Linux access control from command line to Go code. Each step shows the Linux command first, then builds it in Go. Parse sudoers, audit permissions, build a security scanner that flags dangerous configs.</description></item><item><title>Timezones in Production: From Linux Commands to Go</title><link>https://karandeepsingh.ca/posts/timezones-in-production-linux-to-go/</link><pubDate>Sun, 15 Feb 2026 18:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/timezones-in-production-linux-to-go/</guid><description>Timezone handling from command line to Go code — each step shows the Linux command first, then builds it in Go. Hit the DST parsing trap, fix it, normalize log timestamps, end with a multi-zone clock.</description></item><item><title>CPU Monitoring: From Linux Commands to a Go Dashboard</title><link>https://karandeepsingh.ca/posts/mastering-cpu-cores/</link><pubDate>Sun, 15 Feb 2026 17:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/mastering-cpu-cores/</guid><description>CPU monitoring from command line to Go code — each step shows the Linux command first, then builds it in Go. Hit the jiffies trap, fix it, add colored bars, end with a live dashboard.</description></item><item><title>Unix Power Tools Every DevOps Engineer Should Know</title><link>https://karandeepsingh.ca/posts/weird-unix-commands/</link><pubDate>Sun, 15 Feb 2026 16:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/weird-unix-commands/</guid><description>Learn Unix commands that actually matter in production: pv for progress bars, xargs for parallel execution, watch for live monitoring, column for readable output. Then build a Go log watcher using the same patterns.</description></item><item><title>Go + Nginx: Deploy a Go API Behind a Reverse Proxy</title><link>https://karandeepsingh.ca/posts/go-nginx-reverse-proxy/</link><pubDate>Sun, 15 Feb 2026 14:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/go-nginx-reverse-proxy/</guid><description>Deploy a Go HTTP API behind Nginx. Start with a bare server, hit the port 80 permission trap, proxy through Nginx, lose client IPs, fix header forwarding, add rate limiting, and wire up graceful shutdown with systemd.</description></item><item><title>Containers From Scratch in Go</title><link>https://karandeepsingh.ca/posts/containers-from-scratch-go/</link><pubDate>Sat, 14 Feb 2026 14:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/containers-from-scratch-go/</guid><description>Build your own container runtime in Go from scratch. Start by running a command, then add PID isolation, filesystem isolation, hostname, cgroups, one concept at a time.</description></item><item><title>Go + SQS: Build a Message Queue Processor</title><link>https://karandeepsingh.ca/posts/go-sqs-message-queue/</link><pubDate>Sat, 14 Feb 2026 13:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/go-sqs-message-queue/</guid><description>Build an SQS message processor in Go step by step. Send messages, hit the visibility timeout trap, add batch operations, and build a production-ready polling loop.</description></item><item><title>Go + DynamoDB: Build a Simple CRUD App</title><link>https://karandeepsingh.ca/posts/go-dynamodb-crud/</link><pubDate>Sat, 14 Feb 2026 12:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/go-dynamodb-crud/</guid><description>Build a DynamoDB CRUD app in Go step by step. Start raw, hit real pain points, and end up with clean struct-based operations.</description></item><item><title>Build a Go CLI Tool for AWS S3</title><link>https://karandeepsingh.ca/posts/go-aws-s3-cli-tool/</link><pubDate>Sat, 14 Feb 2026 11:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/go-aws-s3-cli-tool/</guid><description>Build a practical Go CLI tool for AWS S3. Start with listing buckets, then add uploads, downloads, and concurrent transfers step by step.</description></item><item><title>Build and Deploy a Go Lambda Function</title><link>https://karandeepsingh.ca/posts/build-deploy-go-lambda-function/</link><pubDate>Sat, 14 Feb 2026 10:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/build-deploy-go-lambda-function/</guid><description>Build your first Go Lambda function from scratch. We start simple, hit real errors, fix them, and work our way up to a production-ready API endpoint.</description></item><item><title>Jenkins Configuration as Code: The Definitive JCasC Guide</title><link>https://karandeepsingh.ca/posts/jenkins-configuration-as-code-jcasc-guide/</link><pubDate>Sat, 14 Feb 2026 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/jenkins-configuration-as-code-jcasc-guide/</guid><description>Learn how to manage your entire Jenkins setup through version-controlled YAML files using Jenkins Configuration as Code (JCasC), with practical examples for Kubernetes, security, and shared libraries.</description></item><item><title>Deploy Jenkins on Amazon EKS: A Practical Tutorial</title><link>https://karandeepsingh.ca/posts/deploy-jenkins-eks-tutorial/</link><pubDate>Tue, 24 Jun 2025 20:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/deploy-jenkins-eks-tutorial/</guid><description>Step-by-step tutorial for deploying Jenkins on Amazon EKS. Learn pods vs deployments and why each matters for your CI/CD setup.</description></item><item><title>Jenkins LTS vs Weekly: Which Version Should You Use?</title><link>https://karandeepsingh.ca/posts/comprehensive-guide-to-jenkins-versions/</link><pubDate>Thu, 13 Mar 2025 14:45:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/comprehensive-guide-to-jenkins-versions/</guid><description>A practical guide to Jenkins version selection, covering JVM compatibility, version evolution, and agent requirements, with links to focused deep-dive guides.</description></item><item><title>Linux ls Command: History, Tricks, and Examples</title><link>https://karandeepsingh.ca/posts/linux-ls-command-comprehensive-guide/</link><pubDate>Mon, 10 Mar 2025 14:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/linux-ls-command-comprehensive-guide/</guid><description>The definitive guide to the Linux ls command. Covers its five-decade history from early Unix to GNU coreutils, core options, task-based examples for real-world scenarios, quirky hidden tricks, and a quick-reference cheat sheet.</description></item><item><title>Jenkins UserRemoteConfig: Dynamic Git in Pipelines</title><link>https://karandeepsingh.ca/posts/jenkins-userremoteconfig/</link><pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/jenkins-userremoteconfig/</guid><description>Unlock advanced Git workflows with Jenkins UserRemoteConfig. Perfect for DevOps engineers managing multi-repository pipelines.</description></item><item><title>Linux Automation Tools: From Cron to a Custom Go Runner</title><link>https://karandeepsingh.ca/posts/linux-automation-tools/</link><pubDate>Wed, 05 Feb 2025 00:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/linux-automation-tools/</guid><description>Master Linux task automation with cron, make, and systemd timers. Then build a complete Go task runner with scheduling, retries, and a status dashboard.</description></item><item><title>Deployment Automation: From SSH Scripts to a Go Deploy Tool</title><link>https://karandeepsingh.ca/posts/deployment-automation-ssh-to-go/</link><pubDate>Tue, 28 Jan 2025 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/deployment-automation-ssh-to-go/</guid><description>Master deployment automation with Linux commands and Go. From SSH and rsync basics to building a complete deploy tool with health checks, rollbacks, and multi-server support.</description></item><item><title>Sed Cheat Sheet: 30 One-Liners from Real Production Logs</title><link>https://karandeepsingh.ca/posts/sed-command-cheat-sheet-30-essential-one-liners/</link><pubDate>Tue, 28 Jan 2025 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/sed-command-cheat-sheet-30-essential-one-liners/</guid><description>Thirty sed one-liners for everyday log and config work. Each pattern solves a common problem (extract errors, clean configs, parse timestamps, transform JSON). Organized by use case with input/output examples and performance notes.</description></item><item><title>How to Replace Text in Multiple Files with Sed</title><link>https://karandeepsingh.ca/posts/replace-text-multiple-files-sed-guide/</link><pubDate>Sat, 28 Dec 2024 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/replace-text-multiple-files-sed-guide/</guid><description>Learn reliable techniques for finding and replacing text across multiple files using sed, including file selection methods, safety practices, and advanced pattern matching with real-world examples.</description></item><item><title>Jenkins Java Compatibility: From Java 8 to Java 25</title><link>https://karandeepsingh.ca/posts/jenkins-java-compatibility/</link><pubDate>Tue, 15 Oct 2024 09:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/jenkins-java-compatibility/</guid><description>Jenkins JVM requirements and the Java 8 to 11 to 17 to 21 to 25 transition timeline, with version-by-version compatibility and tuning notes.</description></item><item><title>Filename Extraction: basename to a Production File Pipeline</title><link>https://karandeepsingh.ca/posts/bash-extract-filename-from-path-guide/</link><pubDate>Tue, 30 Apr 2024 07:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/bash-extract-filename-from-path-guide/</guid><description>Work through a log-filename processing exercise from scratch. Start with simple basename, encounter the symlink bug that breaks extraction, fix it, then benchmark all four approaches yourself (basename vs parameter expansion vs awk vs sed).</description></item><item><title>Sed for JSON: Emergency Patterns When jq Is Unavailable</title><link>https://karandeepsingh.ca/posts/sed-json-manipulation-without-jq/</link><pubDate>Sun, 28 Apr 2024 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/sed-json-manipulation-without-jq/</guid><description>Emergency JSON manipulation patterns using sed when jq is unavailable. For scenarios requiring urgent config changes on a locked-down server with no permission to install tools. Always use jq for JSON - this is the emergency backup plan.</description></item><item><title>Mastering NGINX Logs: Configuration and Analysis Guide</title><link>https://karandeepsingh.ca/posts/mastering-nginx-logs-guide/</link><pubDate>Fri, 19 Apr 2024 20:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/mastering-nginx-logs-guide/</guid><description>A complete guide to NGINX logs. Learn how to configure, manage, and analyze access and error logs to optimize your NGINX server&amp;rsquo;s performance and troubleshoot issues effectively.</description></item><item><title>Linux User Management: Commands, Groups, Permissions, and Security</title><link>https://karandeepsingh.ca/posts/linux-user-control-terminal-commands/</link><pubDate>Tue, 16 Apr 2024 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/linux-user-control-terminal-commands/</guid><description>A practical reference for Linux user management. Create, modify, and delete users; work with groups; set file permissions and special bits; monitor access with who, last, and ps; and apply security best practices.</description></item><item><title>Advanced Guide to Using the top Command in Linux</title><link>https://karandeepsingh.ca/posts/mastering-top/</link><pubDate>Tue, 26 Mar 2024 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/mastering-top/</guid><description>The Linux top command is an essential tool for real-time system monitoring, providing a dynamic overview of running processes and their resource consumption. This guide digs deep into the functionalities of the top command, offering users of all skill levels, from novices to seasoned system administrators, a detailed look at how to utilize this tool effectively. Starting with the basics of launching and reading top, the guide progresses through intermediate techniques like sorting and filtering processes, and advances into complex uses such as batch mode operation and remote system monitoring. Practical examples in each section demonstrate how to apply these techniques in real-world scenarios, enhancing understanding and skill. Additionally, the guide addresses common questions through a thorough FAQ section, equipping users with the knowledge to troubleshoot common issues and optimize system performance. The conclusion ties everything together, suggesting further resources for expanding beyond top to other diagnostic tools, thereby providing a rounded approach to system management.</description></item><item><title>Advanced Guide to Using the vmstat Command in Linux</title><link>https://karandeepsingh.ca/posts/mastering-vmstat/</link><pubDate>Sun, 24 Mar 2024 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/mastering-vmstat/</guid><description>This article provides an in-depth exploration of vmstat, a powerful tool for monitoring virtual memory and system performance. Starting with basic commands and moving through advanced functionalities, it offers practical examples to demonstrate each option of vmstat. Learn how to combine different options for thorough monitoring, automate tasks with scripting, and interpret outputs to diagnose and address system issues effectively. This guide also includes pro tips and best practices to enhance monitoring strategies, helping both new and experienced users maximize the utility of vmstat for system management and troubleshooting.</description></item><item><title>AWS Security Audit: From AWS CLI to a Go Security Scanner</title><link>https://karandeepsingh.ca/posts/aws-security-features-guide/</link><pubDate>Fri, 01 Mar 2024 07:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/aws-security-features-guide/</guid><description>Master AWS security auditing with CLI commands and Go. From checking IAM users and security groups to building a complete scanner that finds and reports misconfigurations.</description></item><item><title>Jenkins Security: Advisories, CVEs, and Hardening</title><link>https://karandeepsingh.ca/posts/jenkins-security-advisories-and-cves/</link><pubDate>Thu, 01 Feb 2024 09:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/jenkins-security-advisories-and-cves/</guid><description>Jenkins security evolution, the CVE-2024-23897 CLI vulnerability, and keeping plugins patched to shrink the attack surface.</description></item><item><title>Database Scaling: From 100K to 5M Users</title><link>https://karandeepsingh.ca/posts/how-to-scale-database-in-microservices/</link><pubDate>Tue, 09 Jan 2024 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/how-to-scale-database-in-microservices/</guid><description>A worked example of scaling a database from a single Postgres instance to a sharded architecture. Start simple, hit realistic bottlenecks (connection limits, replica lag, query timeouts), and fix each one. The numbers are illustrative; the progression is the real lesson.</description></item><item><title>Docker Logs: From docker logs to a Go Log Collector</title><link>https://karandeepsingh.ca/posts/docker-logs-to-go-collector/</link><pubDate>Sun, 10 Sep 2023 20:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/docker-logs-to-go-collector/</guid><description>Master Docker container logging with Linux commands and a real Go log collector. From docker logs basics to a streaming aggregator that processes multiple containers.</description></item><item><title>Advanced Bash Scripting for Automation</title><link>https://karandeepsingh.ca/posts/advanced-bash-scripting-techniques-for-automation/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/advanced-bash-scripting-techniques-for-automation/</guid><description>Practical Bash automation patterns for deploying to many servers. Includes retry logic, error handling, parallel execution, and template generation that keep multi-server deploys fast and reliable.</description></item><item><title>Bash Code Shortening: Writing Concise Shell Scripts</title><link>https://karandeepsingh.ca/posts/bash-code-shortening-techniques/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/bash-code-shortening-techniques/</guid><description>Master the art of Bash code shortening with this full guide offering expert techniques, real-world examples, and practical tips to write cleaner, more efficient scripts without sacrificing readability.</description></item><item><title>Bash Error Handling: Patterns for Bulletproof Scripts</title><link>https://karandeepsingh.ca/posts/bash-error-handling-bulletproof-scripts/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/bash-error-handling-bulletproof-scripts/</guid><description>Explore practical strategies to implement reliable error handling in Bash scripts, preventing silent failures and building automation you can truly trust.</description></item><item><title>Building a URL Shortener in Go: From TCP Sockets to a Working Service</title><link>https://karandeepsingh.ca/posts/url-shortener-from-scratch-go/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/url-shortener-from-scratch-go/</guid><description>A step-by-step build of a URL shortener in Go using only the standard library — raw TCP, HTTP parsing, hash-based short codes, file persistence, 302 redirects with click analytics, and rate limiting. Each step introduces a real bug first, then fixes it.</description></item><item><title>Building a YouTube-like System with AWS Lambda and S3</title><link>https://karandeepsingh.ca/posts/youtube-system-design-aws/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/youtube-system-design-aws/</guid><description>Create a scalable video platform using AWS Lambda functions that process uploads directly from S3. This simple approach works beautifully for video platforms and requires minimal management.</description></item><item><title>CI Pipeline Basics: From Shell Scripts to a Go Build Runner</title><link>https://karandeepsingh.ca/posts/jenkins-devops-best-practices/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/jenkins-devops-best-practices/</guid><description>Master CI pipeline fundamentals with shell scripts and Go. From running tests and collecting artifacts to building a complete build runner with git integration and parallel stages.</description></item><item><title>Mastering Bash: From echo to Production Deployment Script</title><link>https://karandeepsingh.ca/posts/mastering-bash-scripting/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/mastering-bash-scripting/</guid><description>Watch bash skills evolve from echo statements to a production deployment script. Start simple, encounter errors (set -e breaks pipelines, unquoted variables cause word splitting), fix each one, learn functions and error handling along the way.</description></item><item><title>Mastering sed for YAML, JSON, TOML Config Files</title><link>https://karandeepsingh.ca/posts/mastering-sed-update-remove-configuration-files/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/mastering-sed-update-remove-configuration-files/</guid><description>Learn how to leverage sed&amp;rsquo;s powerful text processing capabilities to efficiently update, remove, and transform data in various configuration file formats like YAML, JSON, TOML, and properties files.</description></item><item><title>Self-Healing Bash: Functions That Recover From Failures</title><link>https://karandeepsingh.ca/posts/self-healing-bash-functions/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/self-healing-bash-functions/</guid><description>Learn how to implement self-healing mechanisms in your Bash scripts with practical examples that handle common failures and recover automatically.</description></item><item><title>Service Health Checks: From curl to a Go Health Monitor</title><link>https://karandeepsingh.ca/posts/service-health-checks-curl-to-go/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/service-health-checks-curl-to-go/</guid><description>Master service health monitoring with Linux commands and Go. From curl and /proc basics to building a complete health monitor with HTTP checks, TCP probes, resource monitoring, and alerting.</description></item><item><title>The Complete Guide to AWS S3 Static Website Hosting</title><link>https://karandeepsingh.ca/posts/aws-s3-hosting-guide/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/aws-s3-hosting-guide/</guid><description>A practical guide to S3 hosting that walks through moving a WordPress documentation site to S3+CloudFront. Covers caching, cost, security hardening, and CI/CD best practices.</description></item><item><title>Why YouTube-Scale Systems Need SQS: Architecture Notes</title><link>https://karandeepsingh.ca/posts/youtube-system-sqs-architecture/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/youtube-system-sqs-architecture/</guid><description>Adding Amazon SQS to your video platform creates a buffer between uploads and processing, dramatically improving scalability and reliability. This approach is ideal for systems with unpredictable traffic, high volume, or strict processing guarantees.</description></item><item><title>Advanced Bash String Operations</title><link>https://karandeepsingh.ca/posts/advanced-string-operations-in-bash-building-custom-functions/</link><pubDate>Mon, 20 Feb 2023 07:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/advanced-string-operations-in-bash-building-custom-functions/</guid><description>An overview hub for custom Bash string functions used in log processing and everyday scripting, linking to focused guides on trimming and case, search and split, and validation and generation.</description></item><item><title>Bash String Functions: Search, Split, Count, Extract</title><link>https://karandeepsingh.ca/posts/bash-string-search-split-and-count/</link><pubDate>Mon, 20 Feb 2023 07:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/bash-string-search-split-and-count/</guid><description>Bash string functions for length validation, case conversion, substitution, truncation, counting, splitting, capitalization, ROT13, and field extraction (index, substring, join).</description></item><item><title>Bash String Functions: Trimming, Case, and Reversal</title><link>https://karandeepsingh.ca/posts/bash-string-trimming-and-case/</link><pubDate>Mon, 20 Feb 2023 07:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/bash-string-trimming-and-case/</guid><description>Bash string functions for stripping leading and trailing whitespace (ltrim, rtrim, trim) and reversing strings, with performance comparisons against sed and awk.</description></item><item><title>Bash String Validation, Generation &amp; a Library</title><link>https://karandeepsingh.ca/posts/bash-string-validation-and-generation/</link><pubDate>Mon, 20 Feb 2023 07:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/bash-string-validation-and-generation/</guid><description>Bash functions for random string generation, input sanitization, CSV parsing, password-strength checks, and slug generation, plus a complete production string library to source.</description></item><item><title>Boto3 + AWS Lambda: A Production Serverless Pipeline</title><link>https://karandeepsingh.ca/posts/boto3-and-aws-lambda-a-match-made-in-serverless-heaven/</link><pubDate>Mon, 09 Jan 2023 07:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/boto3-and-aws-lambda-a-match-made-in-serverless-heaven/</guid><description>Production guide to building serverless data pipelines with Boto3 and Lambda for processing high-volume daily events through an analytics pipeline. Covers cold starts, concurrent execution limits, error handling, retries, and cost optimization.</description></item><item><title>Create Custom AMI of Jenkins | DevOps</title><link>https://karandeepsingh.ca/posts/create-custom-ami-of-jenkins-devops/</link><pubDate>Sun, 13 Nov 2022 17:31:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/create-custom-ami-of-jenkins-devops/</guid><description>A comprehensive guide to roll out your own custom Jenkins AMI, perfect for those who want a hassle-free, tailor-made Continuous Integration environment.</description></item><item><title>Git Hooks: From Shell Scripts to a Go Webhook Server</title><link>https://karandeepsingh.ca/posts/git-hooks-to-go-webhook-server/</link><pubDate>Sat, 12 Nov 2022 05:08:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/git-hooks-to-go-webhook-server/</guid><description>Master Git automation with shell hooks and Go. From pre-commit scripts to a complete webhook server that validates payloads, triggers builds, and reports results.</description></item><item><title>Remote Server Config: From SSH Loops to a Go Config Tool</title><link>https://karandeepsingh.ca/posts/remote-server-config-ssh-to-go/</link><pubDate>Sat, 12 Nov 2022 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/remote-server-config-ssh-to-go/</guid><description>Master remote server configuration with SSH and Go. From bash loops to a complete config tool with parallel execution, idempotent operations, and service verification.</description></item><item><title>Build Image with EC2 Image Builder Components</title><link>https://karandeepsingh.ca/posts/ec2-image-builder-components/</link><pubDate>Sat, 02 Apr 2022 06:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/ec2-image-builder-components/</guid><description>Build custom AMIs using EC2 Image Builder with Amazon Linux 2023 and NGINX.</description></item><item><title>EC2 Image Builder: Create a New Image Recipe</title><link>https://karandeepsingh.ca/posts/create-a-new-image-recipe/</link><pubDate>Sat, 02 Apr 2022 06:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/create-a-new-image-recipe/</guid><description>&lt;p>EC2 Image Builder uses &lt;strong>image recipes&lt;/strong> to define the base image and components that make up your custom AMI. When you need to update packages, add new components, or change the base image, you create a new version of the recipe rather than editing the existing one. This ensures you maintain a versioned history of your AMI configurations.&lt;/p>
&lt;p>This guide walks through creating a new recipe version, updating your pipeline to use it, and verifying the resulting AMI.&lt;/p></description></item><item><title>Create Freeform Feature Flag from S3 Object</title><link>https://karandeepsingh.ca/posts/create-freeform-feature-flag-from-s3-object/</link><pubDate>Sun, 20 Mar 2022 06:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/create-freeform-feature-flag-from-s3-object/</guid><description>Step-by-step guide to creating freeform feature flags using AWS AppConfig and S3 objects. Manage application configurations and toggle features without redeploying.</description></item><item><title>Deploy a Hugo Site to S3 with CodeBuild</title><link>https://karandeepsingh.ca/posts/deploy-hugo-s3-codebuild/</link><pubDate>Thu, 23 Sep 2021 03:40:24 +0000</pubDate><guid>https://karandeepsingh.ca/posts/deploy-hugo-s3-codebuild/</guid><description>Learn how to deploy a Hugo static site to S3 using AWS CodeBuild with a custom GoLang Docker image and a buildspec.yaml pipeline.</description></item><item><title>Advanced buildspec.yml: Python, Go, ECR Push, EKS Deploy</title><link>https://karandeepsingh.ca/posts/aws-codebuild-advanced-buildspec-guide/</link><pubDate>Thu, 23 Sep 2021 00:39:24 +0000</pubDate><guid>https://karandeepsingh.ca/posts/aws-codebuild-advanced-buildspec-guide/</guid><description>This article covers the buildspec.yaml file in AWS CodeBuild with practical examples for Node.js, Python, and Go projects. Includes the critical ECR login fix and EKS deployment patterns.</description></item></channel></rss>