<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Preston Peranich</title><description>Research engineer, open-source contributor. Writing about Rust, Nix, and embedded systems.</description><link>https://prestonperanich.com/</link><item><title>Dotfiles, Part 5: Custom Tooling and the Platform Edges</title><link>https://prestonperanich.com/posts/dotfiles-part-5-tooling-edges/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dotfiles-part-5-tooling-edges/</guid><description>A Cloudflare CLI with a tunnel state machine, GNU Stow inside Nix, triple-platform service modules, secure credential hashing, declarative ZFS, and dev shell bootstrapping.</description><pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate><category>nix</category><category>tooling</category><category>infrastructure</category></item><item><title>Dotfiles, Part 4: Network-Aware Services — From Split Tunneling to Topology-Driven DNS</title><link>https://prestonperanich.com/posts/dotfiles-part-4-network-services/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dotfiles-part-4-network-services/</guid><description>ProtonVPN with network namespace split tunneling, ad-blocking derived from VLAN topology, DHCP-to-DNS sync, and dynamic WireGuard peer onboarding — all as composable NixOS modules.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><category>nix</category><category>networking</category><category>security</category><category>infrastructure</category></item><item><title>Dotfiles, Part 3: Secrets, Fleet Management, and the User Bridge</title><link>https://prestonperanich.com/posts/dotfiles-part-3-secrets-fleet/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dotfiles-part-3-secrets-fleet/</guid><description>How I bootstrap 9 machines with sops-nix, clan-core, and a user module pattern that solves the secrets chicken-and-egg problem — plus service exposure via Caddy and Cloudflare Tunnel.</description><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate><category>nix</category><category>security</category><category>infrastructure</category></item><item><title>Dotfiles, Part 2: A NixOS Home Router — From VLANs to Declarative DNS</title><link>https://prestonperanich.com/posts/dotfiles-part-2-nixos-router/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dotfiles-part-2-nixos-router/</guid><description>Building a full home router as composable NixOS modules — typed options, auto-derived nftables rules, VLAN isolation, and a custom Go CLI for Cloudflare DNS sync.</description><pubDate>Sat, 07 Mar 2026 00:00:00 GMT</pubDate><category>nix</category><category>networking</category><category>infrastructure</category></item><item><title>Dotfiles, Part 1: Why Dendritic Flakes Work for Managing 9 Machines</title><link>https://prestonperanich.com/posts/dotfiles-part-1-dendritic-flakes/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dotfiles-part-1-dendritic-flakes/</guid><description>How I use import-tree, flake-parts, and clan-core to manage NixOS, macOS, and WSL machines from a single flake — without maintaining a central import list.</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate><category>nix</category><category>dotfiles</category><category>infrastructure</category></item><item><title>DC Mini Part 7: Developer Ergonomics — xtask, Nix, and the Prelude</title><link>https://prestonperanich.com/posts/dc-mini-part-7-developer-ergonomics/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dc-mini-part-7-developer-ergonomics/</guid><description>Build orchestration with xtask, reproducible toolchains with Nix flakes, and a prelude pattern for managing imports in a complex embedded workspace.</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate><category>rust</category><category>embedded</category><category>eeg</category><category>open-source</category><category>nix</category><category>developer-experience</category></item><item><title>DC Mini Part 6: Multi-Priority Executors, DFU, and a PWM Neopixel</title><link>https://prestonperanich.com/posts/dc-mini-part-6-executors-dfu-neopixel/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dc-mini-part-6-executors-dfu-neopixel/</guid><description>Interrupt-driven task prioritization with embassy, a watchdog-protected dual-bank bootloader, and driving WS2812 LEDs with DMA — the infrastructure glue of DC Mini.</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><category>rust</category><category>embedded</category><category>eeg</category><category>open-source</category><category>embassy</category><category>dfu</category><category>neopixel</category></item><item><title>DC Mini Part 5: One Protocol, Two Transports</title><link>https://prestonperanich.com/posts/dc-mini-part-5-one-protocol-two-transports/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dc-mini-part-5-one-protocol-two-transports/</guid><description>How DC Mini defines its RPC interface once and serves it identically over USB and BLE — with code generation for Python and Rust clients.</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate><category>rust</category><category>embedded</category><category>eeg</category><category>open-source</category><category>ble</category><category>usb</category><category>rpc</category></item><item><title>DC Mini Part 4: Event-Driven Orchestration with derive(From)</title><link>https://prestonperanich.com/posts/dc-mini-part-4-event-driven-orchestration/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dc-mini-part-4-event-driven-orchestration/</guid><description>How DC Mini uses a central event bus and inversion of control to keep async sensor tasks decoupled — and why adding a new sensor is just a match arm.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><category>rust</category><category>embedded</category><category>eeg</category><category>open-source</category><category>async</category><category>embassy</category></item><item><title>DC Mini Part 3: The Bus Manager — Power-Aware Peripheral Sharing Without Alloc</title><link>https://prestonperanich.com/posts/dc-mini-part-3-bus-manager/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dc-mini-part-3-bus-manager/</guid><description>Building a generic bus lifecycle manager in no_std Rust that lazily initializes, reference-counts, and tears down shared peripherals — all without a heap.</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><category>rust</category><category>embedded</category><category>eeg</category><category>open-source</category><category>no_std</category></item><item><title>DC Mini Part 2: Typed Resource Bundles and the BSP Pattern</title><link>https://prestonperanich.com/posts/dc-mini-part-2-typed-resource-bundles/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dc-mini-part-2-typed-resource-bundles/</guid><description>How DC Mini uses Rust&apos;s type system to enforce pin allocation at compile time, preventing an entire class of embedded bugs.</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><category>rust</category><category>embedded</category><category>eeg</category><category>open-source</category><category>embassy</category></item><item><title>DC Mini Part 1: Designing Firmware for a Wearable EEG</title><link>https://prestonperanich.com/posts/dc-mini-part-1-firmware-architecture/</link><guid isPermaLink="true">https://prestonperanich.com/posts/dc-mini-part-1-firmware-architecture/</guid><description>A look at the architecture behind DC Mini — an open-hardware 16-channel EEG wearable built with Rust, embassy-rs, and a three-crate firmware design.</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><category>rust</category><category>embedded</category><category>eeg</category><category>open-source</category></item></channel></rss>