Karandeep Singh Blog MCP
A public, read-only MCP server that allows AI clients to search, read, and reason over the author's DevOps and AWS blog content, including articles, cheatsheets, quizzes, and code snippets, without requiring authentication.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://karandeepsingh.ca/mcpWhat its tools do
11 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search blog articles and cheatsheets by topic or tag
- Read full article text and related links by URL or slug
- Run multiple-choice quizzes drawn from article comprehension questions
- Extract runnable commands from pages without prose
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- karandeepsingh-blog 3.1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 11 advertised
- Resources
- 118 advertised
- Resource templates
- 2 advertised
- Prompts
- 4 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"completions": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
11 advertised
search_posts — Search the blog
Search Karandeep Singh's blog (DevOps/AWS articles and cheatsheets). Returns ranked cards with title, URL, tags, date, reading time, and summary.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "number",
"description": "Max results (default 8, cap 20)."
},
"query": {
"type": "string",
"description": "Search terms, e.g. 'aurora failover' or 'lambda cold start'."
},
"section": {
"enum": [
"posts",
"cheatsheets"
],
"type": "string",
"description": "Optional: restrict to 'posts' or 'cheatsheets'."
}
}
}{
"title": "Search the blog",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}read_post — Read an article
Read a post's full text by URL, paginated. Returns a window of characters; call again with the returned next offset to continue.
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Post URL or path, e.g. /posts/aurora-postgresql-setup-guide/."
},
"offset": {
"type": "number",
"description": "Character offset to start from (default 0)."
}
}
}{
"title": "Read an article",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_recent — Recent posts
List the most recently published posts.
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Default 8, cap 20."
}
}
}{
"title": "Recent posts",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}browse_by_tag — Browse by tag
List posts with a given tag (e.g. aws, lambda, cost, aurora). Use list_topics to see all tags.
{
"type": "object",
"required": [
"tag"
],
"properties": {
"tag": {
"type": "string",
"description": "A tag name."
},
"limit": {
"type": "number"
}
}
}{
"title": "Browse by tag",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_topics — List topics
List every tag on the blog with a post count, for discovering what's covered.
{
"type": "object",
"properties": {}
}{
"title": "List topics",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}related_posts — Related posts
Given a post URL, find other posts that share the most tags with it.
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Post URL or path."
},
"limit": {
"type": "number"
}
}
}{
"title": "Related posts",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}random_post — Random post
Return a random post from the blog — a surprise pick.
{
"type": "object",
"properties": {}
}{
"title": "Random post",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_cheatsheet — Get a cheatsheet
Jump straight to a cheatsheet by topic (docker, cloudformation, cost, aurora, kubernetes, …) and get its full text.
{
"type": "object",
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string",
"description": "Cheatsheet topic or name."
}
}
}{
"title": "Get a cheatsheet",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_cheatsheets — List cheatsheets
List all cheatsheets (quick-reference guides) on the blog.
{
"type": "object",
"properties": {}
}{
"title": "List cheatsheets",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}quiz_me — Quiz me
Test the user's knowledge with real multiple-choice questions written for the blog's articles. Returns questions, options, and an answers section with explanations. Ask the questions first, then reveal the answers.
{
"type": "object",
"properties": {
"count": {
"type": "number",
"description": "How many questions (default 3, max 10)."
},
"topic": {
"type": "string",
"description": "Topic to be quizzed on, e.g. aurora, lambda, docker. Omit for a random quiz."
}
}
}{
"title": "Quiz me",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_commands — Just the commands
Return just the runnable commands and code blocks from the best-matching article or cheatsheet — no prose. Use when the user wants the command, not the explanation.
{
"type": "object",
"required": [
"topic"
],
"properties": {
"limit": {
"type": "number",
"description": "Max code blocks to return (default 6, max 12)."
},
"topic": {
"type": "string",
"description": "Topic or tool, e.g. docker, kubectl, terraform, psql."
}
}
}{
"title": "Just the commands",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
4 advertised
research_topic — Research a topic on the blog
Search the blog for a topic, read the best matches, and synthesise a grounded answer with links.
- topic
- The topic to research, e.g. 'Aurora failover'. (required)
quick_reference — Pull up a cheatsheet
Fetch the most relevant cheatsheet and summarise the commands or settings that answer a question.
- topic
- Cheatsheet topic, e.g. docker, cloudformation, cost. (required)
- question
- Optional specific question to answer from it.
compare_options — Compare two options
Use the blog's comparison articles to weigh two technologies against each other on cost and fit.
- option_a
- First option, e.g. MSK. (required)
- option_b
- Second option, e.g. Kinesis. (required)
whats_new — What's new on the blog
Summarise the most recently published articles and what they cover.
- count
- How many recent posts to cover (default 5).
Resources
118 advertised
atuin — Atuin Cheatsheet
My Atuin notes. Search keybindings, filter and search modes, the search flags worth knowing, sync and account commands, stats, config essentials, and troubleshooting — checked against Atuin 18.19.0.
https://karandeepsingh.ca/cheatsheets/terminal/atuin/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-08-11"
}low-cost-cloud-stack — Low-Cost Cloud Stack Cheatsheet
Quick-reference for a lean, low-cost cloud stack. Free-tier frontend hosting, API platforms, serverless Postgres, auth, a full cost comparison table, low-cost VPS/cloud providers (OVH, Hetzner, Oracle, DigitalOcean, Vultr), and when to move to AWS/GCP/Azure.
https://karandeepsingh.ca/cheatsheets/cost/low-cost-cloud-stack/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-01-15"
}git — Git Cheatsheet
The git commands I actually reach for, built around one table of how to undo things, plus reflog recovery, scripted bisect, and the rules for rewriting history that is already shared.
https://karandeepsingh.ca/cheatsheets/devops/git/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-11-18"
}golang — Go (Golang) Cheatsheet
A practical Go reference for DevOps work covering go mod and build commands, core syntax, concurrency patterns, testing, and the stdlib snippets I reuse most.
https://karandeepsingh.ca/cheatsheets/languages/golang/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-07-08"
}tmux — tmux Cheatsheet
My tmux notes. Session management, window and pane keybindings, copy mode, config essentials, and scripting layouts with send-keys.
https://karandeepsingh.ca/cheatsheets/terminal/tmux/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-07-02"
}python-basics-cli — Python Basics & CLI Cheatsheet
Notes on core Python syntax, error handling, file I/O with pathlib, plus the CLI side (venv, pip, argparse, and python -m tricks).
https://karandeepsingh.ca/cheatsheets/python/python-basics-cli/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-05-12"
}docker — Docker Cheatsheet
A dense, practical Docker reference covering the image lifecycle, container run flags, Dockerfiles with multi-stage builds, compose, and cleanup commands.
https://karandeepsingh.ca/cheatsheets/containers/docker/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-04-18"
}bash-basics — Bash Basics Cheatsheet
A dense quick-reference for Bash 5.x scripting. Quoting, parameter expansion, test operators, loops, functions, arrays, traps, and here-docs.
https://karandeepsingh.ca/cheatsheets/bash/bash-basics/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-03-30"
}msk-vs-kinesis — MSK vs Kinesis Cheatsheet (Cost & When to Choose)
Quick-reference comparing Amazon MSK (managed Kafka) and Kinesis Data Streams, pricing models and idle cost, a feature table, and a clear when-to-choose-which decision guide.
https://karandeepsingh.ca/cheatsheets/cost/msk-vs-kinesis/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-08-06"
}go-concurrency — Go Concurrency Cheatsheet
Goroutines, channels, select and context in the shapes I actually use, plus the race detector, worker pools, and the deadlock and goroutine-leak mistakes that are easiest to ship.
https://karandeepsingh.ca/cheatsheets/languages/go-concurrency/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-08-05"
}ubuntu-terminal — Ubuntu Terminal Cheatsheet
The Ubuntu server commands I reach for daily. Covers apt/dpkg/snap package management, systemd, ufw, user management, networking, and upgrades.
https://karandeepsingh.ca/cheatsheets/terminal/ubuntu-terminal/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-06-28"
}jenkins — Jenkins Cheatsheet
Quick-reference Jenkins pipeline syntax. Declarative skeletons, credentials binding, parallel stages, shared libraries, triggers, and troubleshooting fixes.
https://karandeepsingh.ca/cheatsheets/devops/jenkins/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-06-11"
}python-threading-concurrency — Python Threading & Concurrency Cheatsheet
Python concurrency notes covering threading primitives, queue producer/consumer, concurrent.futures, multiprocessing, asyncio, and when to use which.
https://karandeepsingh.ca/cheatsheets/python/python-threading-concurrency/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-06-03"
}kubernetes — Kubernetes Cheatsheet
A working kubectl reference with core resource YAML skeletons, rollout and scaling commands, debugging workflows, and a table of handy one-liners.
https://karandeepsingh.ca/cheatsheets/containers/kubernetes/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-05-27"
}bash-sed-awk — Bash sed & awk Cheatsheet
My working reference for sed and awk. Substitution, addresses, capture groups, fields, BEGIN/END blocks, associative arrays, and the one-liners I actually use.
https://karandeepsingh.ca/cheatsheets/bash/bash-sed-awk/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-04-25"
}go-logging — Go Logging Cheatsheet (log/slog)
Structured logging in Go with log/slog, covering handlers, levels, attribute typing, per-request context, JSON output for CloudWatch, and the odd-argument mistake that silently corrupts a line.
https://karandeepsingh.ca/cheatsheets/languages/go-logging/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-09-16"
}al2-terminal — Amazon Linux 2 Terminal Cheatsheet
Working notes for Amazon Linux 2 on EC2. Covers yum and amazon-linux-extras, SSM access, instance metadata, cloud-init, and security updates.
https://karandeepsingh.ca/cheatsheets/terminal/al2-terminal/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-07-23"
}cloudformation — AWS CloudFormation Cheatsheet
Quick-reference CloudFormation guide. Template sections, intrinsic functions, stack lifecycle CLI commands, change sets, drift detection, and error fixes.
https://karandeepsingh.ca/cheatsheets/devops/cloudformation/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-07-15"
}python-boto3 — Python Boto3 Cheatsheet
My notes for automating AWS with boto3, covering client/resource setup, S3, EC2, Lambda, DynamoDB, and SSM, plus paginators, waiters, and error handling done right.
https://karandeepsingh.ca/cheatsheets/python/python-boto3/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-06-21"
}bash-cli — Bash CLI One-Liners Cheatsheet
The command-line one-liners I use daily. find/xargs, grep, curl, jq, tar, disk and process triage, network checks, ssh/rsync, history tricks, and job control.
https://karandeepsingh.ca/cheatsheets/bash/bash-cli/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-05-19"
}go-security — Go Security Cheatsheet
The security rules I check before Go code touches a server, covering command execution, randomness, SQL parameters, path traversal, TLS verification, HTTP timeouts and dependency scanning.
https://karandeepsingh.ca/cheatsheets/languages/go-security/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-10-07"
}python-logging — Python Logging Cheatsheet
My notes on Python logging done properly, covering loggers vs handlers, dictConfig, structured JSON output for CloudWatch, rotation, and the traps that produce duplicate or missing lines.
https://karandeepsingh.ca/cheatsheets/python/python-logging/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-08-14"
}ansible — Ansible Cheatsheet
Quick-reference Ansible guide. Inventories, ad-hoc commands, playbooks, module table, loops and conditionals, roles layout, Vault, and Jinja2 templating.
https://karandeepsingh.ca/cheatsheets/devops/ansible/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-07-19"
}python-security — Python Security Cheatsheet
The security rules I apply to every Python script that touches a server, covering subprocess injection, unsafe deserialisation, secrets and randomness, SQL parameters, TLS, and dependency checks.
https://karandeepsingh.ca/cheatsheets/python/python-security/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-09-09"
}kubectl-annotate-change-cause — kubectl annotate: Change-Cause and Rollout History
Start with one kubectl annotate command and keep adding. Overwrite and remove annotations, fill the CHANGE-CAUSE column in rollout history, catch the stale change-cause trap, roll back, then move it all into git with a deploy script that writes the cause from your commit.
https://karandeepsingh.ca/posts/kubectl-annotate-change-cause/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-10-19"
}atuin-shell-history-search — Stop Pressing the Up Arrow: Searchable Shell History with Atuin
Ctrl-R only matches one result at a time and forgets which directory you were in. Atuin swaps your shell history for a SQLite database and gives you a real search screen — what it does, why directory filtering changes your day, how encrypted sync works, and when it is not worth it.
https://karandeepsingh.ca/posts/atuin-shell-history-search/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-08-11"
}lambda-cost-tuning-memory-graviton — Tuning AWS Lambda for Cost: The Memory Myth, Measured
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.
https://karandeepsingh.ca/posts/lambda-cost-tuning-memory-graviton/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-08-10"
}blog-mcp-server-netlify — I Gave My Blog an MCP Server (and You Can Too)
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.
https://karandeepsingh.ca/posts/blog-mcp-server-netlify/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-08-09"
}livestream-phone-to-aws-ivs — Livestream From Your Phone to AWS with IVS (and What Every Setting Means)
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, "Can not find channel", why Chrome won't play the URL).
https://karandeepsingh.ca/posts/livestream-phone-to-aws-ivs/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-08-07"
}lambda-million-users-per-hour — Handling a Million Users an Hour with AWS Lambda (Think Like a System Designer)
A system-designer'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.
https://karandeepsingh.ca/posts/lambda-million-users-per-hour/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-08-06"
}ec2-s3-files-mount-bucket-file-system — S3 Files on EC2: Mount an S3 Bucket as a File System (the Honest Guide)
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.
https://karandeepsingh.ca/posts/ec2-s3-files-mount-bucket-file-system/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-08-06"
}lambda-configuration-explained — AWS Lambda Configuration Explained: What to Care About (and Why)
Most of AWS Lambda is configuration, not code, and the defaults aren'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.
https://karandeepsingh.ca/posts/lambda-configuration-explained/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-08-05"
}ec2-root-volumes-vs-file-systems — EC2 Storage in Plain English: Root Volumes vs File Systems
The EC2 launch wizard'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.
https://karandeepsingh.ca/posts/ec2-root-volumes-vs-file-systems/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-30"
}aurora-clone-copy-on-write — Cloning an Aurora PostgreSQL Cluster (Copy-on-Write)
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.
https://karandeepsingh.ca/posts/aurora-clone-copy-on-write/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-27"
}aurora-rds-data-api-postgresql — Running SQL Over HTTPS with the RDS Data API (Aurora PostgreSQL)
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.
https://karandeepsingh.ca/posts/aurora-rds-data-api-postgresql/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-27"
}aurora-write-forwarding-postgresql — Aurora Write Forwarding: Writing Through a Read Replica
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.
https://karandeepsingh.ca/posts/aurora-write-forwarding-postgresql/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-27"
}aurora-add-aws-region-global-database — Adding an AWS Region to Aurora PostgreSQL (Global Database)
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.
https://karandeepsingh.ca/posts/aurora-add-aws-region-global-database/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-27"
}aurora-add-reader-read-replica — Adding a Read Replica (Reader) to Aurora PostgreSQL
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.
https://karandeepsingh.ca/posts/aurora-add-reader-read-replica/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-26"
}find-slow-queries-aurora-postgresql — Finding and Fixing Slow Queries in Aurora PostgreSQL
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.
https://karandeepsingh.ca/posts/find-slow-queries-aurora-postgresql/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-26"
}valkey-cache-aside-aurora-postgresql — Valkey as a Cache in Front of Aurora PostgreSQL (Cache-Aside)
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.
https://karandeepsingh.ca/posts/valkey-cache-aside-aurora-postgresql/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-26"
}aurora-postgresql-setup-guide — How to Set Up Aurora PostgreSQL (and Why Each Setting Matters)
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.
https://karandeepsingh.ca/posts/aurora-postgresql-setup-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-25"
}valkey-aws-elasticache-guide — Valkey on AWS ElastiCache: A Hands-On Guide
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.
https://karandeepsingh.ca/posts/valkey-aws-elasticache-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-07-25"
}jenkins-upgrade-and-migration-guide — Upgrading Jenkins: Migration Strategies for Major Version Jumps
How to plan and execute Jenkins upgrades, including large multi-version jumps, safely with in-place, blue-green, and phased strategies.
https://karandeepsingh.ca/posts/jenkins-upgrade-and-migration-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-06-20"
}docker-compose-multi-container-guide — Docker Compose, Bake & ECR: Build and Ship Apps
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.
https://karandeepsingh.ca/posts/docker-compose-multi-container-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-06-18"
}kubernetes-eks-setup-eksctl — Kubernetes on AWS: EKS Setup with eksctl
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.
https://karandeepsingh.ca/posts/kubernetes-eks-setup-eksctl/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-06-18"
}fix-kubernetes-crashloopbackoff — Fix Kubernetes CrashLoopBackOff: Causes and Solutions
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.
https://karandeepsingh.ca/posts/fix-kubernetes-crashloopbackoff/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-06-18"
}kubernetes-fundamentals-pods-deployments-services — Kubernetes Fundamentals: Pods, Deployments, Services
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.
https://karandeepsingh.ca/posts/kubernetes-fundamentals-pods-deployments-services/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-06-18"
}kubectl-cheat-sheet — kubectl Cheat Sheet: 30+ Essential Commands
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.
https://karandeepsingh.ca/posts/kubectl-cheat-sheet/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-06-18"
}sed-for-log-analysis — Sed for Log Analysis: Errors, Time Filters, Patterns
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.
https://karandeepsingh.ca/posts/sed-for-log-analysis/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-05-05"
}sed-gotchas-gnu-vs-bsd — Sed Gotchas: GNU vs BSD and Safe In-Place Editing
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.
https://karandeepsingh.ca/posts/sed-gotchas-gnu-vs-bsd/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-05-05"
}sed-in-ci-cd-pipelines — Sed in CI/CD: Safe Patterns for GitHub Actions and Jenkins
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.
https://karandeepsingh.ca/posts/sed-in-ci-cd-pipelines/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-05-05"
}sed-multiline-patterns — Sed Multiline Patterns: How to Match Across Lines
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).
https://karandeepsingh.ca/posts/sed-multiline-patterns/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-05-05"
}sed-vs-awk-vs-grep — Sed vs Awk vs Grep: When to Use Which (with Decision Matrix)
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.
https://karandeepsingh.ca/posts/sed-vs-awk-vs-grep/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-05-05"
}what-i-got-wrong-about-kubernetes-2025 — What Teams Got Wrong About Kubernetes in 2025
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.
https://karandeepsingh.ca/posts/what-i-got-wrong-about-kubernetes-2025/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-05-04"
}devops-stack-i-would-pick-2026 — The DevOps Stack I'd Pick If I Started Over in 2026
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.
https://karandeepsingh.ca/posts/devops-stack-i-would-pick-2026/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-05-04"
}mastering-tmux-go-session-manager — Master tmux: From Multiplexer to a Go Session Manager
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.
https://karandeepsingh.ca/posts/mastering-tmux-go-session-manager/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-21"
}log-aggregator-from-scratch-go — Log Aggregator From Scratch in Go
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.
https://karandeepsingh.ca/posts/log-aggregator-from-scratch-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-16"
}terraform-getting-started-aws — Terraform From Scratch: Provision AWS Infrastructure
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.
https://karandeepsingh.ca/posts/terraform-getting-started-aws/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-16"
}nginx-log-analysis-grep-to-go — Nginx Log Analysis: From grep to a Go Log Parser
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.
https://karandeepsingh.ca/posts/nginx-log-analysis-grep-to-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-15"
}bash-scripting-meets-aws — AWS CLI Automation: From Bash Scripts to Go
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.
https://karandeepsingh.ca/posts/bash-scripting-meets-aws/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-15"
}config-templating-envsubst-to-go — Config Templating: From envsubst to Go
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.
https://karandeepsingh.ca/posts/config-templating-envsubst-to-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-15"
}process-management-linux-to-go — Process Management: From Linux Commands to a Go Supervisor
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.
https://karandeepsingh.ca/posts/process-management-linux-to-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-15"
}sudo-mastery-and-best-practices — Linux Access Control: From sudo to a Go Security Scanner
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.
https://karandeepsingh.ca/posts/sudo-mastery-and-best-practices/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-15"
}timezones-in-production-linux-to-go — Timezones in Production: From Linux Commands to Go
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.
https://karandeepsingh.ca/posts/timezones-in-production-linux-to-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-15"
}mastering-cpu-cores — CPU Monitoring: From Linux Commands to a Go Dashboard
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.
https://karandeepsingh.ca/posts/mastering-cpu-cores/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-15"
}weird-unix-commands — Unix Power Tools Every DevOps Engineer Should Know
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.
https://karandeepsingh.ca/posts/weird-unix-commands/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-15"
}go-nginx-reverse-proxy — Go + Nginx: Deploy a Go API Behind a Reverse Proxy
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.
https://karandeepsingh.ca/posts/go-nginx-reverse-proxy/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-15"
}containers-from-scratch-go — Containers From Scratch in Go
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.
https://karandeepsingh.ca/posts/containers-from-scratch-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-14"
}go-sqs-message-queue — Go + SQS: Build a Message Queue Processor
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.
https://karandeepsingh.ca/posts/go-sqs-message-queue/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-14"
}go-dynamodb-crud — Go + DynamoDB: Build a Simple CRUD App
Build a DynamoDB CRUD app in Go step by step. Start raw, hit real pain points, and end up with clean struct-based operations.
https://karandeepsingh.ca/posts/go-dynamodb-crud/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-14"
}go-aws-s3-cli-tool — Build a Go CLI Tool for AWS S3
Build a practical Go CLI tool for AWS S3. Start with listing buckets, then add uploads, downloads, and concurrent transfers step by step.
https://karandeepsingh.ca/posts/go-aws-s3-cli-tool/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-14"
}build-deploy-go-lambda-function — Build and Deploy a Go Lambda Function
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.
https://karandeepsingh.ca/posts/build-deploy-go-lambda-function/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-14"
}jenkins-configuration-as-code-jcasc-guide — Jenkins Configuration as Code: The Definitive JCasC Guide
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.
https://karandeepsingh.ca/posts/jenkins-configuration-as-code-jcasc-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2026-02-14"
}python-for-devops-cheatsheet — Python for DevOps: Three Cheat Cards and the Traps
Three printable Python cards covering the syntax, the four imports and the collections that DevOps work actually uses — plus the traps that will not fit on a card, each shown failing before it is fixed.
https://karandeepsingh.ca/posts/python-for-devops-cheatsheet/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-10-29"
}deploy-jenkins-eks-tutorial — Deploy Jenkins on Amazon EKS: A Practical Tutorial
Step-by-step tutorial for deploying Jenkins on Amazon EKS. Learn pods vs deployments and why each matters for your CI/CD setup.
https://karandeepsingh.ca/posts/deploy-jenkins-eks-tutorial/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-06-24"
}comprehensive-guide-to-jenkins-versions — Jenkins LTS vs Weekly: Which Version Should You Use?
A practical guide to Jenkins version selection, covering JVM compatibility, version evolution, and agent requirements, with links to focused deep-dive guides.
https://karandeepsingh.ca/posts/comprehensive-guide-to-jenkins-versions/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-03-13"
}linux-ls-command-comprehensive-guide — Linux ls Command: History, Tricks, and Examples
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.
https://karandeepsingh.ca/posts/linux-ls-command-comprehensive-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-03-10"
}jenkins-userremoteconfig — Jenkins UserRemoteConfig: Dynamic Git in Pipelines
Unlock advanced Git workflows with Jenkins UserRemoteConfig. Perfect for DevOps engineers managing multi-repository pipelines.
https://karandeepsingh.ca/posts/jenkins-userremoteconfig/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-02-25"
}linux-automation-tools — Linux Automation Tools: From Cron to a Custom Go Runner
Master Linux task automation with cron, make, and systemd timers. Then build a complete Go task runner with scheduling, retries, and a status dashboard.
https://karandeepsingh.ca/posts/linux-automation-tools/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-02-05"
}deployment-automation-ssh-to-go — Deployment Automation: From SSH Scripts to a Go Deploy Tool
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.
https://karandeepsingh.ca/posts/deployment-automation-ssh-to-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-01-28"
}sed-command-cheat-sheet-30-essential-one-liners — Sed Cheat Sheet: 30 One-Liners from Real Production Logs
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.
https://karandeepsingh.ca/posts/sed-command-cheat-sheet-30-essential-one-liners/{
"audience": [
"user",
"assistant"
],
"lastModified": "2025-01-28"
}replace-text-multiple-files-sed-guide — How to Replace Text in Multiple Files with Sed
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.
https://karandeepsingh.ca/posts/replace-text-multiple-files-sed-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-12-28"
}jenkins-java-compatibility — Jenkins Java Compatibility: From Java 8 to Java 25
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.
https://karandeepsingh.ca/posts/jenkins-java-compatibility/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-10-15"
}bash-extract-filename-from-path-guide — Filename Extraction: basename to a Production File Pipeline
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).
https://karandeepsingh.ca/posts/bash-extract-filename-from-path-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-04-30"
}sed-json-manipulation-without-jq — Sed for JSON: Emergency Patterns When jq Is Unavailable
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.
https://karandeepsingh.ca/posts/sed-json-manipulation-without-jq/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-04-28"
}mastering-nginx-logs-guide — Mastering NGINX Logs: Configuration and Analysis Guide
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.
https://karandeepsingh.ca/posts/mastering-nginx-logs-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-04-19"
}linux-user-control-terminal-commands — Linux User Management: Commands, Groups, Permissions, and Security
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.
https://karandeepsingh.ca/posts/linux-user-control-terminal-commands/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-04-16"
}mastering-top — Advanced Guide to Using the top Command in Linux
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.
https://karandeepsingh.ca/posts/mastering-top/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-03-26"
}mastering-vmstat — Advanced Guide to Using the vmstat Command in Linux
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.
https://karandeepsingh.ca/posts/mastering-vmstat/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-03-24"
}aws-security-features-guide — AWS Security Audit: From AWS CLI to a Go Security Scanner
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.
https://karandeepsingh.ca/posts/aws-security-features-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-03-01"
}jenkins-security-advisories-and-cves — Jenkins Security: Advisories, CVEs, and Hardening
Jenkins security evolution, the CVE-2024-23897 CLI vulnerability, and keeping plugins patched to shrink the attack surface.
https://karandeepsingh.ca/posts/jenkins-security-advisories-and-cves/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-02-01"
}how-to-scale-database-in-microservices — Database Scaling: From 100K to 5M Users
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.
https://karandeepsingh.ca/posts/how-to-scale-database-in-microservices/{
"audience": [
"user",
"assistant"
],
"lastModified": "2024-01-09"
}docker-logs-to-go-collector — Docker Logs: From docker logs to a Go Log Collector
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.
https://karandeepsingh.ca/posts/docker-logs-to-go-collector/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-09-10"
}advanced-bash-scripting-techniques-for-automation — Advanced Bash Scripting for Automation
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.
https://karandeepsingh.ca/posts/advanced-bash-scripting-techniques-for-automation/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}bash-code-shortening-techniques — Bash Code Shortening: Writing Concise Shell Scripts
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.
https://karandeepsingh.ca/posts/bash-code-shortening-techniques/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}bash-error-handling-bulletproof-scripts — Bash Error Handling: Patterns for Bulletproof Scripts
Explore practical strategies to implement reliable error handling in Bash scripts, preventing silent failures and building automation you can truly trust.
https://karandeepsingh.ca/posts/bash-error-handling-bulletproof-scripts/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}url-shortener-from-scratch-go — Building a URL Shortener in Go: From TCP Sockets to a Working Service
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.
https://karandeepsingh.ca/posts/url-shortener-from-scratch-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}youtube-system-design-aws — Building a YouTube-like System with AWS Lambda and S3
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.
https://karandeepsingh.ca/posts/youtube-system-design-aws/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}jenkins-devops-best-practices — CI Pipeline Basics: From Shell Scripts to a Go Build Runner
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.
https://karandeepsingh.ca/posts/jenkins-devops-best-practices/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}mastering-bash-scripting — Mastering Bash: From echo to Production Deployment Script
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.
https://karandeepsingh.ca/posts/mastering-bash-scripting/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}mastering-sed-update-remove-configuration-files — Mastering sed for YAML, JSON, TOML Config Files
Learn how to leverage sed's powerful text processing capabilities to efficiently update, remove, and transform data in various configuration file formats like YAML, JSON, TOML, and properties files.
https://karandeepsingh.ca/posts/mastering-sed-update-remove-configuration-files/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}self-healing-bash-functions — Self-Healing Bash: Functions That Recover From Failures
Learn how to implement self-healing mechanisms in your Bash scripts with practical examples that handle common failures and recover automatically.
https://karandeepsingh.ca/posts/self-healing-bash-functions/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}service-health-checks-curl-to-go — Service Health Checks: From curl to a Go Health Monitor
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.
https://karandeepsingh.ca/posts/service-health-checks-curl-to-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}aws-s3-hosting-guide — The Complete Guide to AWS S3 Static Website Hosting
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.
https://karandeepsingh.ca/posts/aws-s3-hosting-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}youtube-system-sqs-architecture — Why YouTube-Scale Systems Need SQS: Architecture Notes
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.
https://karandeepsingh.ca/posts/youtube-system-sqs-architecture/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-08-28"
}advanced-string-operations-in-bash-building-custom-functions — Advanced Bash String Operations
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.
https://karandeepsingh.ca/posts/advanced-string-operations-in-bash-building-custom-functions/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-02-20"
}bash-string-search-split-and-count — Bash String Functions: Search, Split, Count, Extract
Bash string functions for length validation, case conversion, substitution, truncation, counting, splitting, capitalization, ROT13, and field extraction (index, substring, join).
https://karandeepsingh.ca/posts/bash-string-search-split-and-count/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-02-20"
}bash-string-trimming-and-case — Bash String Functions: Trimming, Case, and Reversal
Bash string functions for stripping leading and trailing whitespace (ltrim, rtrim, trim) and reversing strings, with performance comparisons against sed and awk.
https://karandeepsingh.ca/posts/bash-string-trimming-and-case/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-02-20"
}bash-string-validation-and-generation — Bash String Validation, Generation & a Library
Bash functions for random string generation, input sanitization, CSV parsing, password-strength checks, and slug generation, plus a complete production string library to source.
https://karandeepsingh.ca/posts/bash-string-validation-and-generation/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-02-20"
}boto3-and-aws-lambda-a-match-made-in-serverless-heaven — Boto3 + AWS Lambda: A Production Serverless Pipeline
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.
https://karandeepsingh.ca/posts/boto3-and-aws-lambda-a-match-made-in-serverless-heaven/{
"audience": [
"user",
"assistant"
],
"lastModified": "2023-01-09"
}create-custom-ami-of-jenkins-devops — Create Custom AMI of Jenkins | DevOps
A comprehensive guide to roll out your own custom Jenkins AMI, perfect for those who want a hassle-free, tailor-made Continuous Integration environment.
https://karandeepsingh.ca/posts/create-custom-ami-of-jenkins-devops/{
"audience": [
"user",
"assistant"
],
"lastModified": "2022-11-13"
}git-hooks-to-go-webhook-server — Git Hooks: From Shell Scripts to a Go Webhook Server
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.
https://karandeepsingh.ca/posts/git-hooks-to-go-webhook-server/{
"audience": [
"user",
"assistant"
],
"lastModified": "2022-11-12"
}remote-server-config-ssh-to-go — Remote Server Config: From SSH Loops to a Go Config Tool
Master remote server configuration with SSH and Go. From bash loops to a complete config tool with parallel execution, idempotent operations, and service verification.
https://karandeepsingh.ca/posts/remote-server-config-ssh-to-go/{
"audience": [
"user",
"assistant"
],
"lastModified": "2022-11-12"
}ec2-image-builder-components — Build Image with EC2 Image Builder Components
Build custom AMIs using EC2 Image Builder with Amazon Linux 2023 and NGINX.
https://karandeepsingh.ca/posts/ec2-image-builder-components/{
"audience": [
"user",
"assistant"
],
"lastModified": "2022-04-02"
}create-a-new-image-recipe — EC2 Image Builder: Create a New Image Recipe
EC2 Image Builder uses image recipes 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 …
https://karandeepsingh.ca/posts/create-a-new-image-recipe/{
"audience": [
"user",
"assistant"
],
"lastModified": "2022-04-02"
}create-freeform-feature-flag-from-s3-object — Create Freeform Feature Flag from S3 Object
Step-by-step guide to creating freeform feature flags using AWS AppConfig and S3 objects. Manage application configurations and toggle features without redeploying.
https://karandeepsingh.ca/posts/create-freeform-feature-flag-from-s3-object/{
"audience": [
"user",
"assistant"
],
"lastModified": "2022-03-20"
}deploy-hugo-s3-codebuild — Deploy a Hugo Site to S3 with CodeBuild
Learn how to deploy a Hugo static site to S3 using AWS CodeBuild with a custom GoLang Docker image and a buildspec.yaml pipeline.
https://karandeepsingh.ca/posts/deploy-hugo-s3-codebuild/{
"audience": [
"user",
"assistant"
],
"lastModified": "2021-09-23"
}aws-codebuild-advanced-buildspec-guide — Advanced buildspec.yml: Python, Go, ECR Push, EKS Deploy
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.
https://karandeepsingh.ca/posts/aws-codebuild-advanced-buildspec-guide/{
"audience": [
"user",
"assistant"
],
"lastModified": "2021-09-23"
}post — Blog post
A published article by its slug, e.g. lambda-configuration-explained.
https://karandeepsingh.ca/posts/{slug}/cheatsheet — Cheatsheet
A quick-reference cheatsheet, e.g. containers/docker or cost/low-cost-cloud-stack.
https://karandeepsingh.ca/cheatsheets/{category}/{slug}/90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1721 ms
- 95th percentile latency
- 1721 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1721 ms · metadata changed · 11 tool(s), 118 resource(s), 2 resource template(s), 4 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http karandeep-singh-blog-mcp https://karandeepsingh.ca/mcpCodex
codex mcp add karandeep-singh-blog-mcp --url https://karandeepsingh.ca/mcpCursor
{
"mcpServers": {
"karandeep-singh-blog-mcp": {
"url": "https://karandeepsingh.ca/mcp"
}
}
}Cline
{
"mcpServers": {
"karandeep-singh-blog-mcp": {
"type": "streamableHttp",
"url": "https://karandeepsingh.ca/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"karandeep-singh-blog-mcp": {
"type": "http",
"url": "https://karandeepsingh.ca/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http karandeep-singh-blog-mcp https://karandeepsingh.ca/mcpClaude Desktop
https://karandeepsingh.ca/mcpWindsurf
{
"mcpServers": {
"karandeep-singh-blog-mcp": {
"serverUrl": "https://karandeepsingh.ca/mcp"
}
}
}Let your agent find its tools
Find servers like Karandeep Singh Blog MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.