<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pouya Ghourchiani — Blog</title><description>Pouya Ghourchiani — full-stack &amp; infrastructure engineer. Next.js, NestJS, TypeScript, and Rust. BidiMD &amp; NebulaGrid.</description><link>https://ghourchiani.ir/blog</link><lastBuildDate>Mon, 02 Nov 2026 00:00:00 GMT</lastBuildDate><atom:link href="https://ghourchiani.ir/rss.xml" rel="self" type="application/rss+xml"/><item><title>CVE-2026-98432: The Host Fix That Never Reached My Containers</title><link>https://ghourchiani.ir/blog/cve-2026-98432-docker-container-namespaces</link><guid isPermaLink="true">https://ghourchiani.ir/blog/cve-2026-98432-docker-container-namespaces</guid><description>I hardened a production Docker host against the Linux TCP flaw CVE-2026-98432. The host was fine. 19 of 20 containers were not — and Docker&apos;s own DNS was listening with MPTCP inside every one of them.</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate></item><item><title>AI Writes the Code. Who Owns the System?</title><link>https://ghourchiani.ir/blog/ai-writes-code-who-owns-the-system</link><guid isPermaLink="true">https://ghourchiani.ir/blog/ai-writes-code-who-owns-the-system</guid><description>AI made generating code cheap. Deciding whether it belongs, drawing real boundaries and proving it works is still an engineering job — and someone owns it.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Hello, ghourchiani.ir</title><link>https://ghourchiani.ir/blog/hello</link><guid isPermaLink="true">https://ghourchiani.ir/blog/hello</guid><description>Why this site exists — engineering notes on platforms, Rust tooling, and shipping under constrained networks.</description><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Why restricted-network tooling</title><link>https://ghourchiani.ir/blog/why-restricted-network-tooling</link><guid isPermaLink="true">https://ghourchiani.ir/blog/why-restricted-network-tooling</guid><description>Why Pouya Ghourchiani builds mirrors, installers, and gateways for places where crates.io, npm, and CDN defaults flake.</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Upstream Contribution Diary: Biome, Nitro, Watchexec, ripgrep</title><link>https://ghourchiani.ir/blog/upstream-contribution-diary</link><guid isPermaLink="true">https://ghourchiani.ir/blog/upstream-contribution-diary</guid><description>Lessons from merged upstream PRs (Biome, Nitro, Watchexec, ripgrep) and from keeping independent projects discoverable — small, evidence-backed changes.</description><pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Mirror-First DX: Tools That Assume Bad Egress</title><link>https://ghourchiani.ir/blog/mirror-first-dx</link><guid isPermaLink="true">https://ghourchiani.ir/blog/mirror-first-dx</guid><description>Design CLIs and installers as if registries will flake.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Axum Gateway Auth Boundaries Without Secrets</title><link>https://ghourchiani.ir/blog/axum-gateway-auth-boundaries</link><guid isPermaLink="true">https://ghourchiani.ir/blog/axum-gateway-auth-boundaries</guid><description>Where identity stops and routing begins in a Rust control-plane edge.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Open VSX vs Marketplace Packaging Checklist</title><link>https://ghourchiani.ir/blog/openvsx-marketplace-checklist</link><guid isPermaLink="true">https://ghourchiani.ir/blog/openvsx-marketplace-checklist</guid><description>Parity checklist from shipping BidiMD to both registries.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Zero-Downtime Static Releases on Workers</title><link>https://ghourchiani.ir/blog/atomic-static-releases</link><guid isPermaLink="true">https://ghourchiani.ir/blog/atomic-static-releases</guid><description>Gates, atomic deploy, and rollback for a personal SSG site.</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate></item><item><title>IndexNow and Sitemap Hygiene for a Bilingual SSG</title><link>https://ghourchiani.ir/blog/indexnow-bilingual-ssg</link><guid isPermaLink="true">https://ghourchiani.ir/blog/indexnow-bilingual-ssg</guid><description>Keep EN/FA URLs discoverable without lying to crawlers.</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate></item><item><title>NebulaGrid control plane notes</title><link>https://ghourchiani.ir/blog/nebulagrid-control-plane</link><guid isPermaLink="true">https://ghourchiani.ir/blog/nebulagrid-control-plane</guid><description>Design notes from Pouya Ghourchiani on NebulaGrid — Rust/Axum gateway plus React control UI for constrained ops networks.</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Atomic Static Swaps on Cloudflare Workers</title><link>https://ghourchiani.ir/blog/workers-atomic-static-swap</link><guid isPermaLink="true">https://ghourchiani.ir/blog/workers-atomic-static-swap</guid><description>How this site ships HTML without a half-deployed middle state.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate></item><item><title>BidiMD RTL preview notes</title><link>https://ghourchiani.ir/blog/bidimd-rtl-preview</link><guid isPermaLink="true">https://ghourchiani.ir/blog/bidimd-rtl-preview</guid><description>Why Mohammad Pouya Ghourchiani built BidiMD — bilingual Markdown preview that does not fight Persian/Arabic direction.</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Shipping Nest and Next Under NDA-Safe Constraints</title><link>https://ghourchiani.ir/blog/nda-safe-shipping-notes</link><guid isPermaLink="true">https://ghourchiani.ir/blog/nda-safe-shipping-notes</guid><description>How to write about production delivery without leaking private systems.</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Publishing to VS Marketplace and Open VSX</title><link>https://ghourchiani.ir/blog/publish-vscode-openvsx</link><guid isPermaLink="true">https://ghourchiani.ir/blog/publish-vscode-openvsx</guid><description>Checklist from BidiMD dual publishing. Hands-on notes from shipping software</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate></item><item><title>DNSTT SlipNet Config Notes in Rust</title><link>https://ghourchiani.ir/blog/dnstt-slipnet-notes</link><guid isPermaLink="true">https://ghourchiani.ir/blog/dnstt-slipnet-notes</guid><description>Generating and decoding configs for constrained connectivity experiments.</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Measuring and Switching APT Mirrors</title><link>https://ghourchiani.ir/blog/apt-mirror-cli</link><guid isPermaLink="true">https://ghourchiani.ir/blog/apt-mirror-cli</guid><description>CLI workflow for faster mirrors on constrained links.</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Person JSON-LD without fake awards</title><link>https://ghourchiani.ir/blog/person-jsonld-without-fake-awards</link><guid isPermaLink="true">https://ghourchiani.ir/blog/person-jsonld-without-fake-awards</guid><description>How Pouya Ghourchiani models Person schema honestly — alternateName spellings, sameAs, no invented prizes.</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Real-Time IoT Ingestion with NestJS</title><link>https://ghourchiani.ir/blog/nestjs-iot-ingestion</link><guid isPermaLink="true">https://ghourchiani.ir/blog/nestjs-iot-ingestion</guid><description>Patterns for queues and time-series ingestion without leaking private systems. Short engineering note from production work — practical, NDA-safe, no fluf</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate></item><item><title>One Rust Codebase, Three Interfaces</title><link>https://ghourchiani.ir/blog/aurum-three-interfaces</link><guid isPermaLink="true">https://ghourchiani.ir/blog/aurum-three-interfaces</guid><description>Sharing core logic across CLI, REST, and TUI.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Shipping Rust Installers with cargo-dist</title><link>https://ghourchiani.ir/blog/cargo-dist-installers</link><guid isPermaLink="true">https://ghourchiani.ir/blog/cargo-dist-installers</guid><description>Cross-platform installers for CLI tools without a custom packaging maze.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Fixing a Biome False Positive for forwardRef</title><link>https://ghourchiani.ir/blog/biome-forwardref-false-positive</link><guid isPermaLink="true">https://ghourchiani.ir/blog/biome-forwardref-false-positive</guid><description>What broke, what the PR fixed, and how to test lint edge cases.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Running Cargo on a Restricted Network</title><link>https://ghourchiani.ir/blog/restricted-network-cargo</link><guid isPermaLink="true">https://ghourchiani.ir/blog/restricted-network-cargo</guid><description>How Mohammad Pouya Ghourchiani keeps Rust builds moving when crates.io is unreliable — mirrors, vendor discipline, and installers.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item></channel></rss>