<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects on Seth Pyle</title><link>https://blog.sethpyle.com/projects/</link><description>Recent content in Projects on Seth Pyle</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://blog.sethpyle.com/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>Hiraeth</title><link>https://blog.sethpyle.com/projects/hiraeth/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sethpyle.com/projects/hiraeth/</guid><description>&lt;h2 id="a-smaller-local-cloud"&gt;A smaller local cloud&lt;/h2&gt;
&lt;p&gt;Hiraeth started from a recurring integration-testing problem: applications often need realistic AWS behavior, but a complete cloud emulator can be heavier and broader than the test actually needs.&lt;/p&gt;
&lt;p&gt;The project accepts signed AWS SDK requests through a local endpoint, stores service state in SQLite, and exposes a separate web interface for inspecting resources and request traces. The goal is fast startup, deterministic tests, and enough visibility to understand why a test failed.&lt;/p&gt;</description></item><item><title>Homelab Platform</title><link>https://blog.sethpyle.com/projects/homelab/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sethpyle.com/projects/homelab/</guid><description>&lt;h2 id="infrastructure-as-a-long-running-experiment"&gt;Infrastructure as a long-running experiment&lt;/h2&gt;
&lt;p&gt;My homelab began as three Raspberry Pi 4 nodes and a Synology NAS. It has grown into a mixed-architecture K3s cluster with an x86 worker for heavier media, document, and machine-learning workloads.&lt;/p&gt;
&lt;p&gt;The cluster runs the services my family actually uses, which makes it a useful place to practice the parts of infrastructure work that only appear over time: upgrades, storage migrations, observability, security boundaries, backups, resource contention, and recovery.&lt;/p&gt;</description></item><item><title>NES Oxide</title><link>https://blog.sethpyle.com/projects/nes-oxide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sethpyle.com/projects/nes-oxide/</guid><description>&lt;h2 id="learning-a-machine-from-the-inside"&gt;Learning a machine from the inside&lt;/h2&gt;
&lt;p&gt;NES Oxide is a small emulator built for fun and for the kind of systems learning that is difficult to get from documentation alone.&lt;/p&gt;
&lt;p&gt;It implements the official CPU opcodes, background and sprite rendering, Mapper 0 cartridges, keyboard input, and debugging tools for inspecting graphics state. It can run early games such as Donkey Kong and Pac-Man.&lt;/p&gt;
&lt;h2 id="why-emulation"&gt;Why emulation?&lt;/h2&gt;
&lt;p&gt;An emulator forces several areas of software engineering into the same room: binary formats, instruction decoding, timing, graphics pipelines, input, state machines, and debugging. Every visible glitch is a clue that the model of the hardware is incomplete.&lt;/p&gt;</description></item><item><title>Weekend Raytracer</title><link>https://blog.sethpyle.com/projects/weekend-raytracer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sethpyle.com/projects/weekend-raytracer/</guid><description>&lt;h2 id="following-light-through-a-scene"&gt;Following light through a scene&lt;/h2&gt;
&lt;p&gt;Weekend Raytracer is a small CPU renderer built as a hands-on way to understand the fundamentals behind physically based rendering.&lt;/p&gt;
&lt;p&gt;The renderer sends rays from a configurable camera into a scene, finds their intersections with geometry, and recursively follows scattered rays to accumulate emitted and reflected light. Multiple samples per pixel reduce noise and produce soft, progressively refined images.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.sethpyle.com/projects/weekend-raytracer-materials.jpg" alt="A ray-traced scene demonstrating different sphere materials"&gt;&lt;/p&gt;</description></item></channel></rss>