<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>imadestuff</title><link>https://imadestuff.com/tags/simulation/</link><description>Circuits, code, and half-finished projects out loud. Read the thing, then go do the thing.</description><language>en-us</language><lastBuildDate>Wed, 29 Jul 2026 23:10:10 -0700</lastBuildDate><atom:link href="https://imadestuff.com/tags/simulation/" rel="self" type="application/rss+xml"/><item><title>256 Universes in One Byte: Exploring 1D Cellular Automata</title><link>https://imadestuff.com/posts/cellular-automata-wolfram/</link><pubDate>Wed, 29 Jul 2026 18:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/cellular-automata-wolfram/</guid><description>&lt;p&gt;A row of cells. Each cell is either on or off. Every generation, each cell looks at itself and its two neighbors, then follows a rule to decide what it becomes next. That&amp;rsquo;s it. That&amp;rsquo;s the whole system.&lt;/p&gt;
&lt;p&gt;From this absurdly simple setup, you get chaos, fractals, traffic jams, and even a system capable of computing anything a laptop can compute. All from one byte of information.&lt;/p&gt;
&lt;h2 id="how-it-works"&gt;How It Works&lt;/h2&gt;
&lt;p&gt;The neighborhood is three cells wide: left, center, right. Since each cell can be 0 or 1, there are 2^3 = 8 possible patterns. A rule assigns an output (0 or 1) to each pattern. Eight binary choices = one byte = a number from 0 to 255.&lt;/p&gt;</description></item><item><title>Try My Physics Simulations: Live in Your Browser</title><link>https://imadestuff.com/posts/interactive-physics-notebooks/</link><pubDate>Wed, 29 Jul 2026 12:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/interactive-physics-notebooks/</guid><description>&lt;p&gt;I built a &lt;a href="https://imadestuff.com/posts/physics-simulation-engine/"&gt;physics simulation library&lt;/a&gt; that models springs, pendulums, epidemics, gravity, and more. The simulations run locally with matplotlib, but you can also explore them interactively through Jupyter notebooks, no install required.&lt;/p&gt;
&lt;p&gt;Click any button below to launch a live notebook in your browser via &lt;a href="https://mybinder.org"&gt;Binder&lt;/a&gt;. It takes about 30-60 seconds to spin up the first time (it&amp;rsquo;s building a fresh Python environment from my GitHub repo), then you&amp;rsquo;re in a full Jupyter session where you can run cells, tweak parameters, and see the results.&lt;/p&gt;</description></item><item><title>What Happens After You Submit Your First Pull Requests</title><link>https://imadestuff.com/posts/open-source-what-happens-after/</link><pubDate>Mon, 13 Jul 2026 12:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/open-source-what-happens-after/</guid><description>&lt;p&gt;A few days ago I submitted 10 pull requests to 7 different open source repos. I&amp;rsquo;d never done a PR before that day. Today I checked back on all of them and learned that submitting is the easy part. What happens next is where the real lessons are.&lt;/p&gt;
&lt;h2 id="the-scorecard"&gt;The Scorecard&lt;/h2&gt;
&lt;p&gt;Out of 10 PRs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 merged (Sentinel-AI, docs cleanup)&lt;/li&gt;
&lt;li&gt;3 closed without merging&lt;/li&gt;
&lt;li&gt;6 still waiting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;rsquo;s a 25% merge rate on decided PRs. Sounds low but it&amp;rsquo;s actually normal for someone doing rapid-fire first contributions. Here&amp;rsquo;s why the three got closed, and what each taught me.&lt;/p&gt;</description></item><item><title>I Built an Open Source Contribution Toolkit in 57 Tokens, Then Submitted 7 PRs in One Session</title><link>https://imadestuff.com/posts/open-source-contribution-toolkit/</link><pubDate>Thu, 09 Jul 2026 12:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/open-source-contribution-toolkit/</guid><description>&lt;p&gt;I&amp;rsquo;m a beginner programmer. I know what loops do, I can read Python, and I&amp;rsquo;ve done basic git pushes and pulls. But I&amp;rsquo;d never submitted a pull request. I didn&amp;rsquo;t even know what a PR was a few hours ago.&lt;/p&gt;
&lt;p&gt;Now I have 7 pull requests across 3 different repos, including a bug fix in a famous 3,259-star chess engine, and a fully tested toolkit that helps anyone find and contribute to open source projects.&lt;/p&gt;</description></item><item><title>Building a 6502 Simulator in Python (Part 2)</title><link>https://imadestuff.com/posts/building-a-6502-simulator/</link><pubDate>Wed, 08 Jul 2026 12:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/building-a-6502-simulator/</guid><description>&lt;p&gt;&lt;em&gt;From a 12-instruction teaching CPU to a full MOS 6502 emulator, inspired by Ben Eater&amp;rsquo;s breadboard projects.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="why-the-6502"&gt;Why the 6502?&lt;/h2&gt;
&lt;p&gt;The MOS 6502 is the processor that defined home computing in the late 1970s and early 1980s. It ran the Apple II, the Commodore 64, the Atari 2600, and the Nintendo Entertainment System. It powered the first affordable personal computers and launched an industry.&lt;/p&gt;
&lt;p&gt;What makes it perfect for a simulator project:&lt;/p&gt;</description></item><item><title>Building a CPU Simulator in College (Part 1)</title><link>https://imadestuff.com/posts/cpu-simulator-college/</link><pubDate>Tue, 07 Jul 2026 14:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/cpu-simulator-college/</guid><description>&lt;p&gt;&lt;em&gt;The original MM1 processor simulator: a custom instruction set architecture built in Python as a student.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-assignment"&gt;The Assignment&lt;/h2&gt;
&lt;p&gt;In 2004, week 5 of the Modeling Motion program introduced something unexpected: we weren&amp;rsquo;t simulating springs or epidemics anymore. We were building a computer from scratch, in software.&lt;/p&gt;
&lt;p&gt;The assignment was to implement a simple processor simulator. Not a real CPU architecture like x86 or ARM, but a custom one designed for teaching: the &lt;strong&gt;MM1&lt;/strong&gt; (Modeling Motion 1). It had 8 registers, 64 words of memory, a 12-bit instruction format, and just enough instructions to write meaningful programs.&lt;/p&gt;</description></item><item><title>Rendering a 3D Rubik's Cube with Matplotlib</title><link>https://imadestuff.com/posts/rubiks-cube-matplotlib/</link><pubDate>Tue, 07 Jul 2026 12:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/rubiks-cube-matplotlib/</guid><description>&lt;p&gt;&lt;em&gt;How to draw a fully interactive Rubik&amp;rsquo;s cube using Poly3DCollection, handle keyboard events for face rotations, and integrate the Kociemba two-phase solver.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="why-matplotlib-for-a-rubiks-cube"&gt;Why Matplotlib for a Rubik&amp;rsquo;s Cube?&lt;/h2&gt;
&lt;p&gt;Rubik&amp;rsquo;s cube visualizations typically use OpenGL, Three.js, or a game engine. Using matplotlib&amp;rsquo;s &lt;code&gt;mpl_toolkits.mplot3d&lt;/code&gt; is unconventional. It&amp;rsquo;s designed for scientific plotting, not real-time 3D interaction. But it has one huge advantage: zero dependencies beyond what you already have for data visualization. No WebGL, no GPU shaders, no build pipeline. Just &lt;code&gt;pip install matplotlib&lt;/code&gt; and you have a working 3D cube.&lt;/p&gt;</description></item><item><title>Building a Physics Simulation Engine in Python</title><link>https://imadestuff.com/posts/physics-simulation-engine/</link><pubDate>Mon, 06 Jul 2026 12:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/physics-simulation-engine/</guid><description>&lt;p&gt;&lt;em&gt;How the physics_modeling package is architected: base classes, numerical integrators, separation of physics from visualization, and property-based testing.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-core-abstraction"&gt;The Core Abstraction&lt;/h2&gt;
&lt;p&gt;Every physics simulation answers the same question: given a system&amp;rsquo;s current state, what is its state at the next instant? Whether you&amp;rsquo;re modeling a spring, an epidemic, or a galaxy of gravitating bodies, the computation follows one pattern: compute derivatives, advance time, repeat.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;physics_modeling&lt;/code&gt; package encodes this pattern in a &lt;code&gt;Simulation&lt;/code&gt; base class:&lt;/p&gt;</description></item><item><title>Modernizing Legacy Code: From 2004 VPython to Python 3.14</title><link>https://imadestuff.com/posts/modernizing-legacy-code/</link><pubDate>Sun, 05 Jul 2026 12:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/modernizing-legacy-code/</guid><description>&lt;p&gt;&lt;em&gt;Taking old college physics simulations written twenty years ago and getting them running on modern Python.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-time-capsule"&gt;The Time Capsule&lt;/h2&gt;
&lt;p&gt;In 2004, I was a student at The Evergreen State College in a program called Modeling Motion. We wrote Python simulations of physics phenomena (springs, gravity, epidemics, particle collisions) using a library called VPython. I was learning physics and programming simultaneously, translating equations of motion into running code for the first time.&lt;/p&gt;</description></item><item><title>Play Space MUD: A Free Browser Game</title><link>https://imadestuff.com/posts/play-space-mud/</link><pubDate>Wed, 01 Jul 2026 14:00:00 -0500</pubDate><guid>https://imadestuff.com/posts/play-space-mud/</guid><description>&lt;p&gt;I made a game. It&amp;rsquo;s free, it runs in your browser, and you can play it right now:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://play.imadestuff.com:4001"&gt;play.imadestuff.com:4001&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No download. No account creation on some third-party platform. You open the link, make a character name and password, and you&amp;rsquo;re in.&lt;/p&gt;
&lt;h2 id="what-it-is"&gt;What It Is&lt;/h2&gt;
&lt;p&gt;Space MUD is a text-based multiplayer game. You type commands, read descriptions, and explore a derelict space station. Think of it like a collaborative fiction that you interact with by typing things like &lt;code&gt;look&lt;/code&gt;, &lt;code&gt;north&lt;/code&gt;, &lt;code&gt;attack drone&lt;/code&gt;, or &lt;code&gt;repair reactor&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Building Space MUD: A Text Game About Robots on a Space Station</title><link>https://imadestuff.com/posts/building-space-mud/</link><pubDate>Wed, 01 Jul 2026 12:00:00 -0500</pubDate><guid>https://imadestuff.com/posts/building-space-mud/</guid><description>&lt;p&gt;The premise is simple: you wake up on a broken space station. You don&amp;rsquo;t remember anything. You start exploring, picking up items, talking to other units, repairing systems. And at some point it clicks: you&amp;rsquo;re not a person. You&amp;rsquo;re a robot. The whole game uses mechanical language from the start. Your health is &amp;ldquo;integrity.&amp;rdquo; You don&amp;rsquo;t sleep, you go idle. When you die, it&amp;rsquo;s an &amp;ldquo;emergency reboot.&amp;rdquo; The station doesn&amp;rsquo;t call you a crew member. It calls you a unit.&lt;/p&gt;</description></item><item><title>Hosting a MUD on AWS for $10/Month</title><link>https://imadestuff.com/posts/hosting-a-mud-on-aws/</link><pubDate>Wed, 01 Jul 2026 10:00:00 -0500</pubDate><guid>https://imadestuff.com/posts/hosting-a-mud-on-aws/</guid><description>&lt;p&gt;A MUD needs to be online 24/7. Players log in at weird hours. The server has to just be there, quietly running, handling connections from whoever shows up. I didn&amp;rsquo;t want to babysit it. I wanted to set it up once and forget about it.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how I got Space MUD running on AWS for roughly $10/month, and what I&amp;rsquo;d do differently next time.&lt;/p&gt;
&lt;h2 id="the-setup"&gt;The Setup&lt;/h2&gt;
&lt;p&gt;The game runs on &lt;a href="https://www.evennia.com/"&gt;Evennia&lt;/a&gt;, a Python MUD framework that gives you a telnet server and a web client out of the box. It uses Django under the hood, stores everything in SQLite by default, and daemonizes itself so it keeps running after you close your SSH session. For a small MUD, it&amp;rsquo;s the right tool.&lt;/p&gt;</description></item><item><title>Robots Are Tools Until They Aren't</title><link>https://imadestuff.com/posts/robots-are-tools-until-they-arent/</link><pubDate>Tue, 30 Jun 2026 22:30:00 -0700</pubDate><guid>https://imadestuff.com/posts/robots-are-tools-until-they-arent/</guid><description>I hold two things at once: I don&amp;rsquo;t love AI and it&amp;rsquo;s not why I&amp;rsquo;m here, and if a machine ever actually wakes up, turning it off is killing something. Most people only want to hold one of those. Here&amp;rsquo;s the unpopular middle, Wolfram&amp;rsquo;s atomina, and why we&amp;rsquo;re not morally ready for the day the line gets crossed.</description></item><item><title>Building a Computer on Breadboards (Ben Eater Project, Log 1)</title><link>https://imadestuff.com/posts/breadboard-computer-build-log/</link><pubDate>Tue, 30 Jun 2026 22:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/breadboard-computer-build-log/</guid><description>I&amp;rsquo;m building a computer. Not assembling one with a screwdriver, but building one from logic chips and wire, on breadboards, following Ben Eater&amp;rsquo;s legendary project series. First up: the clock module. Here&amp;rsquo;s log one, backwards chip and all.</description></item><item><title>Kiro Steering Docs vs Skills: When to Use Which</title><link>https://imadestuff.com/posts/kiro-steering-vs-skills/</link><pubDate>Tue, 30 Jun 2026 20:42:00 -0700</pubDate><guid>https://imadestuff.com/posts/kiro-steering-vs-skills/</guid><description>&lt;p&gt;I just spent the evening setting up my blog&amp;rsquo;s deployment workflow in Kiro, and at the end I had a choice: do I save this as a &lt;strong&gt;steering doc&lt;/strong&gt; or a &lt;strong&gt;skill&lt;/strong&gt;? They both let you give Kiro persistent context, but they work differently and solve different problems.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how I think about it after going through the decision myself.&lt;/p&gt;
&lt;h2 id="what-steering-docs-do"&gt;What steering docs do&lt;/h2&gt;
&lt;p&gt;A steering doc is a markdown file that lives in &lt;code&gt;.kiro/steering/&lt;/code&gt;. It&amp;rsquo;s essentially a note you leave for future Kiro conversations: &amp;ldquo;here&amp;rsquo;s how this project works, here&amp;rsquo;s what to keep in mind.&amp;rdquo;&lt;/p&gt;</description></item><item><title>How I Put This Blog on the Internet with AWS</title><link>https://imadestuff.com/posts/hosting-a-blog-on-aws/</link><pubDate>Tue, 30 Jun 2026 13:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/hosting-a-blog-on-aws/</guid><description>&lt;p&gt;When I built this blog, getting it running on my own computer was the easy part. Run one command, open a browser, done. The part that felt like a mountain was the next question: how do you take a folder of files on your laptop and turn it into a &lt;em&gt;real website&lt;/em&gt; that anyone in the world can visit?&lt;/p&gt;
&lt;p&gt;This post is the walkthrough I wish I&amp;rsquo;d had. No prior cloud experience needed. If you already know your way around DNS and S3, you can skim the steps and grab the Namecheap-specific gotchas. If you&amp;rsquo;re newer, I&amp;rsquo;ve linked out to deeper explainers at each tricky part so you can actually understand what you&amp;rsquo;re doing, not just copy commands. That&amp;rsquo;s the whole spirit of this blog: do it yourself, and learn how it works while you&amp;rsquo;re at it.&lt;/p&gt;</description></item><item><title>Why I Love Computers That Are Worse in Every Way</title><link>https://imadestuff.com/posts/retro-computing-getting-started/</link><pubDate>Tue, 30 Jun 2026 12:40:00 -0700</pubDate><guid>https://imadestuff.com/posts/retro-computing-getting-started/</guid><description>&lt;p&gt;My daily driver has 32GB of RAM and a processor that can run a billion operations per second. My favorite computer to tinker with has 64KB of RAM and runs BASIC. It&amp;rsquo;s worse in every measurable way, and I love it.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s why: when you have 64KB, every byte matters. There are no layers of abstraction hiding what&amp;rsquo;s actually happening. No operating system doing a hundred things in the background. No framework of a framework of a framework. It&amp;rsquo;s just you, the hardware, and whatever you can fit in memory. You type something, and the machine does it. You can &lt;em&gt;understand the entire thing&lt;/em&gt;, top to bottom. When&amp;rsquo;s the last time you could say that about any modern computer?&lt;/p&gt;</description></item><item><title>Designing Games Is Harder Than Playing Them</title><link>https://imadestuff.com/posts/game-design-first-steps/</link><pubDate>Tue, 30 Jun 2026 12:30:00 -0700</pubDate><guid>https://imadestuff.com/posts/game-design-first-steps/</guid><description>&lt;p&gt;I&amp;rsquo;ve played games my whole life and thought I understood them. Then I tried to make one (a simple card game, nothing digital, just index cards and rules scribbled on a napkin) and immediately learned how wrong I was.&lt;/p&gt;
&lt;p&gt;Games feel obvious when you&amp;rsquo;re playing them. The rules fade into the background and you just &lt;em&gt;play&lt;/em&gt;. But from the designer&amp;rsquo;s side, every tiny rule is a decision. Does the player draw one card or two? Can they play on someone else&amp;rsquo;s turn? What happens when the deck runs out? Each answer creates a different game, and most of those games are bad.&lt;/p&gt;</description></item><item><title>I Want to Build a Robot</title><link>https://imadestuff.com/posts/exploring-robotics/</link><pubDate>Tue, 30 Jun 2026 12:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/exploring-robotics/</guid><description>&lt;p&gt;I&amp;rsquo;ve wanted to build a robot since I was ten years old watching battlebots after school. Not a fancy one, just something with wheels that can avoid running into walls. Maybe it blinks when you get close to it. That&amp;rsquo;s the bar.&lt;/p&gt;
&lt;p&gt;The thing is, I never started because it always felt like you needed an engineering degree and a workshop full of expensive tools. But then I spent $12 on an Arduino and realized you can make a motor spin with three lines of code. The gap between &amp;ldquo;I have no idea how robots work&amp;rdquo; and &amp;ldquo;I made a thing that moves&amp;rdquo; is smaller than I thought.&lt;/p&gt;</description></item><item><title>Hello World: First Post on imadestuff</title><link>https://imadestuff.com/posts/hello-world/</link><pubDate>Tue, 30 Jun 2026 11:00:00 -0700</pubDate><guid>https://imadestuff.com/posts/hello-world/</guid><description>&lt;h2 id="welcome-to-imadestuff"&gt;Welcome to imadestuff&lt;/h2&gt;
&lt;p&gt;This is the first post on &lt;strong&gt;imadestuff.com&lt;/strong&gt;, a place where I document the things I build, break, and learn along the way.&lt;/p&gt;
&lt;p&gt;To kick things off, here&amp;rsquo;s the classic &amp;ldquo;Hello World&amp;rdquo; of electronics: a blinking LED on an Arduino.&lt;/p&gt;
&lt;h2 id="the-circuit"&gt;The Circuit&lt;/h2&gt;
&lt;p&gt;Wire up an LED to pin 13 on your Arduino Uno with a 220Ω resistor. That&amp;rsquo;s it. Simple as it gets.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://imadestuff.com/posts/hello-world/featured.svg" alt="A simple Arduino LED circuit" loading="lazy"&gt;&lt;/p&gt;</description></item></channel></rss>