<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://movingparts.net/atom.xml" rel="self" type="application/atom+xml" /><link href="https://movingparts.net/" rel="alternate" type="text/html" hreflang="en-US" /><updated>2026-09-21T20:17:08+00:00</updated><id>https://movingparts.net/atom.xml</id><title type="html">vanRijn / MovingParts</title><subtitle>Kinda like Batman, but with a wife and 3 kids</subtitle><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><entry><title type="html">Fifteen Hours Without Internet, and the Downward Spiral That Followed</title><link href="https://movingparts.net/2026/09/21/fifteen-hours-without-internet-and-a-downward-spiral/" rel="alternate" type="text/html" title="Fifteen Hours Without Internet, and the Downward Spiral That Followed" /><published>2026-09-21T16:00:00+00:00</published><updated>2026-09-21T16:00:00+00:00</updated><id>https://movingparts.net/2026/09/21/fifteen-hours-without-internet-and-a-downward-spiral</id><content type="html" xml:base="https://movingparts.net/2026/09/21/fifteen-hours-without-internet-and-a-downward-spiral/"><![CDATA[<p>My house was <strong>Without. Internet. Entirely.</strong> for fifteen hours last Saturday. It turns out some jackasses in my area have <a href="https://www.reddit.com/r/morganhill/comments/1wkwu6u/internet_down_since_1am/">discovered a new sport</a>:</p>

<blockquote>
  <p>Vandals… Thieves looking to steal copper cable instead cut fiber cables. This has affected fiber service throughout the area. Fiber was cut in three different sections…</p>
</blockquote>

<p>Frontier’s initial repair ETA was <em>the following Thursday, maybe</em>. Five days. So that’s how my Saturday went: not doing any of the things I had planned, but instead descending into a full-day “everything in my home depends on Internet connectivity, what on earth do I do to make sure this never happens again” downward spiral.</p>

<p>Here’s the spiral, roughly in order.</p>

<h2 id="1-buying-a-unifi-5g-backup">1. Buying a UniFi 5G backup</h2>

<p>First move, made somewhere in the angry-and-decisive phase of the morning: I bought a <a href="https://store.ui.com/us/en/products/u5g-us">UniFi 5G Backup</a> plus a 10GB / 12-month eSIM data pack.</p>

<p>This is probably the right answer for <em>short</em> outages, and I don’t regret it. But 10GB is not a lot of Internet. My next project is figuring out how to configure my UDM Pro to refuse large downloads and video streaming when the 5G backup is the active WAN, because otherwise this is going to get REAL expensive REAL fast the first time somebody in the house decides that a hard-down fiber line is a great moment to re-download a 90GB game.</p>

<h2 id="2-signing-up-for-a-second-isp-at-the-twelve-hour-mark">2. Signing up for a second ISP at the twelve-hour mark</h2>

<p>At right around 2pm — the twelve-hour mark — I gave up on waiting, signed up for Spectrum cable Internet, and drove to the local Spectrum store to pick up a modem.</p>

<p>The modem they handed me <strong>refuses to auto-negotiate to anything above 100M</strong>. It comes up at 100BASE-TX/full-duplex and stays there, no matter what’s on the other end of the cable. And yes, I tried multiple cables.</p>

<p>I then spent at least an hour trying to find a single Spectrum support person who understood what the words “auto-negotiate” mean. I eventually found one! They’re shipping me a replacement modem that may arrive sometime this week.</p>

<p>And then, at the fifteen-hour mark — <em>before</em> I could get the second ISP actually working correctly — Frontier repaired the vandalized fiber and the Internet came back.</p>

<p>I have extremely mixed feelings about this. I was glad to have Internet again, obviously. But I did not, in fact, solve the problem I had spent the entire day trying to solve. I just ran out the clock.</p>

<h2 id="3-discovering-that-every-redundancy-option-is-bad">3. Discovering that every redundancy option is bad</h2>

<p>In between all of that, I spent hours researching Internet provider redundancy. My conclusion: all the options suck, and all ISPs are horrible and do not care about you even slightly.</p>

<ul>
  <li><strong>Spectrum</strong>: about $30/month for 100M down / 10M up, and that’s the promotional rate — the price goes up after a year. At least thirty dollars a month, forever, for the off chance this happens again.</li>
  <li><strong>Starlink</strong>: $55/month for 100M service, which is somehow a worse deal. They <em>do</em> appear to offer a $10/month backup-only tier, but it also appears their current hardware doesn’t support it, so <code class="language-plaintext highlighter-rouge">(╯°□°）╯︵ ┻━┻</code></li>
  <li><strong>5G cellular data plans</strong>: all expensive, and all bad in their own distinct and creative ways.</li>
</ul>

<p>There is apparently no product called “reasonably priced insurance against your primary ISP being physically severed.” You either pay full freight for a second connection you’ll use twice a year, or you don’t have one.</p>

<h2 id="4-many-angry-words">4. Many angry words</h2>

<p>Also featured on Saturday: a great deal of “sentence enhancers,” and some number of arguments with my darling bride, who kept offering genuinely helpful suggestions such as:</p>

<ul>
  <li>Just “Let It Go.”
    <ul>
      <li>You know. Like Queen Elsa.</li>
    </ul>
  </li>
  <li>Next time, wait a full 24 hours before stressing out about it or trying to fix it.</li>
  <li>100 years ago they didn’t even have Internet connections.
    <ul>
      <li>For the record: pointing out that you would prefer not to return to the Little House on the Prairie days is apparently <em>not</em> the correct response to this suggestion.</li>
    </ul>
  </li>
  <li>Don’t let things bother you so much.</li>
</ul>

<p>She’s not wrong. That’s part of what makes it so annoying.</p>

<h2 id="what-actually-bothered-me">What actually bothered me</h2>

<p>I’m not sure there’s a moral to the story here. But the thing that got under my skin wasn’t really losing streaming video and online gaming for a day, irritating as that was.</p>

<p>It was that for fifteen hours I had <strong>no idea what the temperature was in my fridge or freezers</strong>. I had <strong>no home security at all</strong> — no cameras, no doorbell, nothing. Every sensor and every camera in this house is, at some level, a thing that phones home. Cut one fiber line three miles away and the whole lot of it goes dark, including the parts that have nothing to do with entertainment and everything to do with whether my food is spoiling or someone is walking around my property.</p>

<p>That’s the part I actually want to fix. The 5G backup helps. It’s not a real answer.</p>

<p>Okay. Thanks for coming to my TED talk.</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Life in General" /><category term="Computer Stuff" /><category term="unifi" /><category term="internet" /><category term="isp" /><category term="homeautomation" /><category term="rant" /><summary type="html"><![CDATA[My house was Without. Internet. Entirely. for fifteen hours last Saturday. It turns out some jackasses in my area have discovered a new sport:]]></summary></entry><entry><title type="html">One Chime, Two Doorbells: UniFi Protect and My Old Wired Doorbell</title><link href="https://movingparts.net/2026/08/29/one-chime-two-doorbells-unifi-protect-and-my-old-wired-doorbell/" rel="alternate" type="text/html" title="One Chime, Two Doorbells: UniFi Protect and My Old Wired Doorbell" /><published>2026-08-29T21:00:00+00:00</published><updated>2026-08-29T21:00:00+00:00</updated><id>https://movingparts.net/2026/08/29/one-chime-two-doorbells-unifi-protect-and-my-old-wired-doorbell</id><content type="html" xml:base="https://movingparts.net/2026/08/29/one-chime-two-doorbells-unifi-protect-and-my-old-wired-doorbell/"><![CDATA[<p>I spent a few evenings recently trying to add a <a href="https://www.shelly.com/products/shelly-1-gen4">Shelly 1 Gen 4</a> to my existing wired doorbell so I could integrate the old-school indoor chime into my modern home automation setup, without losing the way the physical doorbell already worked. This post is the writeup of what I got wrong the first time, what actually works, and the final wiring I ended up with — hopefully it saves the next person some time.</p>

<p>The thing that actually got me across the finish line was <a href="https://www.reddit.com/r/ShellyUSA/comments/1vjc0yj/trying_to_add_shelly_1_gen4_to_home_doorbell_as_a/">this thread I posted on r/ShellyUSA</a>, and specifically a one-sentence reply from <code class="language-plaintext highlighter-rouge">u/DreadVenomous</code> that reframed the whole problem. If you’re in the same spot, go read that thread — the rest of this post is just me showing my work.</p>

<h2 id="what-i-actually-wanted">What I actually wanted</h2>

<p>Concretely, here’s what I was trying to end up with:</p>

<ol>
  <li><strong>The physical, lighted doorbell button at my front door should still ring the indoor chime</strong>, exactly like it always has. No behavior change from anyone’s perspective standing on the porch.</li>
  <li><strong>When someone rings my new <a href="https://store.ui.com/us/en/products/uvc-doorbell-lite">UniFi Doorbell Lite</a>, the old indoor chime should also ring</strong> — so I don’t have to replace or duplicate any hardware inside the house just to hear the new doorbell.</li>
  <li><strong>The Shelly should be able to see the physical button press</strong>, too, so I can get push notifications and trigger other automations when the old-school button is used — not just when the UniFi doorbell is used.</li>
</ol>

<p>Basically: unify two doorbells into one chime, keep the physical button working, and get event notifications from both. All three of these things now work, and the trick — as it usually is with this kind of thing — turned out to be one specific detail about how the Shelly wants its inputs wired.</p>

<h2 id="an-aside-i-wasted-an-entire-saturday-trusting-an-llm-with-wiring-advice">An aside: I wasted an entire Saturday trusting an LLM with wiring advice</h2>

<p>Before I got to Reddit, I spent an entire Saturday going back and forth with <strong>Google Gemini</strong> trying to figure this out. Across roughly ten different wiring scenarios, Gemini kept insisting — confidently, in detail, with diagrams — that if I simply <strong>shorted the two terminals on the transformer in the garage</strong>, the indoor chime would ring. It would explain <em>why</em>, walk me through <em>how</em>, and then when it didn’t work it would apologize and propose the next variation of essentially the same wrong idea.</p>

<p>It was never true. Not once. Shorting the transformer output doesn’t ring a chime — it just makes an angry transformer. But because the answers <em>sounded</em> right and were delivered with such confidence, I burned a whole day of a weekend chasing them before I finally gave up and posted on Reddit, where an actual human with actual experience gave me the correct answer in one sentence.</p>

<p>Lesson learned: <strong>maybe don’t take electrical wiring advice from AI/LLMs yet.</strong> Especially the confidently-wrong kind. There is a real difference between “language model that’s read a lot of forum posts about doorbells” and “person who has actually wired one.”</p>

<p>Anyway. On to the thing that actually worked.</p>

<h2 id="what-i-started-with">What I started with</h2>

<p>A pretty standard old-school wired doorbell setup:</p>

<ul>
  <li>A <strong>16V AC transformer</strong> in the garage.</li>
  <li>An <strong>indoor chime</strong> (“gong”) box on a wall inside the house.</li>
  <li>An <strong>outdoor lighted doorbell button</strong> at the front door.</li>
  <li>Two pairs of red/green wires landing on the transformer — one pair going to the doorbell/chime loop, and one pair going to a long-abandoned security system.</li>
</ul>

<p>I had a <strong>12V DC wall-wart adapter</strong> on hand to power the Shelly, and the Shelly itself was already provisioned and talking to my phone. What I couldn’t figure out was how to wire the Shelly into the doorbell circuit without breaking the physical button.</p>

<h2 id="what-i-tried-first-and-why-it-didnt-work">What I tried first (and why it didn’t work)</h2>

<p>Following Gemini’s guidance, my first instinct was to do all of this at the transformer in the garage, since that’s where all the wires converged. I wired the Shelly’s <code class="language-plaintext highlighter-rouge">I</code> (Input) terminal to the top screw of the transformer (the red side) and the <code class="language-plaintext highlighter-rouge">O</code> (Output) terminal to the bottom screw (the green side), figuring the Shelly would just close a contact across the transformer output whenever I activated it.</p>

<p>What actually happened: when I toggled the Shelly, the transformer emitted an angry hum and the chime never fired. In hindsight this is obvious — I was effectively shorting the transformer’s output through the Shelly’s dry-contact relay instead of switching the chime coil in series with the AC supply. The transformer did not enjoy that.</p>

<h2 id="the-right-approach">The right approach</h2>

<p><code class="language-plaintext highlighter-rouge">u/DreadVenomous</code> on r/ShellyUSA nailed it in one sentence:</p>

<blockquote>
  <p>You have to convert the doorbell to 12V DC and connect that to the SW terminal on Shelly 1. Then switch the 16V AC chime using the I and O terminals.</p>
</blockquote>

<p>In other words:</p>

<ol>
  <li>The <strong>Shelly needs to be in series with the chime coil</strong>, not across the transformer. <code class="language-plaintext highlighter-rouge">I</code> and <code class="language-plaintext highlighter-rouge">O</code> become a switch on the 16V AC loop that fires the chime.</li>
  <li>The <strong>physical doorbell button should be a low-voltage dry-contact input</strong> into the Shelly’s <code class="language-plaintext highlighter-rouge">SW</code> terminal, not part of the AC chime loop directly. That way the Shelly sees the button press and can be configured to fire the chime (and do anything else you want) in response.</li>
  <li>To feed the button as a dry contact into <code class="language-plaintext highlighter-rouge">SW</code>, you need low-voltage DC — so you convert 16V AC → 12V DC and use that to both power the Shelly and provide the button-sense voltage.</li>
</ol>

<p>The key detail that took me a while to internalize: <strong>the “wet” side of the Shelly circuit — the 12V DC power coming in, <em>and</em> the switch wire coming in from the physical button — has to be the same voltage.</strong> In practice that meant running 12V DC out to the physical doorbell button instead of the 16V AC that used to power it. Once I did that, everything downstream just worked.</p>

<p>The rough diagram Dread and I sketched out looked like this, using a standalone 12V DC wall adapter to power the Shelly:</p>

<p><a href="/assets/2026/shelly-doorbell-initial-guidance.jpeg"><img src="/assets/2026/shelly-doorbell-initial-guidance.jpeg" alt="Initial Shelly 1 Gen 4 doorbell wiring concept" /></a></p>

<p>Once I could see the topology, the “do it at the chime, not at the transformer” advice made total sense — the chime box already has both the 16V AC loop and the button return landing in it, so it’s the natural spot to splice in the Shelly.</p>

<h2 id="what-i-actually-built">What I actually built</h2>

<p>Rather than run a separate 12V DC wall adapter into the chime box, I picked up a small <strong>16V AC → 12V DC converter</strong> and drove it directly off the existing 16V AC transformer. That kept the whole install inside the doorbell chime box with no extra outlet, no extra cable runs, and nothing new for anyone to notice.</p>

<p>Here’s the final wiring diagram I went with:</p>

<p><a href="/assets/2026/shelly-doorbell-final-wiring-diagram.png"><img src="/assets/2026/shelly-doorbell-final-wiring-diagram.png" alt="Final wiring diagram: doorbell system with Shelly 1 Gen 4" /></a></p>

<blockquote>
  <p><strong>A small AI plot twist:</strong> after everything above, I did still want a clean diagram to document what I’d built. I spent about two hours trying to get <strong>Google Gemini</strong> to draw it and it never came even remotely close — wrong terminals, wrong topology, wires going to nowhere, the whole mess. Out of frustration I gave the same task to <strong>ChatGPT</strong>, and three prompts later it produced the diagram you see above — accurate, labeled correctly, and exactly what I actually wired. So: don’t trust LLMs to <em>design</em> your electrical wiring, but at least one of them can do a very nice job of <em>drawing</em> the wiring you already got right from a human.</p>
</blockquote>

<p>The short version of what’s happening:</p>

<ul>
  <li><strong>16V AC Line A</strong> (red) goes through a Wago into the AC input of the AC→DC converter, and also into the chime’s <code class="language-plaintext highlighter-rouge">Trans</code> terminal.</li>
  <li><strong>16V AC Line B</strong> (green) goes through a Wago into the other side of the AC→DC converter, and also into the Shelly’s <code class="language-plaintext highlighter-rouge">I</code> terminal.</li>
  <li>The <strong>12V DC output</strong> of the converter powers the Shelly via <code class="language-plaintext highlighter-rouge">L</code> (ground) and <code class="language-plaintext highlighter-rouge">+/N</code> (+12V), and also provides the +12V that runs out through the doorbell button and back into the Shelly’s <code class="language-plaintext highlighter-rouge">SW</code> terminal. Pressing the button just closes that dry-contact loop; the Shelly sees the press and reacts.</li>
  <li>The Shelly’s <code class="language-plaintext highlighter-rouge">O</code> terminal is the switched 16V AC output that fires the chime’s <code class="language-plaintext highlighter-rouge">Front</code> coil. Whether the trigger came from the physical button (via <code class="language-plaintext highlighter-rouge">SW</code>) or from the Shelly app / an automation, the chime rings the same way.</li>
</ul>

<p>Notes worth calling out:</p>

<ul>
  <li>The Shelly is powered by 12V DC via <code class="language-plaintext highlighter-rouge">L</code> and <code class="language-plaintext highlighter-rouge">+/N</code>.</li>
  <li>Shelly <code class="language-plaintext highlighter-rouge">I</code> is connected to 16V AC Line B for the dry-contact input side of the chime relay.</li>
  <li>Shelly <code class="language-plaintext highlighter-rouge">O</code> switches 16V AC out to the chime’s <code class="language-plaintext highlighter-rouge">Front</code> terminal.</li>
  <li>The chime’s <code class="language-plaintext highlighter-rouge">Trans</code> terminal stays on 16V AC Line A the way it always was.</li>
  <li>The physical doorbell button is now on a 12V DC loop, not on 16V AC.</li>
</ul>

<h2 id="how-it-turned-out">How it turned out</h2>

<p>Everything got crammed into the existing chime box — the AC→DC converter, the Shelly, and three Wagos to keep the splices tidy. The doorbell chime cover still fits over the whole thing without issue. The wiring is a little chaotic in this picture and I’ll clean it up on the next pass, but it works perfectly.</p>

<p><a href="/assets/2026/shelly-doorbell-how-it-turned-out.jpeg"><img src="/assets/2026/shelly-doorbell-how-it-turned-out.jpeg" alt="Shelly 1 Gen 4 and 16V AC→12V DC converter installed inside the doorbell chime box" /></a></p>

<h2 id="wiring-the-unifi-doorbell-lite-into-the-chime">Wiring the UniFi Doorbell Lite into the chime</h2>

<p>Once the wiring was sorted, everything I wanted from the intro just fell into place. On the Shelly side:</p>

<ul>
  <li>Configured the Shelly’s output as a <strong>momentary button</strong> with a <strong>0.4 second automatic release</strong>, so a “press” briefly closes the AC loop through <code class="language-plaintext highlighter-rouge">I</code>/<code class="language-plaintext highlighter-rouge">O</code> and fires the chime the same way a physical button press does — no need to send a second command to turn it back off.</li>
  <li>Gave the Shelly a <strong>static IP</strong> via a DHCP reservation on my <a href="https://store.ui.com/us/en/products/udm-pro">UniFi UDM Pro</a>, so I have a stable address to hit from other systems.</li>
</ul>

<p>Then in <strong>UniFi Protect</strong>, I added a webhook alert on the UniFi Doorbell Lite’s “someone rang the doorbell” event pointed at the Shelly’s local HTTP endpoint. Now when a visitor pushes the UniFi doorbell, Protect fires the webhook, the Shelly closes its relay for 0.4 seconds, and the old indoor chime rings <em>exactly</em> like it would if a person had pushed the physical button on the wall. Meanwhile the physical button still works entirely on its own, and the Shelly can see and report on both kinds of events. All three original goals, done.</p>

<p>If you’re staring at your own doorbell transformer trying to figure this out: don’t do it at the transformer. Do it at the chime, convert down to 12V DC, put the Shelly in series with the chime coil on the AC side, and feed the button into <code class="language-plaintext highlighter-rouge">SW</code> as a dry contact on the same 12V DC. And whatever you do, <a href="https://www.reddit.com/r/ShellyUSA/comments/1vjc0yj/trying_to_add_shelly_1_gen4_to_home_doorbell_as_a/">read the Reddit thread</a> before you ask an LLM. Good luck!</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Life in General" /><category term="shelly" /><category term="homeautomation" /><category term="doorbell" /><category term="diy" /><category term="unifi" /><summary type="html"><![CDATA[I spent a few evenings recently trying to add a Shelly 1 Gen 4 to my existing wired doorbell so I could integrate the old-school indoor chime into my modern home automation setup, without losing the way the physical doorbell already worked. This post is the writeup of what I got wrong the first time, what actually works, and the final wiring I ended up with — hopefully it saves the next person some time.]]></summary></entry><entry><title type="html">Eight Months on Harvest Temple Challenge Mode, and Thirty Seconds of Yelling</title><link href="https://movingparts.net/2026/06/09/GW2-RUBS-raid-static-HTCM/" rel="alternate" type="text/html" title="Eight Months on Harvest Temple Challenge Mode, and Thirty Seconds of Yelling" /><published>2026-06-09T06:30:00+00:00</published><updated>2026-06-09T06:30:00+00:00</updated><id>https://movingparts.net/2026/06/09/GW2-RUBS-raid-static-HTCM</id><content type="html" xml:base="https://movingparts.net/2026/06/09/GW2-RUBS-raid-static-HTCM/"><![CDATA[<p><a href="/assets/2026/2026-06-08-GW2-RUBS-static-HTCM.png"><img src="/assets/2026/2026-06-08-GW2-RUBS-static-HTCM.png" alt="Our static posing together after the Harvest Temple Challenge Mode kill" /></a></p>

<p>Tonight, after eight months of weekly progression, our Guild Wars 2 raid static finally killed Harvest Temple Challenge Mode!</p>

<p>I want to write that sentence again, because I have been waiting eight months to write it. <em>Tonight, after eight months of weekly progression, our raid static finally killed Harvest Temple Challenge Mode!</em></p>

<h2 id="the-static">The static</h2>

<p>We raid together as <strong>Glory Holders (GH)</strong>, with most of us also flying the <strong>Please Rub Me (RUBS)</strong> guild tag during the rest of the week. We’ve been a tightly-knit core group for years now — mostly the same people, same nights, same Discord, same friends, friendship, love and laughter. End game raid content in this game is the hardest thing GW2 has on offer, and doing it with the same friends week after week is, for me, the entire point.</p>

<p>HTCM is one of the toughest of the toughest raid encounters in Guild Wars 2. It is a long fight with many different phases, each more complicated and difficult than the previous. Part of the point is to see how long you can maintain concentration and focus and near-perfect execution. There are so many different specialized roles and each person is absolutely crucial to the success of the group. Unlike strike missions and other content, if you lose just one of the group, you might as well <code class="language-plaintext highlighter-rouge">/gg</code> and start again. It’s one of the encounters you queue up after you’ve cleared everything else and you’re looking for the next wall to bonk your head against. We found the wall. We bonked our heads against it for eight months.</p>

<h2 id="what-the-fight-actually-looks-like">What the fight actually looks like</h2>

<p>For the uninitiated: Harvest Temple is a multi-phase encounter where the group cycles through aspects of all five Elder Dragons — Jormag, Primordus, Kralkatorrik, Mordremoth, and Zhaitan — before facing Soo-Won herself in the final phase. Every dragon phase has its own unique mechanics, its own positioning, its own ways to wipe the group, and Challenge Mode layers additional mechanics, faster timings, and far less margin for error on top of an already very difficult normal-mode fight.</p>

<p>If you want to actually understand what we were doing for eight months, here are the resources we leaned on the most:</p>

<ul>
  <li><a href="https://hardstuck.gg/gw2/guides/end-of-dragons/harvest-temple-cm/">The Hardstuck HTCM guide</a> — the standing reference for CM strats, comps, and per-phase callouts.</li>
  <li><a href="https://guildjen.com/harvest-temple-raid-guide/#Challenge_Mode">GuildJen’s Harvest Temple guide</a> — covers both normal and challenge modes, great for first-pass familiarization.</li>
  <li><a href="https://www.youtube.com/watch?v=hdCXw8rfZpY">Vallun’s Soo-Won CM video guide</a> — phase-by-phase visual walkthrough, invaluable when text descriptions don’t quite click.</li>
  <li><a href="https://wiki.guildwars2.com/wiki/Harvest_Temple">The official GW2 Wiki page</a> — boss timeline, mechanic names, and the canonical reference for what each ability actually does.</li>
</ul>

<h2 id="what-eight-months-of-progging-looks-like">What eight months of progging looks like</h2>

<p>I have done a lot of things in this game I am proud of. None of them took eight months.</p>

<p>Our first Dhuum CM kill — at the time, the hardest thing we’d ever attempted — took a few months of progression. When we finally got that one, the feeling was extraordinary: relief, release, pride, and a lot of love for the friends I’d been failing alongside for weeks. I assumed for a long time that Dhuum was going to be the high-water mark.</p>

<p>HTCM was different. Eight months is long enough that “we are progging HTCM” stops being a thing you do and starts being a thing you <em>are</em>. There were nights of slow improvement. There were MANY nights that felt like we’re making little or no progress. Thankfully, there were very few nights of feeling like going backward. There were stretches of weeks where the same mechanic ate us alive in the same phase, and the only way through was to come back the next week and do it again. Static raiding only works if everyone keeps showing up, and somehow — through real-life schedules, work travel, kids, holidays, all of it — everyone kept showing up.</p>

<p>That’s the thing I want to remember most about this kill. Not the mechanics, not the strategy, not the build refinement. The fact that our little core group kept choosing each other, every week, for eight months, on a fight that for most of those weeks did not love us back.</p>

<h2 id="tonight">Tonight</h2>

<p>We’d been pulling for about an hour and a half when it happened.</p>

<p>We always joke around in Discord while we play. Bad puns, tangents, dunking on each other’s pulls, the whole bit. It’s most of why I love these people. But as we started stringing together cleaner attempts tonight, the chatter thinned out. By the last few pulls, ten people who normally cannot shut up went almost completely silent. The final five minutes of the kill attempt were the quietest five minutes I have ever spent on Discord with this group.</p>

<p>And then the final boss died.</p>

<p>For about thirty seconds, ten people who had been silent yelled directly into their microphones. Not coordinated yelling. Not words, really. Just the noise that comes out of you when you’ve been holding something for eight months and you finally get to put it down. Same exact feeling as the Dhuum CM kill, scaled up to match how long we’d been working for it.</p>

<p>To see the mechanics, boons, buffs, DPS, patterns, and the rest, <a href="https://dps.report/gyIY-20260608-202755_void">the full DPS report from the kill is here</a>.</p>

<!--
Local backup of the DPS report (in case dps.report ever goes away):
https://movingparts.net/2026-06-08-GW2-RUBS-HTCM/dps.report/20260608-GW2-RUBS-HTCM-Kill.html
Not linked publicly yet — keep this comment for future reference.
-->

<h2 id="yay-us">Yay us</h2>

<p>I love this game. I love this group more. Eight months of weekly raid nights is a real chunk of life, and I got to spend it with people I genuinely look forward to hanging out with every week, on a problem that was hard enough to be worth solving. I genuinely and deeply love all of you!!!</p>

<p>Onward to the next wall. And I love that we have our group that will make that wall fun!</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Video Games" /><category term="Life in General" /><category term="guildwars2" /><category term="gw2" /><category term="raid" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Twenty-Six Years of Blog, Mostly Saved</title><link href="https://movingparts.net/2026/05/23/twenty-four-years-of-blog-mostly-saved/" rel="alternate" type="text/html" title="Twenty-Six Years of Blog, Mostly Saved" /><published>2026-05-23T06:30:00+00:00</published><updated>2026-05-23T06:30:00+00:00</updated><id>https://movingparts.net/2026/05/23/twenty-four-years-of-blog-mostly-saved</id><content type="html" xml:base="https://movingparts.net/2026/05/23/twenty-four-years-of-blog-mostly-saved/"><![CDATA[<p>I started blogging in 2000, and I never quite stopped — though there were stretches where I really, really did stop. The blog has lived in WordPress at movingparts.net for all of those twenty-six years, and during that time I’ve managed to make a few long-term-thinking mistakes.</p>

<p>This week I finally moved the whole thing — 425 posts, 231 images, twenty-six years of excellent fashion choices, hot takes about Linux, notes on family and video games and such — to a static Jekyll site. GitHub-hosted, fully self-contained, no database, no plugins, no server-side anything. Here’s a retrospective.</p>

<h2 id="flickr-sure-was-great-until-it-wasnt">Flickr sure was great until it wasn’t!</h2>

<p>I started using Flickr to store all of my personal photos in 2005, way back when Flickr was free and cool. I had 1 Terabyte of storage, for free!!
It was fun! It was neat! It had great features! It was free! I loved old, free Flickr! And I kept literally every photo
our family had ever taken in Flickr.</p>

<p>And heck, since Flickr worked so well, and since they legitimately had really nice
features and functionality like gallery views, photo sets, etc., I also used Flickr for all of my website pictures.
Herein lies the start of my blog mistakes. What I should have done way back then was set up a separate Flickr account
that just hosted my blog graphics, but mistakes were made and I did not think of that.</p>

<p>14 years later, in 2019, after SmugMug bought Flickr, they limited the amount of free photos you could have in your
account to 1000 photos or videos. Then they started actively deleting photos that were above that 1000 photo limit. This
sucked and I started looking for options ASAP.</p>

<p>I at least had the forethought to do a full export of my Flickr library and saved it to my NAS,
around 9,600 photos and 9,600 metadata JSON files. The tools at the time
were pretty bad for doing anything with this export, so it was all I could do to try to go through the export and at
least name the files from the absolutely useless <code class="language-plaintext highlighter-rouge">img_3423_4675736600_o.jpg</code> format to something more manageable like
<code class="language-plaintext highlighter-rouge">2015-03-07-picture-of-family-dog.jpg</code>.</p>

<p>Shortly after doing the Flickr export and trying to salvage all the family photos, I cancelled my Flickr account. I had a vague sense that “I should probably make sure my photos aren’t only on Flickr,” but I lacked a more specific sense of “the previous 19 years of my blog has every single photo embedded as an <code class="language-plaintext highlighter-rouge">&lt;img src="https://farm2.staticflickr.com/.../whatever.jpg"&gt;</code> and the moment your account goes away, every single one of those URLs returns a <code class="language-plaintext highlighter-rouge">410 Gone</code>.”</p>

<p>I did go through some of my more photo-centric blog pages and found those images in the Flickr export and uploaded them
to WordPress’s database. But there were so many images missing that I just didn’t have the time to deal with.</p>

<h2 id="the-wordpress--jekyll-import">The WordPress → Jekyll Import</h2>

<p>The export from WordPress was easy. The import via <code class="language-plaintext highlighter-rouge">jekyll-import</code> was, technically, also easy. It produced 425 HTML files in <code class="language-plaintext highlighter-rouge">_posts/</code>, each with proper YAML front-matter and permalinks matching my old WP URLs.</p>

<p>What it ALSO produced, on every single post, was this:</p>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;p&gt;</span><span class="cp">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"&gt;</span><span class="nt">&lt;br</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;html&gt;&lt;body&gt;</span>
<span class="nt">&lt;p&gt;</span>The actual content of my post...<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;p&gt;&lt;/body&gt;&lt;/html&gt;&lt;/p&gt;</span>
</code></pre></div></div>

<p>Each post had been silently re-wrapped in a fake-HTML-document shell during import — <code class="language-plaintext highlighter-rouge">&lt;!DOCTYPE&gt;</code>, <code class="language-plaintext highlighter-rouge">&lt;html&gt;</code>, <code class="language-plaintext highlighter-rouge">&lt;body&gt;</code>, all glued to the top inside a stray <code class="language-plaintext highlighter-rouge">&lt;p&gt;</code> tag, with a deeply confused <code class="language-plaintext highlighter-rouge">&lt;p&gt;&lt;/body&gt;&lt;/html&gt;&lt;/p&gt;</code> orphan at the bottom. WordPress had also, at some point in its history, replaced every Amazon-affiliate tracking pixel’s <code class="language-plaintext highlighter-rouge">&lt;img src&gt;</code> URL with a local <code class="language-plaintext highlighter-rouge">/assets/YYYY/MM/ir</code> reference (the importer stripped the <code class="language-plaintext highlighter-rouge">assoc-amazon.com</code> host but kept the path, ending at just <code class="language-plaintext highlighter-rouge">ir</code> because the original URL was <code class="language-plaintext highlighter-rouge">.../e/ir?t=...</code>).</p>

<p>So before I could even look at the content, I had a 425-file regex problem and a strange pile of “404 Not Found: ir” warnings.</p>

<h2 id="the-cleanup">The Cleanup</h2>

<p>Working through this over the course of several long evenings, and with the help of our new friendly and amazingly
capable AI/LLM friends, the rough order was:</p>

<ol>
  <li><strong>Strip the WP wrapper junk</strong> from all 425 posts. Two regex patterns covered the standard wrapper, plus an extended variant some posts had picked up (DOCTYPE / html / head / meta / body, all wrapped across two paragraphs) that hit 8 outliers.</li>
  <li><strong>Patch orphan <code class="language-plaintext highlighter-rouge">&lt;/p&gt;</code> tags</strong> the wrapper-stripper left behind. About 95 posts had ended up with a closing <code class="language-plaintext highlighter-rouge">&lt;/p&gt;</code> that no longer had a matching <code class="language-plaintext highlighter-rouge">&lt;p&gt;</code> open — readers saw a literal <code class="language-plaintext highlighter-rouge">&lt;/p&gt;</code> floating in the rendered text.</li>
  <li><strong>Strip Amazon affiliate tracking pixels</strong> — 22 of them across 10 posts, all rewritten by the importer to non-existent local paths.</li>
  <li><strong>Audit image references</strong> — 95 unique images were referenced in posts but missing from the assets folder. The blog rendered fine for text but had broken-image icons everywhere.</li>
  <li><strong>Recover what I could from the Flickr export.</strong> This is the part I’m most relieved about. Flickr embeds the photo ID directly in filenames (<code class="language-plaintext highlighter-rouge">chisel-out-the-rest_192264665_o.jpg</code> — <code class="language-plaintext highlighter-rouge">192264665</code> is the Flickr ID), and the export’s per-photo JSON sidecars are keyed by ID too. A small Python script extracted candidate IDs from each missing filename, cross-referenced them against the export, and copied the original-resolution files into the matching <code class="language-plaintext highlighter-rouge">assets/YYYY/MM/</code> folders. <strong>61 of the 95 missing images came back this way</strong>, including two complete photo essays — a vinyl-windows DIY tutorial from 2006 and a 31-photo arcade-fightstick mod walkthrough from 2012 — that had been entirely broken since whenever I cancelled Flickr.</li>
  <li><strong>Drop the rest</strong> that couldn’t be recovered: small WP UI decorations, hotlinked Wikipedia/KDE icons, Amazon product images, two Flickr photos that had been deleted before my 2019 export. 36 broken <code class="language-plaintext highlighter-rouge">&lt;img&gt;</code> tags removed across 24 posts.</li>
  <li><strong>Clean up dirty filenames.</strong> A previous WP-Photon CDN sync had created files literally named <code class="language-plaintext highlighter-rouge">sk0304_jsh01_18630658_o.jpeg?fit=620%252C622</code> on disk — the <code class="language-plaintext highlighter-rouge">?</code> made them HTTP-unreachable, since browsers strip query strings before the file lookup. They were just wasted disk space, scaled-down duplicates of the originals I’d just gotten back from Flickr. Deleted 56 of them and rewrote 154 HTML attribute references to point at the clean originals.</li>
  <li><strong>Rewrite the external Photon CDN URLs</strong> (<code class="language-plaintext highlighter-rouge">https://i*.wp.com/movingparts.net/wp-content/uploads/...</code>) used in lightbox <code class="language-plaintext highlighter-rouge">&lt;a href&gt;</code> wrappers to local <code class="language-plaintext highlighter-rouge">/assets/...</code> paths, so clicking an image no longer asks a long-dead WordPress CDN to serve me a copy of a thing I already have on disk.</li>
</ol>

<p>There were also a handful of secondary cleanups along the way: switching from <code class="language-plaintext highlighter-rouge">jekyll-paginate</code> (which only paginates <code class="language-plaintext highlighter-rouge">/index.html</code>) to <code class="language-plaintext highlighter-rouge">jekyll-paginate-v2</code> (which paginates anything with <code class="language-plaintext highlighter-rouge">pagination: enabled: true</code>), then chasing down why the sidebar nav broke after the swap (because v2 strips the <code class="language-plaintext highlighter-rouge">path</code> attribute on paginated pages, which breaks the theme’s <code class="language-plaintext highlighter-rouge">where: "path", "blog.md"</code> lookup), then fixing excerpt extraction (because WordPress-imported posts have one <code class="language-plaintext highlighter-rouge">&lt;p&gt;</code> per line separated by single <code class="language-plaintext highlighter-rouge">\n</code>, and Jekyll’s default <code class="language-plaintext highlighter-rouge">excerpt_separator</code> is <code class="language-plaintext highlighter-rouge">\n\n</code> — which never matched, so every “excerpt” was the whole post).</p>

<h2 id="lessons-learned">Lessons Learned</h2>

<p>If you take anything from this, take this:</p>

<ul>
  <li><strong>Don’t cancel a photo host without searching your blog for <code class="language-plaintext highlighter-rouge">&lt;img src&gt;</code> references to it first.</strong> The <code class="language-plaintext highlighter-rouge">&lt;img&gt;</code> tag’s silent failure mode — the broken-image icon — is one of the loudest forms of personal-archive rot, and you don’t usually notice until years later.</li>
  <li><strong>Take the export.</strong> Even if you don’t use it for seven years. <em>Especially</em> if you don’t use it for seven years.</li>
  <li><strong>Filenames are interfaces.</strong> Photo IDs in filenames, machine-readable metadata in sidecars, naming conventions you’ll be able to grep five years later — these are gifts from Past You to Future You.</li>
  <li><strong>Static sites are forgiving.</strong> Once everything is just files in <code class="language-plaintext highlighter-rouge">_posts/</code> and <code class="language-plaintext highlighter-rouge">assets/</code>, you can do almost any cleanup with a few hundred lines of Python and some quality time with your computer. Try doing that to a live WordPress database with whatever affiliate plugin you installed in 2008.</li>
</ul>

<p>The blog’s back. The photos are back. I owe most of this rescue to a single one-good-decision-among-many that 2019-Me made — taking that Flickr export — and most of the actual labor to several evenings of regex hygiene. Yay Jason!</p>

<p>Now to go actually post things.</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Computer Stuff" /><category term="Life in General" /><summary type="html"><![CDATA[I started blogging in 2000, and I never quite stopped — though there were stretches where I really, really did stop. The blog has lived in WordPress at movingparts.net for all of those twenty-six years, and during that time I’ve managed to make a few long-term-thinking mistakes.]]></summary></entry><entry><title type="html">All You Can Eat (up to 4’x8’ at a time) Whiteboards for only $13!</title><link href="https://movingparts.net/2016/03/11/all-you-can-eat-up-to-4x8-at-a-time-whiteboards-for-only-13/" rel="alternate" type="text/html" title="All You Can Eat (up to 4’x8’ at a time) Whiteboards for only $13!" /><published>2016-03-12T01:29:12+00:00</published><updated>2016-03-12T01:29:12+00:00</updated><id>https://movingparts.net/2016/03/11/all-you-can-eat-up-to-4x8-at-a-time-whiteboards-for-only-13</id><content type="html" xml:base="https://movingparts.net/2016/03/11/all-you-can-eat-up-to-4x8-at-a-time-whiteboards-for-only-13/"><![CDATA[<p>Inspired by <a href="http://lifehacker.com/cover-a-wall-with-a-giant-whiteboard-for-under-15-1587162959">LifeHacker’s older post about making your own whiteboard for cheap</a>, I bought a <a href="http://www.homedepot.com/p/EUCATILE-32-sq-ft-96-in-x-48-in-Hardboard-Thrifty-White-Tile-Board-HDDPTW48/205995949">4’x8’ sheet of dry erase board from Home Depot</a> for $13. I had them cut it down into 2 3’x4’ sections and one 2’x4’ section on account of I have a Honda Fit and that’s just not gonna hold a 4’x8’ section of anything.</p>

<p><a href="http://movingparts.net/wp-content/uploads/2016/03/37E41D84-C8FD-4454-B238-099E78BA601B-scaled.jpeg"><img src="/assets/2016/03/37E41D84-C8FD-4454-B238-099E78BA601B-300x225.jpeg" alt="" /></a></p>

<p>I had some spare <a href="http://amzn.to/1UmdK4z">aluminum foil tape</a> left over from a previous project (fixing 10 individual water leaks in my 2007 Honda Fit). I lined the 4 edges of each board with the foil tape, putting roughly half of the foil tape on the front and then wrapping the rest around to the back of the board. This helps to provide a little bit of rigidity and more importantly covers up any edges and imperfections from when the board was cut. If you want more rigidity, just put another layer of the aluminum foil tape on.</p>

<p>Then I used some <a href="http://amzn.to/1UmdVNr">Command medium picture hanging strips</a> (I LOVE these things!) and mounted my new whiteboards on the wall.</p>

<p>I’m pretty happy with these!</p>

<p>And I have enough whiteboard for another one downstairs in the family room.</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Life in General" /><summary type="html"><![CDATA[Inspired by LifeHacker’s older post about making your own whiteboard for cheap, I bought a 4’x8’ sheet of dry erase board from Home Depot for $13. I had them cut it down into 2 3’x4’ sections and one 2’x4’ section on account of I have a Honda Fit and that’s just not gonna hold a 4’x8’ section of anything.]]></summary></entry><entry><title type="html">On Facebook, Notifications, Filtering, and Hire Me</title><link href="https://movingparts.net/2016/01/30/on-facebook-notifications-filtering-and-hire-me/" rel="alternate" type="text/html" title="On Facebook, Notifications, Filtering, and Hire Me" /><published>2016-01-30T18:13:41+00:00</published><updated>2016-01-30T18:13:41+00:00</updated><id>https://movingparts.net/2016/01/30/on-facebook-notifications-filtering-and-hire-me</id><content type="html" xml:base="https://movingparts.net/2016/01/30/on-facebook-notifications-filtering-and-hire-me/"><![CDATA[<p>tl;dr: 1) Nice job on the Notifications dropdown, Facebook devs! 2) I still really miss RSS feeds and Jabber message integration!! 3) You should hire me! I have some ideas on how to make this better! =;P</p>

<p>I’ve just never really used Facebook consistently before. My biggest complaint has always been that unlike Twitter or RSS feeds or e-mail, I did not see any way to stay caught up. To leave off wherever you are, come back to it later and your place in the list of events has not moved. With Twitter/RSS/e-mail/other things, you can do this. Pick up again wherever you left off and keep working your way through whatever it is, and most importantly, you know that you have not missed anything during any of this. Sure, you might be behind in your progress for a while, and until you’re caught up, you may have delayed reactions to things. But I much prefer this linear information navigation. Or at least I prefer having this type of knowledge consumption and data navigation be even possible. Knowing that I’m not missing out on anything is important to me.</p>

<p>Facebook has never made this easy for me. Facebook used to have RSS feeds that I would use and be able to catch up on unread events, etc., and know that I’m not missing anything along the way. That functionality was removed a long time ago.</p>

<p>Anyway, where I’m going with this is that I just discovered that I can do an approximation of what I’m looking for by using the Notifications dropdown in the Facebook toolbar at the top of my screen. It’s not perfect, but now that I’ve found it, it looks like it’s my best alternative to just refreshing Facebook and looking at the list of groups and friends I’m most interested in. Or scrolling and scrolling and scrolling. And there’s a “see all” link to take you to a new page to navigate your notifications. Nice.</p>

<p>I think it would be a nice addition to Facebook to add functionality onto the <a href="https://www.facebook.com/notifications">/notifications page</a>. I wouldn’t necessarily force it to be tied to settings or persistent changes, but there are times that I’d like to choose what data I’m seeing on this Notifications list differently than others. For example, right now I’m most interested in staying caught up with all of my VMware family and friends. If I could get a list of “here’s all the people that I’m going to show you in the list below” and check/uncheck them individually or assign groups or whatever, that would be very helpful. Similarly, sometimes I’m interested in seeing who has liked one of my posts or comments. Right now, the information flood is too much and I’d like to filter that noise out.</p>

<p>So… nicely done on the Notifications dropdown, whomever at Facebook designed that.</p>

<p>And I still miss RSS feeds and Jabber integration. =:(</p>

<p>And now that I’ve <a href="http://blog.chipx86.com/2016/01/26/a-tribute-to-vmware-workstation-fusion-and-hosted-ui/">been laid off along with the rest of my Workstation and Fusion friends</a>, I’m looking for interesting work in areas that I’ve not done before. So clearly, Facebook should hire me because then I could help implement the ideas I posited above. =;)</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Life in General" /><category term="facebook" /><summary type="html"><![CDATA[tl;dr: 1) Nice job on the Notifications dropdown, Facebook devs! 2) I still really miss RSS feeds and Jabber message integration!! 3) You should hire me! I have some ideas on how to make this better! =;P]]></summary></entry><entry><title type="html">On Gaming, Highest Quality, Best Price</title><link href="https://movingparts.net/2015/09/01/on-gaming-highest-quality-best-price/" rel="alternate" type="text/html" title="On Gaming, Highest Quality, Best Price" /><published>2015-09-01T22:15:24+00:00</published><updated>2015-09-01T22:15:24+00:00</updated><id>https://movingparts.net/2015/09/01/on-gaming-highest-quality-best-price</id><content type="html" xml:base="https://movingparts.net/2015/09/01/on-gaming-highest-quality-best-price/"><![CDATA[<p>I am a nerd and love video games. I looked into buying a gaming laptop, but after researching and talking to some friends who know more about this space than I do, I decided to go a different route.</p>

<p>First, the GPUs they put into laptops are nowhere near as good as the same model GPU you get in a desktop machine. The GTX-980M GPU is nowhere near as good as the GTX-980.</p>

<p>Second, gaming laptops are REALLY expensive. I was tempted to get a top of the line Alienware gaming laptop with a GTX-980M GPU. It cost over $2200. And that’s for a graphics card that won’t be able to handle what I want to throw at it anyway.</p>

<p>Third, I mainly do my gaming at home. If I travel, I don’t want to have to lug around a second laptop for gaming. And competent gaming laptops are really heavy and bulky. I wanted to optimize my gaming experience at home. If I travel, I can “make do” with gaming natively on my MacBook Pro. Bootcamp is always an option too.</p>

<p>What I wanted was a better gaming experience while at home mainly. But I don’t like being tied to a desktop machine, only being able to play from one room in the house. I wanted to be able to play from my laptop, in any room of the house, but to get a better gaming experience than I’m able to get from my current laptop (2013 Retina MacBook Pro). I also wanted to make sure that I bought something that was going to last me for at least the next 5 years. I just about only play Guild Wars 2 right now, but I wanted something that was going to be able to handle whatever I might want to play next.</p>

<p>Last week, I built myself a monster of a gaming desktop rig. I mainly play Guild Wars 2, and this machine lets me run GW2 on absolutely highest settings everywhere. The machine is a beast and I’m thrilled with it. GW2 looks like a totally different game on highest settings.</p>

<p>Then I set up Steam Streaming on the new desktop machine and manually added Guild Wars 2 to it. Now I can start up the Steam client from any Linux, Windows, or Mac laptop or computer in the house and stream the game in highest quality to it. The Steam client also allows me to turn on hardware rendering. This means that since the client machine isn’t doing any of the heavy lifting, and all it’s doing is rendering audio video to the screen, my MacBook Pro doesn’t get hot, and doesn’t use hardly any battery.</p>

<p>Playing Guild Wars 2 natively on my MacBook Pro in OS X is sub-par graphically. I have to turn all of the settings down to their lowest, just about. And the thing gets so hot that I can’t put the laptop on my legs or else they’ll get burned. And I get maybe an hour’s worth of battery life. If I play in Windows 7 in Bootcamp, the graphics look better, but the rest of the problems exist.</p>

<p>But playing Guild Wars 2 through Steam Streaming, the game being hosted on my beast of a desktop machine upstairs, and only rendering on my MacBook Pro through Steam Streaming… the laptop doesn’t get hot, the quality is amazing, and I get hours and hours of battery life.</p>

<p>I have Cat 6A networking running from my upstairs office down to my router in the basement and up again to the living room, where I have a 2012 Mac Mini and a 60” Plasma TV with surround sound stereo. The Mac Mini isn’t powerful enough to run Guild Wars 2 natively with anything but lowest quality in OS X. However, using Steam Streaming, I’m able to have the highest quality settings and there’s zero visible lag or rendering problems. And with surround sound, it is just an incredibly awesome experience. This is now my favorite way to play video games. This was definitely not the case prior to this new desktop machine I bought, or Steam Streaming.</p>

<p>One thing I was nervous about was being able to play Guild Wars 2 on my MacBook Pro via Steam Streaming, over my WiFi connection. I didn’t really want to have to run Cat 6A wiring to every room in the house I’d possibly want to play from. I have an Airport Extreme upstairs, and an Asus RT-N66U Dark Knight Double 450Mbps N router in the basement. Between the two AP’s, I’m able to sustain between 30 and 60 FPS through Steam Streaming. So yes, you can get the highest of quality from the Steam Streaming server in your house, to your laptop, over WiFi, assuming you have 802.11 n or ac.</p>

<p>Here’s a picture of the parts I bought:</p>

<p><a href="http://movingparts.net/wp-content/uploads/2020/02/sitrep-i-did-a-thing-newgamingrig_20931842936_o-scaled.jpeg"><img src="/assets/2015/09/sitrep-i-did-a-thing-newgamingrig_20931842936_o-225x300.jpeg" alt="" /></a></p>

<p>And here’s the finished product:</p>

<p><a href="http://movingparts.net/wp-content/uploads/2015/09/sitrep-i-finished-doing-a-thing-newgamingrig_20971194021_o-scaled.jpeg"><img src="/assets/2015/09/sitrep-i-finished-doing-a-thing-newgamingrig_20971194021_o-300x225.jpeg" alt="" /></a></p>

<p>Here’s the parts I bought, based on this editable list: <a href="http://pcpartpicker.com/p/mvTWqs">http://pcpartpicker.com/p/mvTWqs</a>:</p>

<ul>
  <li>Antec Nine Hundred Black Steel ATX Mid Tower Computer Case (<a href="http://amzn.to/1UiTeyH">http://amzn.to/1UiTeyH</a>)</li>
  <li>Gigabyte GA-Z97X-UD3H-BK (Black Edition) Motherboard Core i7/i5/i3 LGA1150 Intel Z97 Express ATX RAID Gigabit LAN (Integrated Graphics) (<a href="http://amzn.to/1UiTjCn">http://amzn.to/1UiTjCn</a>)</li>
  <li>Antec 750W 80-PLUS Gold ATX12V/EPS12V 750 Power Supply (<a href="http://amzn.to/1UiTnC8">http://amzn.to/1UiTnC8</a>)</li>
  <li>Kingston HyperX Savage 32GB Kit (4x8GB) 1866MHz DDR3 Non-ECC CL9 DIMM XMP (<a href="http://amzn.to/1JroGI3">http://amzn.to/1JroGI3</a>)</li>
  <li>ASUS STRIX GeForce GTX 980 Overclocked 4 GB DDR5 256-bit DisplayPort HDMI 2.0 DVI-I Graphics Card (<a href="http://amzn.to/1NYXhOT">http://amzn.to/1NYXhOT</a>)</li>
  <li>Intel Core BX80646I74790K i7-4790K Processor (8M Cache, up to 4.40 GHz) (<a href="http://amzn.to/1JroIjh">http://amzn.to/1JroIjh</a>)</li>
</ul>

<p>I spent $1500 for the whole thing. I saved a bit since I already had a spare 2TB 7200 RPM HDD and a 500GB Samsung 840 EVO SSD. I still have a bunch of rebates I need to send in, which will lower the price. And I bought everything from Amazon, since I have Prime, but you could definitely save money by buying from whoever has the cheapest price for the parts you want.</p>

<p>I’m extremely pleased with the way all of this turned out. I was hesitant and worried that I’d mess something up, or that playing via Steam Streaming wasn’t going to be a viable option for me.</p>

<p>I’m very happy to say that I was wrong.</p>

<p>This works beautifully so far and I love it.</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Apples" /><category term="Desktop" /><category term="Video Games" /><summary type="html"><![CDATA[I am a nerd and love video games. I looked into buying a gaming laptop, but after researching and talking to some friends who know more about this space than I do, I decided to go a different route.]]></summary></entry><entry><title type="html">Thoughts on Guild Wars 2 Expansion</title><link href="https://movingparts.net/2015/06/17/thoughts-on-guild-wars-2-expansion/" rel="alternate" type="text/html" title="Thoughts on Guild Wars 2 Expansion" /><published>2015-06-17T22:59:39+00:00</published><updated>2015-06-17T22:59:39+00:00</updated><id>https://movingparts.net/2015/06/17/thoughts-on-guild-wars-2-expansion</id><content type="html" xml:base="https://movingparts.net/2015/06/17/thoughts-on-guild-wars-2-expansion/"><![CDATA[<p>As I mentioned previously, I BIG TIME LOVE Guild Wars 2. And now <a href="http://buy.guildwars2.com/store/gw2/en_US/html/pbPage.heartofthorns">there’s an expansion coming</a> and I am really excited about it. But I’ve seen a lot of complaining from current players that ArenaNet decided to charge $50 for it and also throw the core game in for free for people who don’t have it already. I think the thought process there is “well, I spent $50 on the game already, and now I have to spend another $50, so my investment is $100; whereas new players will only have to pay $50 for all that I have now.” I think this is a flawed mindset and I dumped this into my Guild’s Facebook group post earlier and thought I’d also post it here.</p>

<p>I have a different opinion. I think $50 is a completely fair price for an expansion, especially considering that Guild Wars 2 has no monthly or recurring subscription fee. I think a better question to ask is is $50 a fair price for a major expansion to the game, regardless of all the other issues around core game being included for new gamers? I think it is.</p>

<p>If you think about from the perspective of “I spent $50 and now I have to spend another $50, while people who have never signed up before just have to spend $50 to get the same thing as me”, you’re guaranteed to be frustrated and disappointed. But I think that is a flawed base point of view. The new people don’t get the same thing as you. If you spent $50 on the game even just 3 months ago and played for the last 3 months, you got 3 months of enjoyment and experience and rewards out of it that a new person won’t have gotten. So it’s not like that earlier $50 (or whatever you spent on the game at first) doesn’t give you anything more than the person who is just buying the game now for the first time.
ANet has said that the expansion is $50. Period.
They’re throwing in the rest of the existing game to entice new people to join us.
None of that is bad, IMHO.
$50 is completely fair for an expansion we’ve been waiting for 3 years for. New people don’t have to buy 2 things! Great! Get a bunch of new people in! It’ll drive up the value of the things that us current players have been accumulating! It’ll keep this game alive longer! It’ll enable ANet to continue to invest in adding content and new features! Awesome! Let’s keep it alive! =:)
I’ve invested thousands of hours in this game and spent lots of $RealMonies$, and what I got out of it was a year of having an absolute blast. I’ve tried other games out there and nothing even comes close to GW2. $50 is right in line with every other expansion out there. The fact that you could have bought the game and been playing for $FREE for the last 3 years is amazing and different. I choose to encourage and support a company who is willing to buck the trend of monthly subscriptions. I’d MUCH rather spend $50 here and there on a game that I truly enjoy and that lets me do things that I want to do than have to pay $20 every month just to be able to play the game at all.
Not making any commission here at all, just trying to bring balance to the discussion. =:) FWIW, I’m extremely pleased with having spent $100 last night on the expansion. I immediately got:</p>

<ul>
  <li>4000 gems (which I needed to buy anyway and was going to in the next week or so. this would have cost me $50 by itself anyway)</li>
  <li>a Guild Hall decoration thingy that I can hang in our new Guild Hall when it comes out!! Gonna be so cool and SWAG!</li>
  <li>a Revenant Rytlock (different from the previous Rytlock miniature!!)</li>
  <li>a Revenant Finisher (PLEASE watch <a href="https://www.youtube.com/watch?v=FrLbseXmp9o">https://www.youtube.com/watch?v=FrLbseXmp9o</a> and tell me that isn’t one of the most awesome finishers in the game!!! Rytlock is so angry!!!)</li>
  <li>an exclusive glider</li>
  <li>an exclusive title</li>
  <li>access to ALL the upcoming beta events (I spent at least 40 hours grinding in Silverwastes and Dry Top before the last beta to try to get in and couldn’t get the beta portal key to drop. I’d spend $50 just for the ability to not have to do that again!)</li>
</ul>

<p>Okay, I’ll shut up now. I feel like I’m ranting or trying to win an argument. I’m really not. I just think there’s a flawed base assumption and invalid feelings of entitlement that’s behind a lot of the complaining about the price out there. Every map I’ve been in for the last 13 hours or so is full of people complaining and thinking they’re entitled and it’s frustrating.
So what do you think? =:D</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Video Games" /><category term="guildwars2" /><summary type="html"><![CDATA[As I mentioned previously, I BIG TIME LOVE Guild Wars 2. And now there’s an expansion coming and I am really excited about it. But I’ve seen a lot of complaining from current players that ArenaNet decided to charge $50 for it and also throw the core game in for free for people who don’t have it already. I think the thought process there is “well, I spent $50 on the game already, and now I have to spend another $50, so my investment is $100; whereas new players will only have to pay $50 for all that I have now.” I think this is a flawed mindset and I dumped this into my Guild’s Facebook group post earlier and thought I’d also post it here.]]></summary></entry><entry><title type="html">Neato Botvac 80 Is The Best Robot Vacuum Out There (No Really)</title><link href="https://movingparts.net/2015/04/01/neato-botvac-80-is-the-best-robot-vacuum-out-there-no-really/" rel="alternate" type="text/html" title="Neato Botvac 80 Is The Best Robot Vacuum Out There (No Really)" /><published>2015-04-01T20:17:36+00:00</published><updated>2015-04-01T20:17:36+00:00</updated><id>https://movingparts.net/2015/04/01/neato-botvac-80-is-the-best-robot-vacuum-out-there-no-really</id><content type="html" xml:base="https://movingparts.net/2015/04/01/neato-botvac-80-is-the-best-robot-vacuum-out-there-no-really/"><![CDATA[<p>I posted this on <a href="http://www.amazon.com/gp/cdp/member-reviews/A1QYNNXJ0C8PE6/ref=pdp_new">my Amazon Reviews page</a> too, but I figured it was worth a blog post as well.</p>

<p><a href="http://www.amazon.com/gp/product/B00J08ITFG/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00J08ITFG&amp;linkCode=as2&amp;tag=movipart-20&amp;linkId=LLCJN2LR5EKOCH32">http://www.amazon.com/gp/product/B00J08ITFG/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00J08ITFG&amp;linkCode=as2&amp;tag=movipart-20&amp;linkId=LLCJN2LR5EKOCH32</a> I cannot emphasize how much I love the <a href="http://www.amazon.com/gp/product/B00J08ITFG/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00J08ITFG&amp;linkCode=as2&amp;tag=movipart-20&amp;linkId=LLCJN2LR5EKOCH32">Neato Botvac 80</a>! It’s still early days and we’ve only had it for a month or so, but the Botvac 80 is absolutely perfect for our family.</p>

<p>We have a large house. It’s around 1100 square feet per level and we have 3 levels. We’ve had a Neato XV-11 for 3 years now and it has some very major design flaws. The belt and gear assembly underneath, where the brush is, is exposed and not protected. This means that the belt and gear are constantly getting clogged with hair. The only way to clean this area is to get a very long sharp pointy thing (I use an exacto knife) and a very long pointy set of tweezers. And then you spend, I kid you not, at least 15 minutes each time the XV-11 gets clogged and tells you “my brush is stuck”, cleaning it out. I used the XV-11 to clean our upstairs carpet and the first time through, I had to clean its belt and gear area 6 times before it finally got through. This is just irritating beyond belief. Here’s a YouTube video that shows what I’m talking about:</p>

<p>https://www.youtube.com/watch?v=ZbwBgpgz67M</p>

<p>The display on our XV-11 finally completely died and all we have now is a bright white square that tells us nothing when there’s problems. So it was time to look for a new robot vacuum. I looked at the Roomba line and was hoping that they’d fixed the major design flaw that drove me to buy a Neato originally: Roombas run out of battery and go back to their charging station… and call it a day. They don’t go back out and finish the job. You either have to start them manually again or wait for their next scheduled time to run. And they’re going to start from the very beginning again, either way, so they’re probably going to run out of battery before they finish the job again! Neatos, on the other hand, will return to their charging station, charge back up again, and go back out to right where they left off and finish the job. Like it should be!</p>

<p>Even the latest Roomba models have not fixed this yet.</p>

<p>Also, Roombas use little lighthouse stations that you have to buy and stick D batteries in to block off areas for the vacuum. Neatos, on the other hand, use a simple magnetic strip that you can put anywhere, even under carpet, to block off areas for it not to cross over. And since it’s a simple magnetic strip, you can make your own magnetic strips and not have to buy them from Neato. We do this often, either temporarily or seasonally (to keep it from going under the Christmas tree, etc.).</p>

<p>So I looked at the Neato Botvacs and tried to see if they’d addressed the gear/belt design flaw. I couldn’t find any reviews that said they did. I also found a lot of people making negative reviews, saying that the Botvac is just a rebranding of the XV line and not worth the money. BOY WERE THEY WRONG!</p>

<p>The Botvac 80 has completely addressed the gear/belt design flaw. This area is completely enclosed now and cannot possibly get clogged with hair. They’ve also improved the brush design, the size and quality of the dust bin, the HEPA filter, the interface, button layout, the charging station, used ball bearings to help the brush spin more freely, and even the noise level is MUCH better (quieter) than the XV-11 that we have. They also added a side brush, like the one the Roomba has, to make sure the robot can get the entire surface of the floor, up to the edge of the walls, and even under the edges of furniture. Oh, and they made it shorter, so it fits under more furniture now and cleans better.</p>

<p>I hate spending money on things that do simple jobs. Especially large amounts of money ($400 or so) for something as “simple” as sweeping/vacuuming. But I can tell you that I am 100% satisfied with the Neato Botvac 80. I will be buying at least one more for the upstairs and basement. It is SO worth the money spent.</p>

<p>Neato still seems to be the underdog in the Vacuum Robot wars. Roomba has made some really nice products and has a lot of brand recognition. But I wholeheartedly recommend the Neato Botvac, especially if you’re coming from an older Neato XV model like we were. It will blow you away with how good it is. Disclaimer: I’ve had absolutely zero contact from Neato, spent $400+ of my own monies, and this is not a paid review in any way. That being said, I’d LOVE to test any of Neato’s products in the future,. =:D</p>

<p>Well done, Neato. I’ve fallen in love with your robot… again.</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Life in General" /><summary type="html"><![CDATA[I posted this on my Amazon Reviews page too, but I figured it was worth a blog post as well.]]></summary></entry><entry><title type="html">Guild Wars 2 AC Dungeon, Path 3, Burrows Pattern, Memorization By Grid</title><link href="https://movingparts.net/2014/11/18/guild-wars-2-ac-dungeon-path-3-burrows-pattern-memorization-by-grid/" rel="alternate" type="text/html" title="Guild Wars 2 AC Dungeon, Path 3, Burrows Pattern, Memorization By Grid" /><published>2014-11-18T20:29:43+00:00</published><updated>2014-11-18T20:29:43+00:00</updated><id>https://movingparts.net/2014/11/18/guild-wars-2-ac-dungeon-path-3-burrows-pattern-memorization-by-grid</id><content type="html" xml:base="https://movingparts.net/2014/11/18/guild-wars-2-ac-dungeon-path-3-burrows-pattern-memorization-by-grid/"><![CDATA[<p>I’ve been playing <a href="https://www.guildwars2.com/en/">Guild Wars 2</a> lately and I absolutely LOVE it. That’s actually an understatement. I may have a problem. Guild Wars 2 is SO awesome. It’s the first MMO RPG I’ve ever seriously tried outside a brief try at WoW, so I don’t have anything else to really compare it to. But this guy does! So if you’ve played other RPG’s before, or you’re wondering what Guild Wars 2 is all about, check out <a href="https://www.youtube.com/watch?v=Ax-_06Acj8Y">this Guild Wars 2 Angry Review</a> for perspective. tl;dw: he loves it, which is RARE. Warning, there’s some amount of cursing in this review, sadly.</p>

<p>https://www.youtube.com/watch?v=Ax-_06Acj8Y</p>

<p>Anyway, Guild Wars 2 is AWESOME. It’s a <a href="http://buy.guildwars2.com/store/gw2/en_US/html/pbPage.buyguildwars2">single, very inexpensive, price up front</a> and no monthly fees. I won’t get into how much I love the game or why right now, but “IMMENSELY” and “IN EVERY WAY” are good descriptors. We’ve been playing as a family too and that’s been a whole lot of fun, when school, work and busy-ness don’tÂ intrude.</p>

<p>I found an <a href="https://www.facebook.com/GW2ChristianFellowship">awesome Guild</a> to be a part of. We do dungeon speed runs, which get you lots of gold quickly, allow you to quickly level up characters, and are tons of fun when you coordinate as a team. One of the dungeons we speed-run is <a href="http://wiki.guildwars2.com/wiki/Ascalonian_Catacombs_(explorable)">Ascalonian Catacombs (AC</a>). AC path 3 has a part where you have to take out a sequence of 15 burrows that pop up and spawn gravelings. If you don’t kill the burrows quickly, you DIE. So what you want to do is memorize where each of the 15 burrows are going to spawn and then get to that spot before they spawn and take them out immediatelyÂ (Ice Bow #4 from an <a href="http://wiki.guildwars2.com/wiki/Elementalist">Elementalist</a> is our preferred way of doing this).</p>

<p>But it’s really stinking hard to memorize the pattern where the burrows are going to spawn. I’ve seen people describe this pattern in terms of standing in a particular spot in the dungeon, <a href="http://gaminggix.com/guild-wars-2/ascalonian-catacombs-path-3-burrows-pattern/">like this page does</a>:</p>

<p>… but that’s super confusing to me. Maybe I’ll have to learn it that way eventually, but I wanted to try a different approach.</p>

<p>I found <a href="http://gw2dungeons.net/media/dungeonimages/ACP3_burrows.jpg">this top-down map (copyright Oranisagu)</a>, which shows the graveling burrow locations. And I thought that if I overlaid the map with a simple 3x3 grid, maybe I could memorize the grid location sequence.</p>

<p>So here’s my stab at it. All I did was take <a href="http://gw2dungeons.net/media/dungeonimages/ACP3_burrows.jpg">Oranisagu’s map</a> and overlaid it with a grid:</p>

<p>[caption id=”attachment_4579” align=”alignnone” width=”300”]<a href="http://movingparts.net/wp-content/uploads/2014/11/acp3-burrow-map-with-grid_15200499754_o.jpeg"><img src="/assets/2014/11/acp3-burrow-map-with-grid_15200499754_o-300x266.jpeg" alt="" /></a> I took Oranisagu’s ACP3 burrow map (this image belongs to him) and put a grid on top of it to try to make it easier to memorize burrow spawn locations.[/caption]</p>

<p>My thinking is that I can memorize the spawn locations by grid ID. Like:</p>

<ol>
  <li>2</li>
  <li>5</li>
  <li>4</li>
  <li>8</li>
  <li>7</li>
  <li>6</li>
  <li>2</li>
  <li>6</li>
  <li>5</li>
  <li>8</li>
  <li>9</li>
  <li>1</li>
  <li>3</li>
  <li>8</li>
  <li>3</li>
</ol>

<p><strong>So, the graveling burrow spawn sequence, by grid ID would be 2548-7626-5891-383.</strong></p>

<p>I don’t know if that’s helpful for anyone, or if it’s even going to work for me. But I haven’t seen anyone else try this, so I figured it was worth a shot. We’ll see how it goes. It occurred to me that it might also work if I use a clock (1 - 12 o’clock, etc.) as a positioning system, but I think that would be even harder than this.</p>

<p>Any thoughts?</p>]]></content><author><name>Jason &apos;vanRijn&apos; Kasper</name></author><category term="Video Games" /><category term="dungeon" /><category term="guildwars2" /><category term="gw2" /><summary type="html"><![CDATA[Wherein our fearless GuildWars2-playing blogger attempts to memorize the burrow graveling spawn pattern in AC P3.]]></summary></entry></feed>