<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>LetsHost</title>
    <link>https://letshost.blkleg.app/</link>
    <description>Software supply-chain security and self-hosted infrastructure by Shawn Phillips — Trust &amp; Safety at GitHub, investigating the npm ecosystem.</description>
    <language>en</language>
    <atom:link href="https://letshost.blkleg.app/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Writes to a Dead Socket Succeed</title>
      <link>https://letshost.blkleg.app/articles/writes-to-a-dead-socket-succeed</link>
      <guid isPermaLink="true">https://letshost.blkleg.app/articles/writes-to-a-dead-socket-succeed</guid>
      <pubDate>Wed, 02 Sep 2026 12:00:00 GMT</pubDate>
      <description>A firewall rule, a container detach or an expired NAT entry severs a TCP connection without closing it. Writes keep returning success into nothing, and the only thing that notices is a read deadline you set yourself.</description>
    </item>
    <item>
      <title>Setting Up SSH</title>
      <link>https://letshost.blkleg.app/guides/setting-up-ssh</link>
      <guid isPermaLink="true">https://letshost.blkleg.app/guides/setting-up-ssh</guid>
      <pubDate>Wed, 02 Sep 2026 12:00:00 GMT</pubDate>
      <description>Every box in this homelab starts the same way: install the server, generate a key, and turn passwords off before anything else touches the network. The order matters more than any individual step.</description>
    </item>
    <item>
      <title>A Hero&apos;s Journey</title>
      <link>https://letshost.blkleg.app/articles/a-heros-journey</link>
      <guid isPermaLink="true">https://letshost.blkleg.app/articles/a-heros-journey</guid>
      <pubDate>Tue, 01 Sep 2026 12:00:00 GMT</pubDate>
      <description>Laid off from Uber when the company went all-in on AI, and hired by GitHub thirty days later. What it took, and what I had already built without knowing why.</description>
    </item>
    <item>
      <title>The Docker Socket Is Root</title>
      <link>https://letshost.blkleg.app/articles/the-docker-socket-is-root</link>
      <guid isPermaLink="true">https://letshost.blkleg.app/articles/the-docker-socket-is-root</guid>
      <pubDate>Wed, 12 Aug 2026 12:00:00 GMT</pubDate>
      <description>Mounting the Docker socket into a container hands that container the host. The read-only flag most compose files use does not change this, and the reason is a detail about what :ro actually applies to.</description>
    </item>
    <item>
      <title>Cooldowns and Lifecycle Scripts</title>
      <link>https://letshost.blkleg.app/articles/cooldowns-and-lifecycle-scripts</link>
      <guid isPermaLink="true">https://letshost.blkleg.app/articles/cooldowns-and-lifecycle-scripts</guid>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <description>The defences that actually change the outcome of an npm supply-chain attack are unglamorous: do not run install scripts, do not install code published this morning, and do not let a stolen token publish anything.</description>
    </item>
    <item>
      <title>The Worm That Publishes Itself</title>
      <link>https://letshost.blkleg.app/articles/npm-worm-that-publishes-itself</link>
      <guid isPermaLink="true">https://letshost.blkleg.app/articles/npm-worm-that-publishes-itself</guid>
      <pubDate>Sun, 14 Jun 2026 12:00:00 GMT</pubDate>
      <description>Shai-Hulud steals a maintainer&apos;s npm token, uses it to republish every package that maintainer owns, and repeats. No operator, no command server, no human in the loop after the first compromise.</description>
    </item>
    <item>
      <title>Quorum Is a Voting Problem</title>
      <link>https://letshost.blkleg.app/articles/quorum-is-a-voting-problem</link>
      <guid isPermaLink="true">https://letshost.blkleg.app/articles/quorum-is-a-voting-problem</guid>
      <pubDate>Sat, 09 May 2026 12:00:00 GMT</pubDate>
      <description>A two-node Proxmox cluster is not a smaller three-node cluster. It is a cluster that stops working the moment either node reboots, and the reason is arithmetic rather than configuration.</description>
    </item>
    <item>
      <title>One Maintainer, Two Billion Installs</title>
      <link>https://letshost.blkleg.app/articles/one-maintainer-two-billion-installs</link>
      <guid isPermaLink="true">https://letshost.blkleg.app/articles/one-maintainer-two-billion-installs</guid>
      <pubDate>Wed, 22 Apr 2026 12:00:00 GMT</pubDate>
      <description>In September 2025 a phishing email to a single npm maintainer put malicious code into eighteen packages downloaded 2.6 billion times a week. The interesting part is not the phish. It is how ordinary it was.</description>
    </item>
  </channel>
</rss>
