{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "krowdev",
  "home_page_url": "https://krowdev.com/",
  "feed_url": "https://krowdev.com/feed.json",
  "description": "Dev notes, Astro tutorials, and agentic coding patterns.",
  "language": "en-US",
  "icon": "https://krowdev.com/apple-touch-icon.png",
  "favicon": "https://krowdev.com/favicon.svg",
  "authors": [
    {
      "name": "krow",
      "url": "https://krowdev.com/about/"
    }
  ],
  "items": [
    {
      "id": "https://krowdev.com/snippet/ja4-fingerprint-t13d1516h2/",
      "url": "https://krowdev.com/snippet/ja4-fingerprint-t13d1516h2/",
      "title": "JA4 Fingerprint t13d1516h2 — TLS Prefix Meaning",
      "summary": "JA4 fingerprint t13d1516h2 explained: TLS 1.3, SNI, 15 ciphers, 16 extensions, HTTP/2 ALPN, and why Chrome-like clients share it.",
      "date_published": "2026-05-17T00:00:00.000Z",
      "date_modified": "2026-05-17T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "security",
        "networking",
        "fingerprinting",
        "ja4",
        "tls"
      ],
      "_krowdev": {
        "kind": "snippet",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/snippet/ja4-fingerprint-t13d1516h2.md"
      }
    },
    {
      "id": "https://krowdev.com/snippet/massdns-rate-limit-flags/",
      "url": "https://krowdev.com/snippet/massdns-rate-limit-flags/",
      "title": "massdns Rate Limit Flags: -q, --max-qps, --max-queries",
      "summary": "What --max-qps, -q, --max-queries actually do in massdns — the queries-per-second flag, in-flight slot limit, and how to pick values that don't melt your resolver.",
      "date_published": "2026-05-10T00:00:00.000Z",
      "date_modified": "2026-05-10T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "dns",
        "networking",
        "reference",
        "rate-limiting"
      ],
      "_krowdev": {
        "kind": "snippet",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/snippet/massdns-rate-limit-flags.md"
      }
    },
    {
      "id": "https://krowdev.com/snippet/bare-selectors-vs-library-html/",
      "url": "https://krowdev.com/snippet/bare-selectors-vs-library-html/",
      "title": "Bare Element Selectors vs Library HTML",
      "summary": "How bare tag selectors in a global stylesheet collide with third-party library HTML — the box-model stacking trap and a specificity ladder for fixes.",
      "date_published": "2026-04-18T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "css",
        "astro",
        "patterns"
      ],
      "_krowdev": {
        "kind": "snippet",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/snippet/bare-selectors-vs-library-html.md"
      }
    },
    {
      "id": "https://krowdev.com/snippet/css-collision-visualized/",
      "url": "https://krowdev.com/snippet/css-collision-visualized/",
      "title": "CSS Collision Visualized",
      "summary": "Interactive demo of bare element selectors colliding with library HTML — three defects from one rule, shown against common library producers.",
      "date_published": "2026-04-18T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "css",
        "astro",
        "patterns"
      ],
      "_krowdev": {
        "kind": "snippet",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/snippet/css-collision-visualized.md"
      }
    },
    {
      "id": "https://krowdev.com/snippet/pipeline-stage-communication/",
      "url": "https://krowdev.com/snippet/pipeline-stage-communication/",
      "title": "Pipeline Stage Communication",
      "summary": "Patterns for connecting independent pipeline stages via message queues — decoupled producers and consumers with batch collection and backpressure.",
      "date_published": "2026-04-07T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "architecture",
        "patterns"
      ],
      "_krowdev": {
        "kind": "snippet",
        "origin": "ai-drafted",
        "maturity": "seedling",
        "markdown_url": "https://krowdev.com/snippet/pipeline-stage-communication.md"
      }
    },
    {
      "id": "https://krowdev.com/snippet/worker-pool-isolation/",
      "url": "https://krowdev.com/snippet/worker-pool-isolation/",
      "title": "Worker Pool Isolation Pattern",
      "summary": "Separate worker pools per task type so a slow or failing dependency can't starve unrelated work — the bulkhead pattern applied to concurrent processing.",
      "date_published": "2026-04-07T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "architecture",
        "concurrency"
      ],
      "_krowdev": {
        "kind": "snippet",
        "origin": "ai-drafted",
        "maturity": "seedling",
        "markdown_url": "https://krowdev.com/snippet/worker-pool-isolation.md"
      }
    },
    {
      "id": "https://krowdev.com/note/domain-registration-icann-to-browser/",
      "url": "https://krowdev.com/note/domain-registration-icann-to-browser/",
      "title": "Domain Registration: From ICANN to Your Browser",
      "summary": "How domains move from ICANN through registries and registrars — the three-tier model, EPP, lifecycle states, and what happens when a domain drops.",
      "date_published": "2026-03-29T00:00:00.000Z",
      "date_modified": "2026-03-29T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "dns",
        "networking",
        "fundamentals"
      ],
      "_krowdev": {
        "kind": "note",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/note/domain-registration-icann-to-browser.md"
      }
    },
    {
      "id": "https://krowdev.com/article/go-dns-scanner-4000qps/",
      "url": "https://krowdev.com/article/go-dns-scanner-4000qps/",
      "title": "Building a High-Throughput DNS Scanner in Go",
      "summary": "From 160 qps to 4000+ by moving the hot path into Go — eliminating shared state, per-goroutine connections, and lessons from massdns and zdns.",
      "date_published": "2026-03-29T00:00:00.000Z",
      "date_modified": "2026-03-29T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "go",
        "dns",
        "architecture",
        "performance"
      ],
      "_krowdev": {
        "kind": "article",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/article/go-dns-scanner-4000qps.md"
      }
    },
    {
      "id": "https://krowdev.com/note/multi-agent-coordination-without-llm/",
      "url": "https://krowdev.com/note/multi-agent-coordination-without-llm/",
      "title": "Multi-Agent Coordination Without an LLM",
      "summary": "A deterministic coordinator for parallel AI agents — goals, budgets, feedback loops, and redirect signals without LLM judgment in the control plane.",
      "date_published": "2026-03-29T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "agentic-coding",
        "architecture"
      ],
      "_krowdev": {
        "kind": "note",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/note/multi-agent-coordination-without-llm.md"
      }
    },
    {
      "id": "https://krowdev.com/note/tls-fingerprinting-curl-cffi/",
      "url": "https://krowdev.com/note/tls-fingerprinting-curl-cffi/",
      "title": "TLS Fingerprinting with curl_cffi",
      "summary": "How curl_cffi impersonates browser TLS and HTTP/2 fingerprints in Python — what it handles automatically and the one header you still need to set.",
      "date_published": "2026-03-29T00:00:00.000Z",
      "date_modified": "2026-05-17T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "python",
        "security",
        "fingerprinting"
      ],
      "_krowdev": {
        "kind": "note",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/note/tls-fingerprinting-curl-cffi.md"
      }
    },
    {
      "id": "https://krowdev.com/note/aimd-rate-limiting/",
      "url": "https://krowdev.com/note/aimd-rate-limiting/",
      "title": "AIMD Rate Limiting for API Clients",
      "summary": "TCP congestion control applied to API rate limiting — additive increase on success, multiplicative decrease on errors. Finds the limit automatically.",
      "date_published": "2026-03-28T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "networking",
        "rate-limiting",
        "algorithms"
      ],
      "_krowdev": {
        "kind": "note",
        "origin": "ai-assisted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/note/aimd-rate-limiting.md"
      }
    },
    {
      "id": "https://krowdev.com/article/bot-detection-2026/",
      "url": "https://krowdev.com/article/bot-detection-2026/",
      "title": "JA4 Fingerprint t13d1516h2 — TLS Bot Detection in 2026",
      "summary": "JA4 fingerprint t13d1516h2 explained: TLS 1.3, HTTP/2 ALPN, Chrome/Safari variants, and how CDNs use JA4 for bot detection.",
      "date_published": "2026-03-28T00:00:00.000Z",
      "date_modified": "2026-05-17T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "security",
        "networking",
        "fingerprinting",
        "anti-detection",
        "ja4",
        "tls"
      ],
      "_krowdev": {
        "kind": "article",
        "origin": "ai-drafted",
        "maturity": "evergreen",
        "markdown_url": "https://krowdev.com/article/bot-detection-2026.md"
      }
    },
    {
      "id": "https://krowdev.com/guide/dns-resolution-full-picture/",
      "url": "https://krowdev.com/guide/dns-resolution-full-picture/",
      "title": "DNS Resolution: The Full Picture",
      "summary": "How DNS resolution works — root servers, TLD nameservers, record types, response codes, zone files, and why queries are nearly invisible.",
      "date_published": "2026-03-28T00:00:00.000Z",
      "date_modified": "2026-03-28T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "dns",
        "networking",
        "fundamentals"
      ],
      "_krowdev": {
        "kind": "guide",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/guide/dns-resolution-full-picture.md"
      }
    },
    {
      "id": "https://krowdev.com/article/parallel-ai-research-pipelines/",
      "url": "https://krowdev.com/article/parallel-ai-research-pipelines/",
      "title": "Parallel AI Research Pipelines",
      "summary": "Three systems for orchestrating parallel AI agents — JSONL work items, declarative workspaces, and phased research pipelines.",
      "date_published": "2026-03-28T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "agentic-coding",
        "patterns"
      ],
      "_krowdev": {
        "kind": "article",
        "origin": "ai-assisted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/article/parallel-ai-research-pipelines.md"
      }
    },
    {
      "id": "https://krowdev.com/note/whois-dead-long-live-rdap/",
      "url": "https://krowdev.com/note/whois-dead-long-live-rdap/",
      "title": "WHOIS Is Dead, Long Live RDAP",
      "summary": "ICANN sunsetted WHOIS in January 2025. RDAP replaced it — structured JSON over HTTPS instead of plaintext over TCP. Here's what changed and why it matters.",
      "date_published": "2026-03-28T00:00:00.000Z",
      "date_modified": "2026-03-28T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "dns",
        "networking"
      ],
      "_krowdev": {
        "kind": "note",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/note/whois-dead-long-live-rdap.md"
      }
    },
    {
      "id": "https://krowdev.com/guide/claude-md-patterns/",
      "url": "https://krowdev.com/guide/claude-md-patterns/",
      "title": "Writing an Effective CLAUDE.md",
      "summary": "Patterns for project instruction files that actually change how AI agents behave — boundaries, conventions, and the rules that matter.",
      "date_published": "2026-03-21T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "agentic-coding",
        "patterns"
      ],
      "_krowdev": {
        "kind": "guide",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/guide/claude-md-patterns.md"
      }
    },
    {
      "id": "https://krowdev.com/guide/reviewing-ai-generated-code/",
      "url": "https://krowdev.com/guide/reviewing-ai-generated-code/",
      "title": "Reviewing AI-Generated Code",
      "summary": "A checklist and mental model for reviewing code you didn't write — what to look for when your coding agent hands back a diff.",
      "date_published": "2026-03-21T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "agentic-coding",
        "patterns"
      ],
      "_krowdev": {
        "kind": "guide",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/guide/reviewing-ai-generated-code.md"
      }
    },
    {
      "id": "https://krowdev.com/article/building-krowdev-with-agents/",
      "url": "https://krowdev.com/article/building-krowdev-with-agents/",
      "title": "What I Learned Building krowdev with AI Agents",
      "summary": "Honest retrospective on building a developer knowledge base entirely with AI coding agents — what worked, what didn't, and what I'd do differently.",
      "date_published": "2026-03-20T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "agentic-coding",
        "meta"
      ],
      "_krowdev": {
        "kind": "article",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/article/building-krowdev-with-agents.md"
      }
    },
    {
      "id": "https://krowdev.com/snippet/git-commands-i-use/",
      "url": "https://krowdev.com/snippet/git-commands-i-use/",
      "title": "Git Commands I Actually Use",
      "summary": "The 20% of git that covers 95% of daily work — no theory, just commands.",
      "date_published": "2026-03-20T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "git",
        "reference"
      ],
      "_krowdev": {
        "kind": "snippet",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/snippet/git-commands-i-use.md"
      }
    },
    {
      "id": "https://krowdev.com/snippet/http-status-codes/",
      "url": "https://krowdev.com/snippet/http-status-codes/",
      "title": "HTTP Status Codes That Actually Matter",
      "summary": "The 15 HTTP status codes you'll actually encounter in web development, with one-sentence real-world explanations.",
      "date_published": "2026-03-20T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "networking",
        "reference"
      ],
      "_krowdev": {
        "kind": "snippet",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/snippet/http-status-codes.md"
      }
    },
    {
      "id": "https://krowdev.com/snippet/interactive-features-showcase/",
      "url": "https://krowdev.com/snippet/interactive-features-showcase/",
      "title": "Interactive Features Showcase",
      "summary": "All the interactive components, code features, and eye candy available in krowdev articles.",
      "date_published": "2026-03-17T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "astro",
        "reference"
      ],
      "_krowdev": {
        "kind": "snippet",
        "origin": "ai-assisted",
        "maturity": "evergreen",
        "markdown_url": "https://krowdev.com/snippet/interactive-features-showcase.md"
      }
    },
    {
      "id": "https://krowdev.com/guide/agentic-coding-getting-started/",
      "url": "https://krowdev.com/guide/agentic-coding-getting-started/",
      "title": "Getting Started with Agentic Coding",
      "summary": "What agentic coding is, why it matters, and how to start using AI coding agents effectively.",
      "date_published": "2026-03-15T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "agentic-coding",
        "fundamentals"
      ],
      "_krowdev": {
        "kind": "guide",
        "origin": "ai-drafted",
        "maturity": "budding",
        "markdown_url": "https://krowdev.com/guide/agentic-coding-getting-started.md"
      }
    },
    {
      "id": "https://krowdev.com/guide/astro-mental-model/",
      "url": "https://krowdev.com/guide/astro-mental-model/",
      "title": "The Mental Model",
      "summary": "What Astro actually is — a compiler, not a server. The single concept that makes everything else click.",
      "date_published": "2026-03-15T00:00:00.000Z",
      "date_modified": "2026-04-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Agent, directed by krow",
          "url": "https://krowdev.com/about/"
        }
      ],
      "tags": [
        "astro",
        "fundamentals"
      ],
      "_krowdev": {
        "kind": "guide",
        "origin": "ai-drafted",
        "maturity": "evergreen",
        "markdown_url": "https://krowdev.com/guide/astro-mental-model.md"
      }
    }
  ]
}