<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Pygochelidon Garden</title>
  <subtitle>A digital garden</subtitle>
  <link href="https://pygochelidon.garden/feed.xml" rel="self"/>
  <link href="https://pygochelidon.garden/"/>
  <updated>2026-06-02T18:11:19Z</updated>
  <id>https://pygochelidon.garden/</id>
  <author>
    <name>Pygochelidon</name>
  </author>
  <entry>
    <title>Roadmap</title>
    <link href="https://pygochelidon.garden/garden/this-site/roadmap/"/>
    <updated>2026-06-02T18:11:19Z</updated>
    <id>https://pygochelidon.garden/garden/this-site/roadmap/</id>
    <content type="html">&lt;h2&gt;Todo&lt;/h2&gt;
&lt;p&gt;Leave bug reports and feature requests below!&lt;/p&gt;
&lt;h3&gt;Bugs&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; No external resource fetches (fonts, images)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Fix atom feed smoke test&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Fix archival&lt;/li&gt;
&lt;li&gt;Comments
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Identicon on new (pre-refresh) comments not shown&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; New comments appear at bottom until page refresh (should sort to top)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Edit/Reply
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Use primary color for save button&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Show error message when too many requests/direct replies&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Features&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Archive pages to Wayback Machine on deploy, excluding comments&lt;/li&gt;
&lt;li&gt;Email notifications
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Deploy/test failure notifications&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; New comment notifications (Isso SMTP + msmtp)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Comments
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Comment field hint explanations&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Validate commenter website links&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Other UX
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Tap outside sidebar menu to collapse (or swipe)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Feed link on site&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Bug report prompt / link to roadmap on pages&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Content
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Add built-in section timers to recipes&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Custom art for the website
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Background tile&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Growth stage icons&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Favicon (currently 404s on every page)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; More notes
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Minecraft bedrock pulse length decoder&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Completed&lt;/h2&gt;
&lt;h3&gt;Infrastructure&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;DietPi setup on Pi Zero&lt;/li&gt;
&lt;li&gt;Nginx install and config (static files, comment proxy, symlinked from repo)&lt;/li&gt;
&lt;li&gt;Git deploy token on Pi (read-only PAT)&lt;/li&gt;
&lt;li&gt;Repo cloned, npm installed, first build verified&lt;/li&gt;
&lt;li&gt;Cloudflare Tunnel install and config&lt;/li&gt;
&lt;li&gt;SSH access (Cloudflare Tunnel SSH ingress or Tailscale)&lt;/li&gt;
&lt;li&gt;Quarantine Pi on guest network&lt;/li&gt;
&lt;li&gt;Healthchecks.io account + check created&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Deploy &amp;amp; Monitoring&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cron jobs: auto-deploy + healthcheck ping&lt;/li&gt;
&lt;li&gt;Test scripts (auto-run on deploy)
&lt;ul&gt;
&lt;li&gt;Site health
&lt;ul&gt;
&lt;li&gt;Pages load with expected content&lt;/li&gt;
&lt;li&gt;Atom feed&lt;/li&gt;
&lt;li&gt;Disk usage&lt;/li&gt;
&lt;li&gt;Broken internal links&lt;/li&gt;
&lt;li&gt;DNS resolution and Cloudflare tunnel&lt;/li&gt;
&lt;li&gt;Asset loading and size&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Isso
&lt;ul&gt;
&lt;li&gt;JS client and count API&lt;/li&gt;
&lt;li&gt;Comment thread returns valid JSON&lt;/li&gt;
&lt;li&gt;Field validation (missing author/text)&lt;/li&gt;
&lt;li&gt;Body size limit&lt;/li&gt;
&lt;li&gt;Rate limiting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Security
&lt;ul&gt;
&lt;li&gt;Pending apt security updates&lt;/li&gt;
&lt;li&gt;npm vulnerabilities&lt;/li&gt;
&lt;li&gt;HTTPS redirect&lt;/li&gt;
&lt;li&gt;Security headers (HSTS, X-Content-Type-Options, clickjacking)&lt;/li&gt;
&lt;li&gt;Server version not exposed&lt;/li&gt;
&lt;li&gt;Sensitive files blocked&lt;/li&gt;
&lt;li&gt;Directory listing disabled&lt;/li&gt;
&lt;li&gt;Isso admin login form&lt;/li&gt;
&lt;li&gt;SSH not publicly reachable&lt;/li&gt;
&lt;li&gt;Origin IP hidden behind Cloudflare&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Comments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Per-page comments on notes&lt;/li&gt;
&lt;li&gt;Guestbook page with comments&lt;/li&gt;
&lt;li&gt;Recent comments on home page&lt;/li&gt;
&lt;li&gt;Isso comment service&lt;/li&gt;
&lt;li&gt;Comment spam protection (Nginx rate limiting, field validation)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Content&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Eleventy site with layouts, garden collection, background tiles&lt;/li&gt;
&lt;li&gt;Feed for garden notes&lt;/li&gt;
&lt;li&gt;Finds page for sites I recommend checking out&lt;/li&gt;
&lt;li&gt;Accommodate mobile and other aspect ratios&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Garden&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Sort topics and notes by descending aggregate maturity score (seedling=1, budding=2, evergreen=3)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Archival</title>
    <link href="https://pygochelidon.garden/garden/this-site/archival/"/>
    <updated>2026-06-01T06:11:12Z</updated>
    <id>https://pygochelidon.garden/garden/this-site/archival/</id>
    <content type="html">&lt;p&gt;Each successful deploy automatically submits the site to the &lt;a href=&quot;https://web.archive.org/web/*/https://pygochelidon.garden/&quot;&gt;Wayback Machine&lt;/a&gt; via the Save API, preserving a snapshot of the static content. Comments are excluded at three layers: &lt;code&gt;robots.txt&lt;/code&gt; disallows &lt;code&gt;/isso/&lt;/code&gt;; nginx returns 403 to known archive crawlers (&lt;code&gt;ia_archiver&lt;/code&gt;, &lt;code&gt;CCBot&lt;/code&gt;, &lt;code&gt;archive.today&lt;/code&gt;); and the comments template checks &lt;code&gt;window.location.hostname&lt;/code&gt; at runtime and skips loading Isso entirely when viewed inside a web archive replay.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Old Projects</title>
    <link href="https://pygochelidon.garden/garden/code/old-projects/"/>
    <updated>2026-06-01T05:32:27Z</updated>
    <id>https://pygochelidon.garden/garden/code/old-projects/</id>
    <content type="html">&lt;p&gt;A collection of old single-file HTML/JS projects. Click to play full screen.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pygochelidon.garden/garden/code/liquid-labyrinth/&quot;&gt;Liquid Labyrinth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pygochelidon.garden/garden/code/neural-network/&quot;&gt;Neural Network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pygochelidon.garden/garden/code/independent-processing/&quot;&gt;Independent Processing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pygochelidon.garden/garden/code/collapse-cycles/&quot;&gt;Collapse Cycles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pygochelidon.garden/garden/code/perlin-noise-algorithm/&quot;&gt;Perlin Noise Algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pygochelidon.garden/garden/code/pcg-caves/&quot;&gt;PCG Caves&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pygochelidon.garden/garden/code/box-game/&quot;&gt;Box Game&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pygochelidon.garden/garden/code/procedural-face-variation/&quot;&gt;Procedural Face Variation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Decentralized Community Network</title>
    <link href="https://pygochelidon.garden/garden/resilience/community-network/"/>
    <updated>2026-05-03T06:23:47Z</updated>
    <id>https://pygochelidon.garden/garden/resilience/community-network/</id>
    <content type="html">&lt;p&gt;A layered community network designed for resilience during &lt;abbr title=&quot;Internet Service Provider&quot;&gt;ISP&lt;/abbr&gt; outages, infrastructure failures, and political unrest. Layers are ordered from least to most sophisticated, with graceful degradation: mesh → &lt;abbr title=&quot;Long Range — low-power, long-range radio modulation&quot;&gt;LoRa&lt;/abbr&gt; → sneaker-net → in-person. All layers operate independently without internet. This network raises the cost of surveillance and interference but is not a guarantee of safety — operational security and community trust remain critical.&lt;/p&gt;
&lt;h2&gt;Layer 1 — Air-Gapped / Physical&lt;/h2&gt;
&lt;p&gt;No radio emissions, no IP traffic. Nearly undetectable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Connectivity&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;USB sneaker-net&lt;/strong&gt;: physically carry drives between nodes to sync data and software&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct &lt;abbr title=&quot;Peer-to-Peer — direct connection between two devices&quot;&gt;P2P&lt;/abbr&gt; ethernet&lt;/strong&gt;: two laptops connected with a crossover cable for local file transfer or git sync at meetups&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In-person meetups&lt;/strong&gt;: coordinate, train operators, distribute updates out-of-band&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Offline Resources&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First aid and medical references&lt;/li&gt;
&lt;li&gt;Survival and field guides&lt;/li&gt;
&lt;li&gt;Emergency protocols and local contact trees&lt;/li&gt;
&lt;li&gt;Offline maps (printable)&lt;/li&gt;
&lt;li&gt;Legal rights documentation (know-your-rights, local emergency law)&lt;/li&gt;
&lt;li&gt;Cached Wikipedia (Kiwix)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Private keys stored physically, never networked&lt;/li&gt;
&lt;li&gt;Public key fingerprints exchanged in person to verify identity before trusting digital keys&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Layer 2 — Low-Power Radio (&lt;abbr title=&quot;Long Range — low-power, long-range radio modulation&quot;&gt;LoRa&lt;/abbr&gt; / Meshtastic)&lt;/h2&gt;
&lt;p&gt;Low bandwidth, long range, difficult to trace to a fixed location.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Emergency messaging and alerts across the community&lt;/li&gt;
&lt;li&gt;Off-grid capable with small solar + battery&lt;/li&gt;
&lt;li&gt;Fallback when mesh WiFi is unavailable or unsafe to operate&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Layer 3 — Mesh WiFi&lt;/h2&gt;
&lt;p&gt;Visible RF infrastructure but locally controlled end-to-end.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Infrastructure&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Point-to-point 5 GHz directional links&lt;/li&gt;
&lt;li&gt;Redundant backbone, no single points of failure&lt;/li&gt;
&lt;li&gt;Ring topology backbone (&lt;abbr title=&quot;Rapid Spanning Tree Protocol — prevents loops in ring network topology&quot;&gt;RSTP&lt;/abbr&gt;), star topology edge nodes&lt;/li&gt;
&lt;li&gt;&lt;abbr title=&quot;Wi-Fi Protected Access 3 — current WiFi encryption standard&quot;&gt;WPA3&lt;/abbr&gt; on all WiFi nodes; &lt;abbr title=&quot;Virtual Private Network — encrypted tunnel over a network&quot;&gt;VPN&lt;/abbr&gt; encryption tunnels&lt;/li&gt;
&lt;li&gt;Battery backup on backbone nodes; solar charging capable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;abbr title=&quot;GNU Privacy Guard — open-source encryption and signing tool&quot;&gt;GPG&lt;/abbr&gt;-signed manifests with SHA-256 checksums for all distributed binaries (keys managed in Layer 1)&lt;/li&gt;
&lt;li&gt;Signed firmware updates; no cloud dependency for any critical function&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Local Services&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;abbr title=&quot;Domain Name System — translates hostnames to IP addresses&quot;&gt;DNS&lt;/abbr&gt; (.local), &lt;abbr title=&quot;Network-Attached Storage&quot;&gt;NAS&lt;/abbr&gt;/file storage, messaging and bulletin board&lt;/li&gt;
&lt;li&gt;&lt;abbr title=&quot;Network Time Protocol — synchronizes clocks across devices&quot;&gt;NTP&lt;/abbr&gt;, local Git server, emergency alert broadcast&lt;/li&gt;
&lt;li&gt;Replication across multiple nodes; automatic failover on node failure&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Layer 4 — Public Internet&lt;/h2&gt;
&lt;p&gt;Used when available to sync cached content down to lower layers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pull software updates, package mirrors, and documentation to mesh nodes&lt;/li&gt;
&lt;li&gt;Sync offline reference content&lt;/li&gt;
&lt;li&gt;Pull &lt;abbr title=&quot;Large Language Model&quot;&gt;LLM&lt;/abbr&gt; model updates&lt;/li&gt;
&lt;li&gt;Push git commits and cloud backups while accessible&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Offline Development Stack&lt;/h2&gt;
&lt;p&gt;Hosted on mesh nodes (Layer 3), but software and data can be carried via sneaker-net (Layer 1) when the mesh is down.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cached web servers, pre-built runtimes (Node, Python, Go, Rust)&lt;/li&gt;
&lt;li&gt;Offline package mirrors (npm, pip, cargo) and documentation mirrors&lt;/li&gt;
&lt;li&gt;Common databases (PostgreSQL, SQLite, Redis) and build tools&lt;/li&gt;
&lt;li&gt;Local &lt;abbr title=&quot;Large Language Model&quot;&gt;LLM&lt;/abbr&gt; inference with cached models for offline AI assistance&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community &amp;amp; Governance&lt;/h2&gt;
&lt;p&gt;Spans all layers — operators must know how to work at each level.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trained volunteer node operators&lt;/li&gt;
&lt;li&gt;Governance body, funding mechanism (dues/sponsorship), operator training&lt;/li&gt;
&lt;li&gt;Runbooks for common failures and maintenance&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Limitations&lt;/h2&gt;
&lt;p&gt;This network does not support:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Streaming or bandwidth-heavy external content&lt;/li&gt;
&lt;li&gt;Cloud service access (unless pre-cached)&lt;/li&gt;
&lt;li&gt;Complete independence from the global backbone&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Stack</title>
    <link href="https://pygochelidon.garden/garden/this-site/stack/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/this-site/stack/</id>
    <content type="html">&lt;h2&gt;Tech Stack&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hardware&lt;/td&gt;
&lt;td&gt;Raspberry Pi Zero W v1.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DietPi&lt;/td&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eleventy&lt;/td&gt;
&lt;td&gt;Static site generator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nunjucks&lt;/td&gt;
&lt;td&gt;Templating&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pico.css&lt;/td&gt;
&lt;td&gt;Base stylesheet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nginx&lt;/td&gt;
&lt;td&gt;Web server, reverse proxy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ISSO&lt;/td&gt;
&lt;td&gt;Comments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare Tunnel&lt;/td&gt;
&lt;td&gt;Public access without open ports&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare Access&lt;/td&gt;
&lt;td&gt;SSH authentication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare DNS&lt;/td&gt;
&lt;td&gt;Domain management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Healthchecks.io&lt;/td&gt;
&lt;td&gt;Uptime monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;Source repo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content>
  </entry>
  <entry>
    <title>Overview</title>
    <link href="https://pygochelidon.garden/garden/resilience/overview/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/resilience/overview/</id>
    <content type="html">&lt;p&gt;Here is a framework for identifying and mitigating risks in various categories. Every effort made to mitigate a risk should be calibrated to the severity, probability, and frequency of the situation occurring. This means that risk mitigation should also minimally affect your daily experience of life, because your day-to-day experience has the highest probability and frequency of all scenarios. Each table is sorted with the highest priority items on top.&lt;/p&gt;
&lt;h2&gt;Social&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Mitigation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Isolation&lt;/td&gt;
&lt;td&gt;Prioritize community building&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dependence on a single relationship or social circle&lt;/td&gt;
&lt;td&gt;Diversify support network (family, friends, work, therapy), a single loss shouldn&#39;t collapse your entire social life&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Relationship transition&lt;/td&gt;
&lt;td&gt;Maintain some financial independence, understand your state&#39;s property laws, keep career skills current&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Caregiving burden&lt;/td&gt;
&lt;td&gt;Discuss expectations with family early, understand financial and time costs, know what resources exist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Erosion of broader social cohesion&lt;/td&gt;
&lt;td&gt;Invest in local ties, strong community offsets national trends&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Economic&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Mitigation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Inflation eroding savings&lt;/td&gt;
&lt;td&gt;Own appreciating assets (HYSA, CD, Mutual Fund), minimize idle cash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entitlement uncertainty (Social Security)&lt;/td&gt;
&lt;td&gt;Max matching and tax-advantaged accounts (401k match, Roth IRA/401k, HSA), don&#39;t plan retirement around SS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Asset over-concentration&lt;/td&gt;
&lt;td&gt;Diversify across asset types, don&#39;t let one purchase (a house) dominate net worth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job market disruption (AI, automation)&lt;/td&gt;
&lt;td&gt;Build judgment-heavy, cross-industry skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Currency / banking system disruption&lt;/td&gt;
&lt;td&gt;Some physical cash, diversify across institutions, don&#39;t depend on a single bank or payment system&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Health&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Mitigation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Loss of fitness / mobility&lt;/td&gt;
&lt;td&gt;Preventative health (exercise, diet, sleep, checkups)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mental health crisis&lt;/td&gt;
&lt;td&gt;Know your warning signs, have a therapist or support line identified before you need one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Major injury, illness, or disability&lt;/td&gt;
&lt;td&gt;Health and disability insurance (short and long-term), 6 month emergency fund, living will and healthcare power of attorney on file&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Digital&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Mitigation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Identity theft / cybersecurity&lt;/td&gt;
&lt;td&gt;Password manager, 2FA on all accounts, credit freeze, monitor credit reports&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Loss of digital access / deplatforming&lt;/td&gt;
&lt;td&gt;Own your data, maintain offline copies, don&#39;t depend on a single ecosystem&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Environmental&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Mitigation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rising insurance costs (hail, flood, fire)&lt;/td&gt;
&lt;td&gt;Get quotes before buying house&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regional water stress / climate shifts&lt;/td&gt;
&lt;td&gt;Water-efficient fixtures and landscaping, keep emergency water supply (1 gal/person/day, 3-day minimum)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Natural disasters (earthquake, flood, severe storms)&lt;/td&gt;
&lt;td&gt;Know your region&#39;s specific risks, maintain basic emergency supplies and shelter plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power grid failure&lt;/td&gt;
&lt;td&gt;Backup power, have a plan for extreme heat/cold without HVAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supply chain disruption&lt;/td&gt;
&lt;td&gt;Keep a modest pantry buffer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Air quality / wildfire smoke&lt;/td&gt;
&lt;td&gt;Air purifier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pandemic&lt;/td&gt;
&lt;td&gt;Basic supplies on hand (masks, sanitizer, shelf-stable food), remote work capability, emergency fund&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Carrington-class solar storm&lt;/td&gt;
&lt;td&gt;Some physical cash, physical copies of critical documents, radio in a simple Faraday cage (metal box), medical guides on protected device&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Political &amp;amp; Regulatory&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Mitigation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Policy changes affecting taxes/benefits/rights&lt;/td&gt;
&lt;td&gt;Diversify asset types, maintain geographic flexibility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State/regional divergence in laws and economics&lt;/td&gt;
&lt;td&gt;Choose a politically and economically diversified region&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Civil unrest&lt;/td&gt;
&lt;td&gt;Awareness of local tensions, avoid high-risk areas during escalation, have a go-bag&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content>
  </entry>
  <entry>
    <title>TV PC</title>
    <link href="https://pygochelidon.garden/garden/home-lab/tv-pc/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/home-lab/tv-pc/</id>
    <content type="html">&lt;h2&gt;Current Specs&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model&lt;/td&gt;
&lt;td&gt;Dell Optiplex 7040 &lt;abbr title=&quot;Small Form Factor&quot;&gt;SFF&lt;/abbr&gt; (ChassisTypes 3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;Intel Core i5-6500, 4C/4T, 3.2 GHz base / 3.6 GHz boost (Skylake, 65 W &lt;abbr title=&quot;Thermal Design Power - maximum sustained power draw of the CPU&quot;&gt;TDP&lt;/abbr&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;2x 4 GB Samsung M378A5143EB1-CPB DDR4-2133 (2 of 4 &lt;abbr title=&quot;Dual In-line Memory Module - standard desktop RAM stick&quot;&gt;DIMM&lt;/abbr&gt; slots used)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;500 GB Toshiba DT01ACA050 7200 RPM 3.5&amp;quot; &lt;abbr title=&quot;Serial ATA - standard interface for HDDs and older SSDs&quot;&gt;SATA&lt;/abbr&gt; HDD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU (discrete)&lt;/td&gt;
&lt;td&gt;AMD Radeon R5 340, 2 GB GDDR3 (&lt;abbr title=&quot;Graphics Core Next - AMD GPU microarchitecture family&quot;&gt;GCN&lt;/abbr&gt; 1.0, &lt;abbr title=&quot;Original Equipment Manufacturer - hardware bundled by Dell at the factory&quot;&gt;OEM&lt;/abbr&gt;, driver support ended 2020)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU (integrated)&lt;/td&gt;
&lt;td&gt;Intel HD Graphics 530 (&lt;abbr title=&quot;Intel&#39;s hardware video encode/decode engine built into their iGPUs&quot;&gt;Quick Sync&lt;/abbr&gt; H.264 + &lt;abbr title=&quot;High Efficiency Video Coding (H.265) - modern video compression standard&quot;&gt;HEVC&lt;/abbr&gt; 8-bit encode/decode)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network&lt;/td&gt;
&lt;td&gt;Intel I219-LM 1 GbE (negotiating 100 Mbps due to router port limitation)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Fedora Atomic-based immutable Linux distro built for gaming PCs (Universal Blue project)&quot;&gt;Bazzite&lt;/abbr&gt; Desktop (Fedora Atomic)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Available expansion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;2 free &lt;abbr title=&quot;Dual In-line Memory Module - standard desktop RAM stick&quot;&gt;DIMM&lt;/abbr&gt; slots (max 64 GB DDR4-2133 across 4 slots)&lt;/li&gt;
&lt;li&gt;1x M.2 2280 &lt;abbr title=&quot;Non-Volatile Memory Express - fast SSD interface via M.2 slot&quot;&gt;NVMe&lt;/abbr&gt; slot (empty)&lt;/li&gt;
&lt;li&gt;1x 2.5&amp;quot; &lt;abbr title=&quot;Serial ATA - standard interface for HDDs and older SSDs&quot;&gt;SATA&lt;/abbr&gt; bay (empty)&lt;/li&gt;
&lt;li&gt;3.5&amp;quot; bay occupied by current HDD&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;GPU notes&lt;/h3&gt;
&lt;p&gt;The R5 340 is a low-profile &lt;abbr title=&quot;Original Equipment Manufacturer - hardware bundled by Dell at the factory&quot;&gt;OEM&lt;/abbr&gt; card from 2015 (&lt;abbr title=&quot;Graphics Core Next - AMD GPU microarchitecture family&quot;&gt;GCN&lt;/abbr&gt; 1.0 / Oland). No &lt;abbr title=&quot;High Efficiency Video Coding (H.265) - modern video compression standard&quot;&gt;HEVC&lt;/abbr&gt; encode/decode (requires &lt;abbr title=&quot;Graphics Core Next - AMD GPU microarchitecture family&quot;&gt;GCN&lt;/abbr&gt; 1.2+), no &lt;abbr title=&quot;AOMedia Video 1 - newest open video codec, increasingly common in streaming&quot;&gt;AV1&lt;/abbr&gt; support, last driver from 2020. The integrated Intel HD 530 is better for media transcoding via &lt;abbr title=&quot;Intel&#39;s hardware video encode/decode engine built into their iGPUs&quot;&gt;Quick Sync&lt;/abbr&gt;. The R5 340 draws ~10-15 W idle for no practical benefit in this workload.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;abbr title=&quot;Valve&#39;s Wayland compositor that powers Game Mode — manages display, resolution scaling, and frame limiting&quot;&gt;Gamescope&lt;/abbr&gt; note:&lt;/strong&gt; &lt;abbr title=&quot;Fedora Atomic-based immutable Linux distro built for gaming PCs (Universal Blue project)&quot;&gt;Bazzite&lt;/abbr&gt;&#39;s &lt;abbr title=&quot;Steam&#39;s full-screen console-like UI session (same as Steam Deck)&quot;&gt;Game Mode&lt;/abbr&gt; relies on &lt;abbr title=&quot;Valve&#39;s Wayland compositor that powers Game Mode — manages display, resolution scaling, and frame limiting&quot;&gt;Gamescope&lt;/abbr&gt;, which does not support Skylake-era Intel iGPUs. The Home Theater image is not an option for this machine. Use the Desktop image and launch Steam in Big Picture mode manually for couch gaming.&lt;/p&gt;
&lt;h2&gt;Roles&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Current:&lt;/strong&gt; Blu-ray rip-to-stream (MakeMKV + Jellyfin), party games (Steam), HDMI to Hisense A4 Smart TV.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Planned:&lt;/strong&gt; NAS (&lt;abbr title=&quot;Server Message Block - network file sharing protocol (served by Samba on Linux)&quot;&gt;SMB&lt;/abbr&gt; file share via Samba), Jellyfin (media streaming), &lt;abbr title=&quot;Self-hosted photo and video management (Google Photos replacement)&quot;&gt;Immich&lt;/abbr&gt; (photo management via Podman), &lt;abbr title=&quot;Open-source NVR with AI object detection&quot;&gt;Frigate&lt;/abbr&gt; clip storage (receives clips from Jetson over network).&lt;/p&gt;
&lt;p&gt;All TV activities (games, streaming playback, storing security footage) are mutually exclusive. Podman services run in the background and do not compete for attention or significant resources during TV use.&lt;/p&gt;
&lt;h2&gt;Setup Plan&lt;/h2&gt;
&lt;p&gt;&lt;abbr title=&quot;Fedora Atomic-based immutable Linux distro built for gaming PCs (Universal Blue project)&quot;&gt;Bazzite&lt;/abbr&gt; Desktop — immutable Fedora Atomic base with KDE Plasma. Podman runs natively (no WSL2 overhead), and the OS auto-updates atomically with rollback. &lt;abbr title=&quot;Steam&#39;s full-screen console-like UI session (same as Steam Deck)&quot;&gt;Game Mode&lt;/abbr&gt; is not available on Skylake Intel (see GPU notes), so couch gaming uses Steam Big Picture mode instead.&lt;/p&gt;
&lt;h3&gt;1. Prepare install media&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Download &lt;strong&gt;&lt;abbr title=&quot;Fedora Atomic-based immutable Linux distro built for gaming PCs (Universal Blue project)&quot;&gt;Bazzite&lt;/abbr&gt; Desktop&lt;/strong&gt; ISO from bazzite.gg (Desktop → Older/Legacy Intel (Skylake-Icelake) → KDE)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Flash to USB with &lt;strong&gt;Ventoy&lt;/strong&gt; or &lt;strong&gt;Rufus&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. BIOS settings&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Enter BIOS (F2 at boot)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Set boot order: USB first&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Enable Wake-on-LAN&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Verify UEFI mode (not Legacy/CSM)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. Install &lt;abbr title=&quot;Fedora Atomic-based immutable Linux distro built for gaming PCs (Universal Blue project)&quot;&gt;Bazzite&lt;/abbr&gt;&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Boot from USB, launch Anaconda installer&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Partition: use entire disk (wipe Windows). The existing 500 GB HDD becomes the single drive — OS + containers + media all share it until the deferred &lt;abbr title=&quot;Non-Volatile Memory Express - fast SSD interface via M.2 slot&quot;&gt;NVMe&lt;/abbr&gt; upgrade.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Set hostname (e.g. &lt;code&gt;tvpc&lt;/code&gt;)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Create user account&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. First boot&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Sign in to KDE Plasma desktop&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Launch Steam, enable Big Picture mode for couch use&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Set Steam to auto-start: System Settings → Autostart → Add → Steam (with &lt;code&gt;-bigpicture&lt;/code&gt; flag)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Verify party games launch via Proton&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Configure HDMI output to Hisense A4 (resolution, refresh rate)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. Server setup&lt;/h3&gt;
&lt;p&gt;Remaining steps happen in the KDE desktop or over SSH.&lt;/p&gt;
&lt;h3&gt;6. Network&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; &lt;strong&gt;Static IP:&lt;/strong&gt; set DHCP reservation on the TP-Link Archer A54 (same approach as before — router-side, not OS-side)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Verify link negotiation (100 Mbps confirmed — router port limitation, not NIC)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;7. SSH&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;
&lt;p&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Enable and start sshd:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl enable --now sshd
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8. Power&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;
&lt;p&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Disable sleep, suspend, and hibernate so the machine stays on for server duties:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl mask sleep.target suspend.target hibernate.target
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9. Podman services&lt;/h3&gt;
&lt;p&gt;&lt;abbr title=&quot;Fedora Atomic-based immutable Linux distro built for gaming PCs (Universal Blue project)&quot;&gt;Bazzite&lt;/abbr&gt; ships with Podman (not Docker). They are command-compatible.&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;
&lt;p&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Install podman-compose:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip install podman-compose
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;
&lt;p&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Create a &lt;code&gt;compose.yml&lt;/code&gt; with the following services:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jellyfin&lt;/strong&gt; — media streaming with hardware transcoding:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bind-mount media directory&lt;/li&gt;
&lt;li&gt;Pass through &lt;code&gt;/dev/dri&lt;/code&gt; for &lt;abbr title=&quot;Video Acceleration API - Linux hardware video encode/decode interface (Intel, AMD)&quot;&gt;VA-API&lt;/abbr&gt; (Intel HD 530) hardware transcoding&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;abbr title=&quot;Self-hosted photo and video management (Google Photos replacement)&quot;&gt;Immich&lt;/abbr&gt;&lt;/strong&gt; — photo management:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Standard &lt;abbr title=&quot;Self-hosted photo and video management (Google Photos replacement)&quot;&gt;Immich&lt;/abbr&gt; compose stack&lt;/li&gt;
&lt;li&gt;Bind-mount photo library&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Samba&lt;/strong&gt; — NAS file share + &lt;abbr title=&quot;Open-source NVR with AI object detection&quot;&gt;Frigate&lt;/abbr&gt; clip destination:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Container (e.g. &lt;code&gt;dperson/samba&lt;/code&gt;) or host-level &lt;code&gt;/etc/samba/smb.conf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Share the media directory and a &lt;abbr title=&quot;Open-source NVR with AI object detection&quot;&gt;Frigate&lt;/abbr&gt; clips directory over &lt;abbr title=&quot;Server Message Block - network file sharing protocol (served by Samba on Linux)&quot;&gt;SMB&lt;/abbr&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;10. MakeMKV&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;
&lt;p&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Install via &lt;abbr title=&quot;Sandboxed Linux application packaging format (distro-independent)&quot;&gt;Flatpak&lt;/abbr&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;flatpak install flathub com.makemkv.MakeMKV
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ripped files go to the media directory. Jellyfin picks them up automatically via library scan.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;11. Firewall&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;
&lt;p&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Open required ports:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --permanent --add-port=8096/tcp   # Jellyfin
sudo firewall-cmd --permanent --add-port=2283/tcp   # Immich
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Deferred Upgrades&lt;/h2&gt;
&lt;p&gt;Deferred due to 2026 NAND/DRAM pricing crisis (AI demand driving memory prices up).&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; &lt;strong&gt;Bluetooth Adapter&lt;/strong&gt;: Choose and buy adapter. Pair Xbox controllers.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; &lt;strong&gt;Remove R5 340&lt;/strong&gt;: Free up idle power draw and a PCIe slot. The HD 530 handles display output and &lt;abbr title=&quot;Video Acceleration API - Linux hardware video encode/decode interface (Intel, AMD)&quot;&gt;VA-API&lt;/abbr&gt; transcoding — the discrete GPU serves no purpose.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; &lt;strong&gt;&lt;abbr title=&quot;Non-Volatile Memory Express - fast SSD interface via M.2 slot&quot;&gt;NVMe&lt;/abbr&gt; SSD&lt;/strong&gt; (256-500 GB): Move OS + containers to &lt;abbr title=&quot;Non-Volatile Memory Express - fast SSD interface via M.2 slot&quot;&gt;NVMe&lt;/abbr&gt;, keep media + clips on existing HDD. The HDD&#39;s random I/O (~100-150 &lt;abbr title=&quot;Input/Output Operations Per Second - measure of random read/write speed&quot;&gt;IOPS&lt;/abbr&gt;) is the main bottleneck for service workloads like &lt;abbr title=&quot;Self-hosted photo and video management (Google Photos replacement)&quot;&gt;Immich&lt;/abbr&gt;&#39;s database. Sequential I/O (streaming, file copies) is fine on HDD.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; &lt;strong&gt;RAM&lt;/strong&gt; (add 2x 8 GB DDR4-2133 in free slots, 8 GB -&amp;gt; 24 GB): More headroom for Podman containers (Jellyfin transcoding, &lt;abbr title=&quot;Self-hosted photo and video management (Google Photos replacement)&quot;&gt;Immich&lt;/abbr&gt; ML indexing). &lt;abbr title=&quot;Fedora Atomic-based immutable Linux distro built for gaming PCs (Universal Blue project)&quot;&gt;Bazzite&lt;/abbr&gt; is lighter than Windows but 8 GB is still tight under load.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Map</title>
    <link href="https://pygochelidon.garden/garden/home-lab/map/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/home-lab/map/</id>
    <content type="html">&lt;h2&gt;Public&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Roles&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Digital Garden&lt;/td&gt;
&lt;td&gt;Pi Zero W v1.1&lt;/td&gt;
&lt;td&gt;Website&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; MC Server&lt;/td&gt;
&lt;td&gt;Pi 4&lt;/td&gt;
&lt;td&gt;Minecraft&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Home&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Roles&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; ISP Modem&lt;/td&gt;
&lt;td&gt;Motorola MB7621&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Data Over Cable Service Interface Specification - standard for internet over coaxial cable&quot;&gt;DOCSIS&lt;/abbr&gt; 3.0 cable modem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Wi-Fi Router&lt;/td&gt;
&lt;td&gt;TP-Link Archer A54&lt;/td&gt;
&lt;td&gt;Network routing and firewall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; &lt;abbr title=&quot;Raspberry Pi distro bundling OctoPrint for 3D-printer control&quot;&gt;OctoPi&lt;/abbr&gt;&lt;/td&gt;
&lt;td&gt;Pi 4&lt;/td&gt;
&lt;td&gt;3D printer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Smart TV&lt;/td&gt;
&lt;td&gt;Hisense A4 Series&lt;/td&gt;
&lt;td&gt;Display, Casting, &lt;abbr title=&quot;Serving media (movies, images, music) to clients - Jellyfin, Immich, Frigate&quot;&gt;Streaming&lt;/abbr&gt; client&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; TV PC&lt;/td&gt;
&lt;td&gt;Optiplex 7040, Bazzite Desktop&lt;/td&gt;
&lt;td&gt;Blu-ray rip, party games, &lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt;, &lt;abbr title=&quot;Serving media (movies, images, music) to clients - Jellyfin, Immich, Frigate&quot;&gt;Streaming&lt;/abbr&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Private Laptop&lt;/td&gt;
&lt;td&gt;Asus Q303L, Ubuntu&lt;/td&gt;
&lt;td&gt;General Use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Work Laptop&lt;/td&gt;
&lt;td&gt;Precision 5570 Windows 11&lt;/td&gt;
&lt;td&gt;General Use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Coordinator&lt;/td&gt;
&lt;td&gt;Pi 4&lt;/td&gt;
&lt;td&gt;Network diagnostics, Dashboard, &lt;abbr title=&quot;Open-source home automation hub&quot;&gt;Home Assistant&lt;/abbr&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; AI Board&lt;/td&gt;
&lt;td&gt;Jetson Orin Nano&lt;/td&gt;
&lt;td&gt;Inference (LLM, Vision), Frigate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Camera&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://pygochelidon.garden/garden/home-lab/glados/&quot;&gt;GLaDOS&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Security, Object detection, AI voice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Plant Pi&lt;/td&gt;
&lt;td&gt;Pi Zero 2 W&lt;/td&gt;
&lt;td&gt;Monitor house plants&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Car&lt;/h2&gt;
&lt;p&gt;Mostly aspirational and entirely unnecessary&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Roles&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; AI Board&lt;/td&gt;
&lt;td&gt;Jetson Orin Nano&lt;/td&gt;
&lt;td&gt;LLM, uses phone audio over Bluetooth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Coordinator&lt;/td&gt;
&lt;td&gt;Pi 4&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Controller Area Network - automotive vehicle bus standard&quot;&gt;CAN&lt;/abbr&gt; Diagnostics, Dashboard web app, Automation scripts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Camera&lt;/td&gt;
&lt;td&gt;USB camera&lt;/td&gt;
&lt;td&gt;Dash CAM, object detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Storage&lt;/td&gt;
&lt;td&gt;USB SSD&lt;/td&gt;
&lt;td&gt;Dash footage, syncs to TV PC &lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt; over Wi-Fi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;EDC&lt;/h2&gt;
&lt;p&gt;I never wear a watch, but I already own a PineTime and writing my own app would be cool 🤷.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Roles&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Watch&lt;/td&gt;
&lt;td&gt;PineTime&lt;/td&gt;
&lt;td&gt;General, Activity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot; /&gt; Phone&lt;/td&gt;
&lt;td&gt;Pixel 9 Pro XL&lt;/td&gt;
&lt;td&gt;General, MacroDroid automations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content>
  </entry>
  <entry>
    <title>Hardware</title>
    <link href="https://pygochelidon.garden/garden/home-lab/hardware/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/home-lab/hardware/</id>
    <content type="html">&lt;p&gt;Reference of hardware staples for projects.&lt;/p&gt;
&lt;h2&gt;Microcontroller&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ATtiny84&lt;/td&gt;
&lt;td&gt;Bare chip, no USB, ISP-programmed; minimal embedded where Nano is overkill&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Digispark (ATtiny85)&lt;/td&gt;
&lt;td&gt;Ultra-cheap USB HID via V-USB; simple triggers and automation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arduino Uno / Nano&lt;/td&gt;
&lt;td&gt;Entry-level GPIO, sensor polling, serial comms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arduino Pro Micro&lt;/td&gt;
&lt;td&gt;Native USB HID (ATmega32U4); custom keyboards (&lt;abbr title=&quot;Quantum Mechanical Keyboard - open-source keyboard firmware for AVR and ARM controllers&quot;&gt;QMK&lt;/abbr&gt;), USB gadgets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arduino Mega&lt;/td&gt;
&lt;td&gt;Many-pin projects: large LED matrices, motor shields, Marlin 3D printers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ESP8266 (NodeMCU)&lt;/td&gt;
&lt;td&gt;Wi-Fi-connected sensors and relays at minimal cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ESP32&lt;/td&gt;
&lt;td&gt;Dual-core Wi-Fi + BT; preferred for &lt;abbr title=&quot;Message Queuing Telemetry Transport - lightweight pub/sub protocol for IoT devices&quot;&gt;MQTT&lt;/abbr&gt; / ESPHome devices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RP2040 (Pi Pico)&lt;/td&gt;
&lt;td&gt;Real-time / USB HID; MicroPython or C SDK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STM32 (Blue Pill / Nucleo)&lt;/td&gt;
&lt;td&gt;Bare-metal or RTOS work; Voron 3D printers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;&lt;abbr title=&quot;Single Board Computer&quot;&gt;SBC&lt;/abbr&gt;&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pi Zero 2 W&lt;/td&gt;
&lt;td&gt;Tiny always-on services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pi 4&lt;/td&gt;
&lt;td&gt;General self-hosting, Home Assistant, 3D printing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pi 5&lt;/td&gt;
&lt;td&gt;Heavier services with &lt;abbr title=&quot;Non-Volatile Memory Express - fast SSD interface (replaces SATA)&quot;&gt;NVMe&lt;/abbr&gt; (&lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt;, &lt;abbr title=&quot;Serving media (movies, TV, music) to clients - Plex, Jellyfin, Emby, Navidrome&quot;&gt;Streaming&lt;/abbr&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Radxa Rock 5B&lt;/td&gt;
&lt;td&gt;Heavier ARM server (more cores/RAM than Pi 5)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Mini PC&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Odroid H4&lt;/td&gt;
&lt;td&gt;Multi-&lt;abbr title=&quot;Serial ATA - standard interface for connecting storage drives&quot;&gt;SATA&lt;/abbr&gt; &lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt; or router build&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N100 / N150 mini PC&lt;/td&gt;
&lt;td&gt;Entry x86 - &lt;abbr title=&quot;Free Debian-based hypervisor for VMs and Linux containers&quot;&gt;Proxmox&lt;/abbr&gt; / &lt;abbr title=&quot;Free FreeBSD-based router/firewall operating system&quot;&gt;OPNsense&lt;/abbr&gt; / &lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt; / &lt;abbr title=&quot;Serving media (movies, TV, music) to clients - Plex, Jellyfin, Emby, Navidrome&quot;&gt;Streaming&lt;/abbr&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beelink SER / Minisforum UM (Ryzen)&lt;/td&gt;
&lt;td&gt;Multi-VM &lt;abbr title=&quot;Free Debian-based hypervisor for VMs and Linux containers&quot;&gt;Proxmox&lt;/abbr&gt; host with Ryzen headroom; &lt;abbr title=&quot;Integrated GPU - graphics processor built into the CPU (vs a discrete card)&quot;&gt;iGPU&lt;/abbr&gt; runs &lt;abbr title=&quot;Popular open-source engine for running LLMs locally on CPU or GPU&quot;&gt;llama.cpp&lt;/abbr&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minisforum MS-01&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;10 Gigabit Ethernet&quot;&gt;10GbE&lt;/abbr&gt; &lt;abbr title=&quot;Free Debian-based hypervisor for VMs and Linux containers&quot;&gt;Proxmox&lt;/abbr&gt; cluster node&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;AI Inferencing&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Coral USB / M.2 (+ Pi or mini PC)&lt;/td&gt;
&lt;td&gt;Cheapest low-power &lt;abbr title=&quot;Open-source network video recorder with AI-accelerated object detection&quot;&gt;Frigate&lt;/abbr&gt; vision (&lt;abbr title=&quot;TensorFlow Lite - Google&#39;s edge inference framework (limits which models can run)&quot;&gt;TFLite&lt;/abbr&gt; only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hailo-8 M.2 (+ Pi or mini PC)&lt;/td&gt;
&lt;td&gt;Multi-stream &lt;abbr title=&quot;Open-source network video recorder with AI-accelerated object detection&quot;&gt;Frigate&lt;/abbr&gt; vision (more cameras, higher-res)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hailo-10H M.2 (+ Pi or mini PC)&lt;/td&gt;
&lt;td&gt;Low-power &lt;abbr title=&quot;Large Language Model&quot;&gt;LLM&lt;/abbr&gt; accelerator (~7B)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jetson Orin Nano / NX&lt;/td&gt;
&lt;td&gt;Standalone &lt;abbr title=&quot;Nvidia&#39;s GPU computing platform - required for most ML frameworks&quot;&gt;CUDA&lt;/abbr&gt; box for vision and small LLMs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Storage&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;microSD&lt;/td&gt;
&lt;td&gt;Pi boot media; light buffer storage (limited write endurance)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB flash drive&lt;/td&gt;
&lt;td&gt;Cheap portable storage; dash footage buffer when write volume is low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB SSD&lt;/td&gt;
&lt;td&gt;Durable USB-attached storage; continuous dash recording, Pi-attached &lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;abbr title=&quot;Serial ATA - standard interface for connecting storage drives&quot;&gt;SATA&lt;/abbr&gt; SSD&lt;/td&gt;
&lt;td&gt;Internal SSD for mini PCs; OS, app storage, &lt;abbr title=&quot;Open-source network video recorder with AI-accelerated object detection&quot;&gt;Frigate&lt;/abbr&gt; clips&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;abbr title=&quot;Serial ATA - standard interface for connecting storage drives&quot;&gt;SATA&lt;/abbr&gt; HDD&lt;/td&gt;
&lt;td&gt;Bulk capacity; &lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt; media libraries, long-term security footage archival&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;abbr title=&quot;Non-Volatile Memory Express - fast SSD interface (replaces SATA)&quot;&gt;NVMe&lt;/abbr&gt; SSD&lt;/td&gt;
&lt;td&gt;Fast internal for Pi 5 / mini PCs; &lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt;, heavy read/write workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Cameras&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-CAM&lt;/td&gt;
&lt;td&gt;Cheapest Wi-Fi camera; low-res tinkering, motion triggers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB camera&lt;/td&gt;
&lt;td&gt;Standalone with SD card or attached to host&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;abbr title=&quot;Camera Serial Interface - ribbon connector for attaching camera modules to Pi / Jetson boards&quot;&gt;CSI&lt;/abbr&gt; Camera (Pi Camera)&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Camera Serial Interface - ribbon connector for attaching camera modules to Pi / Jetson boards&quot;&gt;CSI&lt;/abbr&gt;-attached to Pi; good quality single-stream for close-range or &lt;abbr title=&quot;Open-source network video recorder with AI-accelerated object detection&quot;&gt;Frigate&lt;/abbr&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;abbr title=&quot;Power over Ethernet - delivers power and data over a single Ethernet cable&quot;&gt;PoE&lt;/abbr&gt; IP camera (Reolink / Amcrest)&lt;/td&gt;
&lt;td&gt;Standalone wired camera for &lt;abbr title=&quot;Open-source network video recorder with AI-accelerated object detection&quot;&gt;Frigate&lt;/abbr&gt; &lt;abbr title=&quot;Network Video Recorder - records and manages footage from IP cameras&quot;&gt;NVR&lt;/abbr&gt;; no separate compute per camera&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content>
  </entry>
  <entry>
    <title>GLaDOS</title>
    <link href="https://pygochelidon.garden/garden/home-lab/glados/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/home-lab/glados/</id>
    <content type="html">&lt;h2&gt;Project Goals&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Phase 1:&lt;/strong&gt; Replace stock firmware with &lt;strong&gt;&lt;abbr title=&quot;Open-source firmware for Ingenic-based IP cameras&quot;&gt;Thingino&lt;/abbr&gt;&lt;/strong&gt; (8 MB profile) to expose local &lt;abbr title=&quot;Real Time Streaming Protocol - standard IP-camera streaming protocol&quot;&gt;RTSP&lt;/abbr&gt;/&lt;abbr title=&quot;Open Network Video Interface Forum - vendor-neutral IP-camera API&quot;&gt;ONVIF&lt;/abbr&gt; and decouple the camera from the &lt;abbr title=&quot;Chinese IoT cloud platform; many white-label smart devices ship with it&quot;&gt;Tuya&lt;/abbr&gt; cloud entirely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aspirational:&lt;/strong&gt; Turn it into a GLaDOS camera — personality/voice running on a Jetson Orin Nano, 3D-printed GLaDOS-style body, and a third stepper motor for 3 degrees of freedom.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Hardware&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Device:&lt;/strong&gt; Instachew Purrsight 360 (&lt;abbr title=&quot;Pan-Tilt-Zoom - motorized camera that can rotate and zoom remotely&quot;&gt;PTZ&lt;/abbr&gt; pet camera, &lt;abbr title=&quot;Chinese IoT cloud platform; many white-label smart devices ship with it&quot;&gt;Tuya&lt;/abbr&gt; firmware from factory)
&lt;strong&gt;Board ID:&lt;/strong&gt; &lt;code&gt;GY7630-T31-PTZV12&lt;/code&gt; (&lt;abbr title=&quot;Printed Circuit Board&quot;&gt;PCB&lt;/abbr&gt; date 2022-05-10)&lt;/p&gt;
&lt;h3&gt;Core Silicon&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Part&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;abbr title=&quot;System on Chip - CPU, memory controller, and peripherals on one die&quot;&gt;SoC&lt;/abbr&gt;&lt;/td&gt;
&lt;td&gt;Ingenic &lt;strong&gt;T31L&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;RISC CPU architecture family (used by Ingenic T-series SoCs)&quot;&gt;MIPS&lt;/abbr&gt;, standard-&lt;abbr title=&quot;Image Signal Processor - on-chip pipeline that converts raw sensor data to video&quot;&gt;ISP&lt;/abbr&gt; variant; audio I/O supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;abbr title=&quot;Serial Peripheral Interface - common bus for flash chips and sensors&quot;&gt;SPI&lt;/abbr&gt; &lt;abbr title=&quot;Flash memory type optimized for random reads; used for boot/firmware storage&quot;&gt;NOR&lt;/abbr&gt; flash&lt;/td&gt;
&lt;td&gt;Winbond &lt;strong&gt;W25Q64JVSIQ&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;8 MB / 64 Mbit, &lt;abbr title=&quot;Small Outline IC, 8 pins - common surface-mount package for SPI flash&quot;&gt;SOIC-8&lt;/abbr&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wi-Fi + BT&lt;/td&gt;
&lt;td&gt;SSV &lt;strong&gt;SV6256P&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2.4 GHz only; out-of-tree driver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Motor driver&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ULN2803LV5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;8-ch &lt;abbr title=&quot;Paired-transistor configuration with high current gain; common in motor and solenoid drivers&quot;&gt;Darlington&lt;/abbr&gt;; drives &lt;abbr title=&quot;Pan-Tilt-Zoom - motorized camera that can rotate and zoom remotely&quot;&gt;PTZ&lt;/abbr&gt; steppers + IR-cut solenoid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audio amplifier&lt;/td&gt;
&lt;td&gt;Natlinear &lt;strong&gt;NS4150B&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3 W mono &lt;abbr title=&quot;Switching audio amplifier topology - high efficiency, used in compact speakers&quot;&gt;Class-D&lt;/abbr&gt;; speaker / two-way audio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image sensor&lt;/td&gt;
&lt;td&gt;&lt;em&gt;TBD — read from &lt;abbr title=&quot;Universal Asynchronous Receiver-Transmitter - serial console interface&quot;&gt;UART&lt;/abbr&gt; boot log&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Mechanics&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Motorized pan + tilt via stepper motors driven by the ULN2803.&lt;/li&gt;
&lt;li&gt;Day/night switch via solenoid-actuated &lt;strong&gt;IR-cut filter (&lt;abbr title=&quot;IR-Cut Removable filter - mechanical filter toggled for day/night imaging&quot;&gt;ICR&lt;/abbr&gt;)&lt;/strong&gt; assembly between lens and sensor.&lt;/li&gt;
&lt;li&gt;IR illumination ring around the lens — connected via &lt;code&gt;LED1&lt;/code&gt; 4-pin header; engages in night mode.&lt;/li&gt;
&lt;li&gt;Built-in speaker driven by the NS4150B; built-in mic (labeled &lt;code&gt;MIC&lt;/code&gt; on the &lt;abbr title=&quot;Printed Circuit Board&quot;&gt;PCB&lt;/abbr&gt;).&lt;/li&gt;
&lt;li&gt;microSD slot — externally accessible on the camera body; available under &lt;abbr title=&quot;Open-source firmware for Ingenic-based IP cameras&quot;&gt;Thingino&lt;/abbr&gt; as a standard Linux block device (&lt;code&gt;/dev/mmcblk0p1&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Unused Connectors&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SYS_LED&lt;/code&gt; 2-pin header on the main &lt;abbr title=&quot;Printed Circuit Board&quot;&gt;PCB&lt;/abbr&gt; — unpopulated; likely a status LED output (case has a cavity and pinhole above it for a 5 mm LED).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LED2&lt;/code&gt; 3-pin header on the main &lt;abbr title=&quot;Printed Circuit Board&quot;&gt;PCB&lt;/abbr&gt; — unpopulated; purpose unknown.&lt;/li&gt;
&lt;li&gt;Main &lt;abbr title=&quot;Printed Circuit Board&quot;&gt;PCB&lt;/abbr&gt; ↔ USB-C board interconnect carries unused pins labeled &lt;code&gt;LED&lt;/code&gt;, &lt;code&gt;R-&lt;/code&gt;, &lt;code&gt;R+&lt;/code&gt;, &lt;code&gt;T-&lt;/code&gt;, &lt;code&gt;T+&lt;/code&gt;. The R± / T± pairs look like differential signal pairs (candidates: USB 2.0 data, Ethernet). Stock firmware only uses the USB-C board for power.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Service / Debug Headers&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;abbr title=&quot;Universal Asynchronous Receiver-Transmitter - serial console interface&quot;&gt;UART&lt;/abbr&gt;&lt;/strong&gt;: 3-pad header labeled &lt;code&gt;TX&lt;/code&gt; / &lt;code&gt;R&lt;/code&gt; / &lt;code&gt;GND&lt;/code&gt; on the silkscreen. 3.3 V logic, 115200 8N1.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BOOT&lt;/strong&gt;: single labeled test pad. Short to &lt;code&gt;GND&lt;/code&gt; during power-up to force the T31 into USB recovery boot mode (fallback for unbricking).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Stock Firmware Lockdown (for Context)&lt;/h3&gt;
&lt;p&gt;Factory firmware is locked &lt;abbr title=&quot;Chinese IoT cloud platform; many white-label smart devices ship with it&quot;&gt;Tuya&lt;/abbr&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Port &lt;code&gt;6668/tcp&lt;/code&gt; — &lt;abbr title=&quot;Chinese IoT cloud platform; many white-label smart devices ship with it&quot;&gt;Tuya&lt;/abbr&gt; LAN control (&lt;abbr title=&quot;Advanced Encryption Standard - symmetric block cipher&quot;&gt;AES&lt;/abbr&gt; with per-device &lt;code&gt;localKey&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Port &lt;code&gt;5543/tcp&lt;/code&gt; — &lt;abbr title=&quot;Real Time Streaming Protocol - standard IP-camera streaming protocol&quot;&gt;RTSP&lt;/abbr&gt; (&lt;code&gt;ireader/media-server&lt;/code&gt;) — returns 403 to all DESCRIBE requests; only accepts cloud-signed URLs.&lt;/li&gt;
&lt;li&gt;Port &lt;code&gt;8000/tcp&lt;/code&gt; — Happytimesoft HTTP admin (&lt;abbr title=&quot;HTTP authentication using hashed challenge-response instead of plaintext credentials&quot;&gt;Digest auth&lt;/abbr&gt;).&lt;/li&gt;
&lt;li&gt;No &lt;abbr title=&quot;Open Network Video Interface Forum - vendor-neutral IP-camera API&quot;&gt;ONVIF&lt;/abbr&gt; advertised (&lt;abbr title=&quot;Web Services Dynamic Discovery - multicast protocol ONVIF uses to announce cameras on the LAN&quot;&gt;WS-Discovery&lt;/abbr&gt; ignored).&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Materials</title>
    <link href="https://pygochelidon.garden/garden/crafting/materials/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/crafting/materials/</id>
    <content type="html">&lt;h1&gt;Material Categories&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Plant (Cellulose)
&lt;ul&gt;
&lt;li&gt;Paper&lt;/li&gt;
&lt;li&gt;Cardboard&lt;/li&gt;
&lt;li&gt;Cotton&lt;/li&gt;
&lt;li&gt;Linen&lt;/li&gt;
&lt;li&gt;Hemp&lt;/li&gt;
&lt;li&gt;Jute&lt;/li&gt;
&lt;li&gt;Cork&lt;/li&gt;
&lt;li&gt;Reeds&lt;/li&gt;
&lt;li&gt;Rattan&lt;/li&gt;
&lt;li&gt;Gourds&lt;/li&gt;
&lt;li&gt;Bamboo&lt;/li&gt;
&lt;li&gt;Wood&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Animal (Protein)
&lt;ul&gt;
&lt;li&gt;Wool&lt;/li&gt;
&lt;li&gt;Silk&lt;/li&gt;
&lt;li&gt;Bone&lt;/li&gt;
&lt;li&gt;Sinew&lt;/li&gt;
&lt;li&gt;Feather&lt;/li&gt;
&lt;li&gt;Leather&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Inorganic
&lt;ul&gt;
&lt;li&gt;Stone&lt;/li&gt;
&lt;li&gt;Crystals&lt;/li&gt;
&lt;li&gt;Shell&lt;/li&gt;
&lt;li&gt;Ceramics&lt;/li&gt;
&lt;li&gt;Glass&lt;/li&gt;
&lt;li&gt;Metal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Synthetic
&lt;ul&gt;
&lt;li&gt;Polyester&lt;/li&gt;
&lt;li&gt;Nylon&lt;/li&gt;
&lt;li&gt;Acrylic&lt;/li&gt;
&lt;li&gt;Rubber&lt;/li&gt;
&lt;li&gt;Resin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Sushi Bake</title>
    <link href="https://pygochelidon.garden/garden/cooking/recipes/sushi-bake/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/cooking/recipes/sushi-bake/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;425°F · 10–15 min · serves 4&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;caption&gt;Rice (cook)&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 cup&lt;/td&gt;
&lt;td&gt;Water&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;½ cup&lt;/td&gt;
&lt;td&gt;Rice&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;caption&gt;Mix With&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;8 oz&lt;/td&gt;
&lt;td&gt;Crab and/or salmon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;½ cup&lt;/td&gt;
&lt;td&gt;Cream cheese&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;½ cup&lt;/td&gt;
&lt;td&gt;Mayo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;¼ cup&lt;/td&gt;
&lt;td&gt;Rice vinegar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;½ tbsp&lt;/td&gt;
&lt;td&gt;Sugar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 tsp&lt;/td&gt;
&lt;td&gt;Salt&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;caption&gt;Layer (middle and top)&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;¼ cup&lt;/td&gt;
&lt;td&gt;Furikake&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;caption&gt;To Serve&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Avocado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Cucumber&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 packs&lt;/td&gt;
&lt;td&gt;Seaweed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content>
  </entry>
  <entry>
    <title>Spinach Artichoke Dip</title>
    <link href="https://pygochelidon.garden/garden/cooking/recipes/spinach-artichoke-dip/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/cooking/recipes/spinach-artichoke-dip/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;350°F · 20 min · serves ?&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;caption&gt;Base (1 qt dish, sprayed)&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;8 oz&lt;/td&gt;
&lt;td&gt;Cream cheese, softened&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⅔ cup&lt;/td&gt;
&lt;td&gt;Shredded Parmesan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;½ cup&lt;/td&gt;
&lt;td&gt;Shredded mozzarella&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;¼ cup&lt;/td&gt;
&lt;td&gt;Sour cream&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;¼ cup&lt;/td&gt;
&lt;td&gt;Mayonnaise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 clove&lt;/td&gt;
&lt;td&gt;Garlic, minced&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;to taste&lt;/td&gt;
&lt;td&gt;Pepper&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;caption&gt;Fold In&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;14 oz&lt;/td&gt;
&lt;td&gt;Artichoke hearts, drained, chopped&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6 oz&lt;/td&gt;
&lt;td&gt;Frozen spinach, thawed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content>
  </entry>
  <entry>
    <title>Salsa Verde Enchiladas</title>
    <link href="https://pygochelidon.garden/garden/cooking/recipes/salsa-verde-enchiladas/"/>
    <updated>2026-04-20T20:41:49Z</updated>
    <id>https://pygochelidon.garden/garden/cooking/recipes/salsa-verde-enchiladas/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;350°F · 25 min · serves ?&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;caption&gt;Sauté&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 clove&lt;/td&gt;
&lt;td&gt;Garlic, minced&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Olive oil&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;caption&gt;Sauce&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2 × 16 oz&lt;/td&gt;
&lt;td&gt;Guacamole mild salsa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16 oz&lt;/td&gt;
&lt;td&gt;Sour cream&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 cups&lt;/td&gt;
&lt;td&gt;Shredded cheese&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;caption&gt;Filling&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;4 cups&lt;/td&gt;
&lt;td&gt;Chicken, baked, chopped&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;td&gt;Broccoli, baked, chopped&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;caption&gt;Top With&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Shredded cheese&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content>
  </entry>
</feed>
