URI:
       rssnode_rudism.com.rss.xml - sfeed_tests - sfeed tests and RSS and Atom files
  HTML git clone git://git.codemadness.org/sfeed_tests
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       rssnode_rudism.com.rss.xml (331569B)
       ---
            1 <?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
            2     <channel>
            3         <title><![CDATA[Rudism.com]]></title>
            4         <description><![CDATA[Rudism.com]]></description>
            5         <link>https://rudism.com</link>
            6         <generator>RSS for Node</generator>
            7         <lastBuildDate>Mon, 14 Jun 2021 16:19:33 GMT</lastBuildDate>
            8         <atom:link href="https://rudism.com/rss.xml" rel="self" type="application/rss+xml"/>
            9         <item>
           10             <title><![CDATA[Pinebook Pro Arch Linux Alternative]]></title>
           11             <description><![CDATA[<p>In a <a href="/installing-arch-linux-on-the-pinebook-pro/">previous post</a> I talked a bit about setting up Arch Linux on the Pinebook Pro. That process relied on using a third-party <code>pacman</code> repo for the Pinebook Pro specific build and driver stuff which has disappeared and seems to be <a href="https://github.com/nadiaholmquist/archiso-pbp">no longer maintained</a>. As there’s still no official <a href="https://archlinuxarm.org/">Arch Linux ARM</a> Pinebook Pro support, I’ve decided that the next best thing is to use official Manjaro images to get as close to my familiar Arch Linux setup as I can. It’s not perfect (because it’s not Arch), but Manjaro is based on top of Arch Linux and it’s easier than the hoops you have to jump through to actually get Arch on the Pinebook Pro. Here’s my guide in which I detail the steps I went through to achieve the following goals:</p>
           12 <ul>
           13 <li>Full-disk LUKS encryption on root partition</li>
           14 <li>Minimal Manjaro install on the <em>Unstable</em> branch</li>
           15 </ul>
           16 <p>I take no responsibility for anything good or bad that happens as a result of following this guide. If you manage to brick your Pinebook Pro and think I’m somehow to blame, you can shoot me a nasty email. It’s OK, I won’t hold it against you. But I probably won’t reply. Make sure you’re plugged into a power outlet before starting this, because it takes a while, and running out of juice midway may leave your Pinebook Pro in an… <em>interesting</em> state.</p>
           17 <h2 id="Step-1-Obtain-Manjaro"><a href="#Step-1-Obtain-Manjaro" class="headerlink" title="Step 1 Obtain Manjaro"></a>Step 1 Obtain Manjaro</h2><p>I downloaded the <a href="https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-minimal/">Pinebook Pro Minimal</a> Manjaro image. This is a base install that doesn’t include any window managers or even xorg. You could pick one of the other images too if you wanted, but we’re only using it to perform the installation so it makes sense to optimize for the smallest possible size.</p>
           18 <p>It’s an <code>xz</code> archive, so decompress it and write it to an SD card. Replace the <code>/dev/some/device</code> with the path to the actual SD card you want to write the image to (be careful not to wipe something important unintentionally). Might need <code>sudo</code> to do the <code>dd</code> command depending on your setup.</p>
           19 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs plain">unxz Manjaro-ARM-minimal-pbpro-21.04.img.xz<br>dd if&#x3D;Manjaro-ARM-minimal-pbpro-21.04.img of&#x3D;&#x2F;dev&#x2F;some&#x2F;device status&#x3D;progress<br></code></pre></td></tr></table></figure>
           20 
           21 <h3 id="Step-1-1-Boot-Manjaro"><a href="#Step-1-1-Boot-Manjaro" class="headerlink" title="Step 1.1 Boot Manjaro"></a>Step 1.1 Boot Manjaro</h3><p>Stick the SD card into your Pinebook Pro and power it on. It should boot automatically without having to press any keys or anything. Once you’re in you’ll select what kind of keyboard your Pinebook Pro has, enter a username, password, timezone info, stuff like that. These are the settings that your SD card is using, not necessarily what you’ll be installing onto the Pinebook Pro. When you’re done you might have to wait a bit while it resizes the partition to fill your SD card, and it’ll reboot itself when done.</p>
           22 <h2 id="Step-2-Connect-to-the-Internet"><a href="#Step-2-Connect-to-the-Internet" class="headerlink" title="Step 2 Connect to the Internet"></a>Step 2 Connect to the Internet</h2><p>Once it’s done you should be able to log in using the username and password from step one, and be sitting at a shell prompt. I did a <code>sudo loadkeys dvorak</code> here because I’m a non-qwerty-boi. Then I set up my wifi connection thusly (as non-root):</p>
           23 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs plain">iwctl<br>[iwd]# station wlan0 connect my-network-name<br>Passphrase: ******<br></code></pre></td></tr></table></figure>
           24 
           25 <p>Obviously put your own wifi SSID and password in at the prompts. If you don’t see any messages you can probably assume it worked, but if you want to check, type <code>station wlan0 show</code> and you should see that you’re connected to your wifi. Then type <code>exit</code> to get back to the shell.</p>
           26 <p>At this point I did a <code>sudo pacman -Syyu</code> to update my SD card, but I don’t really know why&mdash;probably just force of habit, and I love watching those beautiful ASCII progress bars. If you’re following this guide, this may be a required step, because if your SD card image was too far out of date, then the next step where we install the Manjaro installer with <code>pacman</code> may fail. I also edited <code>/etc/vconsole.conf</code> to load my Dvorak keymap on the SD card by default. You can probably ignore that.</p>
           27 <p>After my system update completed, I rebooted.</p>
           28 <h2 id="Step-3-Install-the-Manjaro-Installer"><a href="#Step-3-Install-the-Manjaro-Installer" class="headerlink" title="Step 3 Install the Manjaro Installer"></a>Step 3 Install the Manjaro Installer</h2><p>I didn’t want to just flash one of the pre-built Manjaro images to my eMMC, because that method doesn’t support full disk encryption. Instead I decided to use the <a href="https://gitlab.manjaro.org/manjaro-arm/applications/manjaro-arm-installer">manjaro-arm-installer</a> package. I installed it with <code>pacman</code> like this:</p>
           29 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs plain">sudo pacman -S manjaro-arm-installer<br></code></pre></td></tr></table></figure>
           30 
           31 <p>The instructions then say you need to reboot. I was skeptical, but did it anyway just to be safe:</p>
           32 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs plain">sudo reboot<br></code></pre></td></tr></table></figure>
           33 
           34 <h2 id="Step-4-Install-Manjaro"><a href="#Step-4-Install-Manjaro" class="headerlink" title="Step 4 Install Manjaro"></a>Step 4 Install Manjaro</h2><p>For some reason, my Pinebook Pro was mounting the boot partition off the eMMC instead of the one on the SD card, so I unmounted it first. You may not need to do this:</p>
           35 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs plain">sudo umount &#x2F;boot<br></code></pre></td></tr></table></figure>
           36 
           37 <p>Then I started the installer:</p>
           38 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs plain">sudo bash manjaro-arm-installer<br></code></pre></td></tr></table></figure>
           39 
           40 <p>From the menus that followed I selected Pinebook Pro (obviously), Minimal Edition, and then entered the same information that I initially did during the SD setup (username, password, etc.). When asked to choose the installation media, I chose <code>mmcblk2</code>, since that’s my Pinebook Pro’s internal eMMC storage. Make sure to heed the warning that any existing data will be completely destroyed.</p>
           41 <p>For the filesystem I chose <code>ext4</code>, and I selected <code>Yes</code> when asked if I wanted the <em>“Experimental!”</em> encrypted root partition. Oh boy! This was followed by selecting a few other things (including timezone, keyboard layout, and the <em>correct</em> locale this time&mdash;<code>en_US.UTF-8</code> el estúpido burro!). After confirming my selections, the installer started doing stuff.</p>
           42 <p>After a little while it spit out a fun little message:</p>
           43 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs plain">Error: &#x2F;mnt&#x2F;mmcblk2: unrecognized disk label<br></code></pre></td></tr></table></figure>
           44 
           45 <p>I stuck my fingers in my ears and said “LA LA LA” and pretended not to see it. A bit of DuckDuckGoing seems to indicate it <a href="https://forum.manjaro.org/t/manjaro-arm-installer-error-dev-mmcblk0-unrecognised-disk-label/63480">is expected</a>.</p>
           46 <p>I was also prompted a couple times to set my full disk encryption password, and then the rest of this step involved watching more beautiful ASCII progress bars flashing across the screen.</p>
           47 <p>Near the end after it did a system update and ran <code>mkinitcpio</code>, there were some more errors, which I also pretended not to see:</p>
           48 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs plain">&#x3D;&#x3D;&gt; ERROR: module not found: &#96;i2c_hid&#39;<br>&#x3D;&#x3D;&gt; Generating module dependencies<br>&#x3D;&#x3D;&gt; WARNING: errors were encountered during the build. The image may not be complete.<br>error: command failed to execute correctly<br></code></pre></td></tr></table></figure>
           49 
           50 <h2 id="Step-5-Reboot-and-Fix-Stuff"><a href="#Step-5-Reboot-and-Fix-Stuff" class="headerlink" title="Step 5 Reboot and Fix Stuff"></a>Step 5 Reboot and Fix Stuff</h2><p>From here I ran <code>sudo poweroff</code>, removed the SD card, and powered the Pinebook Pro back on. I saw some semi-concerning prompts about bad CRCs, but my fingers were still in my ears and I was well into another verse of “LA LA LA,” so it was cool. Despite all that, I was prompted for my encryption password, which I entered, and then got to log in.</p>
           51 <p>At this point you’ll want to connect to wifi again, which I did by repeating the <code>iwctl</code> stuff from step two. I also did another <code>sudo pacman -Syyu</code> to update my new Manjaro installation, but it didn’t do anything (I think the installer did that for me already).</p>
           52 <p>Now, I’ll be completely honest here. I don’t really understand the next two steps. I cobbled them together from various sources and they seemed to fix some things, so I’m presenting them here as-is. The first is to get rid of the <code>i2c_hid</code> error when running <code>mkinitcpio</code>. I edited the file <code>/etc/mkinitcpio.conf</code> and removed <code>i2c-hid</code> from the <code>MODULES</code> list, then ran <code>sudo mkinitcpio -P</code>. It completed without errors. I don’t know why that module is in there to begin with, what it is, or why it’s missing. My guess is it’s something that got rolled into the mainline kernel so isn’t needed as an external module anymore, but I could be way off. Maybe you didn’t see any errors like that during the install, in which case don’t bother doing anything.</p>
           53 <p>The next step I don’t understand is to get rid of the weird CRC errors at boot time. To do that I replaced the stock <code>uboot</code> with the <code>bsp</code> one. I don’t know what that means, or what the consequences are (aside from fixing the boot messages), but this is how I did it:</p>
           54 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs plain">pacman -S uboot-pinebookpro-bsp<br>dd if&#x3D;&#x2F;boot&#x2F;idbloader.img of&#x3D;&#x2F;dev&#x2F;mmcblk2 seek&#x3D;64 conv&#x3D;notrunc<br>dd if&#x3D;&#x2F;boot&#x2F;uboot.img of&#x3D;&#x2F;dev&#x2F;mmcblk2 seek&#x3D;16384 conv&#x3D;notrunc<br>dd if&#x3D;&#x2F;boot&#x2F;trust.img of&#x3D;&#x2F;dev&#x2F;mmcblk2 seek&#x3D;24576 conv&#x3D;notrunc<br></code></pre></td></tr></table></figure>
           55 
           56 <h2 id="Step-6-Optional-Steps"><a href="#Step-6-Optional-Steps" class="headerlink" title="Step 6 Optional Steps"></a>Step 6 Optional Steps</h2><p>I updated my system to the <code>unstable</code> Manjaro branch, which is closer to Arch Linux (the packages are synced from Arch multiple times a day). Read the <a href="https://wiki.manjaro.org/index.php?title=Switching_Branches">wiki</a> to decide if that’s something you want to do:</p>
           57 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs plain">sudo pacman-mirrors --api --set-branch unstable<br>sudo pacman-mirrors --fasttrack 5<br>sudo pacman -Syyu<br></code></pre></td></tr></table></figure>
           58 
           59 <p>I also installed <code>base-devel</code> and <code>yay-bin</code> (my AUR-friendly <code>pacman</code> replacement of choice):</p>
           60 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs plain">sudo pacman -S base-devel<br>curl -OL https:&#x2F;&#x2F;aur.archlinux.org&#x2F;cgit&#x2F;aur.git&#x2F;snapshot&#x2F;yay-bin.tar.gz<br>tar zxvf yay-bin.tar.gz<br>cd yay-bin<br>makepkg -si<br></code></pre></td></tr></table></figure>
           61 
           62 <p><code>plymouth</code> is already installed on Manjaro, so I took some snippets from the Arch Linux <a href="https://wiki.archlinux.org/title/Plymouth">wiki</a> to configure it. I edited <code>/etc/mkinitcpio.conf</code> and added <code>plymouth</code> to the <code>HOOKS</code> after <code>base udev</code>, and replaced <code>encrypt</code> with <code>plymouth-encrypt</code>. I left the <code>MODULES</code> section alone. I also added <code>quiet splash vt.global_cursor_default=0</code> to the end of my <code>APPEND</code> line in <code>/boot/extlinux/extlinux.conf</code>. Upon rebooting, I was presented with the Manjaro splash screen and a graphical encryption password prompt.</p>
           63 <p>This fixed that:</p>
           64 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs plain">yay -S plymouth-theme-arch-logo<br>sudo plymouth-set-default-theme -R arch-logo<br></code></pre></td></tr></table></figure>
           65 
           66 <p>I’ve noticed that some time after booting I get the following error on the console:</p>
           67 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs plain">cdn-dp fec00000.dp: [drm:cdn_dp_request_firmware [rockchipdrm]] \*ERROR\* failed to request firmware: -11<br></code></pre></td></tr></table></figure>
           68 
           69 <p>I don’t know what that is or how to fix it yet. Everything seems to be working right now though, so my plan from here is to configure the system and install xorg and a window manager like normal. I’ll update this post if it turns out something is broken.</p>
           70 <p><strong>Edit:</strong> After a bit more tweaking, here is the <code>mkinitcpio.conf</code> file I’ve settled on, which seems to have cleared up some boot/shutdown errors I was seeing. I still get the <code>rockchipdrm</code> error, but everything that I use seems to be working, so I’m not worrying about that one for now.</p>
           71 <p><code>/etc/mkinitcpio.conf</code>:</p>
           72 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs plain">MODULES&#x3D;(panfrost drm rockchipdrm drm_kms_helper hantro_vpu analogix_dp rockchip_rga panel_simple arc_uart cw2015_battery iscsi_boot_sysfs jsm pwm_bl rtc_rk808 uhid)<br>BINARIES&#x3D;()<br>FILES&#x3D;()<br>HOOKS&#x3D;(base udev plymouth keyboard autodetect keymap modconf block plymouth-encrypt lvm2 filesystems fsck)<br>COMPRESSION&#x3D;&quot;cat&quot;<br></code></pre></td></tr></table></figure>
           73 
           74 <p>Remember to run <code>sudo mkinitcpio -P</code> if you edit that file.</p>
           75 <hr>
           76 <p><strong>Note:</strong> This is a highly cleaned-up and euphemistic account of what was actually a much more harrowing experience. The true story involves soft-bricking my Pinebook Pro a couple times, slicing my fingers open on the razor-sharp edges of its back-panel when opening it to find the eMMC hardware switch, and a lot of swearing and alcohol consumption. I got it in the end though.</p>
           77 ]]></description>
           78             <link>https://rudism.com/pinebook-pro-arch-linux-alternative/</link>
           79             <guid isPermaLink="true">https://rudism.com/pinebook-pro-arch-linux-alternative/</guid>
           80             <pubDate>Sun, 13 Jun 2021 13:39:00 GMT</pubDate>
           81         </item>
           82         <item>
           83             <title><![CDATA[Three Million CE - Episode 6]]></title>
           84             <description><![CDATA[<p>The station’s docking bay doors soundlessly swung open on Dak’s viewscreen, like the gaping maw of a hungry rust-covered space creature. Dak hated mining colonies–they stirred up too many unwanted memories. Under normal circumstances Dak wouldn’t have so much as farted in the colony’s direction as he blinked past, but for some reason they had gone out of their way to hail him.</p>
           85 <p>It wasn’t normal. Mining colonies in the Orubus Belt were xenophobic to the point of madness. The one Dak had grown up in would have preferred mass suicide to dealing with outsiders. That this colony was hailing passing strangers meant they must be in trouble. Real trouble. The kind of trouble that paid well.</p>
           86 <p>“Initiating automatic docking procedure.”</p>
           87 <p>The ship’s voice reminded Dak of his sister, to the extent that he had started calling it by her name. He didn’t believe in reincarnation, but the fantasy that Aylix somehow lived on in the ship’s computer brought him comfort.</p>
           88 <p>“What do your scans show, Aylix?” Dak asked out loud.</p>
           89 <p>“There are three thousand seven hundred and three humanoid lifeforms on board,” replied Aylix. “Two are present in the docking bay. Neither armed with conventional weapons.”</p>
           90 <p>Dak nodded. The station grew larger on the viewscreen at a steady pace.</p>
           91 <p>“I recommend caution,” Aylix added. “It could be a trap.”</p>
           92 <p>Dak changed into his carbon fiber bodysuit while Aylix finished docking. He pulled the hood up and slid its visor down over his eyes, and clipped his weapon harness across his chest. Two men in grime-covered overalls were waiting for him in the docking bay.</p>
           93 <p>“Best watch yourself here, stranger,” said one of the men. “We appreciate you answering the hail and all, but know that we got our eye on you.”</p>
           94 <p>“Appreciate the warm welcome,” said Dak. “Your message mentioned a reward.”</p>
           95 <p>The miner who had spoken–a toothpick compared to his silent companion–nodded, then looked Dak up and down. Unimpressed, he turned his attention to Aylix. “Never seen a ship like yours before,” said the miner. “She got any firepower to her?”</p>
           96 <p>“When she needs to,” said Dak. “Will she need to?”</p>
           97 <p>“I reckon she will,” said the miner. “Come. The Foreman will give you the details. Give my friend here your weapons while on board.”</p>
           98 <p>The taller, heavier, less talkative miner stepped forward and held out a hand that was larger than Dak’s head. Dak glared at him.</p>
           99 <p>“No weapons, no job,” said the smaller miner. “No job, no reward. Your choice.”</p>
          100 <p>Dak sighed.</p>
          101 <p>The interior of the station was hewn from rusty metal pipes. The walls, ceiling, and even the floor beneath the grated walkways were one big snaking maze. Dripping stalactites glistened in the station’s dim lighting. The air smelled of smoke and dampness.</p>
          102 <p>The two miners led Dak up a set of rattling stairs to a catwalk overlooking the refinery–a cavernous reservoir of smoking machinery and crisscrossing walkways and conveyor belts. The indistinct silhouettes of miners lining the walkways were visible through the haze. There was a door at the end of the catwalk; the two miners ushered Dak through.</p>
          103 <p>In the room, sitting behind a desk, was the most obese man Dak had ever seen. Presumably the Foreman. Dak recognized the symbol tattooed across his face at once–the mark of a Takkah agent. An unexpected sight; either Dak was further from the outer rim than he thought, or the Takkah Empire had expanded its control over mining operations in the Orubus Belt considerably.</p>
          104 <p>The miners waited outside the office. They didn’t bother introducing Dak.</p>
          105 <p>“I take it you’re interested in the reward,” the Foreman said. “What should I call you?”</p>
          106 <p>“Syphon,” said Dak. “Dak Syphon.”</p>
          107 <p>The Foreman leaned forward in his chair. “We can’t offer currency, Mr. Syphon. But you’ll get a full tank of fuel and a crate of this if you can help us.” The Foreman slid a half-empty bottle across his desk toward Dak. Dak picked it up and sniffed at it. Mining colony moonshine was the stuff of legends–near impossible for outsiders to get a hold of.</p>
          108 <p>Dak put the bottle back down on the desk. “What’s the job?”</p>
          109 <p>“There’s a large debris field on the other side of our planetoid, orbiting in opposition to the station,” said the Foreman. “Hidden in the debris is an old but functioning freighter ship.”</p>
          110 <p>“You want me to retrieve it?” asked Dak.</p>
          111 <p>“Hardly,” said the Foreman. “I want you to destroy it, and ideally the damn necromancer who lives there too.”</p>
          112 <p>Dak blinked. “The… necromancer?”</p>
          113 <p>“Yeah. The necromancer. A magister of the dark arts,” continued the Foreman. “He’s been a thorn in my side and a blight on this station for a hundred kilocycles, ever since we banished him from the colony. But now he’s taken it too far.”</p>
          114 <p>Dak crossed his arms. Was the Foreman pulling his leg, or just stupid? Necromancers were the things of old spacefarer’s tales.</p>
          115 <p>“He’s been sabotaging the station, making us look like fools when Takkah comes to collect the ore,” said the Foreman. “And now he’s started kidnapping our younglings!”</p>
          116 <p>“Kidnapping?” asked Dak.</p>
          117 <p>“Aye,” said the Foreman. “Two younglings went missing from their beds not a hundred cycles ago. Plus their matron and another boy, nearly younglings themselves.”</p>
          118 <p>“The necromancer took them?” Dak asked incredulously.</p>
          119 <p>“Look,” sighed the Foreman. “I don’t need you to believe me. Just destroy the ship and you’ll get paid.”</p>
          120 <p>“And the kids?” asked Dak.</p>
          121 <p>“The ship is the job,” said the Foreman. Then he shrugged. “If you happen to return the kids, alive and still of use to the colony, I’ll throw in a second crate of moonshine.”</p>
          122 <p>It seemed like a simple enough task, despite all the nonsense about necromancers. Dak nodded and stood up. “We have a deal.”</p>
          123 <p>Dak shook hands, then returned to the catwalk where the two miners waited to escort him back to Aylix.</p>
          124 <p>“Dak, can you hear me?” Aylix’s voice sounded in Dak’s head. She spoke through his endermic lattice–a net-like subspace communications relay embedded in the back of his neck. It allowed Aylix to speak to him privately.</p>
          125 <p>Dak sighed loudly.</p>
          126 <p>“Never mind, don’t answer,” said Aylix. “I know how much you hate it when people think you’re talking to them when you’re actually talking to me. I heard the whole conversation through your lattice. I don’t trust the Foreman. Why is he so unconcerned about getting the children back?”</p>
          127 <p>If this colony was like the one he grew up in, then Dak knew the answer. “How young do you start your kids in the mines?” Dak asked, speaking loud over the ruckus of the refinery.</p>
          128 <p>“If they can walk, they can work,” the skinny miner shouted. “Younglings are better at getting in them tight nooks in the mine.”</p>
          129 <p>Dak gritted his teeth.</p>
          130 <p>“Those poor kids,” Aylix said through his lattice. </p>
          131 <p>“Yeah,” whispered Dak, hoping that the clattering and hissing machinery would drown him out. “Those four missing are probably the lucky ones.”</p>
          132 <p>“Did you say something?” the skinny miner shouted.</p>
          133 <p>“God damn it,” said Dak.</p>
          134 <hr>
          135 <p>Calling the debris field “large” had been an understatement. The discarded machinery, wrecked ships, and other refuse took up ten times the volume of the planetoid it orbited. The colony must have been dumping its waste there for generations. Dak guessed less than a megacycle before the accretion disc reached around the planetoid and engulfed the mining station.</p>
          136 <p>“Any sign of the freighter, Aylix?” asked Dak.</p>
          137 <p>“Scanning,” said Aylix. “It may take a while, there’s a lot of trash out there.”</p>
          138 <p>Dak leaned back in his seat and put his feet up on the cockpit dash. “Better than the trash back on that station,” he said, then spat on the floor.</p>
          139 <p>“Was that anything like the colony you grew up in?” Aylix asked through his lattice.</p>
          140 <p>“Mmm hmm,” said Dak. “Not as bad though. They didn’t send us to the mines until we turned fourteen.”</p>
          141 <p>“Did you work in the mines?” asked Aylix.</p>
          142 <p>A distant memory forced itself into Dak’s consciousness. His Foreman glowering down at him through a haze of smoke, tinted red by flashing lights; a ringing in his ears.</p>
          143 <p>“I… left before I turned fourteen,” said Dak.</p>
          144 <p>“What happened?” asked Aylix.</p>
          145 <p>“An accident,” said Dak. “My sister, she…”</p>
          146 <p>“You mean Aylix,” interrupted Aylix. “My namesake.”</p>
          147 <p>“She… died. I didn’t want any part of the colony after that.”</p>
          148 <p>“And they let you leave?” asked Aylix.</p>
          149 <p>“No, it wasn’t that easy. I had to…”</p>
          150 <p>“Are you telling me the truth, Dak?” interrupted Aylix.</p>
          151 <p>Dak remained silent.</p>
          152 <p>“What did you do, Dak?” asked Aylix.</p>
          153 <p>Dak shook his head and squeezed his eyes shut.</p>
          154 <p>“What did you do to me?” Dak’s sister’s voice pleaded over his lattice.</p>
          155 <p>“Shut up!” cried Dak. “We’re done talking about this.”</p>
          156 <p>“A probe has located the freighter,” said Aylix, no longer using the lattice. Her voice had returned to normal.</p>
          157 <p>Dak leaned toward the viewscreen. “Show me.”</p>
          158 <p>The viewscreen flickered, then centered on a large shadow, slowly drifting against the thick backdrop of glittering debris.</p>
          159 <p>“Looks like a derelict,” said Dak.</p>
          160 <p>“The probe detects five humanoid lifeforms aboard,” said Aylix.</p>
          161 <p>The math added up. One kidnapper plus four kids. Dak grimaced. Firing off a couple guided missiles to take out the freighter felt like the safest course of action, but that would mean killing the kids and–more importantly–missing out on the second crate of moonshine.</p>
          162 <p>“Move in,” said Dak. “Let’s see if necromancers answer their doorbells.”</p>
          163 <hr>
          164 <p>They had stolen the smallest mining skiff they could find, figuring it would be a while before anyone noticed it missing. Jotu sat in the cramped cockpit next to Sh’ren, staring at the advancing stars on the viewscreen. The two younglings slept in the cargo bay behind them. Sh’ren was leaning forward in the co-pilot’s seat, rocking back and forth and wringing her fingers. </p>
          165 <p>“Relax, Sh’ren,” said Jotu. “If anyone was following us, they would have shown themselves by now.”</p>
          166 <p>“Did we do the right thing, Jotu?” asked Sh’ren.</p>
          167 <p>“Of course,” said Jotu. He reached over and stilled her fidgeting hands. “We had no choice.”</p>
          168 <p>Jotu placed his hand on Sh’ren’s belly. “You’ve started showing Sh’ren. You know as well as I what the Foreman would have done if he found out.”</p>
          169 <p>“But we have nothing, Jotu!” said Sh’ren. “Where will we go? How will we survive? We are as good as dead. And we have doomed not only ourselves, but the younglings as well! I think we should turn ba…”</p>
          170 <p>The door to the cargo bay flew open, and Taila and Koru burst into the cockpit.</p>
          171 <p>“No!” Taila cried as she climbed onto Sh’ren’s lap. “We don’t want to go back!”</p>
          172 <p>“Yeah!” said Koru, puffing his chest out. “I hate the colony! I want to go have adventures!”</p>
          173 <p>“What have I told you two about eavesdropping?” Sh’ren scolded the two younglings. “Return to bed at once!”</p>
          174 <p>“Yes, Sh’ren,” the two children said together. Taila slunk to the floor, and Koru’s heroic pose deflated. They shuffled back to the cargo bay, taking one last longing look before closing the door behind them.</p>
          175 <p>“Such brats,” said Sh’ren, though her warm smile revealed how she truly felt about the younglings. “Oh Jotu, I love them so much.”</p>
          176 <p>“I do too,” said Jotu. “That is why we can’t go back. What life is there for them in the colony? Koru is not strong like the other boys his age, you know what they do with boys like him. And Taila? The way some of the Overseers leer at her I think they want to take her as a breeder already…”</p>
          177 <p>“Stop it!” said Sh’ren. She started weeping. “Just stop!”</p>
          178 <p>Jotu squeezed Sh’ren’s hands. “When you became their matron you agreed to see to their needs,” he said. “That is what we are doing.”</p>
          179 <p>“But where will we go?” Sh’ren asked, staring hard at Jotu through the tears in her eyes.</p>
          180 <p>Jotu let go of Sh’ren’s hands and looked away. It was time to tell her.</p>
          181 <p>“Jotu? What is it?”</p>
          182 <p>Jotu closed his eyes. “Before we left, I was in contact with… With someone who can help us. He gave me coordinates to the nearest trade route. He gave me this.”</p>
          183 <p>Jotu retrieved a small object from a pouch on his belt and held it out–a black diamond-shaped device, glowing red along its edges. Sh’ren took it from him, holding it up to study it.</p>
          184 <p>“It’s a communication device,” said Jotu. “I can use it to signal a ship on the trade route, then exchange it for passage to… To somewhere safe. Where we can start a new life with the younglingss. Where you can…”</p>
          185 <p>“Who gave this to you, Jotu? Who in the colony would dare keep such a device secret from the Overseers and the Foreman?”</p>
          186 <p>“He is not of the colony,” said Jotu. “Not anymore.”</p>
          187 <p>Sh’ren’s eyes opened wide, and the color drained from her face. “Jotu, no!” She shoved the device back into Jotu’s hand and shrank back from him. Jotu returned the object to its pouch.</p>
          188 <p>“He is not what they say he is,” said Jotu. “He is my… He wished to end the injustices…”</p>
          189 <p>“He is a necromancer!” shouted Sh’ren.</p>
          190 <p>“That is not true,” said Jotu, trying hard to remain calm. “The real reason Kareth was banished…”</p>
          191 <p>“Do not speak his name!” Sh’ren cried in horror. She put her head in her hands and moaned. “No, Jotu. What have you done?”</p>
          192 <p>Sh’ren’s quiet weeping pierced Jotu’s heart. His confession had gone worse than he feared, and he hadn’t even fully explained the device. She will come around and accept the truth about Kareth, thought Jotu. She will have to.</p>
          193 <hr>
          194 <p>After a cycle of careful navigation through scattered wreckage and detritus, Aylix had approached close enough to illuminate the freighter with her external spotlights. It dwarfed her in size, and had the same rusty eroded look to it as the mining station. The lifeform scan was up on Dak’s console–all five blips were clustered together. One was much brighter than the others. Dak opened his mouth to ask why, but was interrupted.</p>
          195 <p>“We’ve been spotted,” said Aylix. “The freighter’s hailing us.”</p>
          196 <p>“Bring it up on screen.”</p>
          197 <p>A man’s head appeared on the viewscreen. A hood obscured the top half of his face in shadow; the lower half sported a long white beard that extended down off screen.</p>
          198 <p>“Go away,” said the man.</p>
          199 <p>“I’ll be happy to,” said Dak. “Once the children are safely returned to the colony.”</p>
          200 <p>“The children are none of your concern,” the man barked back. “Leave, or I’ll destroy your ship.”</p>
          201 <p>Aylix spoke through Dak’s lattice. “He’s bluffing. The freighter has some energy weapons, but they’re depleted.”</p>
          202 <p>“I’m not leaving without the children,” said Dak. He meant it. He had no intention of leaving without that second crate of moonshine.</p>
          203 <p>The man on the viewscreen fidgeted with his beard, then his expression hardened. “The children are dead,” he said. “Didn’t they tell you? I’m a necromancer–just destroy me and be done with it.”</p>
          204 <p>“I know they’re not dead,” said Dak slowly. “I scan all four of them with you.”</p>
          205 <p>The man’s steely expression gave way to panic. “What? No, those aren’t the children, damn it. The children are dead.” The man gave a frustrated grunt. “They sent you to kill me, right? Allow me to make your job easier.”</p>
          206 <p>The viewscreen blinked off.</p>
          207 <p>“He’s powering up the freighter’s engines,” said Aylix.</p>
          208 <p>“He’s running?” asked Dak.</p>
          209 <p>“Unlikely. The freighter’s propulsion systems are too structurally unsound.”</p>
          210 <p>Dak stroked his chin. “What kind of engines?”</p>
          211 <p>“Primitive combustion tech,” replied Aylix.</p>
          212 <p>“If the propulsion systems are shot, where does the energy go?” asked Dak.</p>
          213 <p>“Nowhere,” said Aylix. “It stays in the engines.”</p>
          214 <p>Dak’s eyes opened wide. “Does that mean what I think it means?”</p>
          215 <p>“Yes,” said Aylix. “Judging from the energy accumulation rate, I estimate nine hundred millicycles before they explode.”</p>
          216 <p>Dak nodded. “Hypothetically speaking, how much time would we need to get to a safe distance?”</p>
          217 <p><em>“Hypothetically,”</em> said Aylix, “a hundred millicycles should be sufficient to escape the blast radius.”</p>
          218 <p>“So, another hundred fifty to cut through the freighter’s hull. We could do it here, near the lifeform readings,” said Dak, pointing at his console and thinking aloud. “Plus fifty or so at the end to detach… That would give me six hundred millicycles to get those kids off the freighter.”</p>
          219 <p>“More like five hundred and eighty, now,” said Aylix.</p>
          220 <p>“Do it,” said Dak.</p>
          221 <p>“What happened to hypothetical?” asked Aylix.</p>
          222 <p>“Shit’s about to get real,” said Dak.</p>
          223 <hr>
          224 <p>After she calmed down, Sh’ren left to tell stories to the younglings in the cargo bay. Jotu listened to her from the cockpit and smiled. When he was a youngling, Jotu’s matron never told him bedtime stories. She never spoke to him at all, except to scold him. Sh’ren was different from anyone he had ever known–she had somehow avoided the insidious languor that infected every person in the colony old enough to work. Jotu had nearly succumbed himself, but meeting Sh’ren brought light to his life. She had saved him. Now it was his turn to save her.</p>
          225 <p>An incoming message beeped on his console. Jotu reached back and closed the door to the cargo bay, then answered the hail. Kareth appeared on the viewscreen. His hood was up, obscuring his eyes in shadow.</p>
          226 <p>“Father,” said Jotu. “We’ve reached the coordinates. Are you on your way?”</p>
          227 <p>Kareth shook his head and frowned.</p>
          228 <p>Jotu shifted uneasily in his seat. “What’s wrong, Father?”</p>
          229 <p>“I can’t join you as planned, Jotu. You must use the stone as I showed you…”</p>
          230 <p>“Why!?” interrupted Jotu. “You said you’d join us! We can’t do this alone! We’ll wait here, however long you need to…”</p>
          231 <p>“Jotu!” Kareth commanded. Jotu fell silent.</p>
          232 <p>“It is no longer safe to wait,” continued Kareth. “Signal a ship with the stone, but do not trade it. I have its sister stone–it will allow me to find you across any distance. I will join you when I can.”</p>
          233 <p>“I don’t want to leave you, Father,” said Jotu. He fought the tears welling in his eyes. “I’m scared.”</p>
          234 <p>“Fear is a transient thing,” said Kareth. “You mustn’t let it govern you. You were afraid when you found the stone and I spoke to you through it for the first time. But you overcame. You were scared when I told you I was the necromancer.”</p>
          235 <p>Jotu sniffled. “Yes, but you’re not…”</p>
          236 <p>“But you overcame,” interrupted Kareth. “You were scared when you gathered Sh’ren and the younglings and stole the mining skiff.”</p>
          237 <p>“Yes, but…”</p>
          238 <p>“But nothing,” said Kareth. “Fear must drive action, not inaction. If you wallow in it your fear will consume you, and then you will be truly lost. That is not who you are. You are Jotu. You are my son and you will do what you must to protect those you love.”</p>
          239 <p>Jotu thought back to the night he first found the stone and heard Kareth’s voice. It took time, but Jotu came to trust and care for that voice. In the colony, fathers and sons did not have relationships–child rearing was strictly for the matrons. But Jotu found a comfort in his bond with Kareth that rivaled even his feelings for Sh’ren and the baby in her belly. The thought of continuing on without his father filled Jotu with a profound sadness.</p>
          240 <p>“Very well, Father,” said Jotu. “I will do as you say.”</p>
          241 <p>Kareth nodded. “Jotu, my son. Before you go, know that I…”</p>
          242 <p>A sound from behind Kareth interrupted him. He turned, facing away from the viewscreen.</p>
          243 <p>“Father? What happened?” Jotu said, leaning forward.</p>
          244 <p>“Why are you here?” cried Kareth, stepping away from the viewscreen toward the center of the room. “I already told you, I killed them! And now I’ll kill you!”</p>
          245 <p>Jotu’s heart raced. He slammed his fists on the console. He watched Kareth fling his cloak back and reach for the blaster at his thigh.</p>
          246 <p>There was a flash. Kareth toppled backwards and his arms flailed. For a brief, sickening moment, Jotu thought he could see light through a fist-sized hole on Kareth’s back. Then Kareth collapsed out of sight, leaving a thin wisp of white smoke trailing up from the bottom of the viewscreen.</p>
          247 <p>“Father!” Jotu screamed. His breath came to him in short gasps. He felt the veins in his neck and forehead throbbing. He slammed his fists again in frustration.</p>
          248 <p>The smoke cleared, and a figure moved forward into focus–a man in a black jumpsuit with a visor over his eyes, holding a pistol. The man looked up from where Kareth’s lifeless body would be. Jotu gritted his teeth and seared the man’s appearance into his memory. The jumpsuit, the visor, a scar running below his left eye across the bridge of his nose, the hint of a miner’s tattoo peeking above the suit’s neckline.</p>
          249 <p>Jotu’s eyes narrowed. Once Sh’ren and the children are safe, he thought, I will find this man again. And I will kill him.</p>
          250 <hr>
          251 <p>Dak didn’t like the look the kid was giving him. He knew that look. He’d used it himself on occasion. Dak thought about telling the kid he was sorry–that the old man had given him no choice. But he knew it wouldn’t change anything. Instead he leveled his pistol at the console beneath the viewscreen and squeezed the trigger. The viewscreen went dark.</p>
          252 <p>The ship rumbled. A twang sounded above Dak’s head, and he ducked to avoid an electric cable swinging down from the ceiling. The freighter was shaking itself apart. If Dak were to believe the spacefarer’s tales, he would have expected to find it filled with the scattered remains of sacrificial victims, blood runes scribbled on the floors and walls, and stale air that smelled of death. But it was just a regular old ship. And the man he had killed was just a regular old man.</p>
          253 <p>Dak took a closer look at the body on the ground. The so-called necromancer  clutched something in his white-knuckled fist, refusing to let go even in death. Dak pried the fingers open. A small black diamond-shaped object clattered to the floor. Dak picked it up and studied it curiously. It glowed red along its edges.</p>
          254 <p>“Time’s almost up, Dak,” Aylix said through the lattice. “Grab the kids and get out of there.”</p>
          255 <p>The ship rumbled again. The ceiling in the corner of the room collapsed with a deafening roar. Dak pocketed the object and looked around.</p>
          256 <p>“I don’t see any kids,” said Dak.</p>
          257 <p>“You’re right on top of them,” said Aylix. “The engines are beyond critical. Forget the kids and get out of there.”</p>
          258 <p>The fog of dust from the collapsed ceiling thinned as it settled. Dak spotted four pods leaning against the far wall. They looked big enough to hold a person each. “I may have spotted them,” he said.</p>
          259 <p>“The engines have melted through their housings,” warned Aylix as Dak approached the pods. “Structural integrity is falling fast. Even if the engines don’t blow for a few hundred millicycles, the ship won’t last that long.”</p>
          260 <p>Through a small rectangular window on the nearest pod, dark-skinned with her eyes closed like she was sleeping, Dak saw not a child, but a woman. Curls of dark brown hair framed her tranquil face. Dak pressed his hand against the window. He had never seen anyone with skin so smooth.</p>
          261 <p>“They’re in some kind of pods,” said Dak. “Too heavy to move.”</p>
          262 <p>“Come back,” said Aylix. “If the engines don’t blow first, and assuming you make it here alive, I’ll see what I can do about the pods.”</p>
          263 <p>Dak ran his hands up and down the sides of the woman’s pod, failing to find a release mechanism. Beads of sweat ran down the back of his arms. The temperature on the ship was rising at an alarming rate.</p>
          264 <p>“Dak, you don’t want to die like this. Not like I did.” Aylix was speaking with his sister’s voice again.</p>
          265 <p>Dak pounded his fist against the coffin-like pod in frustration. He took one last look at the woman behind the glass, then sprinted out of the room.</p>
          266 <p>Running as fast as his legs could take him, lungs burning as he gasped the hot air, Dak lurched through the buckling hallway until he reached the hole Aylix had punched through the hull. As soon as he collapsed through, the airlock slammed shut. The ship shuddered as Aylix detached herself from the freighter.</p>
          267 <p>“Plotting a course for anywhere-but-here, top speed…” Aylix’s voice came over the intercom.</p>
          268 <p>“No!” cried Dak. “Not yet!”</p>
          269 <p>“Those engines are going to explode any nanocycle now, and take us with…”</p>
          270 <p>“Wait!” Dak struggled to his feet. He felt faint, and his skin was on fire, but he managed to stumble to the cockpit. The freighter–or what remained of it–was visible on the viewscreen. The blinding white glow of the overloaded engines burst through the freighter’s ruptured shell in a hundred places.</p>
          271 <p>“Use the pulse cannon, cut away the hull of the room I was in,” said Dak, breathing heavily.</p>
          272 <p>“Dak, this is crazy,” said Aylix. “You’re putting yourself in extreme danger. For what? Another woman?”</p>
          273 <p>“Do it!” yelled Dak.</p>
          274 <p>The viewscreen lit up with the pulse cannon’s blast. A section of the freighter’s hull shattered. The glow from the freighter’s engines intensified.</p>
          275 <p>“Zoom in,” said Dak. The viewscreen magnified the blasted section of the freighter’s hull.</p>
          276 <p>“Dak! You don’t want her! She’s not worth…”</p>
          277 <p>“There!” Among the floating shards of hull, Dak spotted two of the pods spinning away from the freighter–one intact, one charred black. Dak’s heart raced as he stared at the intact pod. Was it her?</p>
          278 <p>“Emergency protocols activated,” came Aylix’s voice.</p>
          279 <p>A slight vibration rattled through the ship. The viewscreen became a blur.</p>
          280 <p>“Wait! What the fuck are you doing?” cried Dak. “The pod…!”</p>
          281 <p>The viewscreen flashed, bathing the cockpit in brilliant white light. The vibrations rattling Aylix intensified to violent spasms as the shockwave from the explosion overtook her. The last image that flashed through Dak’s mind before he lost consciousness was the woman’s perfect, glowing face.</p>
          282 <hr>
          283 <p>Two miners stood guard next to Aylix’s open cargo bay doors. The same miners who had greeted Dak on his first visit to the colony, only this time they had rifles slung over their shoulders.</p>
          284 <p>“Where’s my payment?” asked Dak.</p>
          285 <p>“The Foreman’s on his way,” said the smaller miner. Dak wondered if the bigger guy ever spoke.</p>
          286 <p>Why was the Foreman getting involved? Dak’s business with the colony had concluded–they should have paid him and told him to fuck off as soon as he returned.</p>
          287 <p>Every inch of Dak’s skin burned and itched. Daggers pierced his muscles, and his head pounded. Aylix had suffered moderate damage from the explosion–half her sensor arrays were shot, most of her armor plating had disintegrated, and her computers reported failures in systems that Dak hadn’t known existed. But none of that mattered. All that mattered was that at the last second, Aylix had managed to save the pod. To save the woman.</p>
          288 <p>“I don’t like this,” Aylix said through Dak’s lattice.</p>
          289 <p>Dak didn’t like it either, but he needed the fuel and moonshine more than ever. Repairing Aylix would be expensive.</p>
          290 <p>“Mister Syphon,” the Foreman’s voice rang across the docking bay. Dak watched the fat man waddle toward him and the two miners.</p>
          291 <p>“The necromancer is dead,” said Dak. “Pay and I’ll be on my way.”</p>
          292 <p>“Ah, about that,” said the Foreman. “It’s my understanding that the necromancer destroyed the freighter himself. Overloaded the engines, as I heard it.”</p>
          293 <p>Dak shook his head. “I shot him.”</p>
          294 <p>“You have proof of this?” asked the Foreman. “How do I know you didn’t watch the old man commit suicide from the comfort of your ship and then fly straight back here.”</p>
          295 <p>“You think <em>this</em> happened to me in the comfort of my ship?” Dak cried, pulling the collar of his armor down to expose more scorched flesh.</p>
          296 <p>The foreman scratched his chin, a smug expression on his face. His eyes darted behind Dak toward Aylix. He frowned.</p>
          297 <p>“Seems I’m mistaken,” said the Foreman. “You were on the freighter. You found something that belongs to me.”</p>
          298 <p>Dak followed the Foreman’s gaze to the rear of Aylix’s cargo bay. The pod Aylix had rescued leaned against the back wall.</p>
          299 <p>“I have nothing that belongs to you,” Dak sneered.</p>
          300 <p>“Well, perhaps not to me,” said the Foreman. “A Takkah barge came through to collect ore a kilocycle ago. It towed the wreckage of a ship bearing the same markings as that pod. I suspect the necromancer pilfered it. I’ll make sure the Takkah Empire knows it was you who returned their missing property.”</p>
          301 <p>The foreman nodded at the two miners. The smaller one aimed his rifle at Dak; the larger one started moving toward the cargo bay.</p>
          302 <p>“Dak…” Aylix said through his lattice. “Dak think hard before you do anything hasty. There’s one of you and three of them.”</p>
          303 <p>“Exactly,” Dak said out loud. “Three…”</p>
          304 <p>The Foreman looked at Dak and cocked his head. “What did you…”</p>
          305 <p>The smaller miner was the first to fall. A hole ripped through his brain faster than it could signal his finger to pull the trigger.</p>
          306 <p>“Two…”</p>
          307 <p>Before the first miner’s corpse hit the ground, Dak hit the second with another head shot.</p>
          308 <p>“One…”</p>
          309 <p>The Foreman looked wide eyed at the two bodies, then fell to his knees. Dak took a couple steps and aimed his gun at the Foreman’s head.</p>
          310 <p>“Wait!” cried the Foreman. “Don’t you realize what Takkah will do to you if you kill me?”</p>
          311 <p>Dak studied the dark tattoo splayed across the fat man’s face. He was a marked agent. Property of the Takkah Empire.</p>
          312 <p>“I don’t know,” said Dak. “Maybe something like this?”</p>
          313 <p>He pulled the trigger. The Foreman’s body slumped forward with a satisfying thud at Dak’s feet.</p>
          314 <p>“Zero.”</p>
          315 <p>Dak put his hands on his hips and turned to face Aylix. “Well,” he said, “that didn’t go as planned.”</p>
          316 <p>“No shit,” said Aylix.</p>
          317 <p>“They’re probably not going to pay me now,” said Dak.</p>
          318 <p>“No shit,” said Aylix.</p>
          319 <p>“We better get outta here,” said Dak.</p>
          320 <p>“No shit,” said Aylix.</p>
          321 ]]></description>
          322             <link>https://rudism.com/three-million-ce-episode-06/</link>
          323             <guid isPermaLink="true">https://rudism.com/three-million-ce-episode-06/</guid>
          324             <pubDate>Sun, 25 Apr 2021 23:11:00 GMT</pubDate>
          325         </item>
          326         <item>
          327             <title><![CDATA[No Podcast This Month (03/21)]]></title>
          328             <description><![CDATA[<p>Unfortunately I haven’t had enough time to finish writing and editing the story I had planned for this month. Instead of rushing something out on schedule that I’m unhappy with, I’ve decided to skip the March episode and put it out at the end of April instead. So I’m just dropping this note, more for myself than anything, to reaffirm that I’m still committed to doing this thing.</p>
          329 ]]></description>
          330             <link>https://rudism.com/no-podcast-this-month-03-21/</link>
          331             <guid isPermaLink="true">https://rudism.com/no-podcast-this-month-03-21/</guid>
          332             <pubDate>Sat, 27 Mar 2021 21:23:00 GMT</pubDate>
          333         </item>
          334         <item>
          335             <title><![CDATA[Three Million CE - Episode 5]]></title>
          336             <description><![CDATA[<p>There was no doubt about it–the old man’s coordinates were in the Orubus Belt. The Belt was a lawless zone, claimed by none of the prefectures. Whispers of missing ships and entire crews gone mad kept all but the most foolhardy of adventurers far from its borders. All trade routes between neighboring systems circumnavigated it, leaving the Belt almost entirely uncharted. Zuli was a more than a little apprehensive, but she had promised to deliver the old man to his coordinates. And Zuli was not one to break her promises.</p>
          337 <p>Zuli made the sign of the Prophets across her face and muttered a short prayer. She pressed the comm button next to the navigational display on her console.</p>
          338 <p>“Are you certain of these coordinates?” Zuli said. “They are taking us into…”</p>
          339 <p>“Yes, I’m sure!” the old man’s voice came crackling over the comm system. “I know where it’s taking us. You promised! You can’t back out now!”</p>
          340 <p>Zuli frowned. She had no intention of breaking her promise.</p>
          341 <p>“No worries,” Zuli said. “The Prophets shall watch over us, even in the Orubus Belt.”</p>
          342 <p>“Yeah, yeah,” the old man’s voice blurted. “Just let me know when we approach the coordinates. I’ll have preparations to make.”</p>
          343 <p>Zuli scowled and released her finger from the comm button. She made the sign of the Prophets once more and asked for a blessing of patience. Zuli had taken pity on the old man at the New Antilles spaceport. She noticed him at the docks, dragging his large cargo container behind him and begging every passing merchant and trader for passage aboard their ship. Those who didn’t ignore him outright were quick to dismiss him once they learned of his destination. Now Zuli understood why.</p>
          344 <p>Zuli flicked her finger across the navigational chart on her console and flung it to the bridge’s main display. A spider web of specks and lines appeared near the bottom of the large glass screen, illuminating Zuli’s face with their dull green glow. The top half of the screen remained ominously blank. The blank space gradually expanded downward, pushing the web of charted systems and trade routes off the bottom edge of the display. Soon they would cross the border into the Orubus Belt.</p>
          345 <p>A red dot started flashing inside the empty map of the Orubus Belt. Zuli blinked and stared at the spot. The hairs on the back of her neck tingled, the way they always did when the Prophets were about to test her. Pulsing concentric circles expanded around the dot and faded away, like ripples in a red pond.</p>
          346 <p>A distress signal! Based on its proximity to their destination, intercepting the distress signal would require a slight deviation from their current heading. She tapped the alteration into her control panel, and felt an almost imperceptible shudder from the ship as it adjusted course.</p>
          347 <p>“What are you doing? Why have you changed course?” the old man’s voice boomed over the comm. “You promised!”</p>
          348 <p>Zuli sighed. “No worries, friend,” she replied. “I have detected a distress signal not far from your coordinates. I must investigate and help if I can. It is on the way.”</p>
          349 <p>“No!” cried the old man. “You promised to take me!”</p>
          350 <p>“I did promise,” said Zuli. “And I will take you. If you are unhappy with the path the Prophets have chosen for me then you are free to disembark and seek another ship whose captain is more willing to…”</p>
          351 <p>“Gah!” the old man cut Zuli off with a frustrated grunt. “Do what you must, but remember your promise.”</p>
          352 <p>Zuli sighed. The ship’s sensors indicated that the old man was still in the cargo hold. “It will be several cycles yet before we reach the distress signal or your destination,” she said into the comm. “Perhaps you would be more comfortable in one of the crew quarters, or here on the bridge with me.”</p>
          353 <p>“I’m fine where I am,” said the old man.</p>
          354 <p>The old man’s answer didn’t come as a surprise. He hadn’t left his cargo container alone for a nanocycle since boarding the ship. It was, perhaps, for the best; Zuli didn’t think he’d be very good company on the bridge. Something about the old man’s demeanor and the way he coddled that cargo container unsettled Zuli in a way she had never experienced before.</p>
          355 <p>Zuli released the comm button and returned her attention to the main display. The red pulsating dot–still alone in the wide empty space of the Orubus Belt–captivated her. She had heard dozens of tales of the Orubus Belt, and dismissed them as absurd. But now, as they approached its border, the seeds of doubt crept into her mind. The tales often told of dark, incomprehensible cosmic forces dwelling deep within the Belt. Zuli closed her eyes, recalling the horrific tales, and wondering what the Prophets had in store for her.</p>
          356 <hr>
          357 <p>Desmond sat under the desert planet’s perpetual night sky at the edge of what used to be a giant sand-worm pit. The nightly howling windstorms had filled it up, burying the sand-worm’s remains and turning the pit into more of a slight depression. Desmond stroked Bae in his lap and listened to Doyle calling Sarah to join them outside of the ship.</p>
          358 <p>“I am <em>not</em> eating one more of those… Those <em>things</em>!” Sarah shouted from inside.</p>
          359 <p>“Fine,” said Doyle, looking down at the mound of oozing baby sand-worms in his arms. “Just promise me you’ll crawl off somewhere before the end, I don’t want to see what death by starvation looks like.”</p>
          360 <p>That could take a while, thought Desmond. With an adequate supply of water even the frailest of human-derived species could potentially live for months without food. Desmond wondered how he knew that. It seemed to him that ever since he managed to side-load himself into the strange robot that now served as his body, he had gradually been gaining access to new knowledge. He was still an unprivileged user process running on the robot, though. Without root access, most of the robot’s systems outside of basic sensory input and motor functions remained an inaccessible mystery to him.</p>
          361 <p>“Don’t worry I’ll keep my distance,” Sarah called back. “The stench will keep me away.”</p>
          362 <p>Doyle sniffed his armpit and scrunched his nose. “Oh, <em>you’re</em> one to talk,” Doyle yelled toward the door of the ship. “Not exactly miss cinnamon and spice yourself.”</p>
          363 <p>Doyle trudged across the sand to where Desmond was sitting. He tossed the armful of baby sand-worms onto the ground. Bae leapt from Desmond’s lap to eat them. Doyle sighed as he watched the animal gleefully munching and snorting.</p>
          364 <p>“Is there anything we can do to get the stove or the bath back? Even for just a few hours?” Doyle asked Desmond.</p>
          365 <p>Desmond shook his head. “No bueno, bruh. There’s barely enough juice for the water purification and distress beacon.”</p>
          366 <p>Sighing, Doyle collapsed to a sitting position next to the pile of sand-worms. He grabbed one and shoved it in his mouth, making a face of disgust as he swallowed. “Any response to the beacon?”</p>
          367 <p>“Nah, it’s one-way. If there’s a response you’ll know. Dudes will just show up.”</p>
          368 <p>Sarah appeared at the ship’s doorway. She stomped across the sand to where Desmond and Doyle were sitting and, without saying a word, scooped a handful of baby sand-worms from the pile. Bae bounded after Sarah as she headed back to the ship.</p>
          369 <p>“You know,” said Desmond. Sarah stopped, her back still turned.</p>
          370 <p>“I think Heady would be pretty impressed with you guys,” continued Desmond. “He consumed thirty seven point five bugs in all the videos I had access to on the Ark. You guys probably got him beat a hundred times over by now. You should be proud.”</p>
          371 <p>Doyle gave a snort of laughter.</p>
          372 <p>“Fuck it,” said Sarah. She turned and sat down next to Doyle and Desmond. “I’ll do it for the content.” Sarah ate a worm.</p>
          373 <p>Desmond looked past Sarah to the large mound of sand in the distance where he had buried Bae’s mother. In spite of Doyle’s objections, Sarah had refused to consider the large rhino-pig’s potential value as a food source. The supply of baby sand-worms had also been dwindling since Desmond had killed the giant worm. Desmond had noted that the rate at which Sarah and Doyle were losing weight had accelerated, and both were suffering from a lack of energy. He wasn’t sure how much longer they could survive like this.</p>
          374 <p>A sudden gust of wind from above kicked sand up around the ship. Bae snorted and scurried over to Sarah, who scooped the tiny animal up in her lap. Another gust of wind hit, harder this time.</p>
          375 <p>“Is that a sandstorm?” asked Doyle.</p>
          376 <p>Desmond looked up. “Nah, bruh,” he said, and pointed. “Look!”</p>
          377 <p>A glowing spherical craft descended from the sky, blasting gusts of wind downward as it slowed. It settled on the sand twenty feet from the awe-struck trio. Desmond got to his feet and grabbed grub-smasher–the large metal scrap that Doyle used when fishing for sand-worms.</p>
          378 <p>The sphere went dark, then a doorway slid open and a ramp extended to the ground. A woman with short silver hair and orange eyes stepped out of the ship. Her silky dark blue robe flowed hypnotically in the wind.</p>
          379 <p>The woman made a gesture in front of her face with her hand, then started to speak. Desmond did not recognize the language.</p>
          380 <p>Doyle jumped to his feet. “Yeah! Oh God do we ever!” he cried, and started approaching the woman.</p>
          381 <p>“Dude, keep back, we don’t know why she’s here yet…” said Desmond.</p>
          382 <p>“What? She got the distress signal! She literally just asked if we needed a ride,” Doyle said.</p>
          383 <p>“Wait, you can understand her?” asked Sarah.</p>
          384 <p>A confused expression crossed Doyle’s face. He ran a finger across his forehead, like he was feeling for something.</p>
          385 <p>“Yeah,” said Doyle. “I mean, I know she’s not speaking English, but I understood every word she said.”</p>
          386 <p>The woman spoke again.</p>
          387 <p>“That’s right!” said Doyle. “That asshole who took the Ark, he shot something onto my forehead. She said it’s like a universal translator or something.”</p>
          388 <p>“Universal translator?” said Sarah. “What is this, Star Trek?”</p>
          389 <p>“Fascinating,” said Desmond.</p>
          390 <hr>
          391 <p>“The man who took your ship gave you this?” Zuli asked, turning the small white slate over in her hands. Its black markings didn’t look like any language she was familiar with.</p>
          392 <p>The man named Doyle stuffed two more green food cubes into his already-full mouth and nodded.</p>
          393 <p>“I’m sorry but I have no idea what this is,” said Zuli. She handed the slate back to Doyle.</p>
          394 <p>The man and his young female companion ate ravenously as Zuli watched.</p>
          395 <p>“So the two of you were stranded all alone on that planet? You poor things,” said Zuli.</p>
          396 <p>“Four of us,” said the girl named Sarah. Sarah pointed at the large robot who sat silent at the end of the mess-hall table, and at the tiny creature in her lap.</p>
          397 <p>“Ah, yes, my apologies,” said Zuli, bowing her head. The translator patch that Zuli had fabricated for the girl seemed to be working, but she couldn’t do anything for the robot. The robot had not understood any of the languages that Zuli knew how to speak, leaving her with no means of direct communication with the machine.</p>
          398 <p>The robot spoke to Doyle in their native tongue. Doyle nodded, then turned to Zuli.</p>
          399 <p>“Desmond says if you’ll grant him access to your ship’s computers, he can try to learn your language,” said Doyle.</p>
          400 <p>The robot spoke to Doyle again.</p>
          401 <p>“Also he wants to know if he can recharge somewhere.”</p>
          402 <p>“Of course,” said Zuli. “As you must eat food to live, your friend must also have sustenance. Desmond may join me on the bridge to interface with the computers and recharge once you are finished eating.”</p>
          403 <p>Zuli continued to watch Doyle and Sarah as they ate. The poor things were starving–she wondered what they had been surviving on, stranded for so long on that desert planet. They looked malnourished by any humanoid standards, and their clothing was ragged and stained. “I imagine you two could use some rest,” she said. “Perhaps while Desmond accompanies me to the bridge, you two would like to avail yourselves of the beds, baths, and clean clothes in this ship’s crew quarters…”</p>
          404 <p>“Baths!?” Sarah interrupted. Chunks of green food cube and spittle sprayed from her mouth. “Did you say baths?”</p>
          405 <p>Zuli smiled and nodded. “Please, for as long as the Prophets’ paths for us are aligned, this ship is your home as much as it is mine. There is one other passenger, an old man who has requested transport to coordinates that we currently approach. Once we have delivered him to his destination, I shall help you find your ship, if that is your wish.”</p>
          406 <p>Doyle grinned and nodded. Sarah shrugged and continued eating. The strange robot continued to sit in silence. Zuli crossed her hands in her lap and quietly asked the Prophets to bless her and her new companions as they ventured deeper into the Orubus Belt.</p>
          407 <hr>
          408 <p>Sarah stared awe-struck at a small nozzle jutting from the wall above her tub. The mere idea of soap had become such a distant memory that she refused to get excited. Then she tapped the dispenser and the minty aroma filled her nostrils and she felt like she might cry.</p>
          409 <p>It was the longest, most luxurious bath Sarah had taken in all the twenty two years she had been alive. She had shampooed her hair five times before it started to resemble something she was familiar with. She had initially avoided looking at the bathroom’s body-length mirror, afraid of what she might see. But after her bath, she managed to muster the courage.</p>
          410 <p>Sarah didn’t recognize the frail, alarmingly thin girl who stared back at her from the mirror. She used her finger to trace the hollow depression under her rib cage where her belly used to be, then the sunken shadows around her eyes. She wasn’t hungry–she felt bloated and wished she had eaten less of the green cubes that Zuli had given them. She wondered how that idiot Doyle was doing–the way he scarfed down those cubes had been embarrassing. He probably ate ten times the amount Sarah had.</p>
          411 <p>Despite her tummy ache, the bath had invigorated Sarah, and she decided to do some exploring before bed. She left her soiled security uniform on the bathroom floor and headed to her closet to find it stocked with clean clothes. Sarah dressed in a pair of tan cloth pants and a black silk top that fit her well enough, along with a pair of slippers. When Sarah opened the door that led to the ship, Bae jolted up, leaped from the bed, and bounded out behind her.</p>
          412 <p>To Sarah, the ship felt strangely reminiscent of the Nikola’s Children compound back on Earth. Clean, colorless, utilitarian hallways and rooms that served their purpose with little flourish. Everything in the ship seemed somehow softer than the compound had been. Rounded corners replaced sharp right angles. Instead of solid concrete, the floor felt slightly spongy, as though carpeted with a thin layer of rubber. The walls felt smoother–like some kind of plastic. The lighting–provided by a continuous illuminated strip running along the center of all the ship’s walls–felt warmer than the compound’s harsh fluorescents.</p>
          413 <p>It felt strange to think that her life with Nikola’s Children was over. She had spent almost her entire life inside the compound. Sarah had known it would end–they drilled the idea of colonizing the New Home into all the kids who grew up there, but that idea never seemed entirely real. Sarah had believed only because It’s what her father told her to believe.</p>
          414 <p>After Sarah passed through the mess hall and into another hallway, the lights flickered and took on a reddish hue. Sarah’s vision went hazy and she felt nauseated. Was it the ship that was trembling? Or her?. A whispering noise tickled the edge of Sarah’s perception. The whispering washed over her in waves, coming from further down the hall. Sarah placed her hand on one wall, bracing herself, and took a few shaky steps. Bae made distressed noises at her feet.</p>
          415 <p>“Shhh,” Sarah hushed the rhino-pig as she followed the whispering to its source. As she drew closer it sounded like a man’s voice, coming from a room further down the hall. Sarah stepped gingerly as she approached the doorway, then peeked inside. Stacks of gray crates filled the room, surrounding an old man at its center. Beneath a dark, hooded robe Sarah saw the man’s thin white beard below his shadowy, sunken eyes. He stood next to a container–different from the others in the room–and muttered at it. When his back turned, Sarah crept into the room and hid behind a crate.</p>
          416 <p>“We’ll be together again soon,” the man said in a strained, raspy voice. “I’ll perform the sacrament. I’ll deliver the sacrifice. Blood for blood. Blood for…”</p>
          417 <p>The old man started whimpering. Was he crying?</p>
          418 <p>“Oh my child,” said the man. “Oh my sweet, sweet child what have I done? What have I become?”</p>
          419 <p>The ship trembled and Sarah’s vision went blurry again. Fear gripped her chest. She leaned her back against the crate, breathing heavily. The old man’s raspy weeping terrified her.</p>
          420 <p>The noise of somebody falling in the hallway startled Sarah.</p>
          421 <p>“What was that? Who’s there?” the old man barked. Sarah grabbed Bae and scuttled to the other side of the crate, barely avoiding the old man’s gaze as he walked past on his way out of the room.</p>
          422 <p>The sound of the old man in the hallway faded. Sarah stood and looked at the container that the old man had been talking to. The ship trembled. The lights flickered. Sarah’s head felt hazy, like a fog had descended upon her senses. She walked to the container, and knelt to study it. There was a small dial at its base.</p>
          423 <p>The sense of dread that had gripped Sarah intensified, but she felt compelled to twist the dial. Bae backed away, growling. The container’s locking mechanism clicked, and white mist vented from its sides. Bae yelped, then scampered away. Sarah’s heart pounded as she gripped the edges of the lid, and pried it open.</p>
          424 <p>The billowing mist in the open container gradually thinned, revealing its grisly contents. Sarah’s eyes widened, and she gasped.</p>
          425 <hr>
          426 <p>Doyle rolled around on the sweat-soaked sheets covering the bed in his quarters. The discomfort had started while eating, and had grown into a bowling-ball sized pain in his gut.</p>
          427 <p>Laying on his back, Doyle tried massaging his abdomen, sending shivers of pain through his whole body. He swung his legs over and sat up on the edge of his bed. Did the ship have any laxatives? Did laxatives even exist three million years in the future?</p>
          428 <p>His legs wobbled as he stood up. Clutching his stomach, Doyle walked into the bathroom and splashed water on his face. He studied himself in the mirror. His grime-stained beard–fuller than it had ever been–was in stark contrast against the fresh, clean clothes he had managed to change into earlier. He needed to shave and clean up, but first he had to deal with the pain.</p>
          429 <p>Doyle stumbled across his quarters and out into the hallway. He started in the direction of the mess hall. Maybe there was medicine there, or maybe he could find some kind of sickbay. A ship this big had to have medical facilities.</p>
          430 <p>All Doyle knew was that bad things were happening inside of him, and he needed help.</p>
          431 <p>As he lurched through the hallway, Doyle felt his body tremble. Was that me, he thought, or did the whole ship shake? He remembered the tremors on the desert planet. His eyes darted to the ground. Was it… moving? His vision blurred and spun. The ground swirled, collapsing beneath him like a whirlpool of sand. The sand-worm, thought Doyle. How did it get on the ship?</p>
          432 <p>A sudden jolt of pain in Doyle’s abdomen sent him crashing to his knees. He clutched his stomach. There was a shriek–the sand-worm was attacking! Doyle raised his arms to cover his face. He opened his eyes, expecting to see the giant creature’s rows of concentric teeth closing in around him, but all he saw was the hallway ceiling. There was no shrieking monster. There was only Doyle, screaming at phantoms in his delirium.</p>
          433 <p>Doyle struggled back to his feet and continued down the hallway. He regretted eating all those food cubes. He regretted leaving his quarters. He should have tried to call Zuli for help. The quarters had nothing obvious like a telephone, but there were panels and buttons on the walls–surely there was something he could have used to communicate.</p>
          434 <p>Doyle reached the mess hall and spotted some green food cube leftovers. The sight made him retch. This was a terrible idea, he thought. Doyle rushed past the tables and chairs and into the hallway on the opposite side of the hall. He felt his legs–or the ship?–tremble again and he lost his balance. He teetered sideways and slammed hard into the wall before collapsing to the ground.</p>
          435 <p>“What was that? Who’s there?” Doyle heard a voice say from further down the hall. It was a man’s voice he didn’t recognize.</p>
          436 <p>“Help,” Doyle tried to yell. It came out as more of a hoarse whisper. “Get Zuli, I need help.”</p>
          437 <p>Through pain and blurry vision, Doyle saw what looked like an old man in a dark hooded robe approaching.</p>
          438 <p>“Yes,” said the old man.</p>
          439 <p>Doyle’s spirits lifted. He had done it! He had found help!</p>
          440 <p>The old man, Doyle’s savior, spoke as Doyle’s senses faded and he lost his grip on consciousness.</p>
          441 <p>“Yes,” the man said again. “You’ll do nicely.”</p>
          442 <hr>
          443 <p>“We’re less than a cycle away now, I should let the old man know,” said Zuli.</p>
          444 <p>She sat in a chair at the center of the bridge, facing a large curved glass display behind an array of control panels. Desmond was plugged into one of the control panels, charging his power banks and providing him access to the ship’s data stores.</p>
          445 <p>“My friends?” Desmond asked. He had learned enough of the woman’s language from the ship’s computer for rudimentary communications. It surprised him how efficiently his body was able to run his training routines–the Ark’s computers had processed data at a snail’s pace by comparison.</p>
          446 <p>“In their quarters,” said Zuli, after glancing at one of the control panels. “Getting some rest, I hope. They looked… weary.”</p>
          447 <p>“They had, difficult time on planet,” said Desmond.</p>
          448 <p>Zuli nodded. “It is good that the Prophets led me to you.”</p>
          449 <p>“Prophets?” Desmond asked. The word Zuli had used was unknown to him.</p>
          450 <p>“Yes, the Prophets,” said Zuli. “You do not know the Prophets? You have no… religion?”</p>
          451 <p>Desmond recognized that word. Heady Armstrong, the Youtuber whose videos his training routines had ingested for three million years, had strong opinions about religion.</p>
          452 <p>“Ah, religion,” said Desmond. “No, I have no religion.”</p>
          453 <p>Zuli nodded somberly. “Perhaps I can teach you of…”</p>
          454 <p>The ship shook slightly and one of the panels in front of Zuli started flashing. Desmond’s training algorithms stopped executing. Running diagnostics on his connection to the ship didn’t reveal any obvious problems. Why had his body terminated the processes? He stepped closer to Zuli and looked at the control panel. “What happened?” asked Desmond.</p>
          455 <p>“I do not know,” said Zuli. “A millicycle ago there was nothing at the old man’s coordinates. Now there is something.”</p>
          456 <p>“Something?” asked Desmond.</p>
          457 <p>“Yes,” said Zuli. She looked up at Desmond. “Oh! You are glowing!”</p>
          458 <p>Desmond looked down. Glowing blue lines had appeared, tracing intricate geometric patterns over his body. His body started spinning up dozens of new processes that he had never seen execute before.</p>
          459 <p>“Are we close to it?” asked Desmond.</p>
          460 <p>“Too close,” said Zuli. “I cannot stop our approach. The ship has stopped responding.”</p>
          461 <p>The ship shuddered again. “Can I see?” asked Desmond, pointing at the large curved glass panel.</p>
          462 <p>“Yes,” said Zuli. She made some gestures against the control panel, and the large glass display went dark.</p>
          463 <p>“Is that it?” asked Desmond.</p>
          464 <p>Zuli nodded and pointed at the large darkened screen. “Something is there,” she said.</p>
          465 <p>Desmond looked again. There was a spot at the center of the screen that looked darker than its surroundings. Desmond adjusted the gamma of his ocular sensors to get a better look. The dark mass at the center of the screen seemed to be moving–like its surface was a living, writhing thing.</p>
          466 <p>A series of whirring and clacking noises rang through the bridge. Desmond felt his body moving on its own, lowering its center of gravity, exposing concealed components. Canons extended from his forearms; his legs divided into an array of spider-like limbs; a device extended from his back and emitted a flash of blue light, surrounding Desmond’s transformed body in a translucent, shimmering honey-combed shield.</p>
          467 <p>Even if Desmond didn’t know what that thing on the screen was, his body did–and its response was to prepare for battle.</p>
          468 <p>“We should leave,” said Desmond.</p>
          469 <p>Zuli stared with her mouth open. “I am trying,” she said. An alarm sounded and another panel started blinking. Zuli tore her eyes from Desmond to look at it. “There is a new problem!” she cried.</p>
          470 <p>“What is it?” asked Desmond.</p>
          471 <p>“One of the ship’s airlocks is opening,” she said. “Your friend is inside!”</p>
          472 <p>“Whoah,” said Desmond. He tested his control over his new robot spider legs and prepared to see how fast they could go. “Tell me where.”</p>
          473 <p>–</p>
          474 <p>It was a child. Or at least what remained of one. Sarah stared at the grotesque figure inside the container in horror. It couldn’t have been more than five or six when it had died. The body was too twisted and mutilated to tell if it had been a boy or girl.</p>
          475 <p>The sound of footsteps in the hallway broke Sarah from her stupor. She grabbed the container’s lid and slid it back into place. The locking mechanism clicked, and the dial that had released the lid started tightening on its own.</p>
          476 <p>Sarah scrambled to another stack of containers. She peeked out from behind in time to see the old man reappear at the door. The old man scuffled to his container at the center of the room, muttering under his breath.</p>
          477 <p>The old man knelt next to his container and turned the dial to release the lid. Sarah tried to make out what he was saying. “The sacrifice is ready,” she heard, and a shiver ran down her spine.</p>
          478 <p>The old man tenderly lifted the corpse and cradled it in his arm. Then he reached back into the container and pulled out a rifle of some sort. Damn, thought Sarah–if she had known that had been hiding under the body she could have grabbed it herself.</p>
          479 <p>The old man started walking back toward the door. Sarah crouched, getting ready to sneak after him, but a familiar sound stopped her cold.</p>
          480 <p>The high pitched bark was unmistakable–Bae had made the same sound on the planet during the sand-worm attack. Still hiding, Sarah desperately looked toward the old man. She could hear Bae, but cargo containers by the door obscured her view. All she could see was the old man from the waist up, as he pointed his rifle at the ground in front of him.</p>
          481 <p>“Filthy creature,” the old man said. The rifle fired before Sarah could react, and then there was silence.</p>
          482 <p>It felt like her heart had stopped in her chest. Sarah wanted to scream, but she had lost the ability to speak; she wanted to lunge at the old man–to turn him into a mangled corpse like the one cradled in his arm, but she had lost the ability to move. She could only watch, grief-stricken as the old man kicked something from his path, then walked out into the hall.</p>
          483 <p>Sarah’s mind was a jumble–whether seconds passed or minutes, she wasn’t sure. She thought of Bae, and her anguish gradually dissipated, leaving blind rage in its place. She never had a pet growing up–they were unheard of in the Nikola’s Children compound. She knew from the internet that keeping pets was something that other people did, but she never understood why–until Bae. The little rhino-pig was everything to her–had been her sole source of happiness since she woke up on the desert planet. And now Bae was gone.</p>
          484 <p>It pained Sarah to think of Bae’s little body–kicked aside like a piece of trash. She shielded her eyes as she ran to the door. She would return for Bae later. Now was not the time for mourning. Now was the time for one thing and one thing only–seared into every fiber of Sarah’s being: Revenge.</p>
          485 <p>The ship started trembling again as Sarah stormed after the old man. The light emitted by the strips along the walls seemed to dim as she went. She slowed when she heard the old man’s voice around a corner ahead. An image of the rifle aimed at her face flashed through Sarah’s mind–a head-on assault wouldn’t work. She needed to be careful. She needed to keep the element of surprise.</p>
          486 <p>The dim lights were flickering now, creating an eerie strobe effect as Sarah peeked around the corner. The old man had laid the child’s body on the ground. He clutched the rifle and chanted, waving his hands over the corpse. Sarah couldn’t hear his words over the deep rumble of the trembling ship.</p>
          487 <p>A control panel jutted from the wall behind the old man. Across the hall was a large sealed door with a long window. It looked like the door they had boarded the ship through–on the other side had been a decompression chamber and another door that opened to the ship’s exterior. Something was moving in there. It was a man, frantically banging his fists against the window.</p>
          488 <p>Doyle!</p>
          489 <p>The old man continued his ritual around the child’s corpse, ignoring Doyle. Sarah blinked. She thought her mind was playing tricks on her–it looked like the area around the dead child’s body had grown darker. The black aura seemed to swell outward as the old man chanted. It almost looked alive–like a shadowy mass of writhing black tentacles.</p>
          490 <p>The ship’s trembling intensified. The old man finally glanced toward Doyle, who still pounded at the door. The old man leaned his rifle against the wall, turning his back to Sarah to face the airlock’s control panel.</p>
          491 <p>Now was her chance! Sarah charged into the hallway and sprinted as fast as she could. The old man turned to face her, and grabbed for his rifle. But it was too late–Sarah barreled into the old man, sending him soaring down the hallway. The rifle clattered on the ground and slid out of the old man’s reach. Sarah regained her balance and turned to the airlock. Doyle stared out at her. Sarah turned to the control panel and slammed her fist down on a large red button near its center.</p>
          492 <p>The inner airlock door hissed and slid up into the ceiling.</p>
          493 <p>Doyle didn’t look so good. He clutched his stomach and winced.</p>
          494 <p>“What the fuck, Sarah!” Doyle said. “How did you know that button would open this door and not the other one?”</p>
          495 <p>Sarah looked at the control panel. She hadn’t noticed before that there was a large green button next to the red one she had pressed. She opened her mouth to say “oops,” but the butt of the old man’s rifle slamming into the back of her head interrupted her. She cried out and stumbled into Doyle.</p>
          496 <p>“You’re too late!” cried the old man. “The sacrament is complete! All that remains is the sacrifice!”</p>
          497 <p>The old man pointed his rifle at Sarah and Doyle and took a step forward. Sarah stepped back into the airlock. “Why are you doing this?” she shouted.</p>
          498 <p>The old man, still aiming the rifle, glanced back at the child’s body on the ground.</p>
          499 <p>“It was my fault,” the old man said. His demeanor changed–a profound sadness replaced the vitriol in his voice. He wept. “She was all I had, and it was my fault. I’m sorry, I’m so sorry. This is the only way.”</p>
          500 <p>Sarah inched forward while the old man’s attention was on the child’s body. She stared at the rifle in his hands. Just a little closer and she could reach it.</p>
          501 <p>The old man spun to face Sarah. The sadness in his eyes vanished. “This is the only way,” he repeated. The venom had returned to his voice. “I have performed the sacrament of rebirth, now I offer the sacrifice. Blood for blood, a life taken for a life given!”</p>
          502 <p>Sarah saw the old man tighten his grip on the rifle. She shoved Doyle out of the way, then dove in the opposite direction. The blast passed between Sarah and Doyle, hitting the window on the door behind them–the one leading directly to the ship’s exterior. A crack formed across the window, and a creaking noise rang through the air.</p>
          503 <p>“Grab something!” Doyle shouted.</p>
          504 <p>Sarah scrambled toward the hallway and grabbed the edge of the inner doorway. The glass on the outer door shattered. A blast of air blew past and lifted Sarah’s body off the ground. Holding on for dear life, she looked up and saw the old man clutching the airlock control panel. His beard and the hood of his cloak flapped furiously in the rushing air.</p>
          505 <p>“Blood for blood!” the old man screamed over the howling wind. Then he let go of the control panel. Sarah watched aghast as the old man’s flailing body blew past, slammed into the outer door, then bent backwards at a horrifying angle as it squeezed through the shattered window and ejected into the cold vacuum of space.</p>
          506 <p>As Sarah watched the old man’s body tumble away from the ship, she felt something take hold of her arm. She looked and saw Desmond–at least, she thought it was Desmond. Blue luminescent lines covered his body, and he glowed with a shimmering light. His lower body had transformed into a dozen articulated spider-like legs.</p>
          507 <p>Desmond retrieved Doyle with one arm and pulled Sarah from the airlock with the other. Once they were both clear of the doorway, Desmond used one of his insect legs on the control panel, and the inner airlock door hissed shut. The gusting wind ceased, and silence descended upon the hallway.</p>
          508 <p>The blue lines on Desmond’s body and the light surrounding him faded away. His insect legs recombined into the humanoid legs Sarah was more familiar with, and what looked like a pair of cannons retracted back into his forearms.</p>
          509 <p>“I didn’t know you could do that!” Sarah said excitedly.</p>
          510 <p>“Dude, neither did I!” said Desmond.</p>
          511 <p>“Doyle did you see that? Did you know he could do that?”</p>
          512 <p>Doyle curled up into a fetal position and moaned.</p>
          513 <p>A familiar sound rang out from further down the hallway. Sarah perked up and spun around, hunting for the sound’s source. Could it be? But the old man had shot her!</p>
          514 <p>There at the end of the hallway, a large sooty stain on her side, stood Bae. The rhino-pig gave a honk, then started charging toward Sarah.</p>
          515 <p>Sarah felt like her heart was going to explode as she ran toward Bae. She scooped the little animal up in her arms and squeezed tight as she tumbled to the ground, laughing as Bae squealed with glee and licked her face.</p>
          516 <p>“Aw, look at that,” said Desmond. “Isn’t that cute?”</p>
          517 <p>“I think I shit myself,” moaned Doyle.</p>
          518 <hr>
          519 <p>Desmond sat at the mess hall table and stroked Bae in his lap. Despite a little charring, it seemed that the rhino-pig’s thick hide had absorbed most of the rifle’s shot.</p>
          520 <p>“So do you think you can do that blue glowy thing again? And those legs! Wow that was insane!” said Sarah.</p>
          521 <p>“I know right? But I can’t control it,” said Desmond. “It’s some kind of automated defense system.”</p>
          522 <p>“What triggered it?” asked Sarah. “Something that old man was doing?”</p>
          523 <p>“Nah,” said Desmond. He still didn’t know what the thing was that his body’s sensors had reacted to. “Something outside caused it. Whatever messed the ship up and made the lights go screwy also affected me.”</p>
          524 <p>Zuli entered the mess hall, carrying a covered tray in her arms. “Whatever that thing was, it weakened enough after the old man died that I was able to pull the ship away,” she said. She placed the tray on the table between Sarah and Doyle.</p>
          525 <p>“Did anyone see what happened to that gross corpse the old man had in his container?” asked Sarah.</p>
          526 <p>Doyle shrugged. “Probably blown out the airlock.”</p>
          527 <p>“I watched the old man go, but I didn’t see that,” said Sarah. “Did you see that?”</p>
          528 <p>“Where else could it have gone?” asked Desmond. He hadn’t seen the body when he arrived, after the old man had already died.</p>
          529 <p>“Anyway, what’s on the menu?” Doyle asked, staring suspiciously at the covered serving tray that Zuli brought.</p>
          530 <p>“Do not worry,” said Zuli. “The ship’s harvester drones processed a new food supply from the last planet they harvested. You will not have to eat food cubes again.”</p>
          531 <p>Doyle sighed with relief.</p>
          532 <p>“I’ll eat anything,” said Sarah. “I mean, anything is better than…”</p>
          533 <p>Zuli pulled the cover off the tray, revealing a steaming pile of baby sand-worms in a puddle of purple goo.</p>
          534 <p>Desmond looked down at Bae, who was squirming to get out of his arms. He lifted her onto the table. The little animal scampered to the pile of worms and started gobbling them down.</p>
          535 <p>Sarah calmly slid her chair away from the table, stood up, and turned away.</p>
          536 <p>“Where are you going?” asked Zuli.</p>
          537 <p>“To the airlock,” said Sarah. “There’s a big green button calling my name.”</p>
          538 ]]></description>
          539             <link>https://rudism.com/three-million-ce-episode-05/</link>
          540             <guid isPermaLink="true">https://rudism.com/three-million-ce-episode-05/</guid>
          541             <pubDate>Mon, 01 Mar 2021 05:59:00 GMT</pubDate>
          542         </item>
          543         <item>
          544             <title><![CDATA[Common Postgresql Mistakes]]></title>
          545             <description><![CDATA[<p>I’m not sure how common these mistakes are in general, but here are a couple gotchas that I’ve run into on more than one occasion.</p>
          546 <h2 id="The-Multiple-Meanings-of-STRICT"><a href="#The-Multiple-Meanings-of-STRICT" class="headerlink" title="The Multiple Meanings of STRICT"></a>The Multiple Meanings of <code>STRICT</code></h2><p>The <code>STRICT</code> keyword has different behaviors depending on where you’re using it.</p>
          547 <figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> my_column<br><span class="hljs-keyword">INTO</span> <span class="hljs-keyword">STRICT</span> my_variable<br><span class="hljs-keyword">FROM</span> my_table<br><span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span>=<span class="hljs-number">123</span>;<br></code></pre></td></tr></table></figure>
          548 
          549 <p>In the above example where you’re using <code>STRICT</code> in a <code>SELECT INTO</code> statement, it will cause that statement to raise an exception if anything other than exactly one row matches. So if there are more than one record in <code>my_table</code> that have <code>id=123</code> it would raise an exception, and if there are no rows that have <code>id=123</code> it would raise an exception. Without the <code>STRICT</code> keyword this statement would return the first matching row or null in each of those cases respectively without raising an exception.</p>
          550 <figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs sql">DEFINE FUNCTION my_function(<br>  my_parameter1 int,<br>  my_parameter2 text<br>) RETURNS int<br>  LANGUAGE sql STRICT<br>AS $$<br>  <span class="hljs-comment">-- do something useful</span><br>  <span class="hljs-keyword">select</span> <span class="hljs-literal">null</span>;<br>$$;<br></code></pre></td></tr></table></figure>
          551 
          552 <p>The above function is declared with the <code>STRICT</code> keyword. Based on the meaning of <code>STRICT</code> using <code>SELECT INTO</code>, I always make the mistake of thinking that a <code>STRICT</code> function must return exactly one result, and that if you end on a <code>SELECT</code> statement that tries to return more than one row, or returns null, then the function will raise an exception.</p>
          553 <p>That is <strong>not</strong> what <code>STRICT</code> means on a function, however. When a function is declared as <code>STRICT</code> it means that all the parameters to that function must be non-null. If a <code>STRICT</code> function is called and any of the provided parameters are null, then the function will immediately return null. No exceptions will be raised and none of the function’s body will be executed.</p>
          554 <h2 id="Array-ANY-Versus-ALL-in-WHERE-Clauses"><a href="#Array-ANY-Versus-ALL-in-WHERE-Clauses" class="headerlink" title="Array ANY Versus ALL in WHERE Clauses"></a>Array <code>ANY</code> Versus <code>ALL</code> in <code>WHERE</code> Clauses</h2><p>When you want to match rows in which some column value is contained in an array of possible matches, you can use <code>ANY</code> like this:</p>
          555 <figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> my_table<br><span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> = <span class="hljs-keyword">ANY</span>(my_id_array);<br></code></pre></td></tr></table></figure>
          556 
          557 <p>If you’re like me, you might think it logically follows that if you want to match rows in which your column value <em>is not</em> contained in an array of possible matches, you can simply flip the equality check:</p>
          558 <figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-comment">-- this is wrong</span><br><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> my_table<br><span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> != <span class="hljs-keyword">ANY</span>(my_id_array);<br></code></pre></td></tr></table></figure>
          559 
          560 <p>What the above statement is actually matching is the case where <code>my_table.id</code> is not equal to any value in the array. In other words, if <code>my_id_array</code> contains more than one distinct value then the above statement could never return any rows:</p>
          561 <figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs sql">WHERE 123 != ANY(456, 789) <span class="hljs-comment">-- returns false</span><br>WHERE 123 != ANY(123, 456) <span class="hljs-comment">-- returns false because 123 != 456</span><br></code></pre></td></tr></table></figure>
          562 
          563 <p>The correct way to query what you want is to either flip the equality check and also use <code>ALL</code> instead of <code>ANY</code>, or leave the equality check alone and wrap your whole clause in a <code>NOT</code>:</p>
codemadness.org:70 /git/sfeed_tests/file/input/sfeed/realworld/rssnode_rudism.com.rss.xml.gph:574: line too long