<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:webfeeds="http://webfeeds.org/rss/1.0" version="2.0">
  <channel>
    <title>Evie On-Line</title>
    <link>https://ewie.online/</link>
    <atom:link href="https://ewie.online/feed/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Just some posts and stuff</description>
    <lastBuildDate>Mon, 13 Apr 2026 13:31:38 GMT</lastBuildDate>
    <language>en</language>
    <generator>Lume v3.1.4</generator>
    <author>
      <name>Evie Finch</name>
      <uri>https://evie.online/</uri>
    </author>
    <item>
      <link>https://ewie.online/posts/20260413-a-gif-of-a-pebble-wa/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260413-a-gif-of-a-pebble-wa/</guid>
      <content:encoded>
        <![CDATA[<p><img src="https://cdn.ewie.online/pebble-face-beta.gif" alt="A gif of a pebble watch face. It looks like a Casio watch."></p>
<p>i've been working on a pebble watch face for a bit and i wanted to share it cos i'm proud of it! i'm at the hardest part now, time zones, but once i finish that i'm kinda home free.</p>
<p>any thoughts? there's a lot of parts i want to change once it's finished and i can give myself permission to increase scope.</p>]]>
      </content:encoded>
      <pubDate>Mon, 13 Apr 2026 13:31:08 GMT</pubDate>
    </item>
    <item>
      <link>https://ewie.online/posts/20260407-5-white-dudes-on-a-c/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260407-5-white-dudes-on-a-c/</guid>
      <content:encoded>
        <![CDATA[<p><img src="https://cdn.ewie.online/20260407023653-Pasted%20image%2020260406213604.jpeg" alt="5 white dudes on a couch. One of them is drinking a Miller Lite. Title reads: &#x22;Scott&#x27;s Stash: Thoughts on the Super Mario Galaxy Movie"></p>
<p>I don't know what sort of feeling this thumbnail is giving me, but I really need to unsubscribe from Scott the Woz</p>]]>
      </content:encoded>
      <pubDate>Tue, 07 Apr 2026 02:39:39 GMT</pubDate>
    </item>
    <item>
      <title>Some links you might like 10</title>
      <link>https://ewie.online/posts/20260302-some-links-you-might/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260302-some-links-you-might/</guid>
      <content:encoded>
        <![CDATA[<p>I wish I had a better process for doing these link roundups. I usually have to scrounge for my links in the moment instead of slowly building this throughout the week, and I don't leave my thoughts as I'm reading them, so I end up needing to reread the articles to share them. I don't know what I should do about this. My hotly anticipated<sup><a href="https://en.wikipedia.org/wiki/Citation_needed">[citation needed]</a></sup> reblog feature might mean that the move is to share interesting posts as I find them, but I'll have to experiment.</p>
<p>For now, here's some links.</p>
<h2 id="thom-holwerda-dark-patterns-killed-my-wifes-windows-11-installation"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260302-some-links-you-might/#thom-holwerda-dark-patterns-killed-my-wifes-windows-11-installation"><span class="icon icon-link"></span></a>Thom Holwerda: <a href="https://www.osnews.com/story/143376/dark-patterns-killed-my-wifes-windows-11-installation/">Dark patterns killed my wife's Windows 11 installation</a></h2>
<blockquote>
<p>I'm seething with rage towards Microsoft and its utter incompetence and maliciousness. Let me, for once, not mince words here: Windows 11 is a travesty, a loose collection of dark patterns and incompetence, run by people who have zero interest in lovingly crafting an operating system they can be proud of. Windows has become a vessel for subscriptions and ads, and cannot reasonably be considered anything other than a massive pile of user-hostile dark patterns designed to extract data, ad time, and subscription money from its users.</p>
</blockquote>
<p>A quote I have heard from somewhere--I do not remember the source--is "While 2026 will not be the year of the Linux desktop, the 2020s will be the decade of the Linux desktop." Linux has slowly been getting more and more "okay" and Windows has become more and more dogshit. One day we can only hope that the world will reach a point where there is a viable alternative to being treated like total garbage available for most people.</p>
<h2 id="grayson-davis-underwater-basket-weaving"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260302-some-links-you-might/#grayson-davis-underwater-basket-weaving"><span class="icon icon-link"></span></a>Grayson Davis: <a href="https://www.imightaswellexplainthejoke.com/underwater-basket-weaving/">Underwater Basket Weaving</a></h2>
<blockquote>
<p>"The bride is a graduate of Prairie Dog Tech, where she received her degree in underwater basket weaving. Her other pursuits of study were familiar bird calls, Egyptian folk dancing and men."<br>
--1952 April Fools' Day article announcing "Chlorophyll I.S. Green Marries Ima Violet Cloud in April 1 Rites" (<em>The Rock Island Argus</em>, 4/1/1952)</p>
</blockquote>
<p>Davis' new blog "<a href="https://www.imightaswellexplainthejoke.com/">I Might as Well Explain the Joke</a>" is truly great. An all-timer blog worth following. Add it to your RSS feed!</p>
<h2 id="chris-person-im-tired-of-these-useless-jackasses-making-the-computer-expensive"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260302-some-links-you-might/#chris-person-im-tired-of-these-useless-jackasses-making-the-computer-expensive"><span class="icon icon-link"></span></a>Chris Person: <a href="https://aftermath.site/ram-prices-hdd-prices-ai-bubble-computer-expensive/">I'm Tired Of These Useless Jackasses Making The Computer Expensive</a></h2>
<blockquote>
<p>I was planning on doing this as an Aftermath piece, but then I looked at the prices of spinning disk drives, which are now twice what I paid for them--just like SSDs, and just like RAM, just like GPUs before them.</p>
</blockquote>
<p>I'm sharing this because, like the author, I love the computer but hate the environment around the computer.</p>
<h2 id="bruno-dias-against-metroidbrania-a-landscape-of-knowledge-games"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260302-some-links-you-might/#bruno-dias-against-metroidbrania-a-landscape-of-knowledge-games"><span class="icon icon-link"></span></a>Bruno Dias: <a href="https://azhdarchid.com/against-metroidbrania-a-landscape-of-knowledge-games/">Against 'Metroidbrania': a Landscape of Knowledge Games</a></h2>
<blockquote>
<p>I'd put it forth that the term doesn't just sound dorky, and it's not just hard to explain (given that first you have to explain what a metroidvania is -- itself a fraught bit of terminology). I'd say it's all but <em>useless,</em> too.</p>
</blockquote>
<p>This is possibly one of my favorite blog posts of 2025 and I cannot believe I haven't shared it yet.</p>
<h2 id="clyde-mandelin-the-many-translations-of-the-lost-woods"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260302-some-links-you-might/#clyde-mandelin-the-many-translations-of-the-lost-woods"><span class="icon icon-link"></span></a>Clyde Mandelin: <a href="https://legendsoflocalization.com/articles/lost-woods-many-translations/">The Many Translations of the "Lost Woods"</a></h2>
<p>If you recognize this name, it's because he translated Mother 3. He's got a whole<br>
bunch of blog posts that talk about video game translation, an this one just so happened to be the most recent one.</p>]]>
      </content:encoded>
      <pubDate>Mon, 02 Mar 2026 04:27:19 GMT</pubDate>
    </item>
    <item>
      <title>I've used Obsidian for 5 years now</title>
      <link>https://ewie.online/posts/20260302-i-ve-used-obsidian-f/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260302-i-ve-used-obsidian-f/</guid>
      <content:encoded>
        <![CDATA[<p>Obsidian is good normal software, and it's wild to celebrate my 5 year anniversary with it. It has yet to get worse over time. I joined before there was a mobile app, sync, or anything like that, and I've since bought every single service they've offered when it came out. I'm still on the classic $5/month 50gb sync plan. It's pretty good! One day I'll write about how I use it but it's not really anything crazy.</p>]]>
      </content:encoded>
      <pubDate>Mon, 02 Mar 2026 01:49:48 GMT</pubDate>
    </item>
    <item>
      <title>Vulture Fund</title>
      <link>https://ewie.online/posts/20260220-vulture-fund/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260220-vulture-fund/</guid>
      <content:encoded>
        <![CDATA[<card-frame name="vulture-fund" side="corp" stars="4" src="https://cdn.ewie.online/20260220032412-Image.jpeg">
<div class="visually-hidden" id="card-name-vulture-fund">
<p>Weyland Operation: Transaction – Liability</p>
<p>Play cost: 7 – Influence cost: 2</p>
<p>Gain 14 credits and take 1 bad publicity.</p>
<p><em>“The boss likes to swoop in at just the last second. You should consider yourself lucky.”</em></p>
<p>4 stars</p>
</div>
</card-frame>
<script type="module" src="https://ewie.online/assets/js/components/card-frame.js"></script>
<p>I don't think there's much to say actually. I think this card wants be run as a 1 or 2-of in a decent number of non-bad publicity focused decks, and that means it's a pretty good card. Lots of money y'all. If you want more opinions on bad publicity, please read <a href="https://veronicauntilarkham.substack.com/p/bad-publicity-dont-mind-if-i-do">Veronica's piece</a> on this card and Editorial Division.</p>]]>
      </content:encoded>
      <pubDate>Fri, 20 Feb 2026 03:22:52 GMT</pubDate>
    </item>
    <item>
      <title>Let Them Dream</title>
      <link>https://ewie.online/posts/20260218-let-them-dream/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260218-let-them-dream/</guid>
      <content:encoded>
        <![CDATA[<card-frame name="let-them-dream" side="corp" stars="3" src="https://cdn.ewie.online/20260218211121-IMG_0478.jpeg">
<div class="visually-hidden" id="card-name-let-them-dream">
<p>Neutral Agenda: Initiative</p>
<p>Advancement cost: 4 – Points: 2 – Influence cost: 1</p>
<p>When you score this agenda, you may search HQ, R&#x26;D, or Archives for 1 agenda and reveal it. (Shuffle R&#x26;D after searching it.) Add that agenda to HQ or the bottom of R&#x26;D.</p>
<p>While this agenda is in the Runner’s score area, it is worth 1 less agenda point.</p>
<p>3 stars</p>
</div>
</card-frame>
<script type="module" src="https://ewie.online/assets/js/components/card-frame.js"></script>
<p>Before I talk about Let Them Dream, I need to talk about 5/3s. The job of the 5/3 agenda is to win you the game in 3 agendas, and decks that run 5/3s usually want to score out with any combination of two 2-pointers and one 3-pointer. But the 5/3 has one major vice: they kinda suck. They're so much harder to score out than 4/2s (or 3/2s!), and their payoff usually isn't even worth the work! This is especially true because corps vastly prefer to score out 5/3s as the game-winning agenda, so any "on score" text is irrelevant. If the corp got to choose, they would dedicate the entire power budget of a 5/3 towards hurting the Runner, and none of it on helping the corp. This is incredibly obvious when you see what 5/3s corps run, and why they run them. For example, <a href="https://netrunnerdb.com/en/card/30069">Send a Message</a> and <a href="https://ewie.online/posts/20260218-let-them-dream/%5Bhttps://netrunnerdb.com/en/card/34040%5D(https://netrunnerdb.com/en/card/35060)">Next Big Thing</a> give the corp tempo for having an agenda scored <em>or</em> stolen, while <a href="https://netrunnerdb.com/en/card/26056">SDS Drone Deployment</a> and <a href="https://ewie.online/posts/20260218-melies-city-luxury-l/">Méliès City Luxury Line</a> hurt the runner's tempo in the worst case and can deny a steal in the best case, but the best thing a 5/3 could do is to guarantee the runner needs to steal more agendas than you need to score. This is what <a href="https://netrunnerdb.com/en/card/09026">Global Food Initiative</a> did. It did so well at this job that <a href="https://web.archive.org/web/20190919210936/https://www.fantasyflightgames.com/en/news/2017/10/16/new-times-for-new-angeles/#:~:text=Global%20Food%20Initiative%2C%20in%20particular%2C%20has%20featured%20in%20ninety%2Dnine%20percent%20of%20competitive%20decks%20since%20its%20release">it was used in 99% of competitive decks</a> when it was put on the restricted list 2 years after its release.</p>
<p>Let Them Dream may have the same incredibly powerful effect as Global Food Initiative but, as a 4/2 that costs one neutral influence, it’s having to compete for deck slots with 3/2s that are easier to score and strong 4/2s that have a bigger impact on the board. Does this mean it’s bad actually? Hell no! Being worth only 1 point on steal is still too powerful. I can see it being used in maybe some slower glacier decks, and definitely in some decks that only run 1 and 2 point agendas (<a href="https://netrunnerdb.com/en/card/33095">Thule</a>), but I don’t see Let Them Dream being anywhere near as dominant as its predecessor.</p>]]>
      </content:encoded>
      <pubDate>Wed, 18 Feb 2026 23:32:00 GMT</pubDate>
    </item>
    <item>
      <title>Méliès City Luxury Line</title>
      <link>https://ewie.online/posts/20260218-melies-city-luxury-l/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260218-melies-city-luxury-l/</guid>
      <content:encoded>
        <![CDATA[<card-frame name="melies-city-luxury-line" side="corp" stars="5" src="https://cdn.ewie.online/20260218234101-Image.jpeg">
<div class="visually-hidden" id="card-name-melies-city-luxury-line">
<p>HB Agenda: Expansion</p>
<p>Advancement cost: 5 – Points: 3</p>
<p>As an additional cost to steal this agenda, the runner must spend click.</p>
<p>When you score this agenda, gain click.</p>
<p><em>“Welcome aboard, Moonsilver Class members. Our express stops today are at New Lovell, Heinlein, and Imamura Station.”</em></p>
<p>5 stars</p>
</div>
</card-frame>
<script type="module" src="https://ewie.online/assets/js/components/card-frame.js"></script>
<p>Scoring PD is still back baybee! <a href="https://netrunnerdb.com/en/card/21010">Ikawah Project</a> has been a staple card in scoring PD for about as long as I can find decks of it. (Here's examples from <a href="https://netrunnerdb.com/en/decklist/916c2df8-fa8e-4974-bd98-3d672e1c12c0/seamless-rush-1rst-7th-10th-at-early-bird-9-0-">2021</a>, <a href="https://netrunnerdb.com/en/decklist/aa211b67-6b11-43d5-abbe-25d78427be61/very-normal-pd-1st-at-uk-nats-2023">2023</a>, and <a href="https://netrunnerdb.com/en/decklist/1eee6152-2967-4e95-be00-7e10432083e3/nped-5th-undefeated-swiss-otg-nats-nanpc-tc-">2024</a>. I have no idea what was going on in 2022.) The only card that's as much of a staple in these decks as Ikawah Project is <a href="https://netrunnerdb.com/en/card/09026">Global Food Initiative</a> (which might be relevant to my next card review). This might be bringing back enough old tools for scoring PD to make it a top deck in the Vantage Point meta. I know that I'm certainly gonna be playing it.</p>]]>
      </content:encoded>
      <pubDate>Wed, 18 Feb 2026 15:15:03 GMT</pubDate>
    </item>
    <item>
      <title>I survived being the #1 post on Lobste.rs</title>
      <link>https://ewie.online/posts/20260215-i-survived-being-the/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260215-i-survived-being-the/</guid>
      <content:encoded>
        <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 200" preserveAspectRatio="xMidYMid meet" style="width: 100%; height: auto; overflow: visible;" class="responsive-line-chart" id="chart-fb73b3b8" data-viewbox-width="700" data-viewbox-height="200" data-base-font-size="12" data-min-font-size="10" data-max-font-size="14" data-base-line-width="2" data-label-gap="8" data-chart-bottom="170" data-padding-left="27.6">
  <line x1="27.6" y1="170" x2="694" y2="170" stroke="rgba(128, 128, 128, 0.3)" stroke-width="1" stroke-dasharray="4,4"></line>
  <text x="18.625641025641027" y="174.2" text-anchor="end" fill="currentColor" font-family="system-ui, -apple-system, sans-serif" font-size="12" opacity="0.7" class="chart-label chart-label-y" data-base-y="170">0</text>
  <line x1="27.6" y1="116.66666666667" x2="694" y2="116.66666666667" stroke="rgba(128, 128, 128, 0.3)" stroke-width="1" stroke-dasharray="4,4"></line>
  <text x="18.625641025641027" y="120.86666666667" text-anchor="end" fill="currentColor" font-family="system-ui, -apple-system, sans-serif" font-size="12" opacity="0.7" class="chart-label chart-label-y" data-base-y="116.66666666667">100</text>
  <line x1="27.6" y1="63.333333333333" x2="694" y2="63.333333333333" stroke="rgba(128, 128, 128, 0.3)" stroke-width="1" stroke-dasharray="4,4"></line>
  <text x="18.625641025641027" y="67.533333333333" text-anchor="end" fill="currentColor" font-family="system-ui, -apple-system, sans-serif" font-size="12" opacity="0.7" class="chart-label chart-label-y" data-base-y="63.333333333333">200</text>
  <line x1="27.6" y1="10" x2="694" y2="10" stroke="rgba(128, 128, 128, 0.3)" stroke-width="1" stroke-dasharray="4,4"></line>
  <text x="18.625641025641027" y="14.2" text-anchor="end" fill="currentColor" font-family="system-ui, -apple-system, sans-serif" font-size="12" opacity="0.7" class="chart-label chart-label-y" data-base-y="10">300</text>
  <line x1="27.6" y1="10" x2="27.6" y2="170" stroke="rgba(128, 128, 128, 0.3)" stroke-width="1" stroke-dasharray="4,4"></line>
  <text x="27.6" y="190.97435897435898" text-anchor="start" fill="currentColor" font-family="system-ui, -apple-system, sans-serif" font-size="12" opacity="0.7" class="chart-label chart-label-x">Feb 8</text>
  <line x1="360.8" y1="10" x2="360.8" y2="170" stroke="rgba(128, 128, 128, 0.3)" stroke-width="1" stroke-dasharray="4,4"></line>
  <text x="360.8" y="190.97435897435898" text-anchor="middle" fill="currentColor" font-family="system-ui, -apple-system, sans-serif" font-size="12" opacity="0.7" class="chart-label chart-label-x">Feb 12</text>
  <line x1="694" y1="10" x2="694" y2="170" stroke="rgba(128, 128, 128, 0.3)" stroke-width="1" stroke-dasharray="4,4"></line>
  <text x="694" y="190.97435897435898" text-anchor="end" fill="currentColor" font-family="system-ui, -apple-system, sans-serif" font-size="12" opacity="0.7" class="chart-label chart-label-x">Feb 15</text>
  <path d="M27.6,170 C28,169.95 30.77,169.52 31.57,169.47 C32.36,169.41 34.74,169.52 35.53,169.47 C36.33,169.41 38.71,168.88 39.5,168.93 C40.29,168.99 42.67,169.89 43.47,170 C44.26,170 46.64,170 47.43,170 C48.23,170 50.61,170 51.4,170 C52.19,170 54.57,170 55.37,170 C56.16,170 58.54,170 59.33,170 C60.13,170 62.51,170 63.3,170 C64.09,170 66.47,170 67.27,170 C68.06,170 70.44,170 71.23,170 C72.03,170 74.41,170 75.2,170 C75.99,170 78.37,170 79.17,170 C79.96,170 82.34,170 83.13,170 C83.93,170 86.31,170 87.1,170 C87.89,170 90.27,170 91.07,170 C91.86,170 94.24,170 95.03,170 C95.83,170 98.21,170 99,170 C99.79,170 102.17,170 102.97,170 C103.76,170 106.14,170 106.93,170 C107.73,170 110.11,170 110.9,170 C111.69,170 114.07,170 114.87,170 C115.66,170 118.04,170 118.83,170 C119.63,170 122.01,170 122.8,170 C123.59,170 125.97,170 126.77,170 C127.56,169.89 129.94,168.93 130.73,168.93 C131.53,168.93 133.91,169.95 134.7,170 C135.49,170 137.87,169.52 138.67,169.47 C139.46,169.41 141.84,169.41 142.63,169.47 C143.43,169.52 145.81,169.95 146.6,170 C147.39,170 149.77,170 150.57,170 C151.36,170 153.74,170 154.53,170 C155.33,170 157.71,170 158.5,170 C159.29,169.95 161.67,169.47 162.47,169.47 C163.26,169.47 165.64,169.95 166.43,170 C167.23,170 169.61,170 170.4,170 C171.19,170 173.57,170 174.37,170 C175.16,170 177.54,170 178.33,170 C179.13,170 181.51,170 182.3,170 C183.09,170 185.47,170 186.27,170 C187.06,169.84 189.44,168.56 190.23,168.4 C191.03,168.24 193.41,168.61 194.2,168.4 C194.99,168.19 197.37,166.21 198.17,166.27 C198.96,166.32 201.34,168.61 202.13,168.93 C202.93,169.25 205.31,169.47 206.1,169.47 C206.89,169.47 209.27,168.93 210.07,168.93 C210.86,168.93 213.24,169.47 214.03,169.47 C214.83,169.47 217.21,168.93 218,168.93 C218.79,168.93 221.17,169.47 221.97,169.47 C222.76,169.47 225.14,168.99 225.93,168.93 C226.73,168.88 229.11,168.83 229.9,168.93 C230.69,169.04 233.07,169.95 233.87,170 C234.66,170 237.04,169.47 237.83,169.47 C238.63,169.47 241.01,169.95 241.8,170 C242.59,170 244.97,170 245.77,170 C246.56,169.89 248.94,168.99 249.73,168.93 C250.53,168.88 252.91,169.47 253.7,169.47 C254.49,169.47 256.87,168.99 257.67,168.93 C258.46,168.88 260.84,168.88 261.63,168.93 C262.43,168.99 264.81,169.36 265.6,169.47 C266.39,169.57 268.77,169.95 269.57,170 C270.36,170 272.74,170 273.53,170 C274.33,170 276.71,170 277.5,170 C278.29,169.95 280.67,169.47 281.47,169.47 C282.26,169.47 284.64,170 285.43,170 C286.23,170 288.61,169.47 289.4,169.47 C290.19,169.47 292.57,169.95 293.37,170 C294.16,170 296.54,170 297.33,170 C298.13,170 300.51,170 301.3,170 C302.09,170 304.47,170 305.27,170 C306.06,170 308.44,170 309.23,170 C310.03,170 312.41,170 313.2,170 C313.99,170 316.37,170 317.17,170 C317.96,170 320.34,170 321.13,170 C321.93,170 324.31,170 325.1,170 C325.89,169.95 328.27,169.47 329.07,169.47 C329.86,169.47 332.24,169.95 333.03,170 C333.83,170 336.21,170 337,170 C337.79,170 340.17,170 340.97,170 C341.76,169.95 344.14,169.47 344.93,169.47 C345.73,169.47 348.11,169.95 348.9,170 C349.69,170 352.07,170 352.87,170 C353.66,169.95 356.04,169.47 356.83,169.47 C357.63,169.47 360.01,169.95 360.8,170 C361.59,170 363.97,170 364.77,170 C365.56,170 367.94,170 368.73,170 C369.53,170 371.91,170 372.7,170 C373.49,170 375.87,170 376.67,170 C377.46,170 379.84,170 380.63,170 C381.43,169.84 383.81,168.4 384.6,168.4 C385.39,168.4 387.77,169.84 388.57,170 C389.36,170 391.74,170 392.53,170 C393.33,170 395.71,170 396.5,170 C397.29,169.89 399.67,168.93 400.47,168.93 C401.26,168.93 403.64,169.95 404.43,170 C405.23,170 407.61,169.52 408.4,169.47 C409.19,169.41 411.57,169.41 412.37,169.47 C413.16,169.52 415.54,169.95 416.33,170 C417.13,170 419.51,170 420.3,170 C421.09,170 423.47,170 424.27,170 C425.06,170 427.44,170 428.23,170 C429.03,170 431.41,170 432.2,170 C432.99,170 435.37,170 436.17,170 C436.96,170 439.34,170 440.13,170 C440.93,169.95 443.31,169.52 444.1,169.47 C444.89,169.41 447.27,169.41 448.07,169.47 C448.86,169.52 451.24,169.95 452.03,170 C452.83,170 455.21,170 456,170 C456.79,170 459.17,170 459.97,170 C460.76,170 463.14,170 463.93,170 C464.73,170 467.11,170 467.9,170 C468.69,170 471.07,170 471.87,170 C472.66,170 475.04,170 475.83,170 C476.63,170 479.01,170 479.8,170 C480.59,170 482.97,170 483.77,170 C484.56,170 486.94,170 487.73,170 C488.53,170 490.91,170 491.7,170 C492.49,170 494.87,170 495.67,170 C496.46,170 498.84,170 499.63,170 C500.43,170 502.81,170 503.6,170 C504.39,170 506.77,170 507.57,170 C508.36,170 510.74,170 511.53,170 C512.33,170 514.71,170 515.5,170 C516.29,170 518.67,170 519.47,170 C520.26,169.89 522.64,170 523.43,168.93 C524.23,165.73 526.61,139.97 527.4,138 C528.19,136.03 530.57,146.16 531.37,149.2 C532.16,152.24 534.54,167.23 535.33,168.4 C536.13,169.57 538.51,161.2 539.3,160.93 C540.09,160.67 542.47,165.31 543.27,165.73 C544.06,166.16 546.44,164.99 547.23,165.2 C548.03,165.41 550.41,167.97 551.2,167.87 C551.99,167.76 554.37,163.97 555.17,164.13 C555.96,164.29 558.34,169.09 559.13,169.47 C559.93,169.84 562.31,168.13 563.1,167.87 C563.89,167.6 566.27,167.23 567.07,166.8 C567.86,166.37 570.24,164.03 571.03,163.6 C571.83,163.17 574.21,162.59 575,162.53 C575.79,162.48 578.17,162.8 578.97,163.07 C579.76,163.33 582.14,165.15 582.93,165.2 C583.73,165.25 586.11,163.28 586.9,163.6 C587.69,163.92 590.07,167.87 590.87,168.4 C591.66,168.93 594.04,169.73 594.83,168.93 C595.63,168.13 598.01,170 598.8,160.4 C599.59,147.65 601.97,53.95 602.77,41.47 C603.56,28.99 605.94,35.65 606.73,35.6 C607.53,35.55 609.91,40.19 610.7,40.93 C611.49,41.68 613.87,42.11 614.67,43.07 C615.46,44.03 617.84,44.56 618.63,50.53 C619.43,56.51 621.81,96.03 622.6,102.8 C623.39,109.57 625.77,116.61 626.57,118.27 C627.36,119.92 629.74,120.93 630.53,119.33 C631.33,117.73 633.71,106.43 634.5,102.27 C635.29,98.11 637.67,79.92 638.47,77.73 C639.26,75.55 641.64,77.89 642.43,80.4 C643.23,82.91 645.61,100.08 646.4,102.8 C647.19,105.52 649.57,106.75 650.37,107.6 C651.16,108.45 653.54,109.57 654.33,111.33 C655.13,113.09 657.51,127.07 658.3,125.2 C659.09,123.33 661.47,92.99 662.27,92.67 C663.06,92.35 665.44,117.84 666.23,122 C667.03,126.16 669.41,133.68 670.2,134.27 C670.99,134.85 673.37,127.07 674.17,127.87 C674.96,128.67 677.34,142.85 678.13,142.27 C678.93,141.68 681.31,121.15 682.1,122 C682.89,122.85 685.27,148.72 686.07,150.8 C686.86,152.88 689.24,145.09 690.03,142.8 C690.83,140.51 693.6,129.36 694,127.87" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" class="chart-line"></path>
  <circle cx="694" cy="127.87" r="4" fill="currentColor" class="chart-dot"></circle>
</svg>
<p>Hey y'all. This is gonna be a short one. My <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/">post about Arborium</a> ended up doing severals. By this I mean it was briefly the number 1 post on <a href="https://lobste.rs/s/unpaan/arborium_is_ai_slopware_should_not_be">Lobste.rs</a>, which is an invite-only diet orange site. Thankfully, I've only received a small amount of harassment from this. Anyways Netrunner card reviews coming soon.</p>]]>
      </content:encoded>
      <pubDate>Sun, 15 Feb 2026 22:19:13 GMT</pubDate>
    </item>
    <item>
      <link>https://ewie.online/posts/20260214-btw-this-site-does-h/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260214-btw-this-site-does-h/</guid>
      <content:encoded>
        <![CDATA[<p>btw this site does have an rss feed it's at <a href="https://ewie.online/feed/feed.xml">https://ewie.online/feed/feed.xml</a> or <a href="https://ewie.online/feed/feed.json">https://ewie.online/feed/feed.json</a> my feed page is meant to teach people how to get into rss and i haven't got around to it yet cos it's a hobby site ;-;</p>]]>
      </content:encoded>
      <pubDate>Sat, 14 Feb 2026 22:53:13 GMT</pubDate>
    </item>
    <item>
      <title>Arborium is AI slopware and should not be trusted</title>
      <link>https://ewie.online/posts/20260214-arborium-is-ai-slopw/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260214-arborium-is-ai-slopw/</guid>
      <content:encoded>
        <![CDATA[<p>It would be an understatement to say that I am mildly interested in syntax highlighting.<sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-2" id="user-content-fnref-2" data-footnote-ref aria-describedby="footnote-label">1</a></sup> While I have yet to write a full-fledged parser myself, my blog's<sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-9" id="user-content-fnref-9" data-footnote-ref aria-describedby="footnote-label">2</a></sup> syntax highlighting plugin is custom-built. Under the hood it uses the <a href="https://lezer.codemirror.net/">Lezer</a><sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref aria-describedby="footnote-label">3</a></sup> parsing and highlighting system, which is inspired by the gold standard of syntax highlighting used in all modern code editors except Visual Studio Code: <a href="https://tree-sitter.github.io/tree-sitter/">tree-sitter</a>. I think Lezer is a great tool and it's especially great in the use case of syntax highlighting on the web,<sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-3" id="user-content-fnref-3" data-footnote-ref aria-describedby="footnote-label">4</a></sup> but I've still kept my eye out for the chance to use tree-sitter instead.</p>
<p>Last weekend while scrolling through some quieter feeds in my RSS reader, I came across an article which might be the something better I was looking for.</p>
<media-card href="https://fasterthanli.me/articles/introducing-arborium">
  <img src="https://cdn.ewie.online/20260214060035-IMG_0467.jpeg" width="662" height="348" loading="lazy" slot="img" />
  <span slot="domain">fasterthanli.me</span>
  <time slot="time" datetime="2025-12-13T12:00:00.000Z" title="12/13/2025, 12:00:00 PM">Dec 13, 2025</time>
  <p slot="title" title="Introducing arborium, a tree-sitter distribution
">Introducing arborium, a tree-sitter distribution</p>
  <p title="About two weeks ago I entered a discussion with the docs.rs team about, basically, why we have to look at this: When we could be looking at this: And of course, as always, there are reasons why thi...">About two weeks ago I entered a discussion with the docs.rs team about, basically, why we have to look at this: When we could be looking at this: And of course, as always, there are reasons why thi...</p>
</media-card>
<script type="module" src="https://ewie.online/assets/js/components/media-card.js"></script>
<p>Arborium is a high-performance syntax highlighting tool powered by tree-sitter created by Amos Wenger. Amos (also known as fasterthanlime) is a long-time open source developer who I greatly respected. I learned Rust from his Advent of Code article series, and I appreciate his commitment to correctness and speed. I was especially excited to learn about Arborium because it was designed to work on the web using Javascript. I could use this!</p>
<hr>
<h2 id="trapped-in-the-arborium"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#trapped-in-the-arborium"><span class="icon icon-link"></span></a>Trapped in the Arborium</h2>
<p>I started writing code to integrate it into my site immediately and had a plugin ready within an hour or so. Here’s the relevant code (edited for clarity):</p>
<pre class="lezer"><code class="language-ts"><span class="tok-variableName">codeElements</span><span class="tok-operator">.</span><span class="tok-propertyName">forEach</span><span class="tok-punctuation">(</span><span class="tok-keyword">async</span> <span class="tok-punctuation">(</span><span class="tok-variableName tok-definition">element</span><span class="tok-punctuation">:</span> <span class="tok-typeName">Element</span><span class="tok-punctuation">)</span> <span class="tok-punctuation">=></span> <span class="tok-punctuation">{</span>
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">programmingLanguage</span> <span class="tok-operator">=</span> <span class="tok-variableName">detectLanguage</span><span class="tok-punctuation">(</span><span class="tok-variableName">element</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	<span class="tok-comment">// highlight is the all-in-one function from arborium that does all the real work</span>
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">highlightedText</span> <span class="tok-operator">=</span> <span class="tok-keyword">await</span> <span class="tok-variableName">highlight</span><span class="tok-punctuation">(</span><span class="tok-variableName">programmingLanguage</span><span class="tok-punctuation">,</span> <span class="tok-variableName">element</span><span class="tok-operator">.</span><span class="tok-propertyName">textContent</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	<span class="tok-variableName">element</span><span class="tok-operator">.</span><span class="tok-propertyName">innerHTML</span> <span class="tok-operator">=</span> <span class="tok-variableName">highlightedText</span><span class="tok-punctuation">;</span>
<span class="tok-punctuation">}</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
</code></pre>
<p>I tried building the site and...</p>
<p><img src="https://cdn.ewie.online/546851520-86b75c9a-439a-453b-85a3-8b475c4f390d.png" alt="Terminal screenshot. Reads: Error highlighting code block in /posts/Accessible fancy text for all.md: ReferenceError: window is not defined"></p>
<p>Ouch... It didn’t work, but this is a simple problem. <code>window</code> is a global object that can be accessed anywhere in the browser because only the browser has a window. It doesn’t exist if you’re running Javascript code outside of the browser like with Deno.<sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-6" id="user-content-fnref-6" data-footnote-ref aria-describedby="footnote-label">5</a></sup> And if you try to use <code>window</code> then you’re advised to replace it.</p>
<p><img src="https://cdn.ewie.online/Pasted%20image%2020260210125418.png" alt="A code snippet using window. Deno is saying &#x22;Window is no longer available in Deno. Instead, use globalThis.&#x22;"></p>
<p>I read through Arborium’s Javascript source code and found out that, as part of setup, <code>highlight</code> directly calls some code that tries to access <code>window</code>. No worries, there’s a more direct way of highlighting code that circumvents <code>highlight</code>’s setup phase. I’ll do that instead</p>
<pre class="lezer"><code class="language-ts"><span class="tok-variableName">codeElements</span><span class="tok-operator">.</span><span class="tok-propertyName">forEach</span><span class="tok-punctuation">(</span><span class="tok-keyword">async</span> <span class="tok-punctuation">(</span><span class="tok-variableName tok-definition">element</span><span class="tok-punctuation">:</span> <span class="tok-typeName">Element</span><span class="tok-punctuation">)</span> <span class="tok-punctuation">=></span> <span class="tok-punctuation">{</span>
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">programmingLanguage</span> <span class="tok-operator">=</span> <span class="tok-variableName">detectLanguage</span><span class="tok-punctuation">(</span><span class="tok-variableName">element</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	<span class="tok-comment">// const highlighted = await highlight(lang, element.textContent);</span>
	
	<span class="tok-comment">// loadGrammar tells Arborium to load the language you want to use.</span>
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">languageGrammar</span> <span class="tok-operator">=</span> <span class="tok-keyword">await</span> <span class="tok-variableName">loadGrammar</span><span class="tok-punctuation">(</span><span class="tok-variableName">programmingLanguage</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">highlightedText</span> <span class="tok-operator">=</span> <span class="tok-variableName">languageGrammar</span><span class="tok-operator">.</span><span class="tok-propertyName">highlight</span><span class="tok-punctuation">(</span><span class="tok-variableName">element</span><span class="tok-operator">.</span><span class="tok-propertyName">textContent</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	<span class="tok-variableName">element</span><span class="tok-operator">.</span><span class="tok-propertyName">innerHTML</span> <span class="tok-operator">=</span> <span class="tok-variableName">highlightedText</span><span class="tok-punctuation">;</span>
<span class="tok-punctuation">}</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
</code></pre>
<p>And then I build my site again, and...</p>
<p><img src="https://cdn.ewie.online/547181602-013f2819-3fc0-4137-9a72-89fec5775d0b.png" alt="Terminal screenshot. Reads: Failed to load grammar &#x27;html&#x27;: TypeError: Only file and data URLs are supported by the default ESM loader. Received protocol &#x27;https&#x27;"></p>
<p>Ough... It didn’t work. I looked into it and this might be a Deno issue, which is less well-supported than the more commonly used Node. Arborium also appears to be doing some hacky dynamic code importing that isn’t playing nice with the way Deno expects imports to work. I haven’t tested this in Node, so maybe it works better there. Regardless, I’ve read enough of the source code to have learned that Arborium has some completely undocumented<sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-4" id="user-content-fnref-4" data-footnote-ref aria-describedby="footnote-label">6</a></sup> configuration options that would let me replace its dynamic code importing code with my own, so I guess I can do that.</p>
<pre class="lezer"><code class="language-ts"><span class="tok-variableName">codeElements</span><span class="tok-operator">.</span><span class="tok-propertyName">forEach</span><span class="tok-punctuation">(</span><span class="tok-keyword">async</span> <span class="tok-punctuation">(</span><span class="tok-variableName tok-definition">element</span><span class="tok-punctuation">:</span> <span class="tok-typeName">Element</span><span class="tok-punctuation">)</span> <span class="tok-punctuation">=></span> <span class="tok-punctuation">{</span>
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">programmingLanguage</span> <span class="tok-operator">=</span> <span class="tok-variableName">detectLanguage</span><span class="tok-punctuation">(</span><span class="tok-variableName">element</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	
	<span class="tok-comment">// loadGrammar tells Arborium to load the language you want to use.</span>
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">languageGrammar</span> <span class="tok-operator">=</span> <span class="tok-keyword">await</span> <span class="tok-variableName">loadGrammar</span><span class="tok-punctuation">(</span><span class="tok-variableName">programmingLanguage</span><span class="tok-punctuation">,</span> <span class="tok-punctuation">{</span>
		<span class="tok-propertyName tok-definition">resolveJs</span><span class="tok-punctuation">:</span> <span class="tok-punctuation">(</span><span class="tok-punctuation">{</span> <span class="tok-propertyName">programmingLanguage</span><span class="tok-punctuation">}</span><span class="tok-punctuation">:</span> <span class="tok-typeName">ResolveArgs</span><span class="tok-punctuation">)</span> <span class="tok-punctuation">=></span> <span class="tok-punctuation">(</span>
			<span class="tok-comment">// Deno-specific dynamic imports to make the dang thing work </span>
			<span class="tok-keyword">import</span><span class="tok-punctuation">(</span><span class="tok-string2">`npm:@arborium/</span><span class="tok-punctuation">${</span><span class="tok-variableName">programmingLanguage</span><span class="tok-punctuation">}</span><span class="tok-string2">`</span><span class="tok-punctuation">)</span>
		<span class="tok-punctuation">)</span>
	<span class="tok-punctuation">}</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">highlightedText</span> <span class="tok-operator">=</span> <span class="tok-variableName">languageGrammar</span><span class="tok-operator">.</span><span class="tok-propertyName">highlight</span><span class="tok-punctuation">(</span><span class="tok-variableName">element</span><span class="tok-operator">.</span><span class="tok-propertyName">textContent</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	<span class="tok-variableName">element</span><span class="tok-operator">.</span><span class="tok-propertyName">innerHTML</span> <span class="tok-operator">=</span> <span class="tok-variableName">highlightedText</span><span class="tok-punctuation">;</span>
<span class="tok-punctuation">}</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
</code></pre>
<p>That should be everything. In theory, I’ve worked around all these tiny little bugs and now I’m on the easy street of straightforward code that just works.</p>
<p>It should work. I should be done.</p>
<p><img src="https://cdn.ewie.online/SCR-20260209-jzvk.png" alt="Terminal screenshot. Reads: [arborium] Grammar &#x27;html&#x27; loaded successfully. Then it shows a bunch of pending promises. Then it says: error: Uncaught ReferenceError: window is not defined"></p>
<p>I’m back at the first bug.</p>
<p>So here I’m stuck. I try to work around the code that uses <code>window</code> and I run into issues with imports, then I try to work around imports and I run back into issues with <code>window</code>. There’s only one option left, and that’s to file some issues on the GitHub code repository for Arborium and wait for Amos to fix them.</p>
<h2 id="filing-issues"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#filing-issues"><span class="icon icon-link"></span></a>Filing issues</h2>
<p>I file two issues, <a href="https://github.com/bearcove/arborium/issues/148">one at Sunday night</a> and <a href="https://github.com/bearcove/arborium/issues/149">the other on Monday morning</a>. About an hour after the second issue, Amos responds saying he’s got a completed pull request<sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-5" id="user-content-fnref-5" data-footnote-ref aria-describedby="footnote-label">7</a></sup> that fixes all the problems I was running into. This seems like a quick turnaround for some environment-specific bugs, but he’s also a pretty good developer who’s been working on this for much longer than I have. Perhaps his experience meant he could quickly clock what the problem was and fix it, but I then open the PR and find my greatest fears realized.</p>
<p><img src="https://cdn.ewie.online/SCR-20260212-ioit.png" alt="A GitHub pull request displaying a summary, code snippet, and test plan. Summary describes replacing window with globalThis and introduces a registerGrammar API, the code snippet shows the usage for registerGrammar, finally, there&#x27;s a test plan to verify it works, and mentions my two issues as fixed. The text reads as strongly AI generated."></p>
<hr>
<p>You see, this whole time I’ve been misleading you. While I was trying to debug all these simple yet awkward bugs, a sort of dread was building up in the back of my mind. I was starting to get this feeling that Arborium might be almost completely written by AI.</p>
<p>To demonstrate what I mean by getting a feeling, let’s look at the <a href="https://arborium.bearcove.eu/">Arborium website</a>. It’s a nice-looking website, but if you look a little closer you’ll notice some inconsistencies: Arborium’s copy has a few, but not many, <a href="https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing">AI tells</a>;<sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-7" id="user-content-fnref-7" data-footnote-ref aria-describedby="footnote-label">8</a></sup> some incorrect or outdated links; all code blocks except the “hero image” code block lack highlighting, which means they’re not formatted in a way that Arborium would recognize (something I would avoid if I were trying to show off my syntax highlighting tool); and, most importantly, there’s a complete lack of documentation. You’re given steps on how to use Arborium in simple use cases, but you’re completely fucked the moment you step outside the golden path, leaving you with no recourse except to read the source code. As you saw earlier, this is what happened to me.</p>
<p>This all added up to this strong AI “vibe”, but I wasn’t looking for it at the time. I had heard some time ago that Amos was dabbling with AI, so I didn’t come in expecting pristine, exclusively human-written code. But, I also did not expect the rot to go this deep. I suspect that the Arborium website and codebase are primarily AI; although I doubt either Amos or I have any way of confirming or denying the percentage of code that’s AI-generated.</p>
<p>This, along with some recent drama I learned about, led me to pass on using Arborium. Even with the bug fixes, I would rather go back to my Lezer integration.</p>
<h2 id="the-recent-drama"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#the-recent-drama"><span class="icon icon-link"></span></a>The recent drama</h2>
<p>This was not happening entirely in isolation. As I am wont to do, I was bitching about being unable to make Arborium work to my friend <a href="https://damien.zone/">Damien</a>. He said that he was unsurprised by the use of AI in Arborium ever since a month ago, when Amos <a href="https://hachyderm.io/@fasterthanlime/115861122803393499">accused</a> zkat (the maker of the <a href="https://github.com/zkat/miette">miette</a> error-handling Rust library) of “witch hunting” after zkat added Amos to a list called “open slopware”, which I have heard was meant to list software and developers that use AI. Perhaps in part due to Amos’ comments (I am not entirely aware of the timetable), “open slopware” got a lot of backlash, which led to zkat receiving a deluge of harassment, which resulted in her <a href="https://toot.cat/@zkat/115867858076294405">announcing her leave</a> from the open source community the day after Amos’ accusation. At the same time, Amos <a href="https://github.com/facet-rs/facet/issues/1727">ripped miette out</a> from all of their open source projects and <a href="https://en.wikipedia.org/wiki/Vibe_coding">vibe coded</a> a <a href="https://github.com/bearcove/arborium/commit/89ccbb0d67716f78f9d33354179f008385c03d50">replacement</a>.</p>
<p>This drama is not the most relevant to Arborium as a project, and I’m not too bothered by Amos replacing a dependency for personal reasons,<sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-8" id="user-content-fnref-8" data-footnote-ref aria-describedby="footnote-label">9</a></sup> but I find it to be a bit childish to make AI write a replacement for a significant dependency for all your open source projects in such a short period of time. At least treat the process of replacing this dependency with the gravitas it deserves to ensure that the end user of the library doesn’t have a degraded experience from your drama.</p>
<h2 id="back-to-lezer"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#back-to-lezer"><span class="icon icon-link"></span></a>Back to Lezer</h2>
<p>While returning to Lezer took no effort, I could apply the lessons I learned from integrating Arborium to improve my Lezer plugin.<sup><a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fn-10" id="user-content-fnref-10" data-footnote-ref aria-describedby="footnote-label">10</a></sup> Doing this saved about 100 lines of code and greatly simplified the logic. Arborium still had some features that my own plugin lacked, like using <a href="https://arborium.bearcove.eu/#:~:text=Arborium%20uses%20custom%20HTML%20elements%20to%20mark%20up%20syntax.%20Each%20tag%20corresponds%20to%20a%20semantic%20code%20element.%20To%20create%20custom%20themes%2C%20target%20these%20elements%20in%20your%20CSS.">custom HTML tags</a> to mark up the code to reduce file sizes, but it would be trivial to implement them myself.</p>
<p>I have come away from this with a newfound appreciation for Lezer. While it has some issues, it also has <em>real</em> documentation, a similar level of power to tree-sitter (with minimal concessions made for the limitations of the web), and is easy to work with. The most complicated code that I needed to make Lezer work is still simple enough to be embedded in a blog post. (It was, in fact, embedded in Joel Gustafson's <a href="https://joelgustafson.com/posts/2022-05-31/syntax-highlighting-on-the-web/#:~:text=Here&#x27;s%20its%20entire%20source%20code:">Syntax Highlighting on the Web</a>.) The only trade-off I’m making is an increased difficulty in using off-the-shelf coding themes, but my blog uses a custom-built coding theme, so that’s not a problem for now. It was also <a href="https://raphlinus.github.io/xi/2020/06/27/xi-retrospective.html#:~:text=If%20I%20were%20trying%20to%20create%20the%20best%20possible%20syntax%20highlighting%20experience%20today%2C%20I%E2%80%99d%20adapt%20Marijn%20Haverbeke%E2%80%99s%20Lezer.">recommended by the Xi-Editor guy</a>, if that’s worth anything.</p>
<p>Out of an abundance of caution, I have reached out to the developer of Lezer, Marijn Haverbeke, on whether they used AI in their code. Here is their response:</p>
<blockquote>
<p>No, I don’t use language models and I’ve been updating my contribution guides to forbid slop code in pull requests.</p>
</blockquote>
<hr>
<h2 id="but-does-arborium-work"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#but-does-arborium-work"><span class="icon icon-link"></span></a>But does Arborium work?</h2>
<p>Even though I have moved away from Arborium due to my own personal distaste of AI-“enhanced” development, this is not something a developer with weaker moral convictions would care about. Amos fixed the bugs! They even implemented manually importing programming language grammars, something that I off-handedly mentioned that I would appreciate. If you didn’t care about any of the other drama, this sounds unambiguously good. I thought it would be prudent to see for myself before publishing this blog post, so I updated all my code to match what was described in the PR:</p>
<pre class="lezer"><code class="language-ts"><span class="tok-comment">// Deno has its own method for reading files, but it’s what the PR said to use.</span>
<span class="tok-keyword">import</span> <span class="tok-punctuation">{</span> <span class="tok-variableName tok-definition">readFile</span> <span class="tok-punctuation">}</span> <span class="tok-keyword">from</span> <span class="tok-string">"node:fs/promises"</span><span class="tok-punctuation">;</span>
<span class="tok-keyword">import</span> <span class="tok-keyword">*</span> <span class="tok-keyword">as</span> <span class="tok-variableName tok-definition">htmlGrammar</span> <span class="tok-keyword">from</span> <span class="tok-string">"https://cdn.jsdelivr.net/npm/@arborium/html@2.13.0"</span><span class="tok-punctuation">;</span>
<span class="tok-keyword">import</span> <span class="tok-keyword">*</span> <span class="tok-keyword">as</span> <span class="tok-variableName tok-definition">cssGrammar</span> <span class="tok-keyword">from</span> <span class="tok-string">"https://cdn.jsdelivr.net/npm/@arborium/css@2.13.0"</span><span class="tok-punctuation">;</span>

<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">programmingLanguages</span><span class="tok-punctuation">:</span> <span class="tok-typeName">Record</span>&#x3C;<span class="tok-typeName">string</span><span class="tok-punctuation">,</span> <span class="tok-typeName">unknown</span>> <span class="tok-operator">=</span> <span class="tok-punctuation">{</span>
	<span class="tok-propertyName tok-definition">html</span><span class="tok-punctuation">:</span> <span class="tok-variableName">htmlGrammar</span><span class="tok-punctuation">,</span>
	<span class="tok-propertyName tok-definition">css</span><span class="tok-punctuation">:</span> <span class="tok-variableName">cssGrammar</span><span class="tok-punctuation">,</span>
<span class="tok-punctuation">}</span><span class="tok-punctuation">;</span>

<span class="tok-comment">// The PR said to import the wasm from the node modules folder, which Deno lacks.</span>
<span class="tok-comment">// I had to download it myself from jsdelivr.</span>
<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">wasmFiles</span><span class="tok-punctuation">:</span> <span class="tok-typeName">Record</span>&#x3C;<span class="tok-typeName">string</span><span class="tok-punctuation">,</span> <span class="tok-typeName">unknown</span>> <span class="tok-operator">=</span> <span class="tok-punctuation">{</span>
	<span class="tok-propertyName tok-definition">html</span><span class="tok-punctuation">:</span> <span class="tok-keyword">await</span> <span class="tok-variableName">readFile</span><span class="tok-punctuation">(</span><span class="tok-string">"./helpers/arborium/html_grammar_bg.wasm"</span><span class="tok-punctuation">)</span><span class="tok-punctuation">,</span>
	<span class="tok-propertyName tok-definition">css</span><span class="tok-punctuation">:</span> <span class="tok-keyword">await</span> <span class="tok-variableName">readFile</span><span class="tok-punctuation">(</span><span class="tok-string">"./helpers/arborium/css_grammar_bg.wasm"</span><span class="tok-punctuation">)</span><span class="tok-punctuation">,</span>
<span class="tok-punctuation">}</span><span class="tok-punctuation">;</span>

<span class="tok-variableName">codeElements</span><span class="tok-operator">.</span><span class="tok-propertyName">forEach</span><span class="tok-punctuation">(</span><span class="tok-keyword">async</span> <span class="tok-punctuation">(</span><span class="tok-variableName tok-definition">element</span><span class="tok-punctuation">:</span> <span class="tok-typeName">Element</span><span class="tok-punctuation">)</span> <span class="tok-punctuation">=></span> <span class="tok-punctuation">{</span>
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">programmingLanguage</span> <span class="tok-operator">=</span> <span class="tok-variableName">language</span><span class="tok-punctuation">(</span><span class="tok-variableName">element</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>

	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">languageGrammar</span> <span class="tok-operator">=</span> <span class="tok-keyword">await</span> <span class="tok-variableName">registerGrammar</span><span class="tok-punctuation">(</span>
	  <span class="tok-variableName">programmingLanguages</span><span class="tok-punctuation">[</span><span class="tok-variableName">programmingLanguage</span><span class="tok-punctuation">]</span><span class="tok-punctuation">,</span>
	  <span class="tok-variableName">wasmFiles</span><span class="tok-punctuation">[</span><span class="tok-variableName">programmingLanguage</span><span class="tok-punctuation">]</span> <span class="tok-keyword">as</span> <span class="tok-typeName">any</span><span class="tok-punctuation">,</span> <span class="tok-comment">// this was the only way I could make it work</span>
	<span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	<span class="tok-keyword">const</span> <span class="tok-variableName tok-definition">highlightedText</span> <span class="tok-operator">=</span> <span class="tok-keyword">await</span> <span class="tok-variableName">languageGrammar</span><span class="tok-operator">.</span><span class="tok-propertyName">highlight</span><span class="tok-punctuation">(</span><span class="tok-variableName">element</span><span class="tok-operator">.</span><span class="tok-propertyName">textContent</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
	<span class="tok-variableName">element</span><span class="tok-operator">.</span><span class="tok-propertyName">innerHTML</span> <span class="tok-operator">=</span> <span class="tok-variableName">highlightedText</span><span class="tok-punctuation">;</span>
<span class="tok-punctuation">}</span><span class="tok-punctuation">)</span><span class="tok-punctuation">;</span>
</code></pre>
<p>This is so much more complicated and hacky than my updated Lezer plugin. Even if it works, I would not want to use this and it would feel too brittle to not feel like my blog would break at any moment, but I’m trying to roughly match what the pull request says to do. I build, and...</p>
<p><img src="https://cdn.ewie.online/SCR-20260211-kxtt.png" alt="Failed to load host: TypeError: [ERR_UNSUPPORTED_ESM_URL_SCHEME] Only file and data URLs are supported by the default ESM loader. Received protocol &#x27;https&#x27;"></p>
<p>I guess I shouldn’t be surprised.</p>
<section data-footnotes class="footnotes"><h2 class="sr-only" id="footnote-label"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#footnote-label"><span class="icon icon-link"></span></a>Footnotes</h2>
<ol>
<li id="user-content-fn-2">
<p>Syntax highlighting is just highlighting parts of code to make it more aesthetically pleasing and easier to read. In other words, it’s when the code has pretty colors attached to it. <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-2" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-9">
<p>Which is built with <a href="https://lume.land/">Lume</a>! A really great static site generator inspired by <a href="https://11ty.dev/">11ty</a> that manages to balance power with ease of use. I don’t think any other static site generator would be simple enough and well documented enough for me to build my own plugins like this. <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-9" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-1">
<p>Lezer is also what powers Codemirror. If you don’t know what that is, it’s a code editor that runs in the browser. You’ve probably seen it before, since it’s used in everything from Chrome DevTools to the Obsidian note-taking app. <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 3" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-3">
<p>In Lezer’s own words, “Unfortunately, tree-sitter is written in C, which is still awkward to run in the browser (and CodeMirror targets non-WASM browsers). It also generates very hefty grammar files because it makes the size/speed trade-off in a different way than a web system would.” <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-3" data-footnote-backref="" aria-label="Back to reference 4" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-6">
<p>This also applies to other non-browser Javascript runtimes, like Bun and Node. <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-6" data-footnote-backref="" aria-label="Back to reference 5" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-4">
<p>This does not count as documentation. <img src="https://cdn.ewie.online/SCR-20260210-lxpl.png" alt="A screenshot from the Arborium website. It reads: Grammars are loaded on-demand from jsDelivr (configurable)."> <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-4" data-footnote-backref="" aria-label="Back to reference 6" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-5">
<p>A way for a developer to notify other developers that they have completed a feature. <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-5" data-footnote-backref="" aria-label="Back to reference 7" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-7">
<p>What I've noticed is its use of the royal "we" and also some catchphrases like "that one's hard" and some other common AI marketing-esque phrases. I don't really see any of these used on other syntax highlighting websites in the same way that Arborium uses them. <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-7" data-footnote-backref="" aria-label="Back to reference 8" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-8">
<p>It could be argued that this blog post is a lengthy justification for removing Arborium from my site for personal reasons. <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-8" data-footnote-backref="" aria-label="Back to reference 9" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-10">
<p>I also turned it from a Rehype plugin to a regular Lume plugin! This is not faster since Lume renders posts concurrently, so maybe I shouldn't do it, but it does feels simpler and it should take less work to bring it up to feature parity. <a href="https://ewie.online/posts/20260214-arborium-is-ai-slopw/#user-content-fnref-10" data-footnote-backref="" aria-label="Back to reference 10" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>]]>
      </content:encoded>
      <pubDate>Sat, 14 Feb 2026 02:59:02 GMT</pubDate>
    </item>
    <item>
      <link>https://ewie.online/posts/20260203-damn-season-3-of-dun/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260203-damn-season-3-of-dun/</guid>
      <content:encoded>
        <![CDATA[<p>damn season 3 of dungeons and daddies was really good. i have issues with it that i'll get into later but damn what a finale (2 months late but still)</p>]]>
      </content:encoded>
      <pubDate>Tue, 03 Feb 2026 22:15:59 GMT</pubDate>
    </item>
    <item>
      <link>https://ewie.online/posts/20260115-quote-back-href-http/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260115-quote-back-href-http/</guid>
      <content:encoded>
        <![CDATA[<quote-back href="https://blog.vbuckenham.com/the-88x31-button-spec/">
<p>To give a way to automate adding a section to a personal website which links to the websites of your friends and allies, and which does so via the medium of 83x11 badges. Ideally you'd have a list of websites in whatever tooling you use to generate your site, and when you push the button it goes off and finds the buttons and downloads them, and then it puts them in a nice little display, each pointing to the canonical url for that site with the proper alt text.</p>
<span slot="author">v buckenham</span>
<span slot="title">The 88x31 button spec</span>
</quote-back>
<script type="module" src="https://ewie.online/assets/js/components/quote-back.js"></script>
<p>good news! the <code>well-known/button</code> spec already exists, just in a different form. you can find it here: <a href="https://codeberg.org/LunarEclipse/well-known-button">https://codeberg.org/LunarEclipse/well-known-button</a>. i know about this because <a href="https://beeps.website/">beeps</a> uses it, and because it's currently (partially) implemented on the 3.0-ish<sup><a href="https://ewie.online/posts/20260115-quote-back-href-http/#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref aria-describedby="footnote-label">1</a></sup> branch of my site.</p>
<p>there is a practical difference between v's spec and the well known spec, which is the well known spec uses json while v's spec uses meta tags. i have no idea if that makes a real difference though, lol.</p>
<section data-footnotes class="footnotes"><h2 class="sr-only" id="footnote-label"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260115-quote-back-href-http/#footnote-label"><span class="icon icon-link"></span></a>Footnotes</h2>
<ol>
<li id="user-content-fn-1">
<p>2.5? <a href="https://ewie.online/posts/20260115-quote-back-href-http/#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>]]>
      </content:encoded>
      <pubDate>Thu, 15 Jan 2026 04:17:00 GMT</pubDate>
    </item>
    <item>
      <title>The 2025 Look Back</title>
      <link>https://ewie.online/posts/20260101-the-2025-look-back/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20260101-the-2025-look-back/</guid>
      <content:encoded>
        <![CDATA[<p>Another year has come and gone, as they say. In this time of reflection, I'd like to look back at 2025, and note what I did, what I liked, and what I'd like to improve on.</p>
<h2 id="silly-website-maintenance-stuff"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260101-the-2025-look-back/#silly-website-maintenance-stuff"><span class="icon icon-link"></span></a>Silly website maintenance stuff</h2>
<p>Unfortunately, I spend a lot of time on my website talking about making and maintaining the website. Trust me when I say that I make it look much more difficult to run a website compared to how it actually is. Even still, the website has shown a lot of positive growth this year! Not in the numbers sense, mind you. I don't track analytics. But in the past year, I've shipped <a href="https://github.com/qt-dork/ewie.online/commit/44f339227d6c0d212bb6e5f79d1cb5f90d394e7e">Evie On-Line 2.0</a>, which was the huge redesign I did a while back, I've added comments, and I've tried to streamline posting. This has somewhat worked out, and I've had spurts of more semi-active posting on here. Generally, I think that the biggest thing holding me back from shitposting on my own site is this faux air of prestige. I feel like I can't flood people's (RSS) feeds with my own garbage because it drowns out the quality posts and because it'll bother people. Outside of that, the site lacks real shares, and I'd like to better unify the design system and write more about the actual systems behind the site. This site has a bunch of interesting tech powering it! ...Not that it really warrants it.</p>
<p>Outside of that, There's the annoying conversation about hosting and morals. The code for Evie On-Line is currently hosted on Github, and the site itself, image hosting, and comments are all run through Cloudflare. Cloudflare is not great morals-wise, and I would like to self-host more of it and move away from Cloudflare whenever possible (not even mentioning that I've been paying for a cheap VPS for about 9 months now despite not even using it). I don't know if I'll ever truly be free, but there's a lot of improvements I can make right now without too much stress.</p>
<p>I also still have a massive todo list of minor improvements to make to the site that I've been (very) slowly working my way through. Thanks to <a href="https://www.wavebeem.com/">Sage</a> and <a href="https://beeps.website/">Beeps</a> for their feedback! I'm sorry I haven't made as much progress in that list as I would've liked. I started with the hardest task first...</p>
<p>To turn all this into a list of deliverables for 2026, it would be:</p>
<ul>
<li>Refine design system (smaller stuff like touch ups and bigger stuff like shares and improved comments)</li>
<li>Refine site architecture</li>
<li>Self-host site</li>
<li>Move site codebase away from Github</li>
<li>Add shares</li>
<li>Add likes</li>
<li>Improve comments (replies)</li>
<li>Figure out a way of surfacing quality posts while still letting me shitpost relentlessly on main. I've seen some people separate "posting" from "articles" and I think that's for cowards.</li>
<li>Continue to reupload cohost archive</li>
<li>Do the list of feedback</li>
</ul>
<h2 id="posting"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260101-the-2025-look-back/#posting"><span class="icon icon-link"></span></a>Posting</h2>
<p>That's right it's website stuff round 2. Last year I didn't post enough. This hasn't been due to an increase in touching grass. I've been on the socials more than ever and I should be on them less! The problem is that I haven't been writing enough. I haven't done enough shitposting OR effortposting. I have so many thoughts about dumb shit and I've let them all stay bottled up. This year I hope to change that. I plan to talk more about dumb manga I'm reading, whatever games I'm playing, any miscellaneous thoughts I'm having, etc. I think a big motivator for this for me is the fact that I have no record of what I have enjoyed this year that I could use for a year end list. There is no "Of the Year 2025" for me, and I want to have one for 2026.</p>
<h2 id="life"><a aria-hidden="true" tabindex="-1" href="https://ewie.online/posts/20260101-the-2025-look-back/#life"><span class="icon icon-link"></span></a>Life</h2>
<p>2025 was a year of big changes for me. I got my name legally changed, moved in with my girlfriend, got bottom surgery, and many other things. This year I'm hoping to mellow out a bit and try to build up some savings. I want 2026 to be the Year of Maintenance. Nothing new, just polishing up my life and trying to do what I can to make my life the best version of what it can be with the position I am in.</p>]]>
      </content:encoded>
      <pubDate>Thu, 01 Jan 2026 17:10:35 GMT</pubDate>
    </item>
    <item>
      <title>holyyyyy shit matpat looks rough</title>
      <link>https://ewie.online/posts/20251221-holyyyyy-shit-matpat/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20251221-holyyyyy-shit-matpat/</guid>
      <content:encoded>
        <![CDATA[<p><img src="https://cdn.ewie.online/20251221022446-IMG_0329.jpeg" alt="Matpat wearing a dark jacket and gloves gestures with his hands in a leaf-covered forest. Text reads: Matthew &#x22;MatPat&#x22; Patrick  YouTube Legend, fmr. host: Game Theory"></p>
<p>he looks exactly like if you put matpat from 2013 through a snapchat age filter</p>]]>
      </content:encoded>
      <pubDate>Sun, 21 Dec 2025 02:32:42 GMT</pubDate>
    </item>
    <item>
      <link>https://ewie.online/posts/20251217-down-bad-implies-the/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20251217-down-bad-implies-the/</guid>
      <content:encoded><![CDATA[<p>down bad implies the existence of up good</p>]]></content:encoded>
      <pubDate>Wed, 17 Dec 2025 22:04:43 GMT</pubDate>
    </item>
    <item>
      <title>was scrolling through mangadex when i saw this</title>
      <link>https://ewie.online/posts/20251214-was-scrolling-throug/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20251214-was-scrolling-throug/</guid>
      <content:encoded>
        <![CDATA[<p><img src="https://cdn.ewie.online/20251214190352-IMG_0293.jpeg" alt="Manga titled: The Rumor is I&#x27;m Easy Man if You Ask in a World of Reversed Chastity. The cover image shows two anime girls with pink and black hair with their tongues out."></p>
<p>what the fuck is reverse chastity? what did they mean by this??? (i know what they meant they meant the guy gets laid a lot)</p>]]>
      </content:encoded>
      <pubDate>Sun, 14 Dec 2025 19:07:50 GMT</pubDate>
    </item>
    <item>
      <link>https://ewie.online/posts/20251130-got-a-switch-2/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20251130-got-a-switch-2/</guid>
      <content:encoded><![CDATA[<p>got a switch 2 :)</p>]]></content:encoded>
      <pubDate>Sun, 30 Nov 2025 20:46:59 GMT</pubDate>
    </item>
    <item>
      <link>https://ewie.online/posts/20251129-i-wonder-if-there-s-/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20251129-i-wonder-if-there-s-/</guid>
      <content:encoded>
        <![CDATA[<p>i wonder if there's any way to convert like an ESL (the epaper price tags) into a sort of TRMNL type device, cos there's gotta be a ton you could get for cheap from liquidation sales or anything like that. idk just thinking</p>]]>
      </content:encoded>
      <pubDate>Sat, 29 Nov 2025 18:59:35 GMT</pubDate>
    </item>
    <item>
      <link>https://ewie.online/posts/20251115-listening-to-the-new/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20251115-listening-to-the-new/</guid>
      <content:encoded><![CDATA[<p>listening to the newest mountain goats and got jumpscared by sudden lin manuel miranda</p>]]></content:encoded>
      <pubDate>Sat, 15 Nov 2025 20:19:02 GMT</pubDate>
    </item>
    <item>
      <title>Corsair</title>
      <link>https://ewie.online/posts/20251023-corsair/</link>
      <guid isPermaLink="false">https://ewie.online/posts/20251023-corsair/</guid>
      <content:encoded>
        <![CDATA[<card-frame name="corsair" side="runner" stars="4" src="https://cdn.ewie.online/20251023011147-Image.jpeg">
<div class="visually-hidden" id="card-name-corsair">
<p>Anarch Program: Icebreaker – Fracter</p>
<p>Install cost: 3 – Strength: 0 – Memory cost: 1 – Influence cost: 2</p>
<p>Interface → <strong>1 credit:</strong> Break 1 <strong>barrier</strong> subroutine.</p>
<p><strong>1 credit:</strong> The <strong>barrier</strong> you are encountering gets -3 strength for the remainder of this encounter. Spend credits only from <strong>stealth</strong> cards to use this ability.</p>
<p><em>There have been many golden ages of piracy, each occurring on stranger and stormier waters.</em></p>
<p>4 stars</p>
</div>
</card-frame>
<script type="module" src="https://ewie.online/assets/js/components/card-frame.js"></script>
<p>While this can be an interesting breaker that requires support to function, I’m moreso eyeing it as a way to enable ice destruction. Barriers are the most high value targets for <a href="https://netrunnerdb.com/en/card/34073">Arruaceiras Crew</a>, and Corsair can destroy a Pharos using 3 stealth credits and the tag + 2 credits ability on Crew. Logjam can be even cheaper. All of this depends on the set printing enough stealth support to make that package worth it, since I don’t think <em>just</em> <a href="https://netrunnerdb.com/en/card/26009">Trickster Taka</a> will be good enough to make you run this breaker. I’m not worrying about this. Stealth as a keyword is a tightly coupled bundle of setups and payoffs. Like similar synergy packages, you choose a suboptimal way of building your deck and building your rig for the payoff of getting to use good stealth cards. Obviously, Corsair is total garbage if Vantage Point stealth decks will only get to use the Ashes stealth cards, and I think the review would be uninteresting if I said, “I don’t see any stealth support from the first card spoiled for the set. 0 stars.”</p>
<p>On the other hand… Imagine the future where Corsair gets no support and Shaper tries to treat it like a classic Shaper <a href="https://netrunnerdb.com/en/card/33026">Hyper</a><a href="https://netrunnerdb.com/en/card/26088">Mantle</a>-esque 1 breaker suite with importing Taka and using <a href="https://netrunnerdb.com/en/card/35030">Chromatophores</a> and <a href="https://netrunnerdb.com/en/card/26025">Pelangi</a> to try to make everything a Barrier. It’d be so funny.</p>]]>
      </content:encoded>
      <pubDate>Thu, 23 Oct 2025 01:16:49 GMT</pubDate>
    </item>
  </channel>
</rss>