<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>radix63</title>
  <subtitle>63, just to annoy you</subtitle>
  <link href="https://blog.radix63.dk/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="https://blog.radix63.dk/" rel="alternate" type="text/html"/>
  <id>https://blog.radix63.dk/</id>
  <updated>2026-07-15T00:00:00Z</updated>
  <author>
    <name>eisbaw</name>
    <email>wabsie@gmail.com</email>
  </author>
  
  <entry>
    <title>My dev environment: Nix, git, just, backlog, Claude Code</title>
    <link href="https://blog.radix63.dk/posts/dev-environment/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/dev-environment/</id>
    <published>2026-07-15T00:00:00Z</published>
    <updated>2026-07-15T00:00:00Z</updated>
    <summary>The development half of my stack: Nix for reproducible software on any distro, git as the decentralized transport, just as the one command surface humans, AI agents, and CI all share, and backlog to keep tasks in git instead of racing to a server. Claude Code drives it: no MCPs, no giant third-party stacks, just context engineering over low-friction local tools. Local-first, and no containers for development.</summary>
  </entry>
  
  <entry>
    <title>The router that ran out of memory without leaking buffers</title>
    <link href="https://blog.radix63.dk/posts/router-out-of-memory/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/router-out-of-memory/</id>
    <published>2026-07-15T00:00:00Z</published>
    <updated>2026-07-15T00:00:00Z</updated>
    <summary>A Linksys MX4200 bled 12-16 MB of RAM per minute and it looked exactly like an ath11k buffer leak. It wasn&apos;t. The receive rings never grew. The bug was page-frag lifetime mixing: a bounded set of buffers pinning an expanding pile of physical pages. Here is how I found the bytes, why my first traces lied, and the source fix that stopped it.</summary>
  </entry>
  
  <entry>
    <title>My machine: Linux, NixOS, zellij</title>
    <link href="https://blog.radix63.dk/posts/my-machine/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/my-machine/</id>
    <published>2026-07-14T00:00:00Z</published>
    <updated>2026-07-14T00:00:00Z</updated>
    <summary>The machine half of my stack: declare the whole computer in one NixOS file and roll it back from the boot menu. Why Linux is unbeatable and too big to trust, why the distro barely matters, why Ansible is a mutato, and a terminal-first desktop (XFCE, zellij) reached over WireGuard, mosh, and xpra.</summary>
  </entry>
  
  <entry>
    <title>Docker-style cached layers, but for a Windows VirtualBox VM</title>
    <link href="https://blog.radix63.dk/posts/cached-windows-vm-layers/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/cached-windows-vm-layers/</id>
    <published>2026-07-01T00:00:00Z</published>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>A small bash library turns a VirtualBox Windows VM into a stack of cacheable snapshot layers. Each toolchain install is its own layer, keyed on the installer&apos;s hash. Second run is near-instant. Vagrant does not do this.</summary>
  </entry>
  
  <entry>
    <title>AI reverse-engineered my baby monitor and built a Rust client</title>
    <link href="https://blog.radix63.dk/posts/reversing-my-baby-monitor/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/reversing-my-baby-monitor/</id>
    <published>2026-06-30T00:00:00Z</published>
    <updated>2026-06-30T00:00:00Z</updated>
    <summary>I own a Philips Avent baby monitor. Decompile it and you find a Chinese Tuya camera. Here is what I wanted, how I took it apart with static analysis and live capture, and where the data actually goes.</summary>
  </entry>
  
  <entry>
    <title>Nucleus-rs: porting for ~free</title>
    <link href="https://blog.radix63.dk/posts/nucleus-rs/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/nucleus-rs/</id>
    <published>2026-06-23T00:00:00Z</published>
    <updated>2026-06-23T00:00:00Z</updated>
    <summary>Write a parallel algorithm once, with no workers, buffers, or barriers in it. A separate schedule maps it onto threads, an MPI cluster, or a microcontroller — so trying a new decomposition, a new transport, or a whole new platform becomes a small edit instead of a rewrite. The compiler synthesises the communication and proves it can&apos;t deadlock.</summary>
  </entry>
  
  <entry>
    <title>Niche: a Nix-native blog engine</title>
    <link href="https://blog.radix63.dk/posts/niche/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/niche/</id>
    <published>2026-06-23T00:00:00Z</published>
    <updated>2026-06-23T00:00:00Z</updated>
    <summary>The engine behind this blog: a small Rust binary wrapped by a Nix flake, built as a compiler toolchain — compile each post, link cross-references, compose the site. Nix is the config language and the build cache; there is no YAML.</summary>
  </entry>
  
  <entry>
    <title>About This Blog</title>
    <link href="https://blog.radix63.dk/posts/about-blog/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/about-blog/</id>
    <published>2024-01-01T00:00:00Z</published>
    <updated>2024-01-01T00:00:00Z</updated>
    <summary>The colophon: this blog is a small content-and-theme instance wrapping the niche engine in a thirty-line Nix flake. What lives here, what lives in niche, and the design principles.</summary>
  </entry>
  
  <entry>
    <title>Unix-like pipes in Haskell</title>
    <link href="https://blog.radix63.dk/posts/haskell-pipes/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/haskell-pipes/</id>
    <published>2012-05-05T00:00:00Z</published>
    <updated>2012-05-05T00:00:00Z</updated>
    <summary>Flipping the arguments of Haskell&apos;s apply operator gives something very like UNIX pipes.</summary>
  </entry>
  
  <entry>
    <title>Hello Euclid</title>
    <link href="https://blog.radix63.dk/posts/euclid/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/euclid/</id>
    <published>2012-05-04T00:00:00Z</published>
    <updated>2012-05-04T00:00:00Z</updated>
    <summary>A hello-world post testing MathJax: Euclid&apos;s proof that there are infinitely many primes.</summary>
  </entry>
  
  <entry>
    <title>about:mark</title>
    <link href="https://blog.radix63.dk/posts/about/" rel="alternate" type="text/html"/>
    <id>https://blog.radix63.dk/posts/about/</id>
    <published>2012-05-03T00:00:00Z</published>
    <updated>2012-05-03T00:00:00Z</updated>
    <summary>Who I am: an engineer from the schematic to the type system. Compilers, embedded firmware, and owning your own machines.</summary>
  </entry>
  
</feed>
