<?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>Tue, 05 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://karandeepsingh.ca/posts/feed.xml" rel="self" type="application/rss+xml"/><item><title>Sed for Log Analysis: Extract Errors, Filter by Time, Find 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, In-Place Backup, and Safety Patterns</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 Pipelines: 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 observations on real log data, and ten side-by-side examples of the same task in all three tools.</description></item><item><title>What I 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 retrospective on Kubernetes mistakes from a DevOps engineer. Five things I overinvested in, underinvested in, or simply got wrong while running EKS in 2025.</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 Terminal 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 Step by Step</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-logs-and-docker-your-ultimate-guide/</link><pubDate>Sun, 15 Feb 2026 23:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/nginx-logs-and-docker-your-ultimate-guide/</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/envsubst-jinja2-templating-guide/</link><pubDate>Sun, 15 Feb 2026 21:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/envsubst-jinja2-templating-guide/</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/devops-trends-2026/</link><pubDate>Sun, 15 Feb 2026 20:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/devops-trends-2026/</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/how-to-create-time-change-function-bash/</link><pubDate>Sun, 15 Feb 2026 18:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/how-to-create-time-change-function-bash/</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, agent requirements, and implementation steps.</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/nodejs-deployments-cicd/</link><pubDate>Tue, 28 Jan 2025 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/nodejs-deployments-cicd/</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>Jenkinsfile with envsubst: Simplifying CI/CD Pipeline Configuration</title><link>https://karandeepsingh.ca/posts/jenkinsfile-with-envsubst/</link><pubDate>Tue, 28 Jan 2025 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/jenkinsfile-with-envsubst/</guid><description>Discover how combining Jenkinsfile with envsubst creates cleaner, more maintainable CI/CD pipelines through powerful environment variable substitution techniques.</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 from actual log analysis at production scale. Each pattern solves a real problem (extract errors, clean configs, parse timestamps, transform JSON). Organized by use case with input/output examples and performance notes.</description></item><item><title>envsubst Security: How to Protect Your CI/CD Pipeline</title><link>https://karandeepsingh.ca/posts/security-considerations-when-using-envsubst/</link><pubDate>Sat, 28 Dec 2024 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/security-considerations-when-using-envsubst/</guid><description>Explore critical security vulnerabilities, mitigation strategies, and best practices when implementing envsubst for environment variable substitution in your deployment pipelines.</description></item><item><title>How to Replace Text in Multiple Files with Sed: A Step-by-Step Guide</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>Bash for SRE: Google's Reliability in Shell Scripts</title><link>https://karandeepsingh.ca/posts/bash-sre-google-reliability-engineering/</link><pubDate>Wed, 28 Aug 2024 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/bash-sre-google-reliability-engineering/</guid><description>Learn to integrate Google&amp;rsquo;s SRE principles into your Bash scripts with practical functions for implementing SLOs, reducing toil, and building more reliable systems through automation.</description></item><item><title>Filename Extraction: From basename to a 500K File/Day 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>Build a production log aggregation pipeline from scratch. Start with simple basename, encounter the symlink bug that breaks extraction, fix it, then benchmark all four approaches (basename vs parameter expansion vs awk vs sed) on 500K files.</description></item><item><title>Sed for JSON Manipulation: 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. Based on real production incident requiring urgent config changes on locked-down server. Always use jq for JSON - this is the emergency backup plan.</description></item><item><title>Mastering NGINX Logs: A Detailed Guide to Configuration and Analysis</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>User Management: From Simple useradd to SOC 2 Compliance</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>Learn user management the way production incidents teach it. Create a user, realize they can access sensitive files, lock it down with groups and permissions, encounter the audit requirement, implement proper access controls. Based on a real SOC 2 compliance project in Calgary.</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>Database Scaling: From 100K to 5M Users in 18 Months</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>Watch a database scale from a single Postgres instance to a sharded architecture supporting 5M users. Start simple, hit real bottlenecks (connection limits, replica lag, query timeouts), fix each one, measure the improvement. Based on scaling a Calgary SaaS from 100K to 5M users over 18 months.</description></item><item><title>Docker Log Management: From docker logs to a Go Log Collector</title><link>https://karandeepsingh.ca/posts/apache-logs-and-docker-your-ultimate-guide/</link><pubDate>Sun, 10 Sep 2023 20:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/apache-logs-and-docker-your-ultimate-guide/</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>Production-tested Bash automation patterns from deploying to 200+ servers daily. Includes retry logic, error handling, parallel execution, and template generation. Reduced deployment time from 4 hours to 12 minutes.</description></item><item><title>Alternatives to envsubst for CI/CD Templating</title><link>https://karandeepsingh.ca/posts/alternatives-to-envsubst/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/alternatives-to-envsubst/</guid><description>Explore the strengths and weaknesses of various alternatives to envsubst for template-based configuration management in modern CI/CD workflows.</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: From Linux Networking to Go</title><link>https://karandeepsingh.ca/posts/simple-serverless-social-network/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/simple-serverless-social-network/</guid><description>Build a URL shortener step by step with Linux networking and Go. From TCP sockets and HTTP redirects to a complete web service with storage, analytics, and rate limiting.</description></item><item><title>Building a YouTube-like System the Simple Way: 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>buildspec.yml for AWS CodeBuild: A Practical Tutorial</title><link>https://karandeepsingh.ca/posts/buildspec-guide/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/buildspec-guide/</guid><description>A complete guide to mastering buildspec.yml for AWS CodeBuild with practical examples, best practices, and expert insights to streamline your DevOps workflow.</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>envsubst in Bash: Template-Based Automation Guide</title><link>https://karandeepsingh.ca/posts/leveraging-envsubst-in-bash-scripts-for-automation/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/leveraging-envsubst-in-bash-scripts-for-automation/</guid><description>Discover how to use envsubst, a powerful yet lightweight tool built into most Linux distributions, to transform your Bash scripts into template-processing powerhouses.</description></item><item><title>Lambda Website Integration: When and Why You Should Use It</title><link>https://karandeepsingh.ca/posts/lambda-website-integration-guide/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/lambda-website-integration-guide/</guid><description>Lambda website integration enables developers to add dynamic functionality to static sites without managing servers. This practical guide explains when to use serverless functions and how to implement them effectively.</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. Based on 3 years of daily bash automation in Calgary DevOps role.</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/nodejs-error-handling-best-practices/</link><pubDate>Mon, 28 Aug 2023 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/nodejs-error-handling-best-practices/</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 Hosting for Modern Web Applications</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>Production guide to S3 hosting based on migrating a large documentation site from EC2 WordPress to S3+CloudFront. Includes cost breakdowns, performance lessons, and field notes from managing S3-hosted sites in production.</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>Advanced Bash string functions developed from processing log entries in production ETL pipelines. Includes performance comparisons, edge case handling, and real-world examples from enterprise data transformation workflows.</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. Based on 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>Troubleshooting common EC2 issues</title><link>https://karandeepsingh.ca/posts/troubleshooting-common-ec2-issues/</link><pubDate>Fri, 30 Dec 2022 07:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/troubleshooting-common-ec2-issues/</guid><description>Amazon EC2 instances are a powerful and flexible tool for running applications in the cloud, but like any system, they can sometimes experience problems. This article provides tips and techniques for troubleshooting common issues with EC2 instances, including using the EC2 dashboard and AWS CLI, open source libraries, and monitoring and logging tools. It also covers common issues such as connectivity problems, performance issues, and software or configuration errors.</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 and Automation: From Shell Hooks to a Go Webhook Server</title><link>https://karandeepsingh.ca/posts/9-jenkins-hacks-that-will-make-your-life-easier-devops/</link><pubDate>Sat, 12 Nov 2022 05:08:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/9-jenkins-hacks-that-will-make-your-life-easier-devops/</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 Configuration: From SSH Loops to a Go Config Tool</title><link>https://karandeepsingh.ca/posts/9-ansible-hacks-to-make-your-life-easier-devops/</link><pubDate>Sat, 12 Nov 2022 02:01:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/9-ansible-hacks-to-make-your-life-easier-devops/</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/let-s-build-image-with-ec2-image-builder/</link><pubDate>Sat, 02 Apr 2022 06:00:00 +0000</pubDate><guid>https://karandeepsingh.ca/posts/let-s-build-image-with-ec2-image-builder/</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>