Aquileo | Rituals of Remembrancehttp://rites.vislae.town/2026-08-02T00:00:00-07:00Aquileo | I just can't buy a bridge these days2026-08-01T00:00:00-07:002026-08-02T00:00:00-07:00Binder@vislae.towntag:rites.vislae.town,2026-08-01:/bridge-building.html<p class="first last">The best infrastructure is invisible</p>
<p>I did a <a class="reference external" href="https://docs.freebsd.org/en/books/handbook/advanced-networking/#network-bridging">fair</a> bit of <a class="reference external" href="https://docs.freebsd.org/en/books/handbook/network/#config-identify-network-adapter">reading</a> about how and why one <a class="reference external" href="https://docs.freebsd.org/en/articles/filtering-bridges/">might</a> create a <a class="reference external" href="https://man.freebsd.org/cgi/man.cgi?bridge">bridge</a> interface
because network engineering has never been my strongest suit. In the end I had questions which
I could only find an answer to by doing it wrong a couple of different ways. So here's my
Just Me Questions with answers.</p>
<p>What information do I need to configure a bridge at minimum?</p>
<blockquote>
The 'name unit' names that the kernel calls the network interface cards. Like nfe0 and fxp1 &m.</blockquote>
<p>What if the kernel doesn't id the NIC?</p>
<blockquote>
Then it can't be used to bridge. Them's the rules. So solve that, first.</blockquote>
<p>Then what do?</p>
<blockquote>
<cite>ifconfig bridge create name TacomaNarrows0</cite></blockquote>
<p>What happens if I type that?</p>
<blockquote>
The kernel will create a tragically empty bridge named, here, <strong>TacomaNarrows0</strong>. If the last two words
are left off, it'll be named bridge0, bridge1, bridge2 & so on. There's no need for there to be a number
on the end, so an alphanumeric string like 'TacomaNarrowsBr' is a valid name, up to (as of writing)
15 characters.</blockquote>
<p>Why did I need the Network Interface Card identifiers?</p>
<blockquote>
<p>To do this:</p>
<p><cite>ifconfig bridge TacomaNarrows0 addm NIC1 addm NIC2 [addm NIC3 ...] up</cite></p>
</blockquote>
<p>Why did I do that?</p>
<blockquote>
That puts the support pillars under the bridge. Looked at on a different scale, a bridge is a straw.
The straw needs at least two ends so that packet fluid can come in to the straw & leave the straw.
The straw can even have more than two ends. A bridge support is a straw end is a network interface.</blockquote>
<p>What should defaultrouter be set to in my /etc/rc.conf?</p>
<blockquote>
Nothing. Don't need one. The bridge will pass packets through it and is otherwise not making route
decisions for packets.</blockquote>
<p>Do I need the /etc/rc.conf 'gateway_enabled' setting configured to YES?</p>
<blockquote>
Greatly surprising me, no. A bridge isn't a router, it makes no decisions beyond copying a packet from one
network interface to send out a different network interface or not doing that copy.
it's not serving as a gateway.</blockquote>
<p>Where do I configure an address to reach the bridge from another machine?</p>
<blockquote>
On the bridge. It can be given an inet address including by invoking <cite>dhclient</cite> against the bridge.
The pillars / added member NICs shouldn't have addresses. They're being used purely for their
low level connections.</blockquote>
<p>Okay that's cool but I did all that & I rebooted & the computer forgot all that stuff. What do?</p>
<blockquote>
<p>Use sysrc to inject the configuration straight into your boot.</p>
<p><cite>sysrc cloned_inferfaces+="TacomaNarrows0"</cite> # the += appends so we don't clobber existing values</p>
<p><cite>sysrc ifconfig_TacomaNarrows0="addm NIC1 addm NIC2 [addm NIC3 ...] up"</cite></p>
<p><cite>sysrc ifconfig_firstNIC=up</cite></p>
<p><cite>sysrc ifconfig_secondNIC=up</cite> &m</p>
</blockquote>
<p>How do I know it worked?</p>
<blockquote>
Take something now connecting more directly to the internet & move it to attach to the bridge
system, instead. It should see approximately no difference aside from any expected slow down from the
additional network hop(s) introduced by having the bridge in line with traffic.</blockquote>
<p>Is this something I need a fancy new computer to do?</p>
<blockquote>
By no means. A hunk of junk potato pulled from curb side abandonment can do it, if it can run freebsd.
With enough NIC cards, entirely frivolous network topologies become possible. USB ethernet dongles exist, too.</blockquote>
<p>Okay but why even do this?</p>
<blockquote>
Go back to those links in the opening & read the uses cases. That's some cool as hell stuff one can
do with, to & for the traffic coming through their home internet.</blockquote>
<p>Does this work only with wired NICs?</p>
<blockquote>
Not at all. Wireless NICs work as do imaginary (software defined) NICs. But I'm still answering the
questions which I have about WiFi before I tackle that, so you'll need to seek guidance elsewhere
if you go that route.</blockquote>
Aquileo | How I Monsterdon2026-07-24T00:00:00-07:002026-07-24T00:00:00-07:00Binder@vislae.towntag:rites.vislae.town,2026-07-24:/enter-booing.html<p class="first last">I like to watch.</p>
<p>I was asked a pretty good question about one of the many watch-along events found on the Fediverse & lesser social networks, #Monsterdon. I've been
attending it for a while & I have some thoughts about it.</p>
<blockquote class="mastodon-embed" data-embed-url="https://dice.camp/@Alexander_Anotherskip_Davis/116963114086957388/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"> <a href="https://dice.camp/@Alexander_Anotherskip_Davis/116963114086957388" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"><path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/></svg> <div style="color: #787588; margin-top: 16px;">Post by @Alexander_Anotherskip_Davis@dice.camp</div> <div style="font-weight: 500;">View on Mastodon</div> </a> </blockquote> <script data-allowed-prefixes="https://dice.camp/" async src="https://dice.camp/embed.js"></script><p>If the above no longer loads because of link rot, it's @Alexander_Anotherskip_Davis@dice.camp asking me about how I engage with Monsterdon</p>
<p>While I was thinking on an answer, it got a reply. That's the opposite of bad, it's good. Asynchronous networks and diverse answers are virtues of
decentralized networks, IMGO. It's a good, solid, factual answer, as well. Incredibly helpful to a new viewer.</p>
<blockquote class="mastodon-embed" data-embed-url="https://ohai.social/@klu9/116964585625205648/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"> <a href="https://ohai.social/@klu9/116964585625205648" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"><path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/></svg> <div style="color: #787588; margin-top: 16px;">Post by @klu9@ohai.social</div> <div style="font-weight: 500;">View on Mastodon</div> </a> </blockquote> <script data-allowed-prefixes="https://ohai.social/" async src="https://ohai.social/embed.js"></script><p>But. It's nothing like what I would have said. The excellent resources shared by @klu9@ohai.social in their response? I almost never visit those.
I know that they exist, I've only referred to them in order to remember what I watched, when. They're entirely orthogonal to my answer of how I
#Monsterdon. So this blog is my attempt to answer for myself how I #Monsterdon, in case someone wanted a less factual & more subjective context
for watch-alongs in general insofar as they're like the ones which I enjoy.</p>
<p>So let's break down these questions I was asked.</p>
<ol class="arabic simple">
<li>How to know what's upcoming?</li>
<li>How to know when it's upcoming?</li>
<li>Some tips to interact w/ the vibe?</li>
</ol>
<p>Before I answer them, let me be clear: I have NOTHING to do w/ hosting the #Monsterdon watch-along, I only ever participate as a viewer. So I have a
perhaps niche xp of the phenomena. I'm not what I'd consider core #Monsterdon personnel; I don't make bingo cards, cocktail recipes, movie nominations or
perform administrative tasks or provide support to the effort. I'm just a voyeur; I like to watch. So these are my outsider-insider answers</p>
<p>1: there's a poll! It's distributed by @Tawaret@timeloop.cafe using the #MonsterdonAlert hashtag. Tangentially, this is a pattern I like, when a hashtag has
auxilliary hashtags to supplement the core hashtag. It'll look something like this example.</p>
<blockquote class="mastodon-embed" data-embed-url="https://timeloop.cafe/@Taweret/116953650712391190/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"> <a href="https://timeloop.cafe/@Taweret/116953650712391190" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"><path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/></svg> <div style="color: #787588; margin-top: 16px;">Post by @Taweret@timeloop.cafe</div> <div style="font-weight: 500;">View on Mastodon</div> </a> </blockquote> <script data-allowed-prefixes="https://timeloop.cafe/" async src="https://timeloop.cafe/embed.js"></script><p>I've no idea how the nominees are chosen, I trust to the curation behind the hosting of this event. I only rarely research any of the options & almost never
cast a vote, even if I do research. Why? Because I literally do not care what film we watch. For me it's about the experience of talking about what I'm seeing with
other people who are suffering the same fate, for me. But, if a person does care, watch #MonsterdonAlert, vote in the polls, lobby blocs of fedizens to vote
with you or piss them off so they vote against your favorite. It's a meta-game which I'm not in to; that doesn't make it a bad game.</p>
<p>2: this is another use of the #MonsterdonAlert hashtag. There are notifications days & hours before the watch-along which reveal the poll winner, point at
places the movie can be seen in the likely event one doesn't have their own copy on hand, and provide auxilliary resources, such as the film's page from
<a class="reference external" href="https://www.doesthedogdie.com">DoesTheDogDie</a>, critical responses, connections to other works, bingo cards, cocktails, &m. Yet again, I don't really pay attention to any of that.
What generally happens is that somewhere around Sunday afternoon localtime, I look at my Mastodon timeline & someone I follow will have Boosted someone
talking about #Monsterdon or they have Tooted about it & that'll remind me that it's Sunday, it's #Monsterdon day, & I have something to look forward to.
I guess one could call this Just In Time Awareness.</p>
<p>3: This is where I bore readers with trivial details. I have watched #Monsterdon a couple of different ways & my preferred way has become laptop + televison
based, the magical two-screen engagement which advertisers have & will continue to kill people to attain. That is, I put the movie up on a bigger screen
to run autonomously. Usually I'm watching someone else's stream; sometimes I happen to have a given cult classic lying around the lair. Then I use the laptop
in Mastodon's multi-column view. I've got one column for notifications using my name, one column pinning #Monsterdon so I can see what other people are
saying, one column pinning Local feed, so that I can comparatively easy find the thread I've been posting to & if the feature is exceedingly dull to the
point that I haven't much to say, I'll bring up my Home timeline just to feel something.</p>
<p>People who've had occasion to watch a bad movie with me in person can attest that the only real difference between what I post when watching #Monsterdon
and what I say when watching a #Monsterdon-grade movie is that I generally don't say as much out loud because I don't want to ruin the terrible
movie watching experience by talking over it. I have no such compunction when it's in text & opt-in. If you don't like me making fun of the film, don't
read it. I and my friends were doing this kind of sarcastic commentary well before we ever heard of MST3k. That's not to say that the riffing is unique,
only that we were already doing it when it became monetizable.</p>
<p>Which brings me to what I actually consider one of the most important points I can make about #Monsterdon & fediverse watch-alongs in general:
being 'on time' is a myth. There is no 'on time' for these viewings. You can't be 'late' to watch #Monsterdon, thanks to the ability to watch the
movies on one's own time. The only thing missing from being there before the film starts is that some riffs by the audience later in the feature
will lack context but guess what. Even if you watched every second of that film, you still might lack the context for the riff. So don't get hung
up on punctuality. That's some midwest bullshit. You're only late to the party if the party has already shut down or moved on.</p>
<p>I won't dispute that each watch-along has their own vibe/tone/flavor and some I like more than others. #Monsterdon has been consistently good to me
each time I've tried but that's not going to be everyone's experience. The ways that I like to interact w/ the #Monsterdon community while a film
is running involves my trying to think of what I might call 'the next joke'. When the movie shows us something remarkable (in the sense of being worth
saying something about), almost everyone watching will think to say something about it. Many of them won't actually toot it. Some will. The thing
which I want to toot is: what's the next joke a person could tell after the obvious toot? That's not to disrespect many of the witty, wonderful &
hilarious #Monsterdon viewers. They're a solid pack of jokers. But I have stretch goals for myself.</p>
<p>I'm also mindful of my language & the language (visually, as well as audio) of the film. I try not to punch down, I try not to use gross terms &
I try to speak up when there's some ... period-indicative racism. THat's not because I'm a good person; it's just because I have to be more inventive
if I don't let myself use standard insults. This can be pretty challenging in some films, because sometimes the whole thing was a racist error of
judgment by an entire production team of cinematic professionals and that just makes me sad. Very old films and very new films tend to make this
easier on me.</p>
<p>When I can't think of something funny to say, I'll look over at the #Monsterdon hashtag and Boost someone who found a funny thing to say or I'll Reply
to someone to let them know that I saw their truly awful rancid post of a joke and, as a terrible person, enjoyed it very much.</p>
<p>I should say something here about hashtag discipline. Some users will get quite agitated if they see a Toot from a #Monsterdon thread which has neither
a Monsterdon Content Wraper (summary field) or a #Monsterdon hashtag and my advice there is to Block those busybodies on sight. I strive to always put
#Monsterdon on my #Monsterdon related Toots but I'm only human (at best) and so sometimes I forget to care. It's my position that no one is required
to tag their #Monsterdon related Toots with the hashtag #Monsterdon but it is a courtesy to people who hate fun to do so, to allow them to hide the
sight of fun from their soured vision.</p>
<p>As for the core of the experience, the films, themself? My guidance is to take them for what they are and were: people trying very hard to tell us
a story which we would talk about after we saw and heard it. Sometimes they were too ambitious for their skills or their budgets. Sometimes they're
just bad at things. And sometimes, often without realizing it, they provide moments of sublimely sophisticated cinematic moments. That's what I'm looking
for. The moments where I can tell that someone who understood their job well enough did a bang up job of using their trained skills and their innate
talents to convey a moment. A place, a time, a feeling. I like films. Even bad films can have good in them.</p>
Aquileo | Nintendo Switches It Up2026-06-11T00:00:00-07:002026-06-11T00:00:00-07:00Binder@vislae.towntag:rites.vislae.town,2026-06-11:/echo-wisdom.html<p class="first last">Be the Priestess, Save Hyrule</p>
<p>While I am not a platform snob (aside from detesting $msft for, yes, <a class="reference external" href="https://moglen.law.columbia.edu/CPC/archive/msoft/hallow-index.html">The Halloween Documents</a>
[& yes, I'm aware this puts me in the unenviable position of drawing attention to esr])
I do tend to play the vast majority of video games on the <a class="reference external" href="https://www.nintendo.com/us/gaming-systems/switch/system/">Switch (1)</a>. Before that it was on the
<a class="reference external" href="https://www.gamestop.com/consoles-hardware/retro-consoles/products/nintendo-wii-u-console/10129109.html">Wii U</a>. Before that it was on the <a class="reference external" href="https://www.nintendo.com/en-gb/Hardware/Nintendo-History/Wii/Wii-636022.html">Wii</a>. Before that, <a class="reference external" href="https://en.wikipedia.org/wiki/GameCube">GameCube</a>. But that's where I
started the run so it's approximately correct to say that I have only ever known a 3D <a class="reference external" href="https://en.wikipedia.org/wiki/Universe_of_The_Legend_of_Zelda#Hyrule">Hyrule</a>.</p>
<p>So I had pretty high expectations for The Legend of Zelda: Echoes of Wisdom game. tl;dr: the game
radically exceeded them. It's a great game for people who like soft physics simulator puzzles,
for people who want to play a powerful princess, & for people who just like spending time in
Hyrule.</p>
<p>I hope it's no great spoiler at this point to talk about the game play loop being: Zelda faces
an obstacle of some sort, Zelda uses either her powers of being a bad ass princess w/ a lashing
ponytail or she uses her power of being able to summon a copy of any object she's memorized
(from a limited but quite large catalog of such objects which appear in the game) to overcome
the obstacle & is rewarded. The primary incentive for me is often finding new objects to memorize
& later 'echo' for useful or useless purposes. Other rewards include quarters of hearts,
ingredients (because ofc it has cooking), equippable accessories, quest items &m.</p>
<p>It's a big but not overwhelming world & it's so easy to wander around & miss things such that
doubling back the way one came is not always as straightforward as one might want. Luckily it
introduces the player to warp points pretty early on for all but the most obdurate players. It's
delightfully colorful & renders well both on the small built-in Switch screen or on a larger
display one might HDMI the game display to.</p>
<p>For true fans of Link, fear not. He appears, not as a playable character, but as a significant
character who lends you a portion of his power, letting Princess Zelda effortlessly (if not
w/o cost) transition to Warrior Zelda Who Resembles Link & use his sword, bow & bombs to
solve may problems ... directly. Remaining Princess Zelda to solve problems can sometimes require
a degree of creativity, stealth & subtlety so it's nice to be able to simplify the solution
space by Linking Out from time to time.</p>
<p>There's no kind of New Game + but it's a pleasant enough place I might well revisit some day.</p>
Aquileo | My Anagram Mangler2026-06-05T00:00:00-07:002026-06-05T00:00:00-07:00Binder@vislae.towntag:rites.vislae.town,2026-06-05:/ruby-revision.html<p class="first last">In which I turn a not great Python script in to a not bad Ruby script</p>
<p>I really like <a class="reference external" href="http://rites.vislae.town/shuffling letters by hand.html">anagrams</a> but my brain is pretty lazy. So
lazy that that Python which I wrote to brute force some short anagrams in
<a class="reference external" href="http://rites.vislae.town/blue-prince-complete.html">Blue Prince</a> turned out to be too much work for me to use.
So I remembered that I also know Ruby & wrote a 1.0 implementation of a new idea I had for an
anagram helper. It's a tiny bit smarter than the Python version but hardcoded as hell at this
stage because I didn't want to overengineer a toy.</p>
<div class="highlight"><pre><span></span># shanagrams.rb - index a file of strings, then return strings containing
# same letters as an input string
h = {}
def mill_grain sack
rack = ''
tall = sack.upcase
letters = tall.chars
letters.sort.each do |character|
if character >= 'A' && character <= 'Z'
rack << character
end
end
return rack
end
File.open('/usr/share/dict/words', 'r') do |f|
f.each_line do |line|
spaceless = line.split()
lookup_handle = mill_grain spaceless[0]
if not h[lookup_handle]
h[lookup_handle] = [spaceless]
else
h[lookup_handle] = h[lookup_handle] + [spaceless]
end
end
end
puts "string to find anagram for: "
my_word = gets
my_word.chomp
key_built = mill_grain my_word
p h[key_built]
</pre></div>
Aquileo | Get Into Jail Free Card2026-06-02T00:00:00-07:002026-06-02T00:00:00-07:00Binder@vislae.towntag:rites.vislae.town,2026-06-02:/cdist-jail-fix.html<p class="first last">In which I fix a bug no one noticed.</p>
<p>I've continued to putter about with <a class="reference external" href="http://rites.vislae.town/cdist-run.html">cdist</a> and gotten
far enough along that I was imagining being able to use cdist to spin up & tear down
<a class="reference external" href="http://rites.vislae.town/showing-restraint.html">jails</a> with some degree of alacrity, in the fullness of time.
I'm imagining dynamic Just In Time instantiation of jails w/ the slimmest of userlands for the task,
expiring on a schedule. Like pods only without the whole kubernetes overhead. Using, instead, a veritable
trove of POSIX scripts.</p>
<p>But as it turns out, I found a bug! I only noticed because I'd misread the documentation. When my eyes
fell upon <a class="reference external" href="https://www.cdi.st/manual/latest/man7/cdist-type__jail_freebsd10.html">jail_freebsd10</a> I immediately started trying to use it. I had noticed but not thought
a lot about there being a type for older FreeBSD systems, <a class="reference external" href="https://www.cdi.st/manual/latest/man7/cdist-type__jail_freebsd9.html">jail_freebsd9</a>. All my attempts failed
so I finally resorted to reading more documentation. Therein I discovered there's a
higher level type, <a class="reference external" href="https://www.cdi.st/manual/latest/man7/cdist-type__jail.html">jail</a> and
__jail wraps the more specific jail types before passing through the parameters in the manifest. That must be my
problem; I don't know enough to call it directly, I probably just need to go through the top level type &
let the magic happen.</p>
<p>Obviously that didn't do it. But the way in which it didn't do it surprised me. Rather than fail identically
to the way it did when I used __jail_freebsd10, it failed in a new reproducible way. Now I got interested
because how could calling __jail_freebsd10 from __jail be different from directly calling __jail_freebsd10 in
a still wrong way.</p>
<p>Then I tried something out of desperation: actually reading the error messages being spat out & reading source
code to follow the flow of failures. The curious thing I observed as that on my FreeBSD 15 system, __jail was
consistently, wrongly, trying to apply the __jail_freebsd9 type. When I tried using __jail_freebsd9 directly,
it failed in the same way as calling __jail.</p>
<div class="section" id="the-patch">
<h2>The Patch</h2>
<div class="highlight"><pre><span></span>-if grep -q '^10\.' "$(cat "$__global/explorer/os_version")" ; then # Version is 10.x
+if grep -q '^[[:digit:]]\{2,\}\.' "$__global/explorer/os_version" ; then # Version > 9.x
__jail_freebsd10 "$@"
else
__jail_freebsd9 "$@"
</pre></div>
<p>A slightly better regular expression and a different understanding of grep got __jail picking the right
__jail_freebsd10 type. My actual problem turned out to be that I had a trailing / on an argument which
gets abutted to a path beginning with / and then that combination wasn't being used in shell where it
could be consolidated, it was being sought with Python os methods & they did not enjoy the double
// one bit. As near as I can tell, __jail hasn't worked in a while & no one's noticed in 5 RELEASE
versions of FreeBSD, but since I was in the neighborhood, I looked into how I might submit it to the
upstream.</p>
<p>It is something of a process because apparently one needs an account on a system I have no interaction
with in order to make a <a class="reference external" href="https://code.ungleich.ch/ungleich-public/cdist">pull request</a> which means the documented alternative is to email a
<a class="reference external" href="https://www.cdi.st/manual/latest/cdist-hacker.html#reporting-bugs">googlegroup</a>. I did that but, having no way to know if anyone's reading it, I'm also posting this patch
here. Probably no one else wants to use cdist to manage jails but in case you came here, looking for this fix,
enjoy it in health.</p>
</div>
Aquileo | Complication From Simplicity2026-05-29T00:00:00-07:002026-05-29T00:00:00-07:00Binder@vislae.towntag:rites.vislae.town,2026-05-29:/cdist-run.html<p class="first last">I tried a universal config mgmt tool on freebsd. It went like you'd expect.</p>
<p>In my time at keyboards, I've had an opportunity to work with (& against) a wide variety of configuration
management tools for computers, including paper changelogs (yes, really), <a class="reference external" href="https://cfengine.com">cfengine</a>, <a class="reference external" href="http://bcfg2.org">bcfg2</a>, <a class="reference external" href="https://www.puppet.com">puppet</a>,
<a class="reference external" href="https://saltproject.io">saltstack</a>, <a class="reference external" href="https://docs.ansible.com">ansible</a>, <a class="reference external" href="https://www.fabfile.org">fabric</a> & others which were bespoke & never received public releases.
Many have had features I've really enjoyed & all have had misfeatures which I really did not enjoy.
What I'm saying is, I don't believe in a perfect tool for all use cases nor are there tools in this list
which I'd caution anyone against using.</p>
<p>So when it came time to look at managing my homenet instances in a consistent, repeatable, durable form beyond
my scribbled notes to myself, I took a look at the landscape. All of the tools I mentioned above are still going,
many of them so far advanced that I barely recognize them. But none of them seemed like the correct fit. This
homenet is a low-tech effort, a low-effort tech, and putting a whole bunch of infrastructure overhead to
manage its configurations seemed like a lot of effort for remarkably little payoff. I kept looking.</p>
<p>Eventually, I found <a class="reference external" href="https://www.cdi.st/manual/latest/index.html">cdist</a>, via <a class="reference external" href="https://wiki.freebsd.org/cdist">a coy mention in the freebsd wiki</a>. It promised something
I'd not been meaningfully offered before: the ability to write configuration declarations in POSIX shell AND
extensibility to write configuration declarations in arbitrary scripting languages. Without agents. Incredibly
low overhead required to implement infrastructure configuration in. The only thing I didn't love about it is
it's written in Python, which means it's now downstream of LLM <a class="reference external" href="https://pyfound.blogspot.com/2025/12/anthropic-invests-in-python.html">fuckery</a> by the Python Software Foundation.
But, I gave it a try, anyway.</p>
<p>The first thing which I ran in to is, of course, the march of time. The recommended (supported) Python version is
no longer available in the current FreeBSD-RELEASE and invocation of the cdist binary threw a Python stack trace.
Some simple stfw turned up a <a class="reference external" href="https://linux.debian.bugs.rc.narkive.com/U6FnTcB4/bug-1028447-cdist-unusable-with-python-3-11">bug email</a> for some Linux distribution, reporting the problem & proposing to remove
cdist from their repository as abandoned. That woke up the maintainer to respond. Cdist isn't abandoned, it
just hasn't had a release in 3 years. The bug reported (as well as others) is fixed, but only in HEAD of their
repository, not in a formal release.</p>
<p>So off to the git clone mines I went, installing git and gmake along the way because, like many 'works on all
Unix' tools, cdist has something of a Linux bias. Just as I'd hoped, using the HEAD version of cdist completely
succeeded in my minimalistic tests. So it's probably going to get use.</p>
<p>If you're looking at using it, be aware that cdist ONLY works over ssh (even for localhost executions) AND it
needs to be able to ssh to the root@ account on a managed system. Not blockers to my use but someone with a
more rigorous stance on ssh & root might want to look for a different solution.</p>
Aquileo | Neighborhood Redevelopment2026-05-20T00:00:00-07:002026-05-20T00:00:00-07:00Binder@vislae.towntag:rites.vislae.town,2026-05-20:/build-two.html<p class="first last">satyrine keeps teaching me things</p>
<p>I've rebuilt the freebsd instance formerly known as reinvention and redeployed a subset of the previous <a class="reference external" href="http://rites.vislae.town/showing-restraint.html">jail()ed</a> guests. The install for 15.0-RELEASE is conspicuously prettier than the last .0-RELEASE I recall. Installing base as pkg packages rather than dist files was painless and managing base after that simple enough.</p>
<p>I've also put up the first feeble starts of a <a class="reference external" href="https://codeberg.org/grunfink/snac2">SNAC</a> server & a <a class="reference external" href="https://gmid.omarpolo.com">gmid</a> server. It feels good to be touching actual computers again, as old as they are.</p>
Aquileo | Avuncular Diversions2026-02-14T00:00:00-08:002026-02-14T00:00:00-08:00Binder@vislae.towntag:rites.vislae.town,2026-02-14:/blue-prince-complete.html<p class="first last">Final thoughts on Blue Prince</p>
<p>If you haven't yet played <a class="reference external" href="https://www.blueprincegame.com">Blue Prince</a> or watched someone play it, you need to know
that it's really fantastic, as an experience, with a vivid world and compelling
narrative. Also, fiendish puzzles and layers of deception.</p>
<p>& you're going to want to know that I'm writing this blog entry with the assumption
that you already have that level of knowledge and/or don't care about spoilers, by now.</p>
<p>I didn't achieve every possible trophy, I didn't open every door. There's a whole
other building I never even saw. But I had a hell of a fun ride. I'm really enthusiastic
about all the pieces of the world's narrative which are implied by the classrooms,
the books and letters.</p>
<p>This game was the most surprising and most fun of its genre[1]_ which I've gotten to play
since <a class="reference external" href="https://querngame.com">Quern</a>.</p>
<p>The opening is so good at establishing the tone and giving the player the first few clues
as to what the game is going to be like. The rest of the game goes about subverting that
established framework, showing the player more behind the facades, rewarding exploration
and inference, note taking & note referencing.</p>
<p>We managed to solve our way through nearly everything to get to a good ending, but couldn't
make the leap to using a fire to score the sundial from the clues we could find; we ended up
looking up that solution. Everything else we did uninformed.</p>
<p>We got the first pair of blue doors open but not the second. That was complete enough for my
needs.</p>
<table class="docutils footnote" frame="void" id="footnote-1" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[1]</td><td>Namely, the walk around and stare at stuff until something clicks, repeat, genre of puzzle games.</td></tr>
</tbody>
</table>
Aquileo | Parallel Structures2026-02-14T00:00:00-08:002026-02-14T00:00:00-08:00Binder@vislae.towntag:rites.vislae.town,2026-02-14:/satisfactory-new-game-plus.html<p class="first last">Satisfactory NG+</p>
<p>I've been playing <a class="reference external" href="https://www.satisfactorygame.com/">Satisfactory</a> intermittently since it was an alpha
release. But not well. It took me until this year to complete the
narrative. Slightly more than 300 hours went into that game and I
was satisfied by the ending.</p>
<p>I set up nuclear power just because it'd changed since the last time
I did that but ended up not needing it & just leaving it paused w/
nuclear waste just simmering away in a storage container I never went
near.</p>
<p>Drones turned out to be more interesting than I'd thought they be
and trains were much more difficult for me than I had expected.
For the trains, I consulted some online guides & really liked the
patterns implemented in this <a class="reference external" href="https://steamcommunity.com/sharedfiles/filedetails/?id=2836897112&searchtext=train">guide</a>.</p>
<p>I didn't really make great use of alternate recipes and only in
retrospect can see the value in eliminating parts of production
requirements through the alternates. I'm often impatient to
progress in the game.</p>
<p>The most useful Milestone was the one which gave me the Hover Pack
because it's so soothing to Build while levitating. It's so
empowering to remove obstacles to the Ficsit mission while hovering
out of their reach.</p>
<p>Historically, my challenge in Satisfactory is less the game itself &
more my recurring itch to start all over again as soon as I notice
an inefficiency. I managed to play through to the ending by
repeatedly rebuilding my base and migrating my factory to new sites.
It was differently inefficient, but I was tired of not knowing
how the story of the game turns out.</p>
<p>So obviously the first thing I had to do after I had won was
to start a brand new game. To do it all over again.</p>
<p>There's only one thing in Satisfactory which I don't enjoy. It's
those fucking <a class="reference external" href="https://satisfactory.fandom.com/wiki/Stinger">Stingers</a>. No, Arachnaphobia Mode doesn't help me;
it's their behavior which creeps me out. It's sufficiently compelling
of a game that I play it, despite that.</p>
Aquileo | Containment Units2025-08-31T00:00:00-07:002025-08-31T00:00:00-07:00Binder@vislae.towntag:rites.vislae.town,2025-08-31:/showing-restraint.html<p class="first last">I'm sending postfix to jail()</p>
<p>The wonderful thing about using FreeBSD is that there are a <strong>multitude</strong>
of well written documents explaining the design principles & functioning
of pieces of the operating system. It's a fact that <em>distributing</em> changes
to anything is a slow, fraught process. Even, perhaps <em>especially</em>,
documentation.</p>
<p>So now I know two valid ways to write out the directory tree in which
to incarcerate one or more processes in <a class="reference external" href="https://docs.freebsd.org/en/books/handbook/jails/">jail</a>.</p>
<ol class="arabic">
<li><p class="first">The <a class="reference external" href="https://docs.freebsd.org/en/books/handbook/jails/#creating-classic-jail">fast</a> & trusting of others way:</p>
<pre class="literal-block">
D=/here/is/the/jail
fetch https://download.freebsd.org/ftp/releases/amd64/amd64/14.2-RELEASE/base.txz -o /usr/local/jails/media/14.2-RELEASE-base.txz
mkdir -p $D
tar -xf /usr/local/jails/media/14.2-RELEASE-base.txz -C $D --unlink
</pre>
</li>
<li><p class="first">the <a class="reference external" href="https://man.freebsd.org/cgi/man.cgi?query=jail&sektion=8">slow</a> & paranoid way:</p>
<pre class="literal-block">
D=/here/is/the/jail
cd /usr/src
mkdir -p $D
make world DESTDIR=$D
make distribution DESTDIR=$D
</pre>
</li>
<li><p class="first">late-breaking non-news; while writing this, I learned of yet another <a class="reference external" href="https://man.freebsd.org/cgi/man.cgi?query=bsdinstall&sektion=8">method</a> using bsdinstall:</p>
<pre class="literal-block">
D=/here/is/the/jail
bsdinstall jail $D
</pre>
</li>
</ol>
<p>Yes, I'm aware that multiple jail management tools exist; I can only learn
by doing things the difficult way. I've got a couple of jails going as a
kind of low key stress test using 2/3 of the above methods. I'll be tearing
them all down & rebuilding them again, assuredly.</p>