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