56,966 blogs · [ { "id": "01a087a9-be39-70a1-b3e0-e407f3a9864e", "title": "Jailbreaking a Kindle to Read My Bookmarks", "url": "https://mrkaran.dev/posts/karakeep-kindle/", "published_at": "2026-08-09T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f4a5867f", "title": "Building an LLM-Assisted Incident Investigation Tool", "url": "https://mrkaran.dev/posts/pi-sre-mode/", "published_at": "2026-03-12T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f561efc2", "title": "A Web Terminal for My Homelab with ttyd + tmux", "url": "https://mrkaran.dev/posts/web-terminal-homelab/", "published_at": "2026-03-05T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f587772f", "title": "Setting Up LiteLLM with AWS Bedrock", "url": "https://mrkaran.dev/posts/litellm-bedrock-setup/", "published_at": "2026-02-16T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f5fff2a5", "title": "Rewriting Gullak: SQLite -> .ledger files (and WhatsApp)", "url": "https://mrkaran.dev/posts/gullak-ledger/", "published_at": "2026-02-02T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f613cfba", "title": "CLIs are the New AI Interfaces", "url": "https://mrkaran.dev/posts/plain-text-future/", "published_at": "2026-01-31T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f6eb1a6e", "title": "Logchef v1.0: The Journey to a Real Log Viewer", "url": "https://mrkaran.dev/posts/logchef-v1/", "published_at": "2025-12-22T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f73de2c5", "title": "Fixing a CIBIL Score Disaster with AI", "url": "https://mrkaran.dev/posts/fixing-cibil-with-ai/", "published_at": "2025-12-04T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f81cd49e", "title": "AI and Home-Cooked Software", "url": "https://mrkaran.dev/posts/ai-home-cooked-software/", "published_at": "2025-10-05T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f8cc4828", "title": "State of My Homelab 2025", "url": "https://mrkaran.dev/posts/state-homelab-2025/", "published_at": "2025-10-04T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f95250be", "title": "TIL: WireGuard's Misleading \"No Route to Host\" Error", "url": "https://mrkaran.dev/posts/wireguard-route-fix/", "published_at": "2025-07-30T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407f961f97e", "title": "Announcing Logchef", "url": "https://mrkaran.dev/posts/announcing-logchef/", "published_at": "2025-04-27T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fa55cad1", "title": "Trying out NixOS", "url": "https://mrkaran.dev/posts/trying-nixos/", "published_at": "2025-03-23T04:45:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fa560f44", "title": "Automating Badminton Game Alerts", "url": "https://mrkaran.dev/posts/playo-badminton/", "published_at": "2025-03-03T18:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fabf15a4", "title": "Cleaning up Notes with LLM", "url": "https://mrkaran.dev/posts/cleanup-obsidian/", "published_at": "2025-01-03T04:45:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fad66c21", "title": "2024: A Year In Review", "url": "https://mrkaran.dev/posts/2024/", "published_at": "2024-12-23T06:30:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fb77e57f", "title": "How I use LLMs", "url": "https://mrkaran.dev/posts/using-llm/", "published_at": "2024-10-30T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fc447f7f", "title": "Self Hosting Outline Wiki", "url": "https://mrkaran.dev/posts/setting-outline/", "published_at": "2024-09-20T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fcc0acca", "title": "Building an expense tracker app", "url": "https://mrkaran.dev/posts/gullak/", "published_at": "2024-06-14T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fcfe3ff5", "title": "A Random Act of Kindness", "url": "https://mrkaran.dev/posts/random-kind-stranger/", "published_at": "2024-04-21T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fdba9c2e", "title": "Travelling with Tailscale", "url": "https://mrkaran.dev/posts/travel-tailscale/", "published_at": "2024-03-27T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fddf5ff0", "title": "One Billion Row Challenge in Go", "url": "https://mrkaran.dev/posts/1brc/", "published_at": "2024-01-10T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fe50475e", "title": "Making sad servers happy", "url": "https://mrkaran.dev/posts/sad-servers/", "published_at": "2023-11-06T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407fe97d84b", "title": "Nomad can do everything that K8s can", "url": "https://mrkaran.dev/posts/nomad-k8s-showdown/", "published_at": "2023-07-23T05:34:47+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407ff57fdbe", "title": "Storing AWS Pinpoint Logs", "url": "https://mrkaran.dev/posts/storing-aws-pinpoint-logs/", "published_at": "2023-07-21T05:24:06+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407ff58d59d", "title": "Bridge Networking in Nomad", "url": "https://mrkaran.dev/posts/bridge-network-in-nomad/", "published_at": "2023-07-17T05:45:04+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e407ff8f993a", "title": "Analyzing credit card transactions with GPT and Python", "url": "https://mrkaran.dev/posts/analyzing-credit-card-transactions/", "published_at": "2023-04-30T07:08:02+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40800641bba", "title": "The curious case of missing and duplicate logs", "url": "https://mrkaran.dev/posts/missing-duplicate-logs/", "published_at": "2023-02-16T08:27:13+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40800f7cd55", "title": "Structured logging in Go with slog", "url": "https://mrkaran.dev/posts/structured-logging-in-go-with-slog/", "published_at": "2023-02-15T07:29:53+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40801d03e80", "title": "Building a CoreDNS plugin", "url": "https://mrkaran.dev/posts/coredns-nomad/", "published_at": "2023-01-04T18:30:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080268b465", "title": "Writing a disk-based key-value store in Golang", "url": "https://mrkaran.dev/posts/barreldb/", "published_at": "2022-12-17T18:30:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080298a2f2", "title": "Logging on Nomad with Vector", "url": "https://mrkaran.dev/posts/nomad-logging/", "published_at": "2022-09-03T18:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408033114da", "title": "Don't use which", "url": "https://mrkaran.dev/posts/stop-which/", "published_at": "2022-08-07T18:30:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40803df9af9", "title": "Attending IndiaFOSS 2022", "url": "https://mrkaran.dev/posts/indiafoss-2022/", "published_at": "2022-08-06T18:30:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40804834833", "title": "Debugging DNS Issues in Nomad", "url": "https://mrkaran.dev/posts/dns-nomad/", "published_at": "2022-07-13T18:30:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40804a2ab8d", "title": "Understanding Networking in Nomad", "url": "https://mrkaran.dev/posts/nomad-networking-explained/", "published_at": "2022-05-13T18:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408057f633f", "title": "How I expose services while self hosting", "url": "https://mrkaran.dev/posts/exposing-services/", "published_at": "2022-02-10T00:00:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40806611400", "title": "Using ClickHouse Keeper for Replication", "url": "https://mrkaran.dev/posts/clickhouse-replication/", "published_at": "2021-12-17T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408075fde5f", "title": "Breaking Software and Getting Older", "url": "https://mrkaran.dev/posts/breaking-software/", "published_at": "2021-12-09T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408079fa4be", "title": "Debugging issues with Packer and Ansible in Docker", "url": "https://mrkaran.dev/posts/debugging-packer-ci/", "published_at": "2021-11-15T18:30:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408082b2e3b", "title": "Load testing with K6", "url": "https://mrkaran.dev/posts/load-testing-k6/", "published_at": "2021-10-28T18:30:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40808305023", "title": "Analyzing CoreDNS logs with Clickhouse and Vector", "url": "https://mrkaran.dev/posts/coredns-vector-clickhouse/", "published_at": "2021-06-04T18:30:00+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080882ccff", "title": "How I take Notes", "url": "https://mrkaran.dev/posts/how-i-take-notes/", "published_at": "2021-04-14T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40808d403e3", "title": "Running Nomad for home server", "url": "https://mrkaran.dev/posts/home-server-nomad/", "published_at": "2021-02-14T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080988f754", "title": "Setup Gitlab Runner with AWS ECR", "url": "https://mrkaran.dev/posts/gitlab-runner-ecr/", "published_at": "2021-01-29T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40809a220c5", "title": "Designing a simple Job Queue in Golang", "url": "https://mrkaran.dev/posts/job-queue-golang/", "published_at": "2020-12-01T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080a4ef03f", "title": "Analysis Paralysis - CrashLoopBackoff", "url": "https://mrkaran.dev/posts/analysis-paralysis/", "published_at": "2020-11-27T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080af01252", "title": "Migrating my blog to Zola", "url": "https://mrkaran.dev/posts/migrating-to-zola/", "published_at": "2020-11-08T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080b5acd08", "title": "Import existing Route53 records in Terraform", "url": "https://mrkaran.dev/posts/terraform-route53-import/", "published_at": "2020-10-18T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080be7b167", "title": "Setting up a RIPE Atlas Probe", "url": "https://mrkaran.dev/posts/ripe-atlas-probe-setup/", "published_at": "2020-10-03T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080c5e3a8e", "title": "Monitoring my home network", "url": "https://mrkaran.dev/posts/isp-monitoring/", "published_at": "2020-09-18T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080cecbf3e", "title": "Using Tailscale for home server", "url": "https://mrkaran.dev/posts/home-server-updates/", "published_at": "2020-04-23T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080d67d613", "title": "DNS Lookups in Kubernetes", "url": "https://mrkaran.dev/posts/ndots-kubernetes/", "published_at": "2020-02-02T05:27:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080da4661f", "title": "Resize PVC in Kubernetes", "url": "https://mrkaran.dev/posts/resize-pvc-k8s/", "published_at": "2020-01-14T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080e7ca08b", "title": "sshuttle - A better ssh tunnel", "url": "https://mrkaran.dev/posts/using-sshuttle/", "published_at": "2020-01-12T04:27:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080f6efa5b", "title": "Use netcat for port scanning", "url": "https://mrkaran.dev/posts/netcat-port/", "published_at": "2020-01-11T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080f8848e9", "title": "kubectl wait", "url": "https://mrkaran.dev/posts/kubectl-wait/", "published_at": "2020-01-01T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080faaff96", "title": "Introducing kubekutr", "url": "https://mrkaran.dev/posts/introducing-kubekutr/", "published_at": "2019-12-30T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4080fdb23e3", "title": "A quick primer on dig", "url": "https://mrkaran.dev/posts/dig-overview/", "published_at": "2019-11-11T05:27:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408106d6550", "title": "GitOps approach to Continuous Delivery for Kubernetes", "url": "https://mrkaran.dev/posts/gitops-kubernetes/", "published_at": "2019-11-11T05:27:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408108bbb5f", "title": "Intro to RBAC in EKS", "url": "https://mrkaran.dev/posts/intro-rbac-kubernetes/", "published_at": "2019-11-01T12:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40810f535b9", "title": "Kubernetes cluster on RPi", "url": "https://mrkaran.dev/posts/home-server-setup/", "published_at": "2019-09-22T02:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40811d07bb1", "title": "My Personal Networking Setup", "url": "https://mrkaran.dev/posts/personal-networking-setup/", "published_at": "2019-06-29T12:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408122b7d7a", "title": "Common Docker Mistakes - Episode 1", "url": "https://mrkaran.dev/posts/docker-mistakes-1/", "published_at": "2019-04-15T05:27:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4081312ea69", "title": "Setting up Kong API Gateway - Part 2/2", "url": "https://mrkaran.dev/posts/setting-up-kong-part-2/", "published_at": "2019-03-23T06:27:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40813724f52", "title": "Setting up Kong API Gateway - Part 1/2", "url": "https://mrkaran.dev/posts/setting-up-kong-part-1/", "published_at": "2019-03-23T05:27:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408143b6f8d", "title": "Adding Prometheus configuration to your CI/CD workflow", "url": "https://mrkaran.dev/posts/prometheus-ci/", "published_at": "2019-03-17T05:27:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40814c90ccb", "title": "Makefile for Golang projects", "url": "https://mrkaran.dev/posts/makefiles-intro/", "published_at": "2018-10-11T12:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4081585f811", "title": "Bi-Weekly Music Post Part 4", "url": "https://mrkaran.dev/posts/biweekly-music-part-4/", "published_at": "2018-07-28T15:40:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e4081653915d", "title": "Bi-Weekly Music Post Part 3", "url": "https://mrkaran.dev/posts/biweekly-music-part-3/", "published_at": "2018-06-28T16:00:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408171f3e21", "title": "Bi-Weekly Music Post Part 2", "url": "https://mrkaran.dev/posts/biweekly-music-part-2/", "published_at": "2018-06-14T07:00:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e40817f2e2f0", "title": "Receiving notifications from Supervisor", "url": "https://mrkaran.dev/posts/supervisor-notifications/", "published_at": "2018-06-03T05:27:55+00:00" }, { "id": "01a087a9-be39-70a1-b3e0-e408185089ac", "title": "Bi-Weekly Music Post Part 1", "url": "https://mrkaran.dev/posts/biweekly-music-part-1/", "published_at": "2018-05-28T15:00:55+00:00" } ] posts Claim your blog
Back to mr-karan
Blog · corpus.blog/blogs/mrkaran.dev/posts

mr-karan

mrkaran.dev

2026

2025

2024

2023

2022

2021

2020

2019

2018