<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nick DeTello on Nick DeTello - Nicholas DeTello</title><link>https://nick.detello.com/</link><description>Recent content in Nick DeTello on Nick DeTello - Nicholas DeTello</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 02 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://nick.detello.com/index.xml" rel="self" type="application/rss+xml"/><item><title>A lease broker for one test board shared by CI and coding agents</title><link>https://nick.detello.com/blog/lease-broker-shared-test-board/</link><pubDate>Fri, 02 Oct 2026 00:00:00 +0000</pubDate><guid>https://nick.detello.com/blog/lease-broker-shared-test-board/</guid><description>Per-caller locks don&amp;rsquo;t compose when CI jobs, coding agents and I share one fragile board. What worked better was one broker that holds the board&amp;rsquo;s login, leases the board with two fencing tokens and quarantines it only when an outcome is unknown.</description></item><item><title>Finding a DSI driver bug by diffing registers against the vendor image</title><link>https://nick.detello.com/blog/dsi-driver-bug-register-diff-vendor-image/</link><pubDate>Fri, 02 Oct 2026 00:00:00 +0000</pubDate><guid>https://nick.detello.com/blog/dsi-driver-bug-register-diff-vendor-image/</guid><description>A register diff is only as good as the blocks its baseline covers. A review of a DSI start failure ruled out every candidate register fix, yet the fault sat in a block its baseline skipped, where a masked write had left an undocumented bit set.</description></item><item><title>Sharing a host's Nix store with a builder VM</title><link>https://nick.detello.com/blog/sharing-host-nix-store-builder-vm/</link><pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate><guid>https://nick.detello.com/blog/sharing-host-nix-store-builder-vm/</guid><description>A build VM can read its host&amp;rsquo;s Nix store through a read-only share. The host&amp;rsquo;s files stay immutable; the VM&amp;rsquo;s view of them doesn&amp;rsquo;t. Its garbage collector can hide shared files behind overlay whiteouts unless the VM is told, on every start, that those files are still needed.</description></item><item><title>Isolating a Nix remote builder in a microVM on a shared host</title><link>https://nick.detello.com/blog/isolating-nix-remote-builder-microvm-shared-host/</link><pubDate>Sun, 20 Sep 2026 00:00:00 +0000</pubDate><guid>https://nick.detello.com/blog/isolating-nix-remote-builder-microvm-shared-host/</guid><description>Distributed builds lend spare capacity to CI, but build scripts execute untrusted code. I isolate them in a builder VM with its own kernel, restricted access and resources the host can reclaim.</description></item><item><title>Rebuilding a kernel exploit with Nix</title><link>https://nick.detello.com/blog/kernel-privesc-nix-derivation/</link><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid>https://nick.detello.com/blog/kernel-privesc-nix-derivation/</guid><description>A kernel exploit targeted a program that NixOS keeps at a different path. Rebuilding dirtyfrag with Nix meant finding and pinning the exact executable, while exposing a kernel bug the build sandbox cannot contain.</description></item><item><title>A page-cache bug the Nix sandbox can't contain</title><link>https://nick.detello.com/blog/page-cache-bug-nix-sandbox/</link><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid>https://nick.detello.com/blog/page-cache-bug-nix-sandbox/</guid><description>A decryption can fail and still leave the file it read changed. The move that lands root isn&amp;rsquo;t reading the dropped binary - it&amp;rsquo;s reading what the recipe retargets.</description></item><item><title>My car has been grading itself since 2018. It keeps throwing the grades away.</title><link>https://nick.detello.com/blog/car-grades-itself-01/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://nick.detello.com/blog/car-grades-itself-01/</guid><description>Every car since ~1996 runs self-tests on its own emissions hardware and grades them against the manufacturer&amp;rsquo;s limits - then overwrites the results. This is about keeping them: reading OBD-II Mode 06 and watching the drift toward failure months before a fault code sets.</description></item><item><title>One Script, Two Websites, Sixty Seconds</title><link>https://nick.detello.com/blog/one-script-two-websites-60-seconds/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://nick.detello.com/blog/one-script-two-websites-60-seconds/</guid><description>Deploying a Phoenix app and a static site to a single DigitalOcean droplet with Nix flakes and deploy-rs - the full config, the scaling model, and what I&amp;rsquo;d do differently.</description></item><item><title>About Nick DeTello</title><link>https://nick.detello.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nick.detello.com/about/</guid><description>&lt;p&gt;I&amp;rsquo;m Nick DeTello, Nicholas on anything official. When I was nine, the oldest computer in the house
gave up on one of my father&amp;rsquo;s dying floppies in a minute - and the same disk copied perfectly if you sent
it over the network and waited an hour. Nobody could tell me why. I&amp;rsquo;ve been in roughly that business
since.&lt;/p&gt;
&lt;p&gt;I came into software sideways: a two-year degree, a support desk, then a tool called
&lt;a href="https://github.com/Nickdom1/Merby"&gt;Merby&lt;/a&gt; I wrote to get off it. It worked. That got me hired to write software. The CS degree came later, at night.&lt;/p&gt;</description></item></channel></rss>