Koskamo

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.

Karandeep Singh Blog MCP logo, by Karandeep SinghCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by Karandeep Singh
MCP endpoint (Streamable HTTP)
https://karandeepsingh.ca/mcp
Vendor documentation

What its tools do

11 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

11 of 11 have a description · 11 of 11 declare behavior hints · 6 of 8 with parameters document them all

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

Community listingRegistry 3.1.0
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
Server-advertised capabilities
{
  "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.

Karandeep Singh's DevOps/AWS blog — articles and cheatsheets, exposed as MCP tools, resources and prompts. Tools: start with search_posts or list_topics, then read_post for full text. Use get_cheatsheet for quick reference (docker, cloudformation, cost, aurora, …), list_cheatsheets for every reference, and related_posts / browse_by_tag to explore around a topic. quiz_me runs a real multiple-choice quiz from questions written for the articles (ask the questions before revealing answers); get_commands returns only the runnable commands from a page, with no prose. Resources: every article is also a resource addressed by its canonical URL, so one can be attached directly. Prompts: research_topic, quick_reference, compare_options and whats_new wrap the common workflows. Everything is public, read-only, and safe to call without confirmation. IMPORTANT when presenting results to the user: keep every markdown link exactly as returned, in the form [Title](https://karandeepsingh.ca/...), so titles stay clickable. Never strip a link, never replace it with a bare title, and never rewrite the URL.

Tools

11 advertised

search_posts — Search the blog
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search Karandeep Singh's blog (DevOps/AWS articles and cheatsheets). Returns ranked cards with title, URL, tags, date, reading time, and summary.

search_posts input schema
{
  "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'."
    }
  }
}
search_posts annotations
{
  "title": "Search the blog",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
read_post — Read an article
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read a post's full text by URL, paginated. Returns a window of characters; call again with the returned next offset to continue.

read_post input schema
{
  "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)."
    }
  }
}
read_post annotations
{
  "title": "Read an article",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_recent — Recent posts
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the most recently published posts.

list_recent input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "Default 8, cap 20."
    }
  }
}
list_recent annotations
{
  "title": "Recent posts",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
browse_by_tag — Browse by tag
Advertised by the server during the last successful anonymous check.
Advertised read-only

List posts with a given tag (e.g. aws, lambda, cost, aurora). Use list_topics to see all tags.

browse_by_tag input schema
{
  "type": "object",
  "required": [
    "tag"
  ],
  "properties": {
    "tag": {
      "type": "string",
      "description": "A tag name."
    },
    "limit": {
      "type": "number"
    }
  }
}
browse_by_tag annotations
{
  "title": "Browse by tag",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_topics — List topics
Advertised by the server during the last successful anonymous check.
Advertised read-only

List every tag on the blog with a post count, for discovering what's covered.

list_topics input schema
{
  "type": "object",
  "properties": {}
}
list_topics annotations
{
  "title": "List topics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
related_posts — Related posts
Advertised by the server during the last successful anonymous check.
Advertised read-only

Given a post URL, find other posts that share the most tags with it.

related_posts input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Post URL or path."
    },
    "limit": {
      "type": "number"
    }
  }
}
related_posts annotations
{
  "title": "Related posts",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
random_post — Random post
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return a random post from the blog — a surprise pick.

random_post input schema
{
  "type": "object",
  "properties": {}
}
random_post annotations
{
  "title": "Random post",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_cheatsheet — Get a cheatsheet
Advertised by the server during the last successful anonymous check.
Advertised read-only

Jump straight to a cheatsheet by topic (docker, cloudformation, cost, aurora, kubernetes, …) and get its full text.

get_cheatsheet input schema
{
  "type": "object",
  "required": [
    "topic"
  ],
  "properties": {
    "topic": {
      "type": "string",
      "description": "Cheatsheet topic or name."
    }
  }
}
get_cheatsheet annotations
{
  "title": "Get a cheatsheet",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_cheatsheets — List cheatsheets
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all cheatsheets (quick-reference guides) on the blog.

list_cheatsheets input schema
{
  "type": "object",
  "properties": {}
}
list_cheatsheets annotations
{
  "title": "List cheatsheets",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
quiz_me — Quiz me
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

quiz_me input schema
{
  "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."
    }
  }
}
quiz_me annotations
{
  "title": "Quiz me",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_commands — Just the commands
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_commands input schema
{
  "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."
    }
  }
}
get_commands annotations
{
  "title": "Just the commands",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

4 advertised

research_topic — Research a topic on the blog

Advertised by the server during the last successful anonymous check.

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

Advertised by the server during the last successful anonymous check.

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

Advertised by the server during the last successful anonymous check.

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

Advertised by the server during the last successful anonymous check.

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

Advertised by the server during the last successful anonymous check.

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.

atuin URI
https://karandeepsingh.ca/cheatsheets/terminal/atuin/

MIME type: text/plain

atuin annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-08-11"
}
low-cost-cloud-stack — Low-Cost Cloud Stack Cheatsheet

Advertised by the server during the last successful anonymous check.

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.

low-cost-cloud-stack URI
https://karandeepsingh.ca/cheatsheets/cost/low-cost-cloud-stack/

MIME type: text/plain

low-cost-cloud-stack annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-01-15"
}
git — Git Cheatsheet

Advertised by the server during the last successful anonymous check.

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.

git URI
https://karandeepsingh.ca/cheatsheets/devops/git/

MIME type: text/plain

git annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-11-18"
}
golang — Go (Golang) Cheatsheet

Advertised by the server during the last successful anonymous check.

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.

golang URI
https://karandeepsingh.ca/cheatsheets/languages/golang/

MIME type: text/plain

golang annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-07-08"
}
tmux — tmux Cheatsheet

Advertised by the server during the last successful anonymous check.

My tmux notes. Session management, window and pane keybindings, copy mode, config essentials, and scripting layouts with send-keys.

tmux URI
https://karandeepsingh.ca/cheatsheets/terminal/tmux/

MIME type: text/plain

tmux annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-07-02"
}
python-basics-cli — Python Basics & CLI Cheatsheet

Advertised by the server during the last successful anonymous check.

Notes on core Python syntax, error handling, file I/O with pathlib, plus the CLI side (venv, pip, argparse, and python -m tricks).

python-basics-cli URI
https://karandeepsingh.ca/cheatsheets/python/python-basics-cli/

MIME type: text/plain

python-basics-cli annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-05-12"
}
docker — Docker Cheatsheet

Advertised by the server during the last successful anonymous check.

A dense, practical Docker reference covering the image lifecycle, container run flags, Dockerfiles with multi-stage builds, compose, and cleanup commands.

docker URI
https://karandeepsingh.ca/cheatsheets/containers/docker/

MIME type: text/plain

docker annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-04-18"
}
bash-basics — Bash Basics Cheatsheet

Advertised by the server during the last successful anonymous check.

A dense quick-reference for Bash 5.x scripting. Quoting, parameter expansion, test operators, loops, functions, arrays, traps, and here-docs.

bash-basics URI
https://karandeepsingh.ca/cheatsheets/bash/bash-basics/

MIME type: text/plain

bash-basics annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-03-30"
}
msk-vs-kinesis — MSK vs Kinesis Cheatsheet (Cost & When to Choose)

Advertised by the server during the last successful anonymous check.

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.

msk-vs-kinesis URI
https://karandeepsingh.ca/cheatsheets/cost/msk-vs-kinesis/

MIME type: text/plain

msk-vs-kinesis annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-08-06"
}
go-concurrency — Go Concurrency Cheatsheet

Advertised by the server during the last successful anonymous check.

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.

go-concurrency URI
https://karandeepsingh.ca/cheatsheets/languages/go-concurrency/

MIME type: text/plain

go-concurrency annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-08-05"
}
ubuntu-terminal — Ubuntu Terminal Cheatsheet

Advertised by the server during the last successful anonymous check.

The Ubuntu server commands I reach for daily. Covers apt/dpkg/snap package management, systemd, ufw, user management, networking, and upgrades.

ubuntu-terminal URI
https://karandeepsingh.ca/cheatsheets/terminal/ubuntu-terminal/

MIME type: text/plain

ubuntu-terminal annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-06-28"
}
jenkins — Jenkins Cheatsheet

Advertised by the server during the last successful anonymous check.

Quick-reference Jenkins pipeline syntax. Declarative skeletons, credentials binding, parallel stages, shared libraries, triggers, and troubleshooting fixes.

jenkins URI
https://karandeepsingh.ca/cheatsheets/devops/jenkins/

MIME type: text/plain

jenkins annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-06-11"
}
python-threading-concurrency — Python Threading & Concurrency Cheatsheet

Advertised by the server during the last successful anonymous check.

Python concurrency notes covering threading primitives, queue producer/consumer, concurrent.futures, multiprocessing, asyncio, and when to use which.

python-threading-concurrency URI
https://karandeepsingh.ca/cheatsheets/python/python-threading-concurrency/

MIME type: text/plain

python-threading-concurrency annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-06-03"
}
kubernetes — Kubernetes Cheatsheet

Advertised by the server during the last successful anonymous check.

A working kubectl reference with core resource YAML skeletons, rollout and scaling commands, debugging workflows, and a table of handy one-liners.

kubernetes URI
https://karandeepsingh.ca/cheatsheets/containers/kubernetes/

MIME type: text/plain

kubernetes annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-05-27"
}
bash-sed-awk — Bash sed & awk Cheatsheet

Advertised by the server during the last successful anonymous check.

My working reference for sed and awk. Substitution, addresses, capture groups, fields, BEGIN/END blocks, associative arrays, and the one-liners I actually use.

bash-sed-awk URI
https://karandeepsingh.ca/cheatsheets/bash/bash-sed-awk/

MIME type: text/plain

bash-sed-awk annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-04-25"
}
go-logging — Go Logging Cheatsheet (log/slog)

Advertised by the server during the last successful anonymous check.

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.

go-logging URI
https://karandeepsingh.ca/cheatsheets/languages/go-logging/

MIME type: text/plain

go-logging annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-09-16"
}
al2-terminal — Amazon Linux 2 Terminal Cheatsheet

Advertised by the server during the last successful anonymous check.

Working notes for Amazon Linux 2 on EC2. Covers yum and amazon-linux-extras, SSM access, instance metadata, cloud-init, and security updates.

al2-terminal URI
https://karandeepsingh.ca/cheatsheets/terminal/al2-terminal/

MIME type: text/plain

al2-terminal annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-07-23"
}
cloudformation — AWS CloudFormation Cheatsheet

Advertised by the server during the last successful anonymous check.

Quick-reference CloudFormation guide. Template sections, intrinsic functions, stack lifecycle CLI commands, change sets, drift detection, and error fixes.

cloudformation URI
https://karandeepsingh.ca/cheatsheets/devops/cloudformation/

MIME type: text/plain

cloudformation annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-07-15"
}
python-boto3 — Python Boto3 Cheatsheet

Advertised by the server during the last successful anonymous check.

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.

python-boto3 URI
https://karandeepsingh.ca/cheatsheets/python/python-boto3/

MIME type: text/plain

python-boto3 annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-06-21"
}
bash-cli — Bash CLI One-Liners Cheatsheet

Advertised by the server during the last successful anonymous check.

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.

bash-cli URI
https://karandeepsingh.ca/cheatsheets/bash/bash-cli/

MIME type: text/plain

bash-cli annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-05-19"
}
go-security — Go Security Cheatsheet

Advertised by the server during the last successful anonymous check.

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.

go-security URI
https://karandeepsingh.ca/cheatsheets/languages/go-security/

MIME type: text/plain

go-security annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-10-07"
}
python-logging — Python Logging Cheatsheet

Advertised by the server during the last successful anonymous check.

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.

python-logging URI
https://karandeepsingh.ca/cheatsheets/python/python-logging/

MIME type: text/plain

python-logging annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-08-14"
}
ansible — Ansible Cheatsheet

Advertised by the server during the last successful anonymous check.

Quick-reference Ansible guide. Inventories, ad-hoc commands, playbooks, module table, loops and conditionals, roles layout, Vault, and Jinja2 templating.

ansible URI
https://karandeepsingh.ca/cheatsheets/devops/ansible/

MIME type: text/plain

ansible annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-07-19"
}
python-security — Python Security Cheatsheet

Advertised by the server during the last successful anonymous check.

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.

python-security URI
https://karandeepsingh.ca/cheatsheets/python/python-security/

MIME type: text/plain

python-security annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-09-09"
}
kubectl-annotate-change-cause — kubectl annotate: Change-Cause and Rollout History

Advertised by the server during the last successful anonymous check.

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.

kubectl-annotate-change-cause URI
https://karandeepsingh.ca/posts/kubectl-annotate-change-cause/

MIME type: text/plain

kubectl-annotate-change-cause annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-10-19"
}
atuin-shell-history-search — Stop Pressing the Up Arrow: Searchable Shell History with Atuin

Advertised by the server during the last successful anonymous check.

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.

atuin-shell-history-search URI
https://karandeepsingh.ca/posts/atuin-shell-history-search/

MIME type: text/plain

atuin-shell-history-search annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-08-11"
}
lambda-cost-tuning-memory-graviton — Tuning AWS Lambda for Cost: The Memory Myth, Measured

Advertised by the server during the last successful anonymous check.

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.

lambda-cost-tuning-memory-graviton URI
https://karandeepsingh.ca/posts/lambda-cost-tuning-memory-graviton/

MIME type: text/plain

lambda-cost-tuning-memory-graviton annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-08-10"
}
blog-mcp-server-netlify — I Gave My Blog an MCP Server (and You Can Too)

Advertised by the server during the last successful anonymous check.

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.

blog-mcp-server-netlify URI
https://karandeepsingh.ca/posts/blog-mcp-server-netlify/

MIME type: text/plain

blog-mcp-server-netlify annotations
{
  "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)

Advertised by the server during the last successful anonymous check.

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).

livestream-phone-to-aws-ivs URI
https://karandeepsingh.ca/posts/livestream-phone-to-aws-ivs/

MIME type: text/plain

livestream-phone-to-aws-ivs annotations
{
  "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)

Advertised by the server during the last successful anonymous check.

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.

lambda-million-users-per-hour URI
https://karandeepsingh.ca/posts/lambda-million-users-per-hour/

MIME type: text/plain

lambda-million-users-per-hour annotations
{
  "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)

Advertised by the server during the last successful anonymous check.

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.

ec2-s3-files-mount-bucket-file-system URI
https://karandeepsingh.ca/posts/ec2-s3-files-mount-bucket-file-system/

MIME type: text/plain

ec2-s3-files-mount-bucket-file-system annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-08-06"
}
lambda-configuration-explained — AWS Lambda Configuration Explained: What to Care About (and Why)

Advertised by the server during the last successful anonymous check.

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.

lambda-configuration-explained URI
https://karandeepsingh.ca/posts/lambda-configuration-explained/

MIME type: text/plain

lambda-configuration-explained annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-08-05"
}
ec2-root-volumes-vs-file-systems — EC2 Storage in Plain English: Root Volumes vs File Systems

Advertised by the server during the last successful anonymous check.

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.

ec2-root-volumes-vs-file-systems URI
https://karandeepsingh.ca/posts/ec2-root-volumes-vs-file-systems/

MIME type: text/plain

ec2-root-volumes-vs-file-systems annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-30"
}
aurora-clone-copy-on-write — Cloning an Aurora PostgreSQL Cluster (Copy-on-Write)

Advertised by the server during the last successful anonymous check.

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.

aurora-clone-copy-on-write URI
https://karandeepsingh.ca/posts/aurora-clone-copy-on-write/

MIME type: text/plain

aurora-clone-copy-on-write annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-27"
}
aurora-rds-data-api-postgresql — Running SQL Over HTTPS with the RDS Data API (Aurora PostgreSQL)

Advertised by the server during the last successful anonymous check.

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.

aurora-rds-data-api-postgresql URI
https://karandeepsingh.ca/posts/aurora-rds-data-api-postgresql/

MIME type: text/plain

aurora-rds-data-api-postgresql annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-27"
}
aurora-write-forwarding-postgresql — Aurora Write Forwarding: Writing Through a Read Replica

Advertised by the server during the last successful anonymous check.

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.

aurora-write-forwarding-postgresql URI
https://karandeepsingh.ca/posts/aurora-write-forwarding-postgresql/

MIME type: text/plain

aurora-write-forwarding-postgresql annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-27"
}
aurora-add-aws-region-global-database — Adding an AWS Region to Aurora PostgreSQL (Global Database)

Advertised by the server during the last successful anonymous check.

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.

aurora-add-aws-region-global-database URI
https://karandeepsingh.ca/posts/aurora-add-aws-region-global-database/

MIME type: text/plain

aurora-add-aws-region-global-database annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-27"
}
aurora-add-reader-read-replica — Adding a Read Replica (Reader) to Aurora PostgreSQL

Advertised by the server during the last successful anonymous check.

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.

aurora-add-reader-read-replica URI
https://karandeepsingh.ca/posts/aurora-add-reader-read-replica/

MIME type: text/plain

aurora-add-reader-read-replica annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-26"
}
find-slow-queries-aurora-postgresql — Finding and Fixing Slow Queries in Aurora PostgreSQL

Advertised by the server during the last successful anonymous check.

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.

find-slow-queries-aurora-postgresql URI
https://karandeepsingh.ca/posts/find-slow-queries-aurora-postgresql/

MIME type: text/plain

find-slow-queries-aurora-postgresql annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-26"
}
valkey-cache-aside-aurora-postgresql — Valkey as a Cache in Front of Aurora PostgreSQL (Cache-Aside)

Advertised by the server during the last successful anonymous check.

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.

valkey-cache-aside-aurora-postgresql URI
https://karandeepsingh.ca/posts/valkey-cache-aside-aurora-postgresql/

MIME type: text/plain

valkey-cache-aside-aurora-postgresql annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-26"
}
aurora-postgresql-setup-guide — How to Set Up Aurora PostgreSQL (and Why Each Setting Matters)

Advertised by the server during the last successful anonymous check.

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.

aurora-postgresql-setup-guide URI
https://karandeepsingh.ca/posts/aurora-postgresql-setup-guide/

MIME type: text/plain

aurora-postgresql-setup-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-25"
}
valkey-aws-elasticache-guide — Valkey on AWS ElastiCache: A Hands-On Guide

Advertised by the server during the last successful anonymous check.

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.

valkey-aws-elasticache-guide URI
https://karandeepsingh.ca/posts/valkey-aws-elasticache-guide/

MIME type: text/plain

valkey-aws-elasticache-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-07-25"
}
jenkins-upgrade-and-migration-guide — Upgrading Jenkins: Migration Strategies for Major Version Jumps

Advertised by the server during the last successful anonymous check.

How to plan and execute Jenkins upgrades, including large multi-version jumps, safely with in-place, blue-green, and phased strategies.

jenkins-upgrade-and-migration-guide URI
https://karandeepsingh.ca/posts/jenkins-upgrade-and-migration-guide/

MIME type: text/plain

jenkins-upgrade-and-migration-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-06-20"
}
docker-compose-multi-container-guide — Docker Compose, Bake & ECR: Build and Ship Apps

Advertised by the server during the last successful anonymous check.

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.

docker-compose-multi-container-guide URI
https://karandeepsingh.ca/posts/docker-compose-multi-container-guide/

MIME type: text/plain

docker-compose-multi-container-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-06-18"
}
kubernetes-eks-setup-eksctl — Kubernetes on AWS: EKS Setup with eksctl

Advertised by the server during the last successful anonymous check.

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.

kubernetes-eks-setup-eksctl URI
https://karandeepsingh.ca/posts/kubernetes-eks-setup-eksctl/

MIME type: text/plain

kubernetes-eks-setup-eksctl annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-06-18"
}
fix-kubernetes-crashloopbackoff — Fix Kubernetes CrashLoopBackOff: Causes and Solutions

Advertised by the server during the last successful anonymous check.

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.

fix-kubernetes-crashloopbackoff URI
https://karandeepsingh.ca/posts/fix-kubernetes-crashloopbackoff/

MIME type: text/plain

fix-kubernetes-crashloopbackoff annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-06-18"
}
kubernetes-fundamentals-pods-deployments-services — Kubernetes Fundamentals: Pods, Deployments, Services

Advertised by the server during the last successful anonymous check.

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.

kubernetes-fundamentals-pods-deployments-services URI
https://karandeepsingh.ca/posts/kubernetes-fundamentals-pods-deployments-services/

MIME type: text/plain

kubernetes-fundamentals-pods-deployments-services annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-06-18"
}
kubectl-cheat-sheet — kubectl Cheat Sheet: 30+ Essential Commands

Advertised by the server during the last successful anonymous check.

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.

kubectl-cheat-sheet URI
https://karandeepsingh.ca/posts/kubectl-cheat-sheet/

MIME type: text/plain

kubectl-cheat-sheet annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-06-18"
}
sed-for-log-analysis — Sed for Log Analysis: Errors, Time Filters, Patterns

Advertised by the server during the last successful anonymous check.

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.

sed-for-log-analysis URI
https://karandeepsingh.ca/posts/sed-for-log-analysis/

MIME type: text/plain

sed-for-log-analysis annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-05-05"
}
sed-gotchas-gnu-vs-bsd — Sed Gotchas: GNU vs BSD and Safe In-Place Editing

Advertised by the server during the last successful anonymous check.

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.

sed-gotchas-gnu-vs-bsd URI
https://karandeepsingh.ca/posts/sed-gotchas-gnu-vs-bsd/

MIME type: text/plain

sed-gotchas-gnu-vs-bsd annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-05-05"
}
sed-in-ci-cd-pipelines — Sed in CI/CD: Safe Patterns for GitHub Actions and Jenkins

Advertised by the server during the last successful anonymous check.

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.

sed-in-ci-cd-pipelines URI
https://karandeepsingh.ca/posts/sed-in-ci-cd-pipelines/

MIME type: text/plain

sed-in-ci-cd-pipelines annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-05-05"
}
sed-multiline-patterns — Sed Multiline Patterns: How to Match Across Lines

Advertised by the server during the last successful anonymous check.

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).

sed-multiline-patterns URI
https://karandeepsingh.ca/posts/sed-multiline-patterns/

MIME type: text/plain

sed-multiline-patterns annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-05-05"
}
sed-vs-awk-vs-grep — Sed vs Awk vs Grep: When to Use Which (with Decision Matrix)

Advertised by the server during the last successful anonymous check.

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.

sed-vs-awk-vs-grep URI
https://karandeepsingh.ca/posts/sed-vs-awk-vs-grep/

MIME type: text/plain

sed-vs-awk-vs-grep annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-05-05"
}
what-i-got-wrong-about-kubernetes-2025 — What Teams Got Wrong About Kubernetes in 2025

Advertised by the server during the last successful anonymous check.

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.

what-i-got-wrong-about-kubernetes-2025 URI
https://karandeepsingh.ca/posts/what-i-got-wrong-about-kubernetes-2025/

MIME type: text/plain

what-i-got-wrong-about-kubernetes-2025 annotations
{
  "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

Advertised by the server during the last successful anonymous check.

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.

devops-stack-i-would-pick-2026 URI
https://karandeepsingh.ca/posts/devops-stack-i-would-pick-2026/

MIME type: text/plain

devops-stack-i-would-pick-2026 annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-05-04"
}
mastering-tmux-go-session-manager — Master tmux: From Multiplexer to a Go Session Manager

Advertised by the server during the last successful anonymous check.

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.

mastering-tmux-go-session-manager URI
https://karandeepsingh.ca/posts/mastering-tmux-go-session-manager/

MIME type: text/plain

mastering-tmux-go-session-manager annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-21"
}
log-aggregator-from-scratch-go — Log Aggregator From Scratch in Go

Advertised by the server during the last successful anonymous check.

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.

log-aggregator-from-scratch-go URI
https://karandeepsingh.ca/posts/log-aggregator-from-scratch-go/

MIME type: text/plain

log-aggregator-from-scratch-go annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-16"
}
terraform-getting-started-aws — Terraform From Scratch: Provision AWS Infrastructure

Advertised by the server during the last successful anonymous check.

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.

terraform-getting-started-aws URI
https://karandeepsingh.ca/posts/terraform-getting-started-aws/

MIME type: text/plain

terraform-getting-started-aws annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-16"
}
nginx-log-analysis-grep-to-go — Nginx Log Analysis: From grep to a Go Log Parser

Advertised by the server during the last successful anonymous check.

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.

nginx-log-analysis-grep-to-go URI
https://karandeepsingh.ca/posts/nginx-log-analysis-grep-to-go/

MIME type: text/plain

nginx-log-analysis-grep-to-go annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-15"
}
bash-scripting-meets-aws — AWS CLI Automation: From Bash Scripts to Go

Advertised by the server during the last successful anonymous check.

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.

bash-scripting-meets-aws URI
https://karandeepsingh.ca/posts/bash-scripting-meets-aws/

MIME type: text/plain

bash-scripting-meets-aws annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-15"
}
config-templating-envsubst-to-go — Config Templating: From envsubst to Go

Advertised by the server during the last successful anonymous check.

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.

config-templating-envsubst-to-go URI
https://karandeepsingh.ca/posts/config-templating-envsubst-to-go/

MIME type: text/plain

config-templating-envsubst-to-go annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-15"
}
process-management-linux-to-go — Process Management: From Linux Commands to a Go Supervisor

Advertised by the server during the last successful anonymous check.

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.

process-management-linux-to-go URI
https://karandeepsingh.ca/posts/process-management-linux-to-go/

MIME type: text/plain

process-management-linux-to-go annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-15"
}
sudo-mastery-and-best-practices — Linux Access Control: From sudo to a Go Security Scanner

Advertised by the server during the last successful anonymous check.

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.

sudo-mastery-and-best-practices URI
https://karandeepsingh.ca/posts/sudo-mastery-and-best-practices/

MIME type: text/plain

sudo-mastery-and-best-practices annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-15"
}
timezones-in-production-linux-to-go — Timezones in Production: From Linux Commands to Go

Advertised by the server during the last successful anonymous check.

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.

timezones-in-production-linux-to-go URI
https://karandeepsingh.ca/posts/timezones-in-production-linux-to-go/

MIME type: text/plain

timezones-in-production-linux-to-go annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-15"
}
mastering-cpu-cores — CPU Monitoring: From Linux Commands to a Go Dashboard

Advertised by the server during the last successful anonymous check.

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.

mastering-cpu-cores URI
https://karandeepsingh.ca/posts/mastering-cpu-cores/

MIME type: text/plain

mastering-cpu-cores annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-15"
}
weird-unix-commands — Unix Power Tools Every DevOps Engineer Should Know

Advertised by the server during the last successful anonymous check.

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.

weird-unix-commands URI
https://karandeepsingh.ca/posts/weird-unix-commands/

MIME type: text/plain

weird-unix-commands annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-15"
}
go-nginx-reverse-proxy — Go + Nginx: Deploy a Go API Behind a Reverse Proxy

Advertised by the server during the last successful anonymous check.

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.

go-nginx-reverse-proxy URI
https://karandeepsingh.ca/posts/go-nginx-reverse-proxy/

MIME type: text/plain

go-nginx-reverse-proxy annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-15"
}
containers-from-scratch-go — Containers From Scratch in Go

Advertised by the server during the last successful anonymous check.

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.

containers-from-scratch-go URI
https://karandeepsingh.ca/posts/containers-from-scratch-go/

MIME type: text/plain

containers-from-scratch-go annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-14"
}
go-sqs-message-queue — Go + SQS: Build a Message Queue Processor

Advertised by the server during the last successful anonymous check.

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.

go-sqs-message-queue URI
https://karandeepsingh.ca/posts/go-sqs-message-queue/

MIME type: text/plain

go-sqs-message-queue annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-14"
}
go-dynamodb-crud — Go + DynamoDB: Build a Simple CRUD App

Advertised by the server during the last successful anonymous check.

Build a DynamoDB CRUD app in Go step by step. Start raw, hit real pain points, and end up with clean struct-based operations.

go-dynamodb-crud URI
https://karandeepsingh.ca/posts/go-dynamodb-crud/

MIME type: text/plain

go-dynamodb-crud annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-14"
}
go-aws-s3-cli-tool — Build a Go CLI Tool for AWS S3

Advertised by the server during the last successful anonymous check.

Build a practical Go CLI tool for AWS S3. Start with listing buckets, then add uploads, downloads, and concurrent transfers step by step.

go-aws-s3-cli-tool URI
https://karandeepsingh.ca/posts/go-aws-s3-cli-tool/

MIME type: text/plain

go-aws-s3-cli-tool annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-14"
}
build-deploy-go-lambda-function — Build and Deploy a Go Lambda Function

Advertised by the server during the last successful anonymous check.

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.

build-deploy-go-lambda-function URI
https://karandeepsingh.ca/posts/build-deploy-go-lambda-function/

MIME type: text/plain

build-deploy-go-lambda-function annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-14"
}
jenkins-configuration-as-code-jcasc-guide — Jenkins Configuration as Code: The Definitive JCasC Guide

Advertised by the server during the last successful anonymous check.

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.

jenkins-configuration-as-code-jcasc-guide URI
https://karandeepsingh.ca/posts/jenkins-configuration-as-code-jcasc-guide/

MIME type: text/plain

jenkins-configuration-as-code-jcasc-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2026-02-14"
}
python-for-devops-cheatsheet — Python for DevOps: Three Cheat Cards and the Traps

Advertised by the server during the last successful anonymous check.

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.

python-for-devops-cheatsheet URI
https://karandeepsingh.ca/posts/python-for-devops-cheatsheet/

MIME type: text/plain

python-for-devops-cheatsheet annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-10-29"
}
deploy-jenkins-eks-tutorial — Deploy Jenkins on Amazon EKS: A Practical Tutorial

Advertised by the server during the last successful anonymous check.

Step-by-step tutorial for deploying Jenkins on Amazon EKS. Learn pods vs deployments and why each matters for your CI/CD setup.

deploy-jenkins-eks-tutorial URI
https://karandeepsingh.ca/posts/deploy-jenkins-eks-tutorial/

MIME type: text/plain

deploy-jenkins-eks-tutorial annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-06-24"
}
comprehensive-guide-to-jenkins-versions — Jenkins LTS vs Weekly: Which Version Should You Use?

Advertised by the server during the last successful anonymous check.

A practical guide to Jenkins version selection, covering JVM compatibility, version evolution, and agent requirements, with links to focused deep-dive guides.

comprehensive-guide-to-jenkins-versions URI
https://karandeepsingh.ca/posts/comprehensive-guide-to-jenkins-versions/

MIME type: text/plain

comprehensive-guide-to-jenkins-versions annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-03-13"
}
linux-ls-command-comprehensive-guide — Linux ls Command: History, Tricks, and Examples

Advertised by the server during the last successful anonymous check.

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.

linux-ls-command-comprehensive-guide URI
https://karandeepsingh.ca/posts/linux-ls-command-comprehensive-guide/

MIME type: text/plain

linux-ls-command-comprehensive-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-03-10"
}
jenkins-userremoteconfig — Jenkins UserRemoteConfig: Dynamic Git in Pipelines

Advertised by the server during the last successful anonymous check.

Unlock advanced Git workflows with Jenkins UserRemoteConfig. Perfect for DevOps engineers managing multi-repository pipelines.

jenkins-userremoteconfig URI
https://karandeepsingh.ca/posts/jenkins-userremoteconfig/

MIME type: text/plain

jenkins-userremoteconfig annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-02-25"
}
linux-automation-tools — Linux Automation Tools: From Cron to a Custom Go Runner

Advertised by the server during the last successful anonymous check.

Master Linux task automation with cron, make, and systemd timers. Then build a complete Go task runner with scheduling, retries, and a status dashboard.

linux-automation-tools URI
https://karandeepsingh.ca/posts/linux-automation-tools/

MIME type: text/plain

linux-automation-tools annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-02-05"
}
deployment-automation-ssh-to-go — Deployment Automation: From SSH Scripts to a Go Deploy Tool

Advertised by the server during the last successful anonymous check.

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.

deployment-automation-ssh-to-go URI
https://karandeepsingh.ca/posts/deployment-automation-ssh-to-go/

MIME type: text/plain

deployment-automation-ssh-to-go annotations
{
  "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

Advertised by the server during the last successful anonymous check.

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.

sed-command-cheat-sheet-30-essential-one-liners URI
https://karandeepsingh.ca/posts/sed-command-cheat-sheet-30-essential-one-liners/

MIME type: text/plain

sed-command-cheat-sheet-30-essential-one-liners annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2025-01-28"
}
replace-text-multiple-files-sed-guide — How to Replace Text in Multiple Files with Sed

Advertised by the server during the last successful anonymous check.

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.

replace-text-multiple-files-sed-guide URI
https://karandeepsingh.ca/posts/replace-text-multiple-files-sed-guide/

MIME type: text/plain

replace-text-multiple-files-sed-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-12-28"
}
jenkins-java-compatibility — Jenkins Java Compatibility: From Java 8 to Java 25

Advertised by the server during the last successful anonymous check.

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.

jenkins-java-compatibility URI
https://karandeepsingh.ca/posts/jenkins-java-compatibility/

MIME type: text/plain

jenkins-java-compatibility annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-10-15"
}
bash-extract-filename-from-path-guide — Filename Extraction: basename to a Production File Pipeline

Advertised by the server during the last successful anonymous check.

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).

bash-extract-filename-from-path-guide URI
https://karandeepsingh.ca/posts/bash-extract-filename-from-path-guide/

MIME type: text/plain

bash-extract-filename-from-path-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-04-30"
}
sed-json-manipulation-without-jq — Sed for JSON: Emergency Patterns When jq Is Unavailable

Advertised by the server during the last successful anonymous check.

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.

sed-json-manipulation-without-jq URI
https://karandeepsingh.ca/posts/sed-json-manipulation-without-jq/

MIME type: text/plain

sed-json-manipulation-without-jq annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-04-28"
}
mastering-nginx-logs-guide — Mastering NGINX Logs: Configuration and Analysis Guide

Advertised by the server during the last successful anonymous check.

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.

mastering-nginx-logs-guide URI
https://karandeepsingh.ca/posts/mastering-nginx-logs-guide/

MIME type: text/plain

mastering-nginx-logs-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-04-19"
}
linux-user-control-terminal-commands — Linux User Management: Commands, Groups, Permissions, and Security

Advertised by the server during the last successful anonymous check.

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.

linux-user-control-terminal-commands URI
https://karandeepsingh.ca/posts/linux-user-control-terminal-commands/

MIME type: text/plain

linux-user-control-terminal-commands annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-04-16"
}
mastering-top — Advanced Guide to Using the top Command in Linux

Advertised by the server during the last successful anonymous check.

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.

mastering-top URI
https://karandeepsingh.ca/posts/mastering-top/

MIME type: text/plain

mastering-top annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-03-26"
}
mastering-vmstat — Advanced Guide to Using the vmstat Command in Linux

Advertised by the server during the last successful anonymous check.

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.

mastering-vmstat URI
https://karandeepsingh.ca/posts/mastering-vmstat/

MIME type: text/plain

mastering-vmstat annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-03-24"
}
aws-security-features-guide — AWS Security Audit: From AWS CLI to a Go Security Scanner

Advertised by the server during the last successful anonymous check.

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.

aws-security-features-guide URI
https://karandeepsingh.ca/posts/aws-security-features-guide/

MIME type: text/plain

aws-security-features-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-03-01"
}
jenkins-security-advisories-and-cves — Jenkins Security: Advisories, CVEs, and Hardening

Advertised by the server during the last successful anonymous check.

Jenkins security evolution, the CVE-2024-23897 CLI vulnerability, and keeping plugins patched to shrink the attack surface.

jenkins-security-advisories-and-cves URI
https://karandeepsingh.ca/posts/jenkins-security-advisories-and-cves/

MIME type: text/plain

jenkins-security-advisories-and-cves annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-02-01"
}
how-to-scale-database-in-microservices — Database Scaling: From 100K to 5M Users

Advertised by the server during the last successful anonymous check.

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.

how-to-scale-database-in-microservices URI
https://karandeepsingh.ca/posts/how-to-scale-database-in-microservices/

MIME type: text/plain

how-to-scale-database-in-microservices annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2024-01-09"
}
docker-logs-to-go-collector — Docker Logs: From docker logs to a Go Log Collector

Advertised by the server during the last successful anonymous check.

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.

docker-logs-to-go-collector URI
https://karandeepsingh.ca/posts/docker-logs-to-go-collector/

MIME type: text/plain

docker-logs-to-go-collector annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-09-10"
}
advanced-bash-scripting-techniques-for-automation — Advanced Bash Scripting for Automation

Advertised by the server during the last successful anonymous check.

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.

advanced-bash-scripting-techniques-for-automation URI
https://karandeepsingh.ca/posts/advanced-bash-scripting-techniques-for-automation/

MIME type: text/plain

advanced-bash-scripting-techniques-for-automation annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
bash-code-shortening-techniques — Bash Code Shortening: Writing Concise Shell Scripts

Advertised by the server during the last successful anonymous check.

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.

bash-code-shortening-techniques URI
https://karandeepsingh.ca/posts/bash-code-shortening-techniques/

MIME type: text/plain

bash-code-shortening-techniques annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
bash-error-handling-bulletproof-scripts — Bash Error Handling: Patterns for Bulletproof Scripts

Advertised by the server during the last successful anonymous check.

Explore practical strategies to implement reliable error handling in Bash scripts, preventing silent failures and building automation you can truly trust.

bash-error-handling-bulletproof-scripts URI
https://karandeepsingh.ca/posts/bash-error-handling-bulletproof-scripts/

MIME type: text/plain

bash-error-handling-bulletproof-scripts annotations
{
  "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

Advertised by the server during the last successful anonymous check.

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.

url-shortener-from-scratch-go URI
https://karandeepsingh.ca/posts/url-shortener-from-scratch-go/

MIME type: text/plain

url-shortener-from-scratch-go annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
youtube-system-design-aws — Building a YouTube-like System with AWS Lambda and S3

Advertised by the server during the last successful anonymous check.

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.

youtube-system-design-aws URI
https://karandeepsingh.ca/posts/youtube-system-design-aws/

MIME type: text/plain

youtube-system-design-aws annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
jenkins-devops-best-practices — CI Pipeline Basics: From Shell Scripts to a Go Build Runner

Advertised by the server during the last successful anonymous check.

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.

jenkins-devops-best-practices URI
https://karandeepsingh.ca/posts/jenkins-devops-best-practices/

MIME type: text/plain

jenkins-devops-best-practices annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
mastering-bash-scripting — Mastering Bash: From echo to Production Deployment Script

Advertised by the server during the last successful anonymous check.

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.

mastering-bash-scripting URI
https://karandeepsingh.ca/posts/mastering-bash-scripting/

MIME type: text/plain

mastering-bash-scripting annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
mastering-sed-update-remove-configuration-files — Mastering sed for YAML, JSON, TOML Config Files

Advertised by the server during the last successful anonymous check.

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.

mastering-sed-update-remove-configuration-files URI
https://karandeepsingh.ca/posts/mastering-sed-update-remove-configuration-files/

MIME type: text/plain

mastering-sed-update-remove-configuration-files annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
self-healing-bash-functions — Self-Healing Bash: Functions That Recover From Failures

Advertised by the server during the last successful anonymous check.

Learn how to implement self-healing mechanisms in your Bash scripts with practical examples that handle common failures and recover automatically.

self-healing-bash-functions URI
https://karandeepsingh.ca/posts/self-healing-bash-functions/

MIME type: text/plain

self-healing-bash-functions annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
service-health-checks-curl-to-go — Service Health Checks: From curl to a Go Health Monitor

Advertised by the server during the last successful anonymous check.

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.

service-health-checks-curl-to-go URI
https://karandeepsingh.ca/posts/service-health-checks-curl-to-go/

MIME type: text/plain

service-health-checks-curl-to-go annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
aws-s3-hosting-guide — The Complete Guide to AWS S3 Static Website Hosting

Advertised by the server during the last successful anonymous check.

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.

aws-s3-hosting-guide URI
https://karandeepsingh.ca/posts/aws-s3-hosting-guide/

MIME type: text/plain

aws-s3-hosting-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
youtube-system-sqs-architecture — Why YouTube-Scale Systems Need SQS: Architecture Notes

Advertised by the server during the last successful anonymous check.

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.

youtube-system-sqs-architecture URI
https://karandeepsingh.ca/posts/youtube-system-sqs-architecture/

MIME type: text/plain

youtube-system-sqs-architecture annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-08-28"
}
advanced-string-operations-in-bash-building-custom-functions — Advanced Bash String Operations

Advertised by the server during the last successful anonymous check.

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.

advanced-string-operations-in-bash-building-custom-functions URI
https://karandeepsingh.ca/posts/advanced-string-operations-in-bash-building-custom-functions/

MIME type: text/plain

advanced-string-operations-in-bash-building-custom-functions annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-02-20"
}
bash-string-search-split-and-count — Bash String Functions: Search, Split, Count, Extract

Advertised by the server during the last successful anonymous check.

Bash string functions for length validation, case conversion, substitution, truncation, counting, splitting, capitalization, ROT13, and field extraction (index, substring, join).

bash-string-search-split-and-count URI
https://karandeepsingh.ca/posts/bash-string-search-split-and-count/

MIME type: text/plain

bash-string-search-split-and-count annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-02-20"
}
bash-string-trimming-and-case — Bash String Functions: Trimming, Case, and Reversal

Advertised by the server during the last successful anonymous check.

Bash string functions for stripping leading and trailing whitespace (ltrim, rtrim, trim) and reversing strings, with performance comparisons against sed and awk.

bash-string-trimming-and-case URI
https://karandeepsingh.ca/posts/bash-string-trimming-and-case/

MIME type: text/plain

bash-string-trimming-and-case annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-02-20"
}
bash-string-validation-and-generation — Bash String Validation, Generation & a Library

Advertised by the server during the last successful anonymous check.

Bash functions for random string generation, input sanitization, CSV parsing, password-strength checks, and slug generation, plus a complete production string library to source.

bash-string-validation-and-generation URI
https://karandeepsingh.ca/posts/bash-string-validation-and-generation/

MIME type: text/plain

bash-string-validation-and-generation annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-02-20"
}
boto3-and-aws-lambda-a-match-made-in-serverless-heaven — Boto3 + AWS Lambda: A Production Serverless Pipeline

Advertised by the server during the last successful anonymous check.

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.

boto3-and-aws-lambda-a-match-made-in-serverless-heaven URI
https://karandeepsingh.ca/posts/boto3-and-aws-lambda-a-match-made-in-serverless-heaven/

MIME type: text/plain

boto3-and-aws-lambda-a-match-made-in-serverless-heaven annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2023-01-09"
}
create-custom-ami-of-jenkins-devops — Create Custom AMI of Jenkins | DevOps

Advertised by the server during the last successful anonymous check.

A comprehensive guide to roll out your own custom Jenkins AMI, perfect for those who want a hassle-free, tailor-made Continuous Integration environment.

create-custom-ami-of-jenkins-devops URI
https://karandeepsingh.ca/posts/create-custom-ami-of-jenkins-devops/

MIME type: text/plain

create-custom-ami-of-jenkins-devops annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2022-11-13"
}
git-hooks-to-go-webhook-server — Git Hooks: From Shell Scripts to a Go Webhook Server

Advertised by the server during the last successful anonymous check.

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.

git-hooks-to-go-webhook-server URI
https://karandeepsingh.ca/posts/git-hooks-to-go-webhook-server/

MIME type: text/plain

git-hooks-to-go-webhook-server annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2022-11-12"
}
remote-server-config-ssh-to-go — Remote Server Config: From SSH Loops to a Go Config Tool

Advertised by the server during the last successful anonymous check.

Master remote server configuration with SSH and Go. From bash loops to a complete config tool with parallel execution, idempotent operations, and service verification.

remote-server-config-ssh-to-go URI
https://karandeepsingh.ca/posts/remote-server-config-ssh-to-go/

MIME type: text/plain

remote-server-config-ssh-to-go annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2022-11-12"
}
ec2-image-builder-components — Build Image with EC2 Image Builder Components

Advertised by the server during the last successful anonymous check.

Build custom AMIs using EC2 Image Builder with Amazon Linux 2023 and NGINX.

ec2-image-builder-components URI
https://karandeepsingh.ca/posts/ec2-image-builder-components/

MIME type: text/plain

ec2-image-builder-components annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2022-04-02"
}
create-a-new-image-recipe — EC2 Image Builder: Create a New Image Recipe

Advertised by the server during the last successful anonymous check.

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 …

create-a-new-image-recipe URI
https://karandeepsingh.ca/posts/create-a-new-image-recipe/

MIME type: text/plain

create-a-new-image-recipe annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2022-04-02"
}
create-freeform-feature-flag-from-s3-object — Create Freeform Feature Flag from S3 Object

Advertised by the server during the last successful anonymous check.

Step-by-step guide to creating freeform feature flags using AWS AppConfig and S3 objects. Manage application configurations and toggle features without redeploying.

create-freeform-feature-flag-from-s3-object URI
https://karandeepsingh.ca/posts/create-freeform-feature-flag-from-s3-object/

MIME type: text/plain

create-freeform-feature-flag-from-s3-object annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2022-03-20"
}
deploy-hugo-s3-codebuild — Deploy a Hugo Site to S3 with CodeBuild

Advertised by the server during the last successful anonymous check.

Learn how to deploy a Hugo static site to S3 using AWS CodeBuild with a custom GoLang Docker image and a buildspec.yaml pipeline.

deploy-hugo-s3-codebuild URI
https://karandeepsingh.ca/posts/deploy-hugo-s3-codebuild/

MIME type: text/plain

deploy-hugo-s3-codebuild annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2021-09-23"
}
aws-codebuild-advanced-buildspec-guide — Advanced buildspec.yml: Python, Go, ECR Push, EKS Deploy

Advertised by the server during the last successful anonymous check.

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.

aws-codebuild-advanced-buildspec-guide URI
https://karandeepsingh.ca/posts/aws-codebuild-advanced-buildspec-guide/

MIME type: text/plain

aws-codebuild-advanced-buildspec-guide annotations
{
  "audience": [
    "user",
    "assistant"
  ],
  "lastModified": "2021-09-23"
}
post — Blog post

Advertised by the server during the last successful anonymous check.

A published article by its slug, e.g. lambda-configuration-explained.

post URI template
https://karandeepsingh.ca/posts/{slug}/

MIME type: text/plain

cheatsheet — Cheatsheet

Advertised by the server during the last successful anonymous check.

A quick-reference cheatsheet, e.g. containers/docker or cost/low-cost-cloud-stack.

cheatsheet URI template
https://karandeepsingh.ca/cheatsheets/{category}/{slug}/

MIME type: text/plain

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.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http karandeep-singh-blog-mcp https://karandeepsingh.ca/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add karandeep-singh-blog-mcp --url https://karandeepsingh.ca/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable karandeep-singh-blog-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "karandeep-singh-blog-mcp": {
      "url": "https://karandeepsingh.ca/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "karandeep-singh-blog-mcp": {
      "type": "streamableHttp",
      "url": "https://karandeepsingh.ca/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start karandeep-singh-blog-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "karandeep-singh-blog-mcp": {
      "type": "http",
      "url": "https://karandeepsingh.ca/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http karandeep-singh-blog-mcp https://karandeepsingh.ca/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://karandeepsingh.ca/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.