Take on Rules https://takeonrules.com/ Recent content for Take on Rules Hugo -- gohugo.io Copyright 2026, Jeremy Friesen en-us [email protected] (Jeremy Friesen) [email protected] (Jeremy Friesen) https://cyber.harvard.edu/rss/rss.html Tue, 21 Apr 2026 20:25:32 -0400 Osprey on the Lake https://takeonrules.com/2026/04/21/osprey-on-the-lake/ Tue, 21 Apr 2026 20:25:32 -0400 [email protected] (Jeremy Friesen) https://takeonrules.com/2026/04/21/osprey-on-the-lake/ personal poetry <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Osprey on the Lake”"> <span role="listitem" aria-label="&ldquo;personal&rdquo; tag navigation"><a href="https://takeonrules.com/2026/02/27/local-library-programming/" aria-label="Previous post tagged with &ldquo;personal&rdquo; is &ldquo;Local Library Programming&rdquo;" title="Older post tagged with &ldquo;personal&rdquo; is &ldquo;Local Library Programming&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/personal/" class="p-category" aria-label="All posts tagged with &ldquo;personal&rdquo;" title="All posts tagged with &ldquo;personal&rdquo;">personal</a> <small aria-hidden="true">&gt;</small> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2026/02/27/local-library-programming/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;Local Library Programming&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;Local Library Programming&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <small aria-hidden="true">&gt;</small> </span></span> </p/><p><strong>Summary: </strong> Seeing nature unfold before me. </p> <p><time datetime="2026-04-20" title="2026-04-20">Yesterday</time>, mid-day I saw a large bird land and perch on a tree across the lake. I grabbed our binoculars, stepping onto the porch to identify the bird. Was it a bald eagle or an osprey or something else. No white head and I the white shoulder markings and recognized an osprey.</p> <p>Paddling on our shore were two Canada geese and their six goslings. The osprey took flight and we quickly searched “Do osprey eat other birds” and received a yes. The goslings were possible prey.</p> <p>As if on answer to the question, the osprey took flight, above the lake and began circling. The hunt, or so we thought, was on. The geese I think took notice and ushered their goslings to safety. The osprey continued circling for awhile then left our line of site.</p> <p>Then, an hour before the golden hour, I took our two border collies out to play frisbee and to search for morel mushrooms in our yard. After the first throw, I again noticed an osprey circling the lake. I abandoned my search for morels and distractedly threw a few more times with the dogs. All while the osprey circled.</p> <p>Then another joined the field, both giving space for each other to hunt. Likely a mated pair. I noticed a flash of ones shoulder whites, and the circling changed. The dive and strike had begun.</p> <p>I moved for a better view. That moment when it crashed noisily on the lake sparked my heart and soul. I had seen before one plunge and emerge, but never heard the clap of an osprey breaking the surface.</p> <p>As quick as it struck it emerged victorious, I think, as it made its way towards where osprey have nested in prior years. As the first exited the stage, the second began its dive. Crash and splash, emerging without prize, flying low along the water, then climbing again to circle.</p> <p>I called to Jenny, to come and look. And we watched as the osprey dove again. Crash then rose, circled a bit, and dove once more. On its fourth try it retired towards its mate, it had given up or succeeded in capturing something small enough.</p> <p class="verse"> Osprey circles near<br /> Goslings led on safe retreat<br /> Fish loses this one<br /> </p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Osprey%20on%20the%20Lake">Reply by Email</a></p> Take on Rules Local Library Programming https://takeonrules.com/2026/02/27/local-library-programming/ Fri, 27 Feb 2026 08:12:48 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2026/02/27/local-library-programming/ personal poetry <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Local Library Programming”"> <span role="listitem" aria-label="&ldquo;personal&rdquo; tag navigation"><a href="https://takeonrules.com/2026/02/05/serendipity-and-verse/" aria-label="Previous post tagged with &ldquo;personal&rdquo; is &ldquo;Serendipity and Verse&rdquo;" title="Older post tagged with &ldquo;personal&rdquo; is &ldquo;Serendipity and Verse&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/personal/" class="p-category" aria-label="All posts tagged with &ldquo;personal&rdquo;" title="All posts tagged with &ldquo;personal&rdquo;">personal</a> <a href="https://takeonrules.com/2026/04/21/osprey-on-the-lake/" aria-label="Next post tagged with &ldquo;personal&rdquo; is &ldquo;Osprey on the Lake&rdquo;" title="Newer post tagged with &ldquo;personal&rdquo; is &ldquo;Osprey on the Lake&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2026/02/10/a-poetry-handbook-by-mary-oliver/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;«A Poetry Handbook» by Mary Oliver&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;«A Poetry Handbook» by Mary Oliver&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <a href="https://takeonrules.com/2026/04/21/osprey-on-the-lake/" aria-label="Next post tagged with &ldquo;poetry&rdquo; is &ldquo;Osprey on the Lake&rdquo;" title="Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;Osprey on the Lake&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> Establishing intentional plans for personal enrichment. </p> <p>As I understand it, in mid-<time datetime="2025" title="2025">2025</time> the topic of personal curriculum started emerging on TikTok. Jenny, then working at a small local library, sought to add a Personal Curriculum segment to the library programming. The schedule up until the turn of the year was packed.</p> <p>So they scheduled a session for January; but due to inclement weather, postponed the inaugural session until <time datetime="2026-02-26" title="2026-02-26">yesterday</time>.</p> <p>There were five attendees with Jenny facilitating. She introduced the concept with a presentation, a mix of examples and videos, highlighting the breadth of what others had considered as well as how to write a curriculum:</p> <ul> <li>topic</li> <li>learning objectives and tangible outputs</li> <li>secondary outcomes</li> <li>potential resources</li> <li>schedule of activity</li> </ul> <p>Jenny emphasized that the topic should be of interest, one in which you have some basic knowledge, and identifying a goal to achieve. Everything else was in support of enriching a personal interest.</p> <p>Jenny gave her example: Color Theory. With a list of weekly activities. And a final outcome.</p> <p>The others of us shared our ideas:</p> <ul> <li>Bassoon reed making</li> <li>Mushroom foraging</li> <li>Either ancient history or true crime</li> </ul> <p>For myself, I came with a list of possibilities:</p> <ul> <li>poetry</li> <li>standing up a media server</li> <li>reading chonky books</li> <li>doodling</li> </ul> <p>And while we were discussing our topics, I began narrowing mine. I knew that I wanted to avoid technology for my first foray; after all I’m on a computer all day. I looked to my other topics and narrowed poetry to haiku and chonky books to <cite data-id="works-don-quixote">Don Quixote</cite>; with secondary sources.</p> <p>We had a great shared conversation, I asked the young patron about their interest in ancient history. And knowing she was a young mother, made mention of Dan Carlin’s <em>Hardcore History</em>. Something she could listen to in those moments between parenting.</p> <p>As the session wound down I settled on a 4 week exploration of Haiku. We also agreed to meet in 4 weeks to check-in and report back.</p> <h1 id="started-a-personal-curriculum-haiku">STARTED A Personal Curriculum: Haiku</h1> <ul> <li><strong>Outcome:</strong> Assemble a small haiku zine (8 or so)</li> <li><strong>Secondary Outcomes:</strong> Read classic haikus. Read on writing haiku.</li> <li><strong>Timeframe:</strong> 4 weeks</li> </ul> <p><strong>Throughout:</strong></p> <ul> <li>Write with pen and pencil on paper; one goal is to disconnect from my computer.</li> <li>Always carry a pen and paper.</li> <li>Seek to always carry <cite data-id="isbn-1400041287">Haiku</cite> and read from, instead of glancing at my phone.</li> </ul> <p><strong>Schedule:</strong></p> <ul> <li>Week 1: Read <a href="work:how-to-haiku-a-writers-guide-to-haiku-and-related-forms-by-bruce-ross::author">«How to Haiku» by Bruce Ross</a>.</li> <li>Week 2: Read introduction and excerpts of <cite data-id="isbn-9784805318454">Sōseki Natsume&rsquo;s Collected Haiku</cite> translated by Erik R. Lofgren</li> <li>Week 3: Review past haiku’s written to find samples.</li> <li>Week 4: Assemble hand-written haiku zine pamphlet, reproduce 20 copies.</li> </ul> <h1 id="the-morning-after">The Morning After</h1> <p>When we got home from the library, I started reading <cite data-id="isbn-9781462916757">How to Haiku</cite>. I wrote a few in pencil. We went to bed early, and around 5am <time datetime="2026-02-27" title="2026-02-27">this morning</time> I found myself waking, a short poem at the tip of my thought.<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> Not some <em>Kubla Kahn</em>, just myself parsing out a haiku.<span class="hidden">)</span></span> </small> </p> <p>I needed to capture that moment:</p> <p class="verse"> quiet early morn<br /> commuter cars growl on by<br /> old dog curls on chair<br /> </p> <p>From which I found myself awake, and thinking of Don Quixote, and of <cite data-id="03083A4E-4FEA-4E30-811D-700CE2EB071A">Borges and Me</cite> by Jay Parini, and of Terry Gilliam; and a dawn readying itself to burst upon a still frozen lake.</p> <p>My phone rattled, I had a before the dawn text from my father. <time datetime="2026-02-26" title="2026-02-26">Yesterday</time> he had sold off his entire wood working setup; he’s moving and downsizing. His whole life, fixing things has been his identity, and the wood shop his means of becoming. The morning text being a follow up, saying that he has had to get comfortable with reading during daylight hours.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Local%20Library%20Programming">Reply by Email</a></p> Take on Rules «A Poetry Handbook» by Mary Oliver https://takeonrules.com/2026/02/10/a-poetry-handbook-by-mary-oliver/ Tue, 10 Feb 2026 19:33:35 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2026/02/10/a-poetry-handbook-by-mary-oliver/ poetry <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “«A Poetry Handbook» by Mary Oliver”"> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2026/02/08/prairie-poor/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;Prairie Poor&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;Prairie Poor&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <a href="https://takeonrules.com/2026/02/27/local-library-programming/" aria-label="Next post tagged with &ldquo;poetry&rdquo; is &ldquo;Local Library Programming&rdquo;" title="Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;Local Library Programming&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> A brief reflection on a #poetry #handbook that I just read. </p> <p>I’ve been reading more poetry, and scratching out efforts at poetry. <time datetime="2026-02-10" title="2026-02-10">Today</time> I finished reading <cite data-id="a-poetry-handbook-by-mary-oliver">A Poetry Handbook</cite> by Mary Oliver. A compact guide into the writing and reading poetry; describing the basics, presenting a few examples, and most importantly giving bits of advice.</p> <ol> <li>If one must choose between reading poetry and attending a workshop, choose reading. (Though consider a workshop)</li> <li>A poem must be complete; that is it contains all that it must and is atomic, though may reference/allude to other things.</li> <li>The process of writing a poem is vulnerable to interruptions; flow state is a good thing.</li> <li>Revise and revisit.</li> </ol> <p>In reading, I haven’t gotten beyond subvocalization. That is I say “in my mind” the words I’m reading. This, I think, helps in my read of poetry. Because I can almost imagine the breaths. But subvocalizing poems, when I have the option to read aloud, does a disservice. I don’t feel the flip of my tongue, nor the breath leaving.</p> <p>Mary Oliver’s <cite data-id="a-poetry-handbook-by-mary-oliver">A Poetry Handbook</cite> provides this and more, delving into philosophy. I read the following and my mind cracked open:</p> <blockquote class="quote epigraph" data-id="literature-is-the-apparatus-through-which-the-world"> <p> Literature is the apparatus through which the world tries to keep intact its important ideas and feelings. </p> <footer>&#8213;Mary Oliver, <cite>A Poetry Handbook</cite></footer></blockquote> <p>Yes, this definition of literature excludes the reality of oral tradition, which I think is unfortunate. But a quick substitution of “story” for “literature” and we hit at the heart of things. And by cracked open, I read that passage as putting words to a known truth.</p> <p>We write, narrate, and tell tales to convey that which we find important. And the act of re-telling and reading and listening is engaging in that “preservation.”</p> <p>Poetry is my present fascination, wrestling with the sound, shape, and shadow of words. The books that bind these poems I keep close, filling the cherry bookshelf made by my father. Throughout the days, I pull a book out, thumb to a random page, and read a poem or three. With 7 or so linear feet of poetry, I find this to be a wonderful and sustaining grazing.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:%c2%abA%20Poetry%20Handbook%c2%bb%20by%20Mary%20Oliver">Reply by Email</a></p> Take on Rules Prairie Poor https://takeonrules.com/2026/02/08/prairie-poor/ Sun, 08 Feb 2026 10:22:07 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2026/02/08/prairie-poor/ poetry <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Prairie Poor”"> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2026/02/06/inverness/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;Inverness&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;Inverness&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <a href="https://takeonrules.com/2026/02/10/a-poetry-handbook-by-mary-oliver/" aria-label="Next post tagged with &ldquo;poetry&rdquo; is &ldquo;«A Poetry Handbook» by Mary Oliver&rdquo;" title="Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;«A Poetry Handbook» by Mary Oliver&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> A #poem reflecting on land and language. </p> <p class="verse"> My ancestors carried with them a lowland language,<br /> From flat Frisia to the banks of Motława,<br /> later amongst the golden fields of Ukraine,<br /> then, with treasured seed in tow, the prairie of Nebraska.<br /> <br /> Listening to my father, aunt, and uncle speak<br /> Their low German, I hear my poverty revealed.<br /> This past year, I recorded them one night;<br /> Visions of zweibach and veranika danced in my head.<br /> Their accents and cadences invoking<br /> the first of three spirits visiting that old miser,<br /> <br /> They were telling tales of yore,<br /> dredging as only the Dutch might,<br /> laughter from the depths of half an age ago.<br /> Mischief that spoke of simpler times<br /> (At least that’s what nostalgia would have me say).<br /> <br /> As paternal lineage goes,<br /> I’m first generation English-as-a-first-language.<br /> Raised on the prairie, fed a new language too,<br /> I see now, as second generation, a privation<br /> Of language and lore. I learned the simple new words<br /> of these not-so-simple folk.<br /> <br /> Yet, old Scrooge and I, we’re much the same.<br /> With our impoverished lexicon, near bankrupt<br /> as we fail to name much more<br /> beyond accounts and ledgers.<br /> Were that I had the native tongue,<br /> I might know more than corn fields and cricks.<br /> <br /> These days I read poetry, hoping to learn the song<br /> I know still and once sung. Reading Heaney, Shepherd,<br /> and many others, I feel again my poverty.<br /> <br /> I’m too new to this language<br /> (though it is my only one),<br /> the one not of my father,<br /> but of a land fed on red, black, and brown blood.<br /> A language (and land) that borrows, robs, and steals.<br /> <br /> An’ I wonder, to which (or whom) am I cognate?<br /> Me, a settler adrift on these amber waves.<br /> </p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Prairie%20Poor">Reply by Email</a></p> Take on Rules Inverness https://takeonrules.com/2026/02/06/inverness/ Fri, 06 Feb 2026 15:11:24 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2026/02/06/inverness/ poetry <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Inverness”"> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2026/01/17/does-one-call-oneself-a-poet/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;Does One Call Oneself a Poet?&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;Does One Call Oneself a Poet?&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <a href="https://takeonrules.com/2026/02/08/prairie-poor/" aria-label="Next post tagged with &ldquo;poetry&rdquo; is &ldquo;Prairie Poor&rdquo;" title="Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;Prairie Poor&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> A #poem of #winter reflection, of painting a ceiling not in white but in a bold color, and a mind thus adrift. </p> <p class="verse"> I sit and ponder this canopy of evergreen,<br /> Painted the long year prior;<br /> Bringing a sense of summer amongst the trees,<br /> Even in this stick white winter<br /> amidst the perma-cloud,<br /> Muting all color, joy, and—dare I say—hope.<br /> <br /> Inverness, the green so named.<br /> <br /> Echoing<br /> <br /> That city atop the British isles.<br /> A place I’ve never been, save for<br /> a neighboring Shepherd’s tale;<br /> One of dancing amongst mountains,<br /> alive and free.<br /> <br /> Yet I am rooted here, and travel seems so distant<br /> In this wintry discontent.<br /> When brother stands vigil over encroaching ice.<br /> And I call to those who will not listen.<br /> <br /> Here, amidst this canopy,<br /> tree that I am; Witness<br /> to a forest fell-tide. Unmoving,<br /> yet not unfeeling, waiting for:<br /> <br /> an axe to fall,<br /> a wedge to split,<br /> a fire to lick.<br /> <br /> Knowing a paralytic dread as winter grinds on,<br /> <br /> biting,<br /> &nbsp;&nbsp;clawing,<br /> &nbsp;&nbsp;&nbsp;&nbsp;raging.<br /> <br /> The loon heralds a coming spring when:<br /> <br /> Ice will melt,<br /> Buds will burst,<br /> Leaves will unfurl,<br /> <br /> And life anew shall begin again,<br /> as hope arriving; a gentle morning glow,<br /> Bathing this room of mine,<br /> Where I sit each day,<br /> And ponder.<br /> </p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Inverness">Reply by Email</a></p> Take on Rules Serendipity and Verse https://takeonrules.com/2026/02/05/serendipity-and-verse/ Thu, 05 Feb 2026 19:25:06 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2026/02/05/serendipity-and-verse/ personal <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Serendipity and Verse”"> <span role="listitem" aria-label="&ldquo;personal&rdquo; tag navigation"><a href="https://takeonrules.com/2026/01/07/bolstering-against-the-permeating-llm-language/" aria-label="Previous post tagged with &ldquo;personal&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;" title="Older post tagged with &ldquo;personal&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/personal/" class="p-category" aria-label="All posts tagged with &ldquo;personal&rdquo;" title="All posts tagged with &ldquo;personal&rdquo;">personal</a> <a href="https://takeonrules.com/2026/02/27/local-library-programming/" aria-label="Next post tagged with &ldquo;personal&rdquo; is &ldquo;Local Library Programming&rdquo;" title="Newer post tagged with &ldquo;personal&rdquo; is &ldquo;Local Library Programming&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> It is through epics and poetry that I my home. </p> <p>I’ve been enjoying narrative verse, poetry, myths, and legends. <time datetime="2026-01-11" title="2026-01-11">Recently</time>, I finished <cite data-id="isbn-9780763659394">Yvain</cite> by M.T. Anderson. I felt the thrill of story and primacy of archetype. I found the artistic style deeply textured and enchanting. It interwove with my reading of <cite data-id="A6B3DC34-C462-46BC-8CD7-D89BDC31D6EB">The Once and Future King</cite> and <cite data-id="DF694105-1DA3-40C9-9F63-EE9BB0E89D8C">The Book of Merlyn</cite>; adding to my personal Arthurian canon.</p> <p>While perusing a local independent bookstore, I picked up <cite data-id="ISBN-9780316420747">Fierce Fairytales</cite> by Nikita Gill. <time datetime="2026-02-02" title="2026-02-02">Today</time> I started reading, and felt the invocation—an echo of Genesis. From which Gill offers clusters poems related to a story; each of those poems digging behind the fairy tale to offer perspective of the characters in the story.</p> <p>Not to absolve the wicked step-mother, but to walk with her on a path—one of myriad—that she traversed in donning that mantle. Or, more correctly, one in which the mantle was forced upon her by the systems of oppression: poverty and misogyny.</p> <p>This lead me to look for additional books by Nikita Gill—I added a few to my “shopping list.” Then I stumbled upon an interview with Gill, and learned of their collaboration with Anoushka Shankar on <cite>Sister Susannah</cite>.</p> <p>I gave a listen; I very much loved it. I read more about the song’s origins (<a href="https://livewire.thewire.in/livewire/sister-susannah-shattering-the-silence-around-abuse/">‘Sister Susannah’: Shattering the Silence Around Abuse</a>). And then spent time listening to a few other of Anoushka Shankar’s songs. Now I’m neck deep in sitar music; feeling such freshness move through me. A fresh yet ancient force, that draws upon the ancient echoes I also heard in <cite data-id="2CC8C24E-8223-4BE8-B47F-84709D6DB2BF">Geek Sublime</cite> by Vikram Chandra.</p> <p>Years ago, a friend of mine, now since departed, journeyed to England. His goal: to see something truly ancient. He started on a well trod tourist path, and at the first destination, he took it in and then asked the locals, “Where might I find something even more ancient?”</p> <p>They obliged and pointed him down a path. Upon arrival, he took it in, then asked these other locals again where to find the ancient. And they pointed him further. He followed the local memory until he arrived at an ancient forge, here he felt the world of myth touching upon him.</p> <p>That story hung with me, because of my friend leaning on local memory, one that could continue to point further back in time.</p> <p>That is what I feel when I read these epics and retellings; most often in verse. I feel the author touching on something far older. And both bringing it forward in time and transporting me backwards.</p> <p>This is the magic of <cite data-id="ad1e6319-b4f2-4f00-b94f-1ac0834018ab">The Hobbit</cite>; in which we start in the familiar and prosaic, then soon find ourselves on an adventure with fairy tale logic.</p> <p>It is present in Heaney’s <a href="https://www.poetryinternational.com/en/poets-poems/poems/poem/103-23607_THE-TOLLUND-MAN">The Tollund Man</a>. And in a way Rukeyser’s <a href="https://murielrukeyser.org/2019/12/29/the-soul-and-body-of-john-brown/">The Soul and Body of John Brown</a>; itself not ancient nor regarding antiquity. Yet as much a part of mythology, due to the complexities and nuance of the titular character.</p> <p>And then there is Borges; one who writes of myth, riddled with lies most true.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Serendipity%20and%20Verse">Reply by Email</a></p> Take on Rules Does One Call Oneself a Poet? https://takeonrules.com/2026/01/17/does-one-call-oneself-a-poet/ Sat, 17 Jan 2026 12:26:19 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2026/01/17/does-one-call-oneself-a-poet/ poetry <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Does One Call Oneself a Poet?”"> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2026/01/07/bolstering-against-the-permeating-llm-language/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <a href="https://takeonrules.com/2026/02/06/inverness/" aria-label="Next post tagged with &ldquo;poetry&rdquo; is &ldquo;Inverness&rdquo;" title="Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;Inverness&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> A bit of introspection and a #haiku. In part a post to say I&rsquo;m still here. </p> <p>I wonder, what makes one a poet? And perhaps not the general case, but the self-centered case.</p> <p>Am I a poet?</p> <p>I write poetry. I am an adept conjurer of analogies and metaphors. I have an above average command of the English language. I write poems, scratching out words to find the best (in the moment) forms, sometimes returning to prior phrases.</p> <p>At our local library, next week we’re kicking off a Personal Curriculum series. I had been considering poetry as mine—though ham radio just joined the consideration.</p> <p>My bedroom bookshelf is packed with poetry. On occasion—though not often enough—I find myself grabbing a book and reading a few poems. Life pours from these works, bathing me in warmth.</p> <p>We were driving back home, and as we were passing a wooded area that chirps and whistles in spring from the tree frogs. At that moment, while driving in silence, Jenny asked me what I was thinking about, I responded: frogs.</p> <p>That spot along with the neighbors saying that a large bullfrog had come out of hibernation earlier this month; when we had 55° Fahrenheit weather (and rain).</p> <p>Which inspired the following haiku:</p> <p class="verse"> Amidst icy woods<br /> New moon hiding snow and branch<br /> In the thaw, frog song.<br /> </p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Does%20One%20Call%20Oneself%20a%20Poet%3f">Reply by Email</a></p> Take on Rules Bolstering Against the Permeating LLM Language https://takeonrules.com/2026/01/07/bolstering-against-the-permeating-llm-language/ Wed, 07 Jan 2026 18:46:59 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2026/01/07/bolstering-against-the-permeating-llm-language/ personal poetry responses <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Bolstering Against the Permeating LLM Language”"> <span role="listitem" aria-label="&ldquo;personal&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/31/the-books-of-2025/" aria-label="Previous post tagged with &ldquo;personal&rdquo; is &ldquo;The Books of 2025&rdquo;" title="Older post tagged with &ldquo;personal&rdquo; is &ldquo;The Books of 2025&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/personal/" class="p-category" aria-label="All posts tagged with &ldquo;personal&rdquo;" title="All posts tagged with &ldquo;personal&rdquo;">personal</a> <a href="https://takeonrules.com/2026/02/05/serendipity-and-verse/" aria-label="Next post tagged with &ldquo;personal&rdquo; is &ldquo;Serendipity and Verse&rdquo;" title="Newer post tagged with &ldquo;personal&rdquo; is &ldquo;Serendipity and Verse&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/30/yuletide/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;Yuletide&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;Yuletide&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <a href="https://takeonrules.com/2026/01/17/does-one-call-oneself-a-poet/" aria-label="Next post tagged with &ldquo;poetry&rdquo; is &ldquo;Does One Call Oneself a Poet?&rdquo;" title="Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;Does One Call Oneself a Poet?&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;responses&rdquo; tag navigation"><a href="https://takeonrules.com/2026/01/01/fallacy-of-record/" aria-label="Previous post tagged with &ldquo;responses&rdquo; is &ldquo;Fallacy of Record&rdquo;" title="Older post tagged with &ldquo;responses&rdquo; is &ldquo;Fallacy of Record&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/responses/" class="p-category" aria-label="All posts tagged with &ldquo;responses&rdquo;" title="All posts tagged with &ldquo;responses&rdquo;">responses</a> <small aria-hidden="true">&gt;</small> </span></span> </p/><p><strong>Summary: </strong> On being human, embracing the analogue, and working through private deep introspection. </p> <p>From <a href="https://www.henrikkarlsson.xyz/p/being-creative-requires-taking-risks">Being creative requires taking risks</a>:</p> <blockquote class="h-cite"> Children will say stuff that will shock you, because you can see where they are coming from, but it’s just not the thing you say. They’re not yet collapsed. But we are collapsed. We end up revisiting the same thoughts. We end up saying more and more of the same stuff, and the learning rates go down. </blockquote> <p>This requires further thinking and discussion. Why? These last few days I’ve been actively and assertively deconstructing and mitigating deeply internalized patriarchy—staring at a 50th birthday a half-a-year away; feeling the reverberations of pivoting from ever darkening days to those of light’s return.</p> <p>I’m also reading further in the blog post, and fucking hate the permeation of semantics describing <span>Large Language Model</span> (<abbr title="Large Language Model">LLM</abbr> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Large Language Model”" title="Other site-wide references of “Large Language Model”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-LLM">&#128214;</a></small>) phenominon that are then projected onto the act of being human; I’m not a fucking computer nor mathematical model.</p> <p>I am a human being, always arriving into a present in which I seek orientation, wonder, beauty, poetry, and art.</p> <p>A present in which I’m busy practicing to write better haiku, <span><a href="https://en.wikipedia.org/wiki/Emacs">Emacs</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Emacs”" title="Other site-wide references of “Emacs”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-EMACS">&#128214;</a></small> <span><a href="https://en.wikipedia.org/wiki/Lisp_(programming_language)">Lisp</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Lisp”" title="Other site-wide references of “Lisp”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-LISP">&#128214;</a></small> , love notes to my wife, and read chunky books.</p> <p>Over the course of the last 9 days, I have watched only a fragment of something on “television.” Most everything else I’ve pursued is tactile: a book printed on paper, dishes in the sink (so many), colored pencils scribbling on paper, and more. (I have had days of work in which I needed to clicky-clacky on the keyboard to make the code behave).</p> <p>So, when I read a post in which “the human” condition is mapped to the language of <abbr title="Large Language Models">LLMs</abbr> , I think “bro, get out, touch some dirt, read an older book of fiction, and watch a sunrise.” We are each, and all, more than that lingual effort to collapse us into an ever simplifying model.</p> <p class="verse"> Warmth of mid-winter<br /> I fear you most as herald<br /> Of hell-blasted hate.<br /> </p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Bolstering%20Against%20the%20Permeating%20LLM%20Language">Reply by Email</a></p> Take on Rules Fallacy of Record https://takeonrules.com/2026/01/01/fallacy-of-record/ Thu, 01 Jan 2026 10:02:43 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2026/01/01/fallacy-of-record/ responses technologies <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Fallacy of Record”"> <span role="listitem" aria-label="&ldquo;responses&rdquo; tag navigation"><a href="https://takeonrules.com/2025/09/27/on-black-and-female-essays-by-tsitsi-dangarembga/" aria-label="Previous post tagged with &ldquo;responses&rdquo; is &ldquo;On “Black and Female: Essays” by Tsitsi Dangarembga&rdquo;" title="Older post tagged with &ldquo;responses&rdquo; is &ldquo;On “Black and Female: Essays” by Tsitsi Dangarembga&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/responses/" class="p-category" aria-label="All posts tagged with &ldquo;responses&rdquo;" title="All posts tagged with &ldquo;responses&rdquo;">responses</a> <a href="https://takeonrules.com/2026/01/07/bolstering-against-the-permeating-llm-language/" aria-label="Next post tagged with &ldquo;responses&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;" title="Newer post tagged with &ldquo;responses&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;technologies&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/09/extending-emacs-to-play-mythic-bastionland/" aria-label="Previous post tagged with &ldquo;technologies&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;" title="Older post tagged with &ldquo;technologies&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/technologies/" class="p-category" aria-label="All posts tagged with &ldquo;technologies&rdquo;" title="All posts tagged with &ldquo;technologies&rdquo;">technologies</a> <small aria-hidden="true">&gt;</small> </span></span> </p/><p><strong>Summary: </strong> Exhuming a reflection I wrote in October around “leaving a record.” </p> <p class="verse"> We cross the line, who pushed who over?<br /> It doesn’t matter to you, it matters to me<br /> We’re cut adrift, but still floating<br /> I’m only hanging on to watch you go down, my love.<br /> <br /> — U2, *So Cruel*<br /> </p> <p>In <a href="https://www.jeremycherfas.net/blog/printed-is-not-the-point">Printed is not the Point</a>, I encountered the following quote:</p> <blockquote class="h-cite"> What record are we leaving if the printed word is not the most interesting creative work being developed? <footer>&mdash; <span class="p-author h-card">Naomi Duguid</span> </footer> </blockquote> <p>I question that the “printed word“ has ever been much of “the most interesting creative work being developed.” Consider the interesting and ephemeral [saucy] puppet show, street protest, poetic recitation, dance routine, or concert. Though perhaps “work” is carrying the burden? As in the toil expressed? Or the concept enclosed?</p> <p>But then again, the word “interesting” is one of those “eye of the beholder” words. The printed word’s super power is one of slow moving transport: across time and space. Ideas bound and encoded for transport—of atomic symbols creating molecules with which we create a transport of cultural DNA.</p> <p>I read the lamenting question as one of the shift from analog to digital; in which digital preservation requires far more resources of active attention than analog—which itself requires more space than digital. As though there is some universal constant that expresses the cost of sustaining memory: in physical space, archival processes and systems, and/or calories to maintain biological brains—though can a book or hard-drive be called “memory?”</p> <p>And then to turn to “What record are we leaving,” implying a collective and coordinated effort. To join in the grandeur of cultural preservation and heritage; to belong to a line—constructed/fabricated—connecting from antiquity to the days ahead. We carry that ever accumulating baggage, as though an honor, and one we hope to add a little and bestow upon successive generations. Do we demand accretion? or is composting adequate?</p> <p>One record we will leave is the death rattle of capitalism<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> Perhaps <span><a href="https://en.wikipedia.org/wiki/Kyriarchy">Kyriarchy</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Kyriarchy”" title="Other site-wide references of “Kyriarchy”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-KYRIARCHY">📖</a></small> is more appropriate?<span class="hidden">)</span></span> </small> and its escalating ravages against the world. Perhaps those ravages shall transform and pass into myth, a Scylla and Charybdis of parched earth, nuclear waste, acidic oceans, and eroded wastelands. How might one notice any other record?</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Fallacy%20of%20Record">Reply by Email</a></p> Take on Rules The Books of 2025 https://takeonrules.com/2025/12/31/the-books-of-2025/ Wed, 31 Dec 2025 08:15:42 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/31/the-books-of-2025/ personal reading <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “The Books of 2025”"> <span role="listitem" aria-label="&ldquo;personal&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/31/the-books-of-2025/" aria-label="Previous post tagged with &ldquo;personal&rdquo; is &ldquo;The Books of 2025&rdquo;" title="Older post tagged with &ldquo;personal&rdquo; is &ldquo;The Books of 2025&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/personal/" class="p-category" aria-label="All posts tagged with &ldquo;personal&rdquo;" title="All posts tagged with &ldquo;personal&rdquo;">personal</a> <a href="https://takeonrules.com/2026/01/07/bolstering-against-the-permeating-llm-language/" aria-label="Next post tagged with &ldquo;personal&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;" title="Newer post tagged with &ldquo;personal&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;reading&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/31/the-books-of-2025/" aria-label="Previous post tagged with &ldquo;reading&rdquo; is &ldquo;The Books of 2025&rdquo;" title="Older post tagged with &ldquo;reading&rdquo; is &ldquo;The Books of 2025&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/reading/" class="p-category" aria-label="All posts tagged with &ldquo;reading&rdquo;" title="All posts tagged with &ldquo;reading&rdquo;">reading</a> <small aria-hidden="true">&gt;</small> </span></span> </p/><p><strong>Summary: </strong> Not all of the books of the year, but an overview of the ones that stuck out. </p> <p>This year, my partner and I are participating as a team in our local library reading “challenge.” The goal is for the team to read 100 books. Thusfar we’ve read 150 or so books; me having read about 50 and my partner over a 100.</p> <p>What have been the stand-out books? And more importantly, why? Not all of these are ones that I very much enjoyed (e.g. a 4 out of 4 rating), but they are ones that stuck with me.</p> <ul> <li><strong><cite data-id="fee4ffa7-1d45-46e7-86f1-af203b92f54b">Aflame</cite> by Pico Iyer:</strong> a flowing memoir of solitude and retreat so as to re-e**ngage with the world. To find energy and capacity in quiet communion with both others and nature.</li> <li><strong><cite data-id="817193e6-0ae6-4183-9c1b-87733e8a7eca">Annihilation</cite> by Jeff Vandermeer:</strong> we listened to this audiobook throughout a single day. And found ourselves wondering what was happening. The richness of language and imagery paired with withheld information drew me in. Leaving me both wondering while also knowing that I won’t find out. Much like I won’t know how “climate change” or “history” <em>ends</em> .</li> <li><strong><cite data-id="ISBN-9780199567690">Babbitt</cite> by Sinclair Lewis:</strong> a book written in the 1920s that seems almost immediately applicable to 2020s; plus this was part of a community read, so I had a fantastic conversation with community members.</li> <li><strong><cite data-id="ISBN-9781250776297">Bea Wolf</cite> by Zach Weinersmith:</strong> I love reading Beowulf, each time a new translation. And this one, while not a translation, is instead a retelling that brought me absolute child-like joy.</li> <li><strong><cite data-id="fb15e51e-3050-4d09-ab79-f6b6b1f916a8">Being Peace</cite> by Thich Nhat Hanh:</strong> it had been years since I read a Thich Nhat Hanh book, and this was a natural read after <cite data-id="fee4ffa7-1d45-46e7-86f1-af203b92f54b">Aflame</cite>.</li> <li><strong><cite data-id="ISBN-9781644452110">Black and Female</cite> by Tsitsi Dangarembga:</strong> these essays hit home the absolute vileness of apartheid, as applied in South Africa, but also in the Jim Crow era that the present regime is angling to restore and expand. As an added bonus, Dangarembga was the first Zimbabwean author that I’ve read.</li> <li><strong><cite data-id="f346e9c4-e904-417f-8c4c-4722727d8dd9">The City of Saints and Madmen</cite> by Jeff VanderMeer:</strong> the language and imagery of <cite data-id="817193e6-0ae6-4183-9c1b-87733e8a7eca">Annihilation</cite> captivated me. And one day, while waiting for my partner to finish perusing the bookstore we were visiting, I cracked open the <cite>Ambergris</cite>omnibus, and started reading <cite>Draden, in Love</cite>. And found myself immediately transported into the chaotic streets of Ambergris.</li> <li><strong><cite data-id="1254A3B2-19CC-4EA7-AA80-39B70CD21F5D">The Creative Act</cite> by Rick Rubin:</strong> a book to keep on hand, flip through and find a bit of inspiration.</li> <li><strong><cite data-id="87f4018e-a675-44a7-9c95-b1183384affd">The Dispossessed</cite> by Ursula K. Le Guin:</strong> a speculative work on how community can move past capitalism, yet also understand that it would be hard to fully escape it, while also knowing that governance is invariably a political and personal affair.</li> <li><strong><cite data-id="c51d973a-21c0-406e-86cd-c334769cfc59">The Empusium</cite> by Olga Tokarczuk:</strong> Tokarczuk writes to expand and enlarge the past through which we invariably construct and sustain an ever narrowing view.</li> <li><strong><cite data-id="252e3dc9-f174-41fe-a10f-7bcb13f6d0d5">The Fellowship of the Ring</cite> by J.R.R. Tolkien:</strong> a passion project, in which Phil Dragash narrated and voice acted a production of the <cite data-id="B716B561-9CFB-4712-B247-848A312BE175">The Fellowship of the Ring</cite>.</li> <li><strong><cite data-id="55348AB8-9909-4E68-878A-5458701F87E1">Freedom is a Constant Struggle</cite> by Angela Y. Davis:</strong> articulating so clearly that Palestine, the military industrial complex, petro-carceral state feed into each other; and have created the conditions in which we find the United States.</li> <li><strong><cite data-id="1779d578-85b3-4c27-881d-a56a4a77dabc">Hope in the Dark</cite> by Rebecca Solnit:</strong> I had trepidation about this; it felt as though I might be thinking “Oh Sweet Summer Child” of the grim days of yore. But I instead found this collection of essays a timeless reminder that unpredictable positive events and situations arise from times of tribulation and uncertainty. Importantly, Solnit provides receipts for past achievements and successes that we may have forgotten.</li> <li><strong><cite data-id="ISBN-9781945492600">I Who Have Never Known Men</cite> by Jacqueline Harpman:</strong> a philosophical dystopian read in which one invariably will think about purpose and meaning of life.</li> <li><strong><cite data-id="ISBN-9780385550369">James</cite> by Percival Everett:</strong> a great book in its own right, that delivers a fantastic additional narrative perspective to the events told by Huck Finn (himself unreliable). This book did double duty, rekindling memories of reading <cite data-id="8EDAF156-FD70-48D5-8E92-D1C675F2C49A">The Adventures of Huckleberry Finn</cite> and seeing Big River.</li> <li><strong><cite data-id="C5494904-CE49-4456-8E29-E3F94B72A593">The Life of Poetry</cite> by Muriel Rukeyser:</strong> such lyricism and exposure to aspects of history and thought lost in our march to forget the lessons of facing and overcoming fascism.</li> <li><strong><cite data-id="1f28328c-be96-453d-a9a8-9b921c39fd8a">The Little Book of Solitude</cite> by Joost Joossen:</strong> a collection of mini-biographies and quotes that lead me to to Pico Iyer’s <cite data-id="fee4ffa7-1d45-46e7-86f1-af203b92f54b">Aflame</cite>; it was also amongst the first library books I checked out from our local library.</li> <li><strong><cite data-id="75095d6c-cbe7-4a38-a6da-549678d4ed5e">Men Explain Things to Me</cite> by Rebecca Solnit:</strong> this has been sitting on my shelf, partially read, and I sat down to read it. Solnit always provides a reminder of the misogynistic structures and cultural behaviors that course through the world in which we live.</li> <li><strong><cite data-id="b1aaa6b7-baee-4d8f-8a63-94bb8f812777">Open Socrates</cite> by Agnes Callard:</strong> as with other philosophy books, this is one I’ve added a hefty dose of marginalia. Considering how to better approach love, death, and politics.</li> <li><strong><cite data-id="55a32435-c012-4892-be9a-ac00b5b17204">Piranesi</cite> by Susanna Clarke:</strong> this one will sit with me for a very long-time. Slow-moving, playing with memory. I highly recommend reading this in close proximity to <cite data-id="ISBN-9781945492600">I Who Have Never Known Men</cite>.</li> <li><strong><cite data-id="effcc954-310e-4b76-bf18-6919eb075832">The Player of Games</cite> by Iain M. Banks:</strong> an interesting bit of speculation on how a complex game can be used to constrain a society, and how the rules and language of the game impose upon the society. And how diversity can be a mighty advantage.</li> <li><strong><cite data-id="da435b3f-87a2-49bb-802f-acf81815a488">Prairie Songs</cite> by Lauren Friesen:</strong> my uncle wrote this, and I learned a little bit more about him and my family history. And my uncles poem about surviving polio ending with: “and beside my bed \ they spun, \ an iron cocoon.” Goosebumps.</li> <li><strong><cite data-id="4b6ca2f0-8e70-40b4-b18e-fe87b643b3e6">Pranksters vs. Autocrats</cite> by Srdja Popovic and Sophia A. McClennen:</strong> I have recommended this book to many people looking for hope and action. Evidence is that humor wins.</li> <li><strong><cite data-id="C2F8BF31-362C-4F0D-A4F2-8F6B1927CB1A">Slowness</cite> by Milan Kundera:</strong> this was one of my question books, due to its quote: “There is a secret bond between slowness and memory, between speed and forgetting.” I found this book for a reasonable price and read it that evening.</li> <li><strong><cite data-id="588d8c62-e79a-4ffe-99f3-a73aba315a8e">Spring, Summer, Asteroid, Bird</cite> by Henry Lien:</strong> on a lark I picked this up, and it opened my awareness to other narrative structures, ones that I now look for as a change of pace.</li> <li><strong><cite data-id="isbn-9781534431003">This is How You Lose the Time War</cite> by Amal El-Mohtar and Max Gladstone:</strong> Jenny borrowed this via inter-library loan; read it and thought I might enjoy it. She was right. I appreciate the myth building through symbols; the language of thread, needle felting, and sleeping beauty (herself a wolf hungry for little red riding hood).</li> <li><strong><cite data-id="5dd8020b-640b-420d-ae24-84169585038c">To Fight Against this Age</cite> by Rob Riemen:</strong> I <cite data-id="72C7CC81-C6CD-4ECD-B8AF-EDF939B56094">Farenheit 451</cite>liked the title and subtitle, and found a philosophical memoir that reinforced the need for humanism and conversation.</li> <li><strong><cite data-id="d334ef0c-4398-479f-ad82-4d8b9e993d2c">The Trial</cite> by Franz Kafka:</strong> Having never read much of Kafka, yet knowing the foundational nature of his work, then reading references in <cite data-id="5dd8020b-640b-420d-ae24-84169585038c">To Fight Against this Age</cite> and eyeing <cite data-id="kafka-on-the-shore-by-haruki-murakami">Kafka on the Shore</cite>, I had to read it. And I was hooked. Forget Cthulhu, existential dread is mindless bureaucracy.</li> <li><strong><cite data-id="isbn-9781250213587">Upright Women Wanted</cite> by Sarah Gailey:</strong> not normally something I’d read, but this let the Wild West tropes do quite a bit of work, and then subvert those tropes and tell a unique story about resistance.</li> <li><strong><cite data-id="BAEA3D15-DA6C-4699-9DCC-3F424B515740">We</cite> by Yevgeny Zamyatin:</strong> I love <cite data-id="works-1984">1984</cite>, <cite data-id="30C81F03-C944-488E-9C81-CFC7E632A95E">Brave New World</cite>, and <cite data-id="72C7CC81-C6CD-4ECD-B8AF-EDF939B56094">Farenheit 451</cite>; and <cite data-id="BAEA3D15-DA6C-4699-9DCC-3F424B515740">We</cite> is the spiritual ancestor of those stories. The dystopian over-reaching state in which so much energy must be spent to sustain the systems of oppression and coercion. It felt a bit derivative, but as it came before, must be viewed with a freshness of thought relative to others.</li> <li><strong><cite data-id="95cc0be8-ed94-44c5-a193-696c32426e72">When No Thing Works</cite> by Norma Kaelokū Wong:</strong> an important reminder that it is not enough to resist, but to imagine a future in which we are along moving along the path of restoration and restitution. Naming what that future looks like—in details. The dishes one brings to celebrations, the evidence of how improvements manifest.</li> </ul> <p>Then synthesizing all of these things: subvert tropes as this fosters further imagination of possibility. And from there, action becomes possible.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:The%20Books%20of%202025">Reply by Email</a></p> Take on Rules The Books of 2025 https://takeonrules.com/2025/12/31/the-books-of-2025/ Wed, 31 Dec 2025 08:12:40 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/31/the-books-of-2025/ personal reading <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “The Books of 2025”"> <span role="listitem" aria-label="&ldquo;personal&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/30/yuletide/" aria-label="Previous post tagged with &ldquo;personal&rdquo; is &ldquo;Yuletide&rdquo;" title="Older post tagged with &ldquo;personal&rdquo; is &ldquo;Yuletide&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/personal/" class="p-category" aria-label="All posts tagged with &ldquo;personal&rdquo;" title="All posts tagged with &ldquo;personal&rdquo;">personal</a> <a href="https://takeonrules.com/2025/12/31/the-books-of-2025/" aria-label="Next post tagged with &ldquo;personal&rdquo; is &ldquo;The Books of 2025&rdquo;" title="Newer post tagged with &ldquo;personal&rdquo; is &ldquo;The Books of 2025&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;reading&rdquo; tag navigation"><a href="https://takeonrules.com/2025/09/27/on-black-and-female-essays-by-tsitsi-dangarembga/" aria-label="Previous post tagged with &ldquo;reading&rdquo; is &ldquo;On “Black and Female: Essays” by Tsitsi Dangarembga&rdquo;" title="Older post tagged with &ldquo;reading&rdquo; is &ldquo;On “Black and Female: Essays” by Tsitsi Dangarembga&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/reading/" class="p-category" aria-label="All posts tagged with &ldquo;reading&rdquo;" title="All posts tagged with &ldquo;reading&rdquo;">reading</a> <a href="https://takeonrules.com/2025/12/31/the-books-of-2025/" aria-label="Next post tagged with &ldquo;reading&rdquo; is &ldquo;The Books of 2025&rdquo;" title="Newer post tagged with &ldquo;reading&rdquo; is &ldquo;The Books of 2025&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> Not all of the books of the year, but an overview of the ones that stuck out. </p> <p>This year, my partner and I are participating as a team in our local library reading “challenge.” The goal is for the team to read 100 books. Thusfar we’ve read 150 or so books; me having read about 50 and my partner over a 100.</p> <p>What have been the stand-out books? And more importantly, why? Not all of these are ones that I very much enjoyed (e.g. a 4 out of 4 rating), but they are ones that stuck with me.</p> <ul> <li><strong><cite data-id="fee4ffa7-1d45-46e7-86f1-af203b92f54b">Aflame</cite> by Pico Iyer:</strong> a flowing memoir of solitude and retreat so as to re-engage with the world. To find energy and capacity in quiet communion with both others and nature.</li> <li><strong><cite data-id="817193e6-0ae6-4183-9c1b-87733e8a7eca">Annihilation</cite> by Jeff Vandermeer:</strong> we listened to this audiobook throughout a single day. And found ourselves wondering what was happening. The richness of language and imagery paired with withheld information drew me in. Leaving me both wondering while also knowing that I won’t find out. Much like I won’t know how “climate change” or “history” <em>ends</em> .</li> <li><strong><cite data-id="ISBN-9780199567690">Babbitt</cite> by Sinclair Lewis:</strong> a book written in the 1920s that seems almost immediately applicable to 2020s; plus this was part of a community read, so I had a fantastic conversation with community members.</li> <li><strong><cite data-id="ISBN-9781250776297">Bea Wolf</cite> by Zach Weinersmith:</strong> I love reading Beowulf, each time a new translation. And this one, while not a translation, is instead a retelling that brought me absolute child-like joy.</li> <li><strong><cite data-id="fb15e51e-3050-4d09-ab79-f6b6b1f916a8">Being Peace</cite> by Thich Nhat Hanh:</strong> it had been years since I read a Thich Nhat Hanh book, and this was a natural read after <cite data-id="fee4ffa7-1d45-46e7-86f1-af203b92f54b">Aflame</cite>.</li> <li><strong><cite data-id="ISBN-9781644452110">Black and Female</cite> by Tsitsi Dangarembga:</strong> these essays hit home the absolute vileness of apartheid, as applied in South Africa, but also in the Jim Crow era that the present regime is angling to restore and expand. As an added bonus, Dangarembga was the first Zimbabwean author that I’ve read.</li> <li><strong><cite data-id="f346e9c4-e904-417f-8c4c-4722727d8dd9">The City of Saints and Madmen</cite> by Jeff VanderMeer:</strong> the language and imagery of <cite data-id="817193e6-0ae6-4183-9c1b-87733e8a7eca">Annihilation</cite> captivated me. And one day, while waiting for my partner to finish perusing the bookstore we were visiting, I cracked open the <cite>Ambergris</cite>omnibus, and started reading <cite>Draden, in Love</cite>. And found myself immediately transported into the chaotic streets of Ambergris.</li> <li><strong><cite data-id="1254A3B2-19CC-4EA7-AA80-39B70CD21F5D">The Creative Act</cite> by Rick Rubin:</strong> a book to keep on hand, flip through and find a bit of inspiration.</li> <li><strong><cite data-id="87f4018e-a675-44a7-9c95-b1183384affd">The Dispossessed</cite> by Ursula K. Le Guin:</strong> a speculative work on how community can move past capitalism, yet also understand that it would be hard to fully escape it, while also knowing that governance is invariably a political and personal affair.</li> <li><strong><cite data-id="c51d973a-21c0-406e-86cd-c334769cfc59">The Empusium</cite> by Olga Tokarczuk:</strong> Tokarczuk writes to expand and enlarge the past through which we invariably construct and sustain an ever narrowing view.</li> <li><strong><cite data-id="252e3dc9-f174-41fe-a10f-7bcb13f6d0d5">The Fellowship of the Ring</cite> by J.R.R. Tolkien:</strong> a passion project, in which Phil Dragash narrated and voice acted a production of the <cite data-id="B716B561-9CFB-4712-B247-848A312BE175">The Fellowship of the Ring</cite>.</li> <li><strong><cite data-id="55348AB8-9909-4E68-878A-5458701F87E1">Freedom is a Constant Struggle</cite> by Angela Y. Davis:</strong> articulating so clearly that Palestine, the military industrial complex, petro-carceral state feed into each other; and have created the conditions in which we find the United States.</li> <li><strong><cite data-id="1779d578-85b3-4c27-881d-a56a4a77dabc">Hope in the Dark</cite> by Rebecca Solnit:</strong> I had trepidation about this; it felt as though I might be thinking “Oh Sweet Summer Child” of the grim days of yore. But I instead found this collection of essays a timeless reminder that unpredictable positive events and situations arise from times of tribulation and uncertainty. Importantly, Solnit provides receipts for past achievements and successes that we may have forgotten.</li> <li><strong><cite data-id="ISBN-9781945492600">I Who Have Never Known Men</cite> by Jacqueline Harpman:</strong> a philosophical dystopian read in which one invariably will think about purpose and meaning of life.</li> <li><strong><cite data-id="ISBN-9780385550369">James</cite> by Percival Everett:</strong> a great book in its own right, that delivers a fantastic additional narrative perspective to the events told by Huck Finn (himself unreliable). This book did double duty, rekindling memories of reading <cite data-id="8EDAF156-FD70-48D5-8E92-D1C675F2C49A">The Adventures of Huckleberry Finn</cite> and seeing Big River.</li> <li><strong><cite data-id="C5494904-CE49-4456-8E29-E3F94B72A593">The Life of Poetry</cite> by Muriel Rukeyser:</strong> such lyricism and exposure to aspects of history and thought lost in our march to forget the lessons of facing and overcoming fascism.</li> <li><strong><cite data-id="1f28328c-be96-453d-a9a8-9b921c39fd8a">The Little Book of Solitude</cite> by Joost Joossen:</strong> a collection of mini-biographies and quotes that lead me to to Pico Iyer’s <cite data-id="fee4ffa7-1d45-46e7-86f1-af203b92f54b">Aflame</cite>; it was also amongst the first library books I checked out from our local library.</li> <li><strong><cite data-id="75095d6c-cbe7-4a38-a6da-549678d4ed5e">Men Explain Things to Me</cite> by Rebecca Solnit:</strong> this has been sitting on my shelf, partially read, and I sat down to read it. Solnit always provides a reminder of the misogynistic structures and cultural behaviors that course through the world in which we live.</li> <li><strong><cite data-id="b1aaa6b7-baee-4d8f-8a63-94bb8f812777">Open Socrates</cite> by Agnes Callard:</strong> as with other philosophy books, this is one I’ve added a hefty dose of marginalia. Considering how to better approach love, death, and politics.</li> <li><strong><cite data-id="55a32435-c012-4892-be9a-ac00b5b17204">Piranesi</cite> by Susanna Clarke:</strong> this one will sit with me for a very long-time. Slow-moving, playing with memory. I highly recommend reading this in close proximity to <cite data-id="ISBN-9781945492600">I Who Have Never Known Men</cite>.</li> <li><strong><cite data-id="effcc954-310e-4b76-bf18-6919eb075832">The Player of Games</cite> by Iain M. Banks:</strong> an interesting bit of speculation on how a complex game can be used to constrain a society, and how the rules and language of the game impose upon the society. And how diversity can be a mighty advantage.</li> <li><strong><cite data-id="da435b3f-87a2-49bb-802f-acf81815a488">Prairie Songs</cite> by Lauren Friesen:</strong> my uncle wrote this, and I learned a little bit more about him and my family history. And my uncles poem about surviving polio ending with: “and beside my bed \ they spun, \ an iron cocoon.” Goosebumps.</li> <li><strong><cite data-id="4b6ca2f0-8e70-40b4-b18e-fe87b643b3e6">Pranksters vs. Autocrats</cite> by Srdja Popovic and Sophia A. McClennen:</strong> I have recommended this book to many people looking for hope and action. Evidence is that humor wins.</li> <li><strong><cite data-id="C2F8BF31-362C-4F0D-A4F2-8F6B1927CB1A">Slowness</cite> by Milan Kundera:</strong> this was one of my question books, due to its quote: “There is a secret bond between slowness and memory, between speed and forgetting.” I found this book for a reasonable price and read it that evening.</li> <li><strong><cite data-id="588d8c62-e79a-4ffe-99f3-a73aba315a8e">Spring, Summer, Asteroid, Bird</cite> by Henry Lien:</strong> on a lark I picked this up, and it opened my awareness to other narrative structures, ones that I now look for as a change of pace.</li> <li><strong><cite data-id="isbn-9781534431003">This is How You Lose the Time War</cite> by Amal El-Mohtar and Max Gladstone:</strong> Jenny borrowed this via inter-library loan; read it and thought I might enjoy it. She was right. I appreciate the myth building through symbols; the language of thread, needle felting, and sleeping beauty (herself a wolf hungry for little red riding hood).</li> <li><strong><cite data-id="5dd8020b-640b-420d-ae24-84169585038c">To Fight Against this Age</cite> by Rob Riemen:</strong> I liked the title and subtitle, and found a philosophical memoir that reinforced the need for humanism and conversation.</li> <li><strong><cite data-id="d334ef0c-4398-479f-ad82-4d8b9e993d2c">The Trial</cite> by Franz Kafka:</strong> Having never read much of Kafka, yet knowing the foundational nature of his work, then reading references in <cite data-id="5dd8020b-640b-420d-ae24-84169585038c">To Fight Against this Age</cite> and eyeing <cite data-id="kafka-on-the-shore-by-haruki-murakami">Kafka on the Shore</cite>, I had to read it. And I was hooked. Forget Cthulhu, existential dread is mindless bureaucracy.</li> <li><strong><cite data-id="isbn-9781250213587">Upright Women Wanted</cite> by Sarah Gailey:</strong> not normally something I’d read, but this let the Wild West tropes do quite a bit of work, and then subvert those tropes and tell a unique story about resistance.</li> <li><strong><cite data-id="BAEA3D15-DA6C-4699-9DCC-3F424B515740">We</cite> by Yevgeny Zamyatin:</strong> I love <cite data-id="works-1984">1984</cite>, <cite data-id="30C81F03-C944-488E-9C81-CFC7E632A95E">Brave New World</cite>, and <cite data-id="72C7CC81-C6CD-4ECD-B8AF-EDF939B56094">Farenheit 451</cite>; and <cite data-id="BAEA3D15-DA6C-4699-9DCC-3F424B515740">We</cite> is the spiritual ancestor of those stories. The dystopian over-reaching state in which so much energy must be spent to sustain the systems of oppression and coercion. It felt a bit derivative, but as it came before, must be viewed with a freshness of thought relative to others.</li> <li><strong><cite data-id="95cc0be8-ed94-44c5-a193-696c32426e72">When No Thing Works</cite> by Norma Kaelokū Wong:</strong> an important reminder that it is not enough to resist, but to imagine a future in which we are along moving along the path of restoration and restitution. Naming what that future looks like—in details. The dishes one brings to celebrations, the evidence of how improvements manifest.</li> </ul> <p>Then synthesizing all of these things: subvert tropes as this fosters further imagination of possibility. And from there, action becomes possible.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:The%20Books%20of%202025">Reply by Email</a></p> Take on Rules Yuletide https://takeonrules.com/2025/12/30/yuletide/ Tue, 30 Dec 2025 10:30:07 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/30/yuletide/ personal poetry <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Yuletide”"> <span role="listitem" aria-label="&ldquo;personal&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/29/that-time-in-between/" aria-label="Previous post tagged with &ldquo;personal&rdquo; is &ldquo;That Time In Between&rdquo;" title="Older post tagged with &ldquo;personal&rdquo; is &ldquo;That Time In Between&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/personal/" class="p-category" aria-label="All posts tagged with &ldquo;personal&rdquo;" title="All posts tagged with &ldquo;personal&rdquo;">personal</a> <a href="https://takeonrules.com/2025/12/31/the-books-of-2025/" aria-label="Next post tagged with &ldquo;personal&rdquo; is &ldquo;The Books of 2025&rdquo;" title="Newer post tagged with &ldquo;personal&rdquo; is &ldquo;The Books of 2025&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/29/lake-effect-snow/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;Lake Effect Snow&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;Lake Effect Snow&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <a href="https://takeonrules.com/2026/01/07/bolstering-against-the-permeating-llm-language/" aria-label="Next post tagged with &ldquo;poetry&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;" title="Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;Bolstering Against the Permeating LLM Language&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> I can think of no better time than that between Winter Solstice and New Year’s Day. </p> <blockquote class="quote epigraph" data-id="20221009T120354"> <p> Myth is a tear in the fabric of reality, and immense energies pour through these holy fissures. Our stories, our poems, are rips in this fabric as well, however slight. </p> <footer>&#8213;Jay Parini, <cite>Borges and Me</cite></footer></blockquote> <p>Yule-tide, the twelve days between Winter Solstice and New Year’s Day. <time datetime="2025" title="2025">This year</time> those days coincide with my (paid) time off of work.</p> <p>I stumbled a bit, thinking what the common weekday name I would give <time datetime="2025-12-30" title="2025-12-30">today</time>. It felt very much like Sunday. Much as <time datetime="2025-12-29" title="2025-12-29">yesterday</time> did. Perhaps there’s that sense of holiness that burns through these yule-lit days.</p> <p>Not holy as we might conflate with communion and sermons, but in those fissures. In which a true light shines through, that of communal memory and myths constructed around firelight.</p> <p>I think to those gatherings at Grandma and Grandpa Friesen’s house. We’d be there together for what felt like several days. Time made little sense, as the 15 of us stuffed into that small ranch house in Nebraska. Laughter tumbling amidst Low German and English.</p> <p>The younger cousins and I would play at grandpa’s pool table. Endless hours in those pre-electronic entertainment console days. Later I’d learn that it was a shoddy thing, warped and uneven. But in those days, the green felt felt enchantingly rich.</p> <p>In later years, there were those days in which we’d pack up after Christmas and drive to Vermont. Late nights of laughter as we’d play fishbowl around the hearth. Yule-tide, is for gathering. For catching glimpses of the sun’s return. Sharing in that joy of togetherness, when the world outside, at this latitude at least, is grinding ice and howling wind.</p> <p>Now, I gather with Jenny and our dogs Lacey and Ollie. Me writing (poetry and Lisp, as though there were a difference) and Jenny reading. Lacey curled up beside Jenny and Ollie wedged into his lounging chair. We’ll go outside for a bit, and stomp through the fresh powder of yesterday.</p> <p>But Yule-tide is now a fragile thing, at least in these States of America. Each year, I claim some of my employer benefits: paid time off. Yet not all of my children have benefits that provide paid time off. Others must budget time off for visiting their fractured families.</p> <p>Where is the sacred?</p> <p>I want to write “sacrificed to the maw of capitalism”, but that is an indirection. Capitalists, lets name them not their system, demand our time and talent to extract and enrich themselves. The sacred, cultural memories and echoes, is something to be shattered, rended, and in their flattening-mind, forgotten and/or perverted. Replaced with consumption.</p> <p class="verse"> Yule-tide, yule-tide, a wave of night<br /> passing through mists of time<br /> waxing toward growing light.<br /> <br /> This yule-tide let pop the cork<br /> and decant drought of warding warmth,<br /> and celebrate family and friends<br /> and home and hearth.<br /> </p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Yuletide">Reply by Email</a></p> Take on Rules Lake Effect Snow https://takeonrules.com/2025/12/29/lake-effect-snow/ Mon, 29 Dec 2025 16:40:38 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/29/lake-effect-snow/ poetry <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Lake Effect Snow”"> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/29/that-time-in-between/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;That Time In Between&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;That Time In Between&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <a href="https://takeonrules.com/2025/12/30/yuletide/" aria-label="Next post tagged with &ldquo;poetry&rdquo; is &ldquo;Yuletide&rdquo;" title="Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;Yuletide&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> A winter poem celebrating snow. </p> <p class="verse"> Out windows, white flakes<br /> Dancing, twirling, falling hide<br /> All past nearest shore—<br /> <br /> What darkening winter keeps<br /> Curtains drawn our secrets near.<br /> </p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Lake%20Effect%20Snow">Reply by Email</a></p> Take on Rules That Time In Between https://takeonrules.com/2025/12/29/that-time-in-between/ Mon, 29 Dec 2025 08:27:55 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/29/that-time-in-between/ personal poetry <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “That Time In Between”"> <span role="listitem" aria-label="&ldquo;personal&rdquo; tag navigation"><a href="https://takeonrules.com/2025/11/09/a-first-snowfall/" aria-label="Previous post tagged with &ldquo;personal&rdquo; is &ldquo;A First Snowfall&rdquo;" title="Older post tagged with &ldquo;personal&rdquo; is &ldquo;A First Snowfall&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/personal/" class="p-category" aria-label="All posts tagged with &ldquo;personal&rdquo;" title="All posts tagged with &ldquo;personal&rdquo;">personal</a> <a href="https://takeonrules.com/2025/12/30/yuletide/" aria-label="Next post tagged with &ldquo;personal&rdquo; is &ldquo;Yuletide&rdquo;" title="Newer post tagged with &ldquo;personal&rdquo; is &ldquo;Yuletide&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;poetry&rdquo; tag navigation"><a href="https://takeonrules.com/2025/07/30/a-game-played-with-a-pile-of-random-quotes/" aria-label="Previous post tagged with &ldquo;poetry&rdquo; is &ldquo;A Game Played with a Pile of Random Quotes&rdquo;" title="Older post tagged with &ldquo;poetry&rdquo; is &ldquo;A Game Played with a Pile of Random Quotes&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/poetry/" class="p-category" aria-label="All posts tagged with &ldquo;poetry&rdquo;" title="All posts tagged with &ldquo;poetry&rdquo;">poetry</a> <a href="https://takeonrules.com/2025/12/29/lake-effect-snow/" aria-label="Next post tagged with &ldquo;poetry&rdquo; is &ldquo;Lake Effect Snow&rdquo;" title="Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;Lake Effect Snow&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> On that sacred time during winter dark. </p> <p class="verse"> Folly is to name the days between Christmas and New Years.<br /> There’s hardly enough daytime to warrant such.<br /> Instead, let us embrace these long winter’s night;<br /> Where story presses against the glass,<br /> &nbsp;&nbsp;breath hot, frozen fog forming crystalline lace.<br /> No logs split nor tallow lit, that once did dance.<br /> Instead, light sits steady and flat,<br /> And the only flicker that of picture panes.<br /> This is a moment when little sense does our time make.<br /> </p> <p>I embrace <a href="https://ruk.ca/content/romjul">Romjul</a>, that period between Christmas/Boxing Day and New Year’s Eve. For most of my life, the time between Christmas and New Years has been one of holiday. That is: not working for my employer, but instead spending time with friends (both present and tome-bound).</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:That%20Time%20In%20Between">Reply by Email</a></p> Take on Rules Serializing Somewhat Large Emacs Alists https://takeonrules.com/2025/12/23/serializing-somewhat-large-emacs-alists/ Tue, 23 Dec 2025 08:47:49 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/23/serializing-somewhat-large-emacs-alists/ emacs programming <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Serializing Somewhat Large Emacs Alists”"> <span role="listitem" aria-label="&ldquo;emacs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/16/mythic-bastionland-map-play-aid-emacs-package/" aria-label="Previous post tagged with &ldquo;emacs&rdquo; is &ldquo;Mythic Bastionland Map Play Aid Emacs Package&rdquo;" title="Older post tagged with &ldquo;emacs&rdquo; is &ldquo;Mythic Bastionland Map Play Aid Emacs Package&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/emacs/" class="p-category" aria-label="All posts tagged with &ldquo;emacs&rdquo;" title="All posts tagged with &ldquo;emacs&rdquo;">emacs</a> <small aria-hidden="true">&gt;</small> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;programming&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/10/extending-core-emacs-bookmark-package/" aria-label="Previous post tagged with &ldquo;programming&rdquo; is &ldquo;Extending Core Emacs Bookmark Package&rdquo;" title="Older post tagged with &ldquo;programming&rdquo; is &ldquo;Extending Core Emacs Bookmark Package&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/programming/" class="p-category" aria-label="All posts tagged with &ldquo;programming&rdquo;" title="All posts tagged with &ldquo;programming&rdquo;">programming</a> <small aria-hidden="true">&gt;</small> </span></span> </p/><p><strong>Summary: </strong> Creating a bespoke process to dump and load data in manageable chunks. </p> <p>In <a href="https://git.sr.ht/~jeremyf/mythic-bastionland.el">my Mythic Bastionland Emacs package</a> I’ve been populating an <span><a href="https://en.wikipedia.org/wiki/Emacs">Emacs</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Emacs”" title="Other site-wide references of “Emacs”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-EMACS">&#128214;</a></small> <code>alist</code> with information related to the state of the map for my Forged from the Worst campaign.</p> <p>I have 14 top-level keys in that <code>alist</code>: <code>barriers</code>, <code>curses</code>, <code>dwellings, escalations</code>, <code>hazards</code>, <code>holdings</code>, <code>known-hexes</code>, <code>locations</code>, <code>monuments</code>, <code>myth, omens-revealed</code>, <code>rivers</code>, <code>ruins</code>, and <code>sanctums</code>. Most of those entries have 3 to 6 associated elements, with <code>rivers</code>, <code>locations</code>, and <code>barriers</code> having more.</p> <p>Along the way, I found that when I went to persist the <code>alist</code> to a file, I was getting trailing <code>...</code> characters in a few places. The process was truncating my data. Which meant data loss when I went to load the persisted <code>alist</code>.</p> <p>No worries, due to the nature of the package, I could rebuild the map data and it would be true to the state of play (though the non-revealed information would be different). However, I wanted to solve this persistence issue.</p> <p>I spent an evening searching and exploring the use of <code>prin1</code> and <code>(setopt eval-expression-print-level nil)</code> but Emacs seemed to insist that when I went to print the full variable out, it would truncate.</p> <p>So I set about writing out chunks of the data. Then reassembling those chunks.</p> <h2 id="writing-the-data-out-in-chunks">Writing the Data Out in Chunks</h2> <p>Below is my <a href="https://git.sr.ht/~jeremyf/mythic-bastionland.el/tree/6e9688a0ab8782a005e70c47fe64eb3627c91033/mythic-bastionland.el#L463-509">mythic-bastionland-map-write function available at Sourcehut</a>. What the code does is:</p> <ul> <li>Create a feature called <code>mythic-bastionland-map</code>, which we’ll write as a loadable package.</li> <li>For each association in the map: <ul> <li>Chunk that data into groups of 8 and write each sub-group into a variable with name based on the association’s <code>car</code> and incremental suffix.</li> <li>Store those incremental variable names in another variable.</li> </ul> </li> <li>Store the name of each association’s <code>car</code> rendered in yet another variable.</li> </ul> <pre><code class="language-emacs-lisp">(defun mythic-bastionland-map-write (&amp;optional map) &quot;Write the MAP into a re-loadable format. Emacs is truncating things so I need to jump through some hoops.&quot; (setq mythic-bastionland-map (or map (mythic-bastionland-map))) (with-temp-buffer (let ((features nil)) (insert &quot;;;; mbm --- -*- lexical-binding: t -*-\n&quot;) (cl-loop for (feature . values) in mythic-bastionland-map do (let (;; In my experience somewhere around 10 elements ;; and we start seeing truncation. So let's be ;; under that. (size 8) ;; This will be a list of the variable names that, ;; when reassembled, will be the values. (segment-names nil)) (cl-pushnew feature features) (dotimes (i (+ 1 (/ (length values) size))) (let (;; Name of variable that will hold a segment ;; of the values. (segment-name (format &quot;mbm--data-%s-%d&quot; feature i))) ;; Track this segment's variable name. (push (intern segment-name) segment-names) ;; Grab a subset of values for this segment and ;; store it in the variable with name that is the ;; value of the segment. (insert (format &quot;(defvar %s '&quot; segment-name)) ;; Yes yes, this is likely less effecient as I'm ;; always reading the list. But it was quick (prin1 (seq-take (nthcdr (* i size) values) size) (current-buffer)) (insert &quot;)\n&quot;))) ;; Now track all of the segment names associated with ;; this feature. (insert (format &quot;(defvar mbm--data-%s-list '&quot; feature)) (prin1 segment-names (current-buffer)) (insert &quot;)\n&quot;))) ;; Last track all feature names so we may reassemble them. (insert (format &quot;(defvar mbm--features \&quot;%s\&quot;)\n&quot; (mapconcat (lambda (e) (format &quot;%s&quot; e)) features &quot; &quot;)))) (insert &quot;(provide 'mbm)\n&quot; &quot;;;; mythic-bastionland-map.el ends here\n&quot;) (write-file mythic-bastionland-map-state-file))) </code></pre> <h2 id="reading-the-data-back-in">Reading the Data Back In</h2> <p>I use the <a href="https://git.sr.ht/~jeremyf/mythic-bastionland.el/tree/6e9688a0ab8782a005e70c47fe64eb3627c91033/mythic-bastionland.el#L519-545">mythic-bastionland-map-read</a> to reassemble that segmented data. When done I call <code>(unload-feature 'mbm)</code> to remove the fragmented variables, leaving only the <code>mythic-bastionland-map</code> variable.</p> <pre><code class="language-emacs-lisp">(defun mythic-bastionland-map-read () &quot;Load the unduly complicated encoding of the map.&quot; (unless (f-file-p mythic-bastionland-map-state-file) (user-error &quot;No file found at %s&quot; mythic-bastionland-map-state-file)) (require 'mbm mythic-bastionland-map-state-file) (let ((map nil)) ;; Our serialized map has a variable mbm--map-features; we use that ;; to start our loading of data. (dolist (map-feature (s-split &quot; &quot; mbm--features)) (let* ((values nil) ;; The name of each of the variables that houses a segment ;; of the feature's data. (segment-names (symbol-value (intern (format &quot;mbm--data-%s-list&quot; map-feature))))) (dolist (segment-name segment-names) (dolist (value (symbol-value segment-name)) (cl-pushnew value values))) ;; Now that we've reassembled (in reverse order) the values for ;; this feature, add them to the underlying map. (cl-pushnew (cons (intern map-feature) values) map))) ;; With all features and their values loaded, we assign the map to ;; something more durable. (setq mythic-bastionland-map map)) ;; And last clean up all those variables we used for reassembly. (unload-feature 'mbm)) </code></pre> <h2 id="perhaps-another-way">Perhaps Another Way?</h2> <p>It seems a bit odd that this is how I could reliably read and write the data. And I’m open for other approaches. However, I felt it worth sharing this bespoke method as it might help others.</p> <p>If you know of another way, <a href="https://takeonrules.com/contact-me/">please contact me</a>.</p> <h2 id="structured-data-and-iterating">Structured Data and Iterating</h2> <p>While working on <a href="https://git.sr.ht/~jeremyf/mythic-bastionland.el">my Mythic Bastionland Emacs package</a>, I have been very pleased with the malleability of the <code>alist</code>, and their ease of testing; in part because of the <span><a href="https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop">Read-eval-print loop</a></span> (<abbr title="Read-eval-print loop">REPL</abbr> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Read-eval-print loop”" title="Other site-wide references of “Read-eval-print loop”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-REPL">&#128214;</a></small>) but also because of the nature of Lisp.</p> <p>I can easily grab a portion of the syntax tree and reliably mash on that in the <abbr title="Read-eval-print loop">REPL</abbr> . Think about other programming languages, if you want to use a portion of the inner logic of a function, what steps do you need to take to use it?</p> <p>Due to the primacy of the <code>alist</code> there are fantastic functions for working with them.</p> <p>Segmenting the data was a bit odd, I was hoping to simply dump the <code>alist</code> to a file. However, with the problems I encountered, I started exploring other options. Maybe write to JSON and load from JSON. But then I would’ve needed to establish a mechanism for describing that transformation.</p> <ins aria-labelledby="section-update-2025-12-23" class="update" datetime="2025-12-23"><h2 id="section-update-2025-12-23"><time datetime="2025-12-23">Dec 23, 2025</time> update</h2> <p> Reader’s rallied and submitted some options. The following refactor works in place of the previous implementations. </p> <pre><code class="language-emacs-lisp">(defun mythic-bastionland-map-write (&amp;optional map) &quot;Write the MAP into a re-loadable format.&quot; (setq mythic-bastionland-map (or map (mythic-bastionland-map))) (with-temp-buffer (let ((print-level nil) (print-length nil)) (prin1 mythic-bastionland-map (current-buffer))) (write-file mythic-bastionland-map-state-file))) (defun mythic-bastionland-map-read () &quot;Load the persisted map.&quot; (if-let ((file mythic-bastionland-map-state-file)) (if (f-file-p file) (progn (setq mythic-bastionland-map (read (with-temp-buffer (insert-file-contents file) (buffer-string)))) (message &quot;Loaded mythic-bastionland-map from %s&quot; file)) (user-error &quot;No file found at %s&quot; mythic-bastionland-map-state-file)) (user-error &quot;'mythic-bastionland-state-file is nil&quot;))) </code></pre> </ins> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Serializing%20Somewhat%20Large%20Emacs%20Alists">Reply by Email</a></p> Take on Rules Game Procedures as Bridges from Potential to Actual https://takeonrules.com/2025/12/21/game-procedures-as-bridges-from-potential-to-actual/ Sun, 21 Dec 2025 11:07:13 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/21/game-procedures-as-bridges-from-potential-to-actual/ reflections rpgs <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Game Procedures as Bridges from Potential to Actual”"> <span role="listitem" aria-label="&ldquo;reflections&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/09/mythic-bastionland-session-reflection/" aria-label="Previous post tagged with &ldquo;reflections&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;" title="Older post tagged with &ldquo;reflections&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/reflections/" class="p-category" aria-label="All posts tagged with &ldquo;reflections&rdquo;" title="All posts tagged with &ldquo;reflections&rdquo;">reflections</a> <small aria-hidden="true">&gt;</small> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;rpgs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/21/forged-from-the-worst-session-5/" aria-label="Previous post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged From the Worst: Session 5&rdquo;" title="Older post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged From the Worst: Session 5&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/rpgs/" class="p-category" aria-label="All posts tagged with &ldquo;rpgs&rdquo;" title="All posts tagged with &ldquo;rpgs&rdquo;">rpgs</a> <small aria-hidden="true">&gt;</small> </span></span> </p/><p><strong>Summary: </strong> Considering the great utility of procedures and tables as a means of developing the fictive world, passing from potential to actual. </p> <p>I’ve been playing a solo game of <cite><a href="https://www.drivethrurpg.com/en/product/514996/mythic-bastionland?affiliate_id=318171">Mythic Bastionland</a></cite> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Mythic Bastionland”" title="Other site-wide references of “Mythic Bastionland”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND">&#128214;</a></small> , tracking the story in my Forged from the Worst series. This morning <a href="https://gnomestones.substack.com/p/ep-4-gnomereign-mythic-bastionland">Ep 4: Mythic Bastionland Solo Campaign</a> rolled through my feed.</p> <p>And I noted they were using different procedures. Which lead me to <a href="https://gnomestones.substack.com/p/tension-tables-and-faction-development">Tension Tables and Faction Development in Mythic Bastionland</a>. Very interesting and I can see cribbing that encounter table procedure.</p> <p>In one of the comments, Jack Edward wrote:</p> <blockquote class="h-cite"> It&rsquo;s funny, I&rsquo;m always curious about how to work other kinds of play into Mythic Bastionland — particularly other themes and dimensions of play — just reworking the random encounter table to include more stuff is one of the most elegant ways I&rsquo;ve seen of doing it! </blockquote> <p>And this is something to poke at more. At the end of <a href="https://takeonrules.com/2025/12/20/forged-from-the-worst-session-5/">Forged From the Worst: Session 5</a>, Sir Beatrice learned of The Lich. I the referee and you the reader, had known that the Lich was likely going to enter into the fiction. Yet, as the player of Sir Beatrice, it was news to me.</p> <p>The fiction is what happens at the table: revealed random encounters, actions taken, words spoken, tests passed and failed etc. The potential is the random encounter tables, rumor tables, morale checks, reaction rolls, and backstory. And we use procedures, implicit and explicit, to transform potential into actual.</p> <p>In that moment between potential and actual, we gain glimpses. When a referee and player negotiate task, intent, and the consequences of success and failure, the game enters a liminal space. There is visibility into the potentiality of something that will not occur (the failure consequences when the test succeeds).</p> <p>Likewise, when a player has visibility into the random tables (and procedures for using them) they have access to more than what is…they know what can be.</p> <h2 id="swapping-procedures">Swapping Procedures</h2> <p>At a few sessions into <cite>Mythic Bastionland</cite> , I’m looking at the Gnomestones’s random event table. The table and procedures mean that their game will involve more consideration for weather and factions.</p> <p>I find the ability to swap out subsystems a compelling reason for these analogue games. And as these procedures are performed “by hand” there’s an incentive for them to be concise. Which helps in their portability.</p> <p>Don’t like that your players are always escalating to combat? Introduce the Reaction Roll? See that the players are always leaning into the Reaction Roll because of high charisma? Require that in order to gain the Charisma bonus the first action of the encounter must be Parlay; which might leave them ill-prepared for an attack.</p> <p>I think it is important that you shouldn’t significantly change procedures between sessions…unless an Age has passed. As in, if you are fast forwarding to a time in which world events would change, consider the swap out.</p> <p>Thinking of Mythic Bastionland, how might we start shifting towards the “Into the Odd” era (if we wanted to)? What procedures might change? How might I alter my random tables or procedures to move in that direction?</p> <p>Or how might I give more focus to the Factions? I’ve created the lever in the procedures for entering a Holding, and when the current Age ends, perhaps I’ll adjust the procedures to reflect the game I’m seeing or wishing to further explore.</p> <h2 id="building-forged-from-the-worst">Building Forged from the Worst</h2> <p>These days, I eschew writing back story, instead spending time having that emerge in play. I might seed situations, but most often that’s through random procedures.</p> <p>In <a href="https://takeonrules.com/series/forged-from-the-worst">Forged from the Worst</a> I did spend time rolling up relationships and conflicts, but only in service of seeding an Escalation Table for one of the relationships. And I’m doing that in a just in time manner.</p> <p>Below is the relationship graph. It’s one where I’ve thought a bit about each relationship, marveling at some of those random rolls and how they compounded on each other. But only the Escalation Table for the relationship between Prentise and Yelena carries any fictive reality; in that I’ve now once rolled on it.</p> <figure ><figcaption><p><a href="https://takeonrules.com/2025/12/20/forged-from-the-worst-session-5#just-in-time-locations-and-relationships">Relationship graph between Holdings and Rulers generated in Session 5 of Forged from the Worst</a>.</p> </figcaption> <img src="https://takeonrules.com/images/forged=from=the=worst--relationship-map_hu_f47c6573698a745a.png" alt="A relationship graph which was detailed in a prior post. For more information read the image caption to link to the text description of the relationships." data-original-url="https://takeonrules.com/images/forged=from=the=worst--relationship-map.png" width="770" height="951" data-width="770" data-height="951" /> </figure> <p>Further, in solo-play it seems absurd to spend much time on back story. If I’m doing that, I might as well write a novel.</p> <h2 id="conclusion">Conclusion</h2> <p>I first started playing Dungeons &amp; Dragons in Second Edition era. It was a time when backstory and story plot became vogue. Amongst my local gaming groups, and those that ran games, I remember derision towards random encounters — self-included. Yet now, I consider much of this required for the types of games I’ll enjoy running.</p> <p>First, when I’m running a game, I too want to experience surprise and wonder. With procedures generating random situations, I’m surprised first in the situation I present and then in the response of the players. Which I find far more enjoyable than presenting the next plot point then being surprised by the player responses.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Game%20Procedures%20as%20Bridges%20from%20Potential%20to%20Actual">Reply by Email</a></p> Take on Rules Forged From the Worst: Session 5 https://takeonrules.com/2025/12/21/forged-from-the-worst-session-5/ Sun, 21 Dec 2025 11:07:12 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/21/forged-from-the-worst-session-5/ rpgs sessions <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Forged From the Worst: Session 5”"> <span role="listitem" aria-label="&ldquo;rpgs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/19/forged-from-the-worst-session-4/" aria-label="Previous post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;" title="Older post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/rpgs/" class="p-category" aria-label="All posts tagged with &ldquo;rpgs&rdquo;" title="All posts tagged with &ldquo;rpgs&rdquo;">rpgs</a> <a href="https://takeonrules.com/2025/12/21/game-procedures-as-bridges-from-potential-to-actual/" aria-label="Next post tagged with &ldquo;rpgs&rdquo; is &ldquo;Game Procedures as Bridges from Potential to Actual&rdquo;" title="Newer post tagged with &ldquo;rpgs&rdquo; is &ldquo;Game Procedures as Bridges from Potential to Actual&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;sessions&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/19/forged-from-the-worst-session-4/" aria-label="Previous post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;" title="Older post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/sessions/" class="p-category" aria-label="All posts tagged with &ldquo;sessions&rdquo;" title="All posts tagged with &ldquo;sessions&rdquo;">sessions</a> <small aria-hidden="true">&gt;</small> </span></span> <span aria-hidden="true"> :: </span><span class="label">Series:</span> <a href="https://takeonrules.com/2025/12/19/forged-from-the-worst-session-4/" aria-label="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;" title="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;"><small> &lt; </small></a><cite><a href="https://takeonrules.com/series/forged-from-the-worst">Forged from the Worst</a></cite><small aria-hidden="true"> &gt; </small> </p/><p><strong>Summary: </strong> In which the Knights learn of a blood feud and yet another Myth plaguing the realm. </p> <p>Three horses, two with riders and the smaller other riderless. Both riders armed and armored. A bow shot away, they see the eastern gatehouse of Castle Steimfluss, its squat towers gleaming proud, gates open with portcullis raised, as though a mouth feed a feast of peddlers and vagabonds. The gate house protects the bridge that cross over the river to the fortress that rises from the island in the middle of the river.</p> <p>Beatrice thinks upon the trial of the morning. Her sense of purpose restored after Weydlyn’s victory over the Sergeants of the Judge. Then her surprise at finding her possessions restored and waiting outside the checkered courtyard. Her mace, radiant armor, polished mirror, and her horse.</p> <p>She grins thinking of Light’s Return, once name unknown, yet no longer; now tethered to her blue roan horse. She leans forward, scratching her horse’s neck and whispers to the horse, “Worry not, as forewarned, I shall not name you. Though I wonder, my friend, what power lurks within your name.”</p> <p>Before being within bow shot, they both dismount and lead their horses forward, while battered and bruised and carrying news, they are not harbingers riding in on the wings of haste.</p> <p>A guard in front of the gates takes note of the two heavily armed knights approaching, quickly raises then lowers his head just a bit then waits for the knights to draw within a suitable speaking distance.</p> <p>Beatrice looks to Weydlynd, and says, “Introduce yourself first, keep it short, and I’ll do the remainder of the talking. Lord Prentise will remember me and should help us gain a more immediate audience with him.”</p> <p>Weydlyn grunts as the guard draws close enough to speak without shouting, “In the name of Lord Prentise, please state your business.”</p> <p>“I am Sir Weydlynd, the Reforger of Knighthood,” he says as he catches the gaze of the guard then points his head toward Sir Beatrice.</p> <p>“And I am Sir Beatrice, I have once before helped Lord Prentise; though I hope I may do more. And we wish to speak to Lord Prentise on matters regarding the Realm. Of the devil’s court of Amrageft.”</p> <p>The guard tilts his head, as though puzzling something out, almost speaks, pauses, then says, “As you insist Sir Beatrice and Sir Weydlynd, I shall ensure that you are announced. May you find the Lord’s hospitality most welcoming.”</p> <h2 id="checking-game-state">Checking Game State</h2> <p>I have deferred on building out relationships between the different holdings. But now that they’ve arrived, I need to do some work.</p> <p>I also review the rule book to see what the Sir Prentise might know of the Judge.</p> <blockquote class="h-cite"> <strong>Vassals</strong> know about the nearest Myth, and its general direction. If it is adjacent to their home, then they know its precise location. They know Landmarks in their home and neighbouring Hexes. <footer>&mdash;<cite>Mythic Bastionland</cite> page 19 </footer> </blockquote> <p>Using my mythic-bastionland.el package and “hidden” map, I invoke <code>M-x mythic-bastionland-nearest-myth</code>, punch in <code>5,3</code> (the coordinates of Castle Steimfluss) and get back “The Judge”. I then invoke <code>M-x mythic-bastionland-direction</code> to find that “The Judge” is to the Northeast of the Castle.</p> <p>Unfortunately, I when checking direction I chose the wrong one. And gained very useful information about the actual hex: “The Judge” was north of <code>7,3</code>. Which the player should not know. So I’m going to rebuild the map based on what must be true.</p> <p>Also, I’m going to need a command to reveal the direction of adjacent landmarks to a holding (maybe a Hex, but we’ll work first from a Holding). Which after a bit of work, I’ve included.</p> <h2 id="just-in-time-locations-and-relationships">Just in Time Locations and Relationships</h2> <p>Moving into a Holding, I wanted to attend to the relationship of holdings and their rulers. I read through <a href="https://www.bastionland.com/2023/11/sparking-conflict.html">BASTIONLAND: Sparking Conflict</a> and rolled up the relationships and conflicts.</p> <h3 id="locations-and-their-leaders">Locations and Their Leaders</h3> <ul> <li><strong>Steimfluss (seat of power, castle):</strong> Lord Prentise (Rat Knight)</li> <li><strong>Skanya (town):</strong> Yuri the Beautiful (cult leader)</li> <li><strong>Twierdska (fortress):</strong> Tove the Elder (Tome Knight)</li> <li><strong>Vukturm (tower):</strong> Yelena (gambler)</li> </ul> <h3 id="locations-and-their-woesdramas">Locations and Their Woes/Dramas</h3> <ul> <li><strong>Skanya:</strong> Drama (ambition/disguise)</li> <li><strong>Steimfluss:</strong> Drama (greed/oath)</li> <li><strong>Twierdska:</strong> Woe (escalating/theft)</li> <li><strong>Vukturm:</strong> Drama (rivalry/oath)</li> </ul> <h3 id="conflicts-between-locations">Conflicts Between Locations</h3> <ul> <li><strong>Skanya / Steimfluss:</strong> Waterway negotiations</li> <li><strong>Skanya / Twierdska:</strong> Conquest standoff</li> <li><strong>Skanya / Vukturm:</strong> Betrayal animosity</li> <li><strong>Steimfluss / Twierdska:</strong> Waterway war</li> <li><strong>Steimfluss / Vukturm:</strong> Bloodfeud truce</li> <li><strong>Twierdska / Vukturm:</strong> Marriage standoff</li> </ul> <h3 id="relationships-between-leaders">Relationships Between Leaders</h3> <ul> <li><strong>Prentise / Tove:</strong> Estranged Mentor</li> <li><strong>Prentise / Yelena:</strong> Intimate Enemy</li> <li><strong>Tove / Yelena:</strong> Resentful Successor</li> <li><strong>Yuri / Prentise:</strong> Tumultuous Rival</li> <li><strong>Yuri / Tove:</strong> Reluctant Lover</li> <li><strong>Yuri / Yelena:</strong> Resentful Guardian</li> </ul> <h2 id="conflict-escalation-procedure">Conflict Escalation Procedure</h2> <p>Reading <a href="https://www.bastionland.com/2025/09/holding-threads.html">Holding Threads</a> I’m thinking about how to consider the relationship between leaders, conflicts between locations, and the present woes or dramas unfolding at a location.</p> <p>I’m thinking that the relationships color the conflict; but are not things that necessarily resolve. Maybe an End of Year procedure to see how these relations change?</p> <div class="table-wrapper"> <table id="table-271" class="" aria-labelledby="caption-271"><caption id="caption-271">Table 271: Conflict Escalation Roll </caption> <thead> <tr> <th scope="col">d6</th> <th scope="col">Result</th> </tr> </thead> <tbody> <tr> <th scope="row">1</th> <td>News arrives of the next Escalation of a Conflict between two other holdings.</td> </tr> <tr> <th scope="row">2–3</th> <td>Reveal the next Escalation of a Conflict between the current holding and another.</th> </tr> <tr> <th scope="row">4–6</th> <td>Conflicts continue to simmer without Escalation.</td> </tr> </tbody> </table></div> <p>In <a href="https://www.bastionland.com/2025/09/holding-threads.html">Holding Threads</a>, Chris checks each morning phase while in the city. I feel that is too frequent. I’m going to go with three things:</p> <ul> <li>When you start a session in a Holding make a Conflict Escalation Roll.</li> <li>When you first enter a Holding make a Conflict Escalation roll.</li> </ul> <p>I also must consider if these pre-rolled things “exist” regardless of revelation or only exist at the time of encountering them. I’m going to assume they don’t exist.</p> <p>I’m contemplating having the Drama and Woe of the current holding enter into the fray of Escalation. For now, that’s what I’ll try.</p> <h2 id="back-to-the-narrative">Back to the Narrative</h2> <section class="inline-comments"> <p><small> Let’s check the Conflict Escalation: I get a 3. And Escalate the Conflict—Bloodfeud Truce—between Steimfluss and Vukturm. </small></p> <p><small> I quickly write up the following: </small></p> <ol class="org-ol"> <li><small>Kinsfolk of both feuding sides meet, any weapons ceremonially tied.</small></li> <li><small>Cursing of one or the other families can be heard throughout the streets and taverns. There are some who don’t think the others are quite so bad.</small></li> <li><small>Kinsfolk recently arrived to plead case, are chased out of town. Only a few rotten vegetables are thrown.</small></li> <li><small>Catchy songs and poems mocking and deriding the others are heard whistled, hummed and whispered.</small></li> <li><small>Allies are sought as reprisals are planned.</small></li> <li><small>Now is the time of reprisals.</small></li> </ol> </section> <h2 id="of-sir-weydlyns-days">Of Sir Weydlyn’s Days</h2> <p>During the first day Sir Weydlyn notices several <em>fancy</em> dressed people, wearing similar attire to those that were harassing Tompot. He asks a few folks and they say that they are pledged to Yelena, 2nd cousin of Lord Prentise.</p> <p>Weydlyn learns of the bad blood between these two. And while a tentative peace holds, Weydlyn scratches the scar on his jaw and thinks how he would be quick to spill that <em>fancy</em> blood.</p> <p>After a few days of rest, recovery, and hospitality, Sir Weydlyn’s wounds are nicely healed and he feels ready to present his case to Lord Prentise regarding Tompot. But he first stops to see how he might secure a helm for himself.</p> <section class="inline-comments"> <p><small> For Sir Weydlyn, I wonder what does the armor smith desire of Sir Weydlyn. I roll on the Sparks and get Knowledge and Curiosity. I think the smith wishes to know about Weydlyn’s bolt-guisarme and how to make it and would exchange knowledge for a fine coif. Weydlyn agrees to share, again a Clarity test with a consequence of failure being that this will take considerable time. </small></p> <p><small> And Weydlyn fails, he’s not very good at explaining. I tag the Woe of the Castle. Greed and Oath are in play. </small></p> </section> <p>A few days into Weydlyn’s work in the forge, agitation throbbing, the din of the forge piercing and pounding his aching skull, he hits his limit. A page’s arrival brought his rage to a boil. Lord Prentise was now demanding his presence, and the idiot armoursmith was still no closer to working out the nuances of the bolt-guisarme.</p> <p>Fed up, he looks at the blistered man, and barks, “I have tried these last few days to teach you, but you are an anvil, nothing getting through that thick skull of yours.”</p> <p>Weydlyn continues with a litany of curses and excoriations that he often heard directed at him during his apprenticeship.</p> <p>The armour smith’s face grows even redder, but knows better than to challenge a knight of the realm.</p> <p>“I’ll be taking that coif as I have spent more time in this forge than I’d ever need to work one of those from steel.”</p> <p>The smith scowls, biting his tongue, tasting the copper of drawn blood. “Ay sir.”</p> <h2 id="of-sir-beatrices-days">Of Sir Beatrice’s Days</h2> <p>Sir Beatrice, in the meantime, spends her time amongst the squires, looking to whom she might recruit. Neither Weydlyn nor Beatrice are certain if their paths will continue after they present to themselves to Lord Prentise.</p> <section class="inline-comments"> <p><small>I call for a Clarity test for Sir Beatrice. She succeeds and makes note of the quality of squires and prepares her request of Lord Prentise.</small></p> </section> <p>While watching and offering guidance to the exuberant and receptive youth, she finds herself thinking of whether she wishes to cast her lot with Sir Weydlyn. She saw him rise to greatness, and fight to the brink in order to restore her knighthood.</p> <p>She knew his deed was one motivated by fear of his mortality and losing his one identity, knowing that without the mantle of Knighthood, he’d return to the forge (and source of scars both seen and unseen) or he’d fall into brigandry.</p> <p>Weydlyn took his Oaths seriously, but behind it was fear. Something most dangerous. She wondered how long she could withstand the blasts of hot anger pouring from mouth and eyes. Could she bring calming light to him?</p> <p>A few days after their arrival, Sir Beatrice requested an audience with Lord Prentise; she did not include Sir Weydlyn. She spent the evening before polishing mirror and armor. Though she would leave armor and weapon behind, she knew that her mirror was always welcome.</p> <h2 id="an-audience-with-lord-prentise">An Audience with Lord Prentise</h2> <p>“Presenting Sir Beatrice, the Violet Knight, Retriever of the Vassal Rod,” proclaims a herald as the doors open to the throne room. Upon a dias sits Lord Prentise, lounging in his blackened leather armor. His mouth holding that puckered look, as though sniffing something.</p> <p>Sir Beatrice takes not of the numerous rat holes throughout this room, she shudders just a bit, seeing a tail dart into the darkness.</p> <p>“Good Sir Beatrice, since last we spoke, I had received a decree from a most unwelcome courier, that you had been stripped of your knighthood. Yet, when I heard your arrival and had my steward read that letter again, it was nothing more than a naughty limerick not worth repeating,” said the man smiling, at first looking Beatrice up and down, then looking away in some perhaps private shame.</p> <p>“I have Sir Weydlyn to thank for my restoration. I wish, that we might exchange news so that we might both make better of our Knightly Oaths.”</p> <p>Beatrice shares the events of the Judge. Lord Prentise shares of the cursed Silence to the south and the Minstrel’s Nook dwelling to the north. Lord Prentise shares that the Lich is closer and to the West.</p> <p class="verse"> From fable’s heart springs fable’s fear, a past within a past<br /> From time before our nightmares still, made flesh by sullen mass.<br /> </p> <h2 id="conclusion">Conclusion</h2> <p>This session was me working through Holding’s procedures and random tables as well as implementing functions for my mapping. I spent a bit of the morning working on <a href="https://git.sr.ht/~jeremyf/mythic-bastionland.el">my Mythic Bastionland Emacs package</a>. To answer questions around neighboring landmarks. Also to output the map.</p> <p>My goal is to express game state in the data structure I use to generate a map. That way, as new information arises, I can use that to track the information and even regenerate the map if I so choose.</p> <p>Regarding the fiction, I felt that this was a session in which I (as the referee) needed to shift from the Wilderness mindset to a Holdings mindset. Which meant reconciling various posts I’ve read and creating corresponding procedures.</p> <p>As a player, I’m uncertain if I want to continue with both of the knights. I thought I’d explore writing from Sir Beatrice’s perspective to see how that feels.</p> <p>I also chose to step out of the narrative and exchange information. I’ll review the Lich and bring that into the narrative in future sessions.</p> <p>Until next time.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Forged%20From%20the%20Worst%3a%20Session%205">Reply by Email</a></p> Take on Rules Forged from the Worst: Session 4 https://takeonrules.com/2025/12/19/forged-from-the-worst-session-4/ Fri, 19 Dec 2025 06:44:43 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/19/forged-from-the-worst-session-4/ rpgs sessions <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Forged from the Worst: Session 4”"> <span role="listitem" aria-label="&ldquo;rpgs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/16/mythic-bastionland-map-play-aid-emacs-package/" aria-label="Previous post tagged with &ldquo;rpgs&rdquo; is &ldquo;Mythic Bastionland Map Play Aid Emacs Package&rdquo;" title="Older post tagged with &ldquo;rpgs&rdquo; is &ldquo;Mythic Bastionland Map Play Aid Emacs Package&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/rpgs/" class="p-category" aria-label="All posts tagged with &ldquo;rpgs&rdquo;" title="All posts tagged with &ldquo;rpgs&rdquo;">rpgs</a> <a href="https://takeonrules.com/2025/12/21/forged-from-the-worst-session-5/" aria-label="Next post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged From the Worst: Session 5&rdquo;" title="Newer post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged From the Worst: Session 5&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;sessions&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/16/forged-from-the-worst-session-3/" aria-label="Previous post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;" title="Older post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/sessions/" class="p-category" aria-label="All posts tagged with &ldquo;sessions&rdquo;" title="All posts tagged with &ldquo;sessions&rdquo;">sessions</a> <a href="https://takeonrules.com/2025/12/21/forged-from-the-worst-session-5/" aria-label="Next post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged From the Worst: Session 5&rdquo;" title="Newer post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged From the Worst: Session 5&rdquo;"><small>&gt;</small></a> </span></span> <span aria-hidden="true"> :: </span><span class="label">Series:</span> <a href="https://takeonrules.com/2025/12/16/forged-from-the-worst-session-3/" aria-label="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;" title="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;"><small> &lt; </small></a><cite><a href="https://takeonrules.com/series/forged-from-the-worst">Forged from the Worst</a></cite><a href="https://takeonrules.com/2025/12/21/forged-from-the-worst-session-5/" aria-label="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged From the Worst: Session 5&rdquo;" title="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged From the Worst: Session 5&rdquo;"><small> &gt; </small></a> </p/><p><strong>Summary: </strong> In which Sir Weydlyn confronts his fear and makes a solemn promise to Beatrice. </p> <p>Sir Weydlyn and Beatrice spend an uneventful and rather quiet evening camping. Sir Weydlyn tending and staring into the fire, and Beatrice brushing Light’s Return. Several paces outside the fire ring, a placid skunk quietly watches, wondering if it too might appreciate a brushing from the woman.</p> <p>In the morning, they dowse the coals, forage a simple meal and begin their journey. The two riders cross the dry hills making for the <em>barren</em> river valley, choked by slate and slag.</p> <h1 id="ever-working-through-procedures">Ever Working Through Procedures</h1> <p>I check and there is no barrier between <code>7,2</code> and <code>6,3</code>.</p> <p>And I realize I’m uncertain about what to do if there’s a Myth on the Hex.</p> <blockquote class="h-cite"> Ending a phase in the Hex containing a Myth always reveals its next Omen without making a Wilderness Roll. When possible the Knights also get the drop on the Omen. <footer>&mdash;<cite>Mythic Bastionland</cite> page 18 </footer> </blockquote> <p>So the for Trek procedure (e.g. moving 1 Hex) is:</p> <ul> <li>Check for barrier</li> <li>When none <ul> <li>Cross and check for myth <ul> <li>When present encounter next Oment of the Myth</li> <li>When none make Wilderness Roll</li> </ul> </li> </ul> </li> </ul> <p>Gallop has a different procedure.</p> <p>Thus far, I have only performed Trek. I take a bit of time and add a travel function to the Mythic Bastionland package. As of <time datetime="2025-12-16">&lt;2025-12-16 Tue&gt;</time> it only handles Treks.</p> <p>I consult the function and get:</p> <blockquote class="h-cite"> Trekking from (7 . 4) to (6 . 6). You move to (6 . 6), and reveal the next Omen for The Judge (the nearest Myth). </blockquote> <p>(Note: the output uses double-height coordinates)</p> <p>Which leads me to writing a function to help me track omens revealed. But I digress with this lengthy tangent.</p> <h1 id="a-courtyard-of-judgment">A Courtyard of Judgment</h1> <p>They follow the bluff along the eastern bank of the river, the morning sun dancing upon the wide cobalt colored river. The slate and slag spreading along the eastern horizon. Here and there they note a herons, some blue, others green, standing in the shallows. Their attention to the hunt.</p> <p>As they follow the bow there amidst large menhirs and dead ash trees they see a courtyard in black and white, carved seats in a circle.</p> <p>Beatrice halts Light’s Return and soothes her to maintain a silence. Sir Weydlyn, takes note, and himself halts, though not as concerned with maintaining silence.</p> <p>“The court,” says Beatrice in a nerve-pinched whisper.</p> <p>“The court?”</p> <p>“Yes, I recognize this, it is a court of Amrageft,” whispers Beatrice.</p> <p>“Is Amrageft there?”</p> <p>“I can’t tell.”</p> <p>“Then go and check.”</p> <p>“What?” asks Beatrice.</p> <p>“Go and check. If this is the court of Amrageft, she’s already passed judgment on you once, so there’s nothing more to fear,” says Sir Weydlyn, eyeing the circle, still considering that Beatrice might herself be untrue.</p> <p>“Me? Why you villain. Your Oath is to Seek the Myths…and one is right before you, yet you cower behind me,” replies Beatrice.</p> <p>As they converse, they hear vague voices echoing and arguing from the courtyard.</p> <p>“You say it is a Myth,” says Weydlyn, his voice rising as a vein on his temple throbs and his face reddens, “yet the truth of your story hangs in the balance. Perhaps nothing but devils breath.”</p> <p>Beatrice’s nostrils flare, her eyes widen, as she walks Light’s Return up beside Ingot. Through halting breaths she says, “You coward. You would send me forth as sacrifice to maintain your knighthood.”</p> <p>Sir Weydlyn raises his gauntlet, Beatrice flinches. Weydlyn pauses, noting the passion and bravery in Beatrice’s words. Slowly he lowers his fist. Then lowers his head.</p> <p>“I see,” says Beatrice, as she grabs the bundle of javelins, and makes for the courtyard, passing between two large stones and onto the white and black flagstones.</p> <h1 id="to-face-ones-judgment">To Face Ones Judgment</h1> <p>In a firm resounding voice, Beatrice proclaims, “I come seeking the writ of judgment against Sir Beatrice, the Violet Knight.”</p> <p>As Sir Weydlyn with head bowed deep, raises to look between the stones, the echoing voices stop. And one voice, now loud, barking and bitter, says in baritone “What of this claim, oh wretched Beatrice?”</p> <p>“I seek this writ so I may prove true a warning to those who heed not the laws of Ambrageft,” commands Beatrice, “I demand that you, Muntin, produce this writ.”</p> <p>From between the stones Sir Weydlyn sees Beatrice now talking with a tall man wearing a checkered longcoat, holding a grim polehook.</p> <p>“Muntin,” mutters Sir Weydlyn, as he watches on seeing the tall man pull a singular scroll from his longcoat, and unfurl it.</p> <p>“Be it known throughout the land, I Ambrageft of Diamond Eye, do find guilty Sir Beatrice for the crime of under-sharpening their knightly weapons. And for which she shall be stripped of her knighthood,” reads the barking bitter man.</p> <p>As Muntin reads the scroll, Sir Weydlyn walks Ingot towards the courtyard, passing the two large stones. Beatrice’s gaze turns to Weydlyn, and he averts his eyes and lowering his head a bit, then looking to Muntin.</p> <p>Muntin noting Sir Weydlyn’s approach, commands him to halt and name himself.</p> <p>“I am Sir Weydlyn, knight of the Realm. The verdict of Ambrageft is capricious. Surely you Muntin, can see that,” says Weydlyn as he draws Ingot to a halt.</p> <p>“It is not for me to see nor say, as I am now bound in service as Sergeant of the Law,” replies Muntin as he grips his polehook and looks up to mounted Weydlyn.</p> <p>“Those Laws of your Mistress are false.”</p> <p>“Knight,” growls Muntin, “do you challenge these laws?”</p> <p>Weydlyn glancing to Beatrice then back to Muntin responds, “I know not all of your laws but I do challenge the judgment against Sir Beatrice.”</p> <p>“Sir Beatrice is no more,” hisses Muntin coiling tighter, readying to spring or strike.</p> <p>“Then I challenge you to Trial by Combat, to prove the verdict unjust and vacate the sentence,” howls Weydlyn.</p> <section class="inline-comments"> <p><small>I wonder, does Muntin have the authority to receive such a challenge? Probably not. I <i class="dfn">Ask the Stars</i> and get a “Yes but…”</small></p> </section> <p>Muntin chuckles, “Oh Sir Weydlyn, I alone have not the authority to vacate Ambrageft’s judgment.”</p> <p>“Foul devil,” replies Weydlyn, “then if not you alone, whom else?”</p> <section class="inline-comments"> <p><small>I’m torn, will Muntin share the levers that might move the gears of Justice? How Kafka-esque is this Judge’s court? There’s already the absurd failure to sharpen an mace. So I’m thinking absurd. I again <i class="dfn">Ask the Stars</i>, will Muntin share the lever in which he moves? The answer seems unlikely, and the stars agree.</small></p> </section> <p>Muntin begins to speak, and his mouth quickly clamps shut, nearly biting through his tongue. He looks at Weydlyn, as though now a dog caught doing something that warrants a scolding, eyes begging for mercy and forgiveness.</p> <p>“Speak,” commands Weydlyn. Muntin’s face shifts, shedding guilt, and instead looking up at Weydlyn with bitter eyes.li</p> <p>“Very well, I challenge those with whom you together have authority to vacate Ambrageft’s judgment,” says Weydlyn.</p> <p>Muntin nods, and responds, “So be it.”</p> <section class="inline-comments"> <p><small>I <i class="dfn">Ask the Stars</i> is it the three Sergeants of Law that together must be challenged? The answer seems likely. And the stars agree.</small></p> </section> <p>Reaching into his checkerboard longcoat, he pulls forth a small trumpet, and drawing to his mouth, blows a short blast, “I summon Lyo and Tonnel, my fellow Sergeants of Law.”</p> <p>All the while, Beatrice watches the exchange, her eyes lighting for a moment as hope swells that she might find herself restored. With hope rising, she casts her gaze to Sir Weydlyn, his fear forgotten and the quickening fires of passion drawing him to a challenge unknown.</p> <section class="inline-comments"> <p><small>Do the two Sergeant’s manifest almost immediately? I <i class="dfn">Ask the Stars</i> with the answer likely. The stars reply: Yes but…</small></p> </section> <p>Mist gathers and swirls near Muntin. Both Beatrice and Weydlyn back their horses away. The swirling mist expands and dissipates, leaving two similarly clad men standing.</p> <p>Each shakes his head, then looks to Muntin, who speaks, “I must confer with my fellow Sergeants of Law, but know this, tomorrow at day break, we shall receive your challenge and join in Trial by Combat. For now, you have leave to rest. Know that nothing shall disturb this day nor night. Amidst the stones, you’ll find a small cottage where you might rest and prepare for the trial.”</p> <h1 id="respite-before-the-trial">Respite before the Trial</h1> <p>Is there access to Sustenance before the trial? I <em>Ask the Stars</em> with the answer being unlikely. The Stars respond: Yes but…to eat the food is to accept future Judgment. Now does Sir Weydlyn recognize this? Or does Beatrice know this? Let’s make a Clarity check, and use the better of the two: Beatrice by many times over. She does not recognize this fact.</p> <p>Sir Weydlyn eats the meal provided, restoring his Vigor. Weydlyn’s stubborn and refuses to apologize for doubting Beatrice’s story. Beatrice thanks him for fighting to restore her knighthood. Weydlyn deflects, claiming he is doing this to Seek the Myths and Protect the Realm; which restoring a Knight will certainly help on both accounts.</p> <p>Weydlyn makes a solemn <em>Promise</em> to Beatrice, that he shall restore her knighthood.</p> <h1 id="the-trial">The Trial</h1> <section class="inline-comments"> <p><small> Is this a Trial to the Death? Yes but…well we’ll let that one hang for a bit. </small></p> <p><small> And the combat must remain within the chess board. </small></p> </section> <p>The humid morning air, hangs upon the four combatants. Even before the trial, sweat beads on their brow. The day beginning unseasonably hot for early spring. As though the furnace forge had drawn close to bear witness to this day.</p> <p>Weydlyn, white beneath, begins on the white queen’s square. Muntin on the other side, stand not on the first row, but the second. Muntin, center on white, Tonnel and Lyo each flanking on black. As though pawns standing guard of some yet to arrive queen.</p> <p>Amongst the seats in the stones, Beatrice watches. Hope giving way to nerves. She knows the prowess granted by the sacred sworn oaths, and prays to the stars now vanished that Sir Weydlyn’s oath carries him through.</p> <section class="inline-comments"> <p><small> Lyo, Tonnel, and Muntin have the same stats: Vigor 12, Clarity 14, Spirit 14, Guard 6, Armor 1, polehook (d10 long) </small></p> <p><small> They stand close, forming a shield-wall. </small></p> </section> <p>Sir Weydlyn winces as a horn blasts and echoes throughout stone and courtyard. Lyo says, “We have begun.” Patient, the sargeants wait, polehooks lowered ready to hold off the legendary assault of Knight of the Realm.</p> <p>Sir Weydlyn looks to Beatrice, smiles, reaches to his belt and hurls his dagger at Muntin.</p> <section class="inline-comments"> <p><small> I invoke a <i class="dfn">Smite</i> to add a d12 to the roll, getting a 10 and 5. There’s a few options: do 6 damage and inflict a scare or 10 damage and perform a Gambit; which grants a Save. Reviewing the scars, these aren’t likely to sway the combat. So Gambit it is. I choose to attempt to <i class="dfn">Stop</i> Muntin from moving. But he Saves, so may move. Since wounded, I also check if he routs, but does not. Weydlyn passes his Vigor save and is not fatigued. </small></p> <dl class="org-dl"> <dt><small>Muntin</small></dt><dd><small>Vigor 9, Guard 0.</small></dd> </dl> </section> <p>The Sergeants bark, “Come face justice.” And begin a slow advance; not wishing to surrender the advantages of their shield wall.</p> <p>Sir Weydlyn surveying the board, sees nothing more to throw. He grins and hurls his bolt-guisarme at Lyo, who’s face registers this unconventional action.</p> <section class="inline-comments"> <p><small>Again Weydlyn <i class="dfn">Smites</i> and rolls a 1 and a 12. The polearm dives deep into Lyo’s shoulder, he crumples reduced to Vigor 7. His morale holds. I roll Weydlyn’s Vigor save and get a 20. A failure. Weydlyn is now <i class="dfn">Fatigued.</i> I really had hoped for a Gambit or to make the save. Things are going to get dire.</small></p> </section> <p>With Weydlyn presently unarmed, the three charge.</p> <section class="inline-comments"> <p><small>For them, I roll a 10, 9, 7. It makes sense to inflict 8 damage and <i class="dfn">Stop</i> Weydlyn from moving. This reduces his Guard from 6 to 0, and his armor soaks the remaining points. He is also <i class="dfn">Stopped</i>.</small></p> </section> <p>Weydlyn tries to lunges at Lyo, with his heavy mail gauntlet. I roll a 4. Lyo’s Vigor drops to 4 (with that armor 1 preventing the mortal wound).</p> <p>The three Seargants roll 5,4,2 on their counter attack. Sir Weydlyn’s Vigor drops from 16 to 12. And he presses back, his gauntlet burning with the forge fires. I roll a 5 and 3. He punches Lyo, dropping inflicting a Mortal Wound and dropping him.</p> <p>Muntin and Tonnel, return a strike: 6 and 3. Weylynd drops from 12 to 8 Vigor. Circumstances are beyond dire.</p> <p>The gauntlet, hot with Weydlyn’s rage pounds into Muntin. Inflicting, I roll an 8,6,2. Dropping Muntin’s Vigor from 9 to 4. He falls, face smashed and bleeding.</p> <p>Tonnel’s resolve breaks (failing his Spirit save by 1). And backs off. With fury, Weydlyn charges up within Tonnel’s reach. Punching with a now blazing gauntlet. I roll 7,4,1,1. And opt for 7 damage and attempt to press the impairment; which fails. Reducing Tonnel’s guard to 0 and inflicting a Scar; smatching Tonnel’s mouth. He loses 6 Vigor, dropping from 14 to 8.</p> <p>Tonnel steps back, and pokes at Weydlyn. There’s a 50/50 chance this is all over. I roll a 5. Weydlyn’s armor soaks 2, leaving his Vigor at 5. Weydlyn dives in with his gauntlet singing a song of the forge. I roll 7,8,5,2. Weydlyn’s fist catches Tonnel square in the skull, bone and blood splatter.</p> <p>Exhausted, bloody, and battered, Weydlyn limps to retrieve his bolt-quisarme. A glowing violet nimbus surrounds Beatrice as she rushes to help Weydlyn.</p> <p>“Sir Weydlyn, you have fought with a fury unmatched. And restored me to knighthood. For that, I thank you.”</p> <p>“Yes, yes,” replies Weydyln between wincing breaths.</p> <h1 id="reflections">Reflections</h1> <p>Well that was a brutal and close fight. But let’s move back a bit.</p> <p>I’m working through Sir Weylynd’s fears. Playing his low Spirit and Clarity with a bit of cowardice, low emotional intelligence, and manipulation. And Beatrice rising to face her judgment.</p> <p>I let the oracles guide me, moving through the in play discovery of Weydlyn’s brashness, the arbitrary nature of the Judge, and how a Trial by Combat might reverse the sentence.</p> <p>And before I started the Trial by Combat, I reviewed the combat section. And saw that the spearwall was a strong defense against a the charge of a Knight. Knowing that in older style games, breaking morale is often the stronger strategy.</p> <p>Which is why I had Weydlyn risk much by hurling his two weapons. It was a risk. And the dice were fickle; lots of damage, no <em>Gambit</em>, and becoming <em>Fatigued</em>. Had Weylynd been able to perform a <em>Gambit</em>, my plan was for him to quickly move and retrieve his spear. And had he not become <em>Fatigued</em>, well he could’ve weathered more of the storm.</p> <p>But all of those early inflicted wounds set the stage for a pitched battle that Weydlynd narrowly survived, due very much to the power of Tempering Strike: “when you cause a Wound with a melee weapon, that weapon receives +d8 until the end of combat. This effect can stack.”</p> <p>I made the call that wearing scale armor meant heavy gauntlets, which I consider a melee weapon.</p> <p>I keep thinking that the Combat moves quickly with ample points for decisions and risk taking. And the fictional state changes quickly.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Forged%20from%20the%20Worst%3a%20Session%204">Reply by Email</a></p> Take on Rules Mythic Bastionland Map Play Aid Emacs Package https://takeonrules.com/2025/12/16/mythic-bastionland-map-play-aid-emacs-package/ Tue, 16 Dec 2025 20:11:00 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/16/mythic-bastionland-map-play-aid-emacs-package/ emacs rpgs <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Mythic Bastionland Map Play Aid Emacs Package”"> <span role="listitem" aria-label="&ldquo;emacs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/10/extending-core-emacs-bookmark-package/" aria-label="Previous post tagged with &ldquo;emacs&rdquo; is &ldquo;Extending Core Emacs Bookmark Package&rdquo;" title="Older post tagged with &ldquo;emacs&rdquo; is &ldquo;Extending Core Emacs Bookmark Package&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/emacs/" class="p-category" aria-label="All posts tagged with &ldquo;emacs&rdquo;" title="All posts tagged with &ldquo;emacs&rdquo;">emacs</a> <a href="https://takeonrules.com/2025/12/23/serializing-somewhat-large-emacs-alists/" aria-label="Next post tagged with &ldquo;emacs&rdquo; is &ldquo;Serializing Somewhat Large Emacs Alists&rdquo;" title="Newer post tagged with &ldquo;emacs&rdquo; is &ldquo;Serializing Somewhat Large Emacs Alists&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;rpgs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/16/forged-from-the-worst-session-3/" aria-label="Previous post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;" title="Older post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/rpgs/" class="p-category" aria-label="All posts tagged with &ldquo;rpgs&rdquo;" title="All posts tagged with &ldquo;rpgs&rdquo;">rpgs</a> <a href="https://takeonrules.com/2025/12/19/forged-from-the-worst-session-4/" aria-label="Next post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;" title="Newer post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> Generating the canonical game map while encapsulating its state and revealing information through functions that interrogate the map. That is, I the player can ask Emacs to answer questions about the campaign map that a referee would know. </p> <p>In the Forge from the Worst series, I’ve been writing about my solo play in <cite><a href="https://www.drivethrurpg.com/en/product/514996/mythic-bastionland?affiliate_id=318171">Mythic Bastionland</a></cite> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Mythic Bastionland”" title="Other site-wide references of “Mythic Bastionland”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND">&#128214;</a></small> . I had went into the game hoping to engage the map without referee knowledge of the map; no insight into where all the features are, but instead allowing the procedures of the game to reveal the locations of various features.</p> <p>Midway through my 3rd session, I found myself needing to reveal information of the map that was going to be more challenging to derive. I chose that moment—a just in time moment—to set about loading the map into <span><a href="https://en.wikipedia.org/wiki/Emacs">Emacs</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Emacs”" title="Other site-wide references of “Emacs”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-EMACS">&#128214;</a></small> and then write commands to interrogate the map.</p> <p>I reviewed the questions I had already asked of the map, and wrote them down:</p> <ul> <li>What is the direction to a named Myth?</li> <li>What is the nearest Myth?</li> <li>What is a random Myth that is not the nearest?</li> <li>Is there a barrier when moving between these two hexes?</li> <li>Is there a Myth on this Hex?</li> <li>What is feature is there on this hex?</li> </ul> <p>I suspect I may also need to ask: “What is the direction to the nearest Myth?”</p> <p>I wasn’t going to type up the map and store it, but instead randomly generate the map. Also, I wanted to make sure that I could generate a map that would conform to the player-discovered information from the sessions thus far session.</p> <h2 id="initial-research">Initial Research</h2> <p>Given that I was going to be working out distances, I read through the amazing and helpful <a href="https://www.redblobgames.com/grids/hexagons/">Hexagonal Grids</a>.</p> <p>I needed to settle on an appropriate coordinates systems. With some reading, I chose to adopt the <a href="https://www.redblobgames.com/grids/hexagons/">double-height coordinates</a>. Which was not the notation I had already written down in blog posts, but would be easy to map.</p> <h2 id="initial-work">Initial Work</h2> <p>I knew that once I created a map that conformed to Sir Weydlyn’s observations, I wouldn’t want to dig into the data nor debug functions using that map. So, my approach was to work from a disposable map and test the functions.</p> <p>I used the <span><a href="https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop">Read-eval-print loop</a></span> (<abbr title="Read-eval-print loop">REPL</abbr> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Read-eval-print loop”" title="Other site-wide references of “Read-eval-print loop”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-REPL">&#128214;</a></small>) to test these functions. One emergent foible is that I kept using the single-height coordinates; introducing a translating function for internal work. As of <time datetime="2025-12-15" title="2025-12-15">today</time> this foible persists. And creates a bit more chatter, which we’ll see in a bit.</p> <h2 id="encoding-the-known-world">Encoding the Known World</h2> <p>Once I had a solid set of functions that could answer questions, I set about encoding the Known World. Let’s walk through this.</p> <p>First we have this <code>mbc</code> function. It converts single-height coordinates to double-height such that <code>(mbc 8 1)</code> will be <code>(8 . 2)</code> and <code>(mbc 7 1)</code> will be <code>(7 . 3)</code>.</p> <pre><code class="language-emacs-lisp">(defalias 'mbc 'mythic-bastionland--random-coord) </code></pre> <p>Next let’s read over the code and comments. I’ll meet you after the code block.</p> <pre><code class="language-emacs-lisp">(defalias 'mbc 'mythic-bastionland--random-coord) (mythic-bastion-land-map-write (mythic-bastionland-map-generate `((constraints . ((nearest . ((label . &quot;The Mountain&quot;) (feature . myths) (coord . ,(mbc 9 1)))) (nearest . ((label . &quot;The Judge&quot;) (feature . myths) (coord . ,(mbc 7 2)))))) ;; This is where Sir Weydlyn encountered Seer Tompot. (sanctums . ((&quot;Tompot (Tangled Seer)&quot; . ,(mbc 8 1)))) ;; With the chosen random scenario, we assign the Moutain, then ;; pick a random one for the Beast (myths . ((&quot;The Mountain&quot; . (,(mbc 10 4) ,(mbc 8 4) ,(mbc 9 2) ,(mbc 9 3) ,(mbc 9 4) ,(mbc 9 5))) (&quot;The Beast&quot; . (,(mbc 8 3) ,(mbc 9 3) ,(mbc 8 4) ,(mbc 9 4) ,(mbc 8 5))) (&quot;The Judge&quot; . ,(mythic-bastionland-hexes-within-range (mbc 7 2) 3)))) ;; These have been converted to double height coordinates. (holdings . ((&quot;Tower&quot; . (9 . 3)) (&quot;Castle&quot; . (5 . 7)) (&quot;Fortress&quot; . (1 . 19)) (&quot;Town&quot; . (8 . 16)))) (omens-revealed . ((&quot;The Mountain&quot; . 1))) (omit ( ;; Sir Wedylyn crossed between these two potential ;; barriers. (barriers . ((,(mbc 8 1) . ,(mbc 9 1)) (,(mbc 9 1) . ,(mbc 8 2)) (,(mbc 8 2) . ,(mbc 7 2))))))))) </code></pre> <p>The <code>mythic-bastionland-map-generate</code> function takes an <code>alist</code> with keys: <code>holdings</code>, <code>myths</code>, <code>landmarks</code>, <code>dwellings</code>, <code>sanctums</code>, <code>monuments</code>, <code>hazards</code>, <code>curses</code>, <code>ruins</code>, <code>barriers</code>, <code>constraints</code>, <code>omens-revealed</code>, and <code>omit</code>.</p> <p>This allows me to specify where to place specific already known landmarks as well as to omit placing landmarks at a given coordinate.</p> <p>Of those: <code>holdings</code>, <code>myths</code>, <code>landmarks</code>, <code>dwellings</code>, <code>sanctums</code>, <code>monuments</code>, <code>hazards</code>, <code>curses</code>, and <code>ruins</code> are nameable feature types; a function I wanted as I managed the map.</p> <p>The <code>omit</code> option allows me to specify coordinates that I will not place the named feature.</p> <p>The <code>constraints</code> option are tests that must be true with the completed map. When all of them are not true, I discard that generated map and create another one. By default this will be attempted 10 times; but you can also pass <code>max-retries</code> to the generation to modify that amount.</p> <p>And <code>omens-revealed</code> allows for tracking of each omen’s present state.</p> <h2 id="generating-the-world-from-that-which-is-known">Generating the World from that Which is Known</h2> <p>With the <code>mythic-bastionland-features</code>, I define the feature types (that are renamable), how many there should be, and optionally a minimum distance.</p> <pre><code class="language-emacs-lisp"> (defvar mythic-bastionland-features '((myths . ((how-many . (6)))) (holdings . ((how-many . (4)) (min-distance . 5))) (sanctums . ((how-many . (3 4)))) (monuments . ((how-many . (3 4)))) (dwellings . ((how-many . (3 4)))) (hazards . ((how-many . (3 4)))) (curses . ((how-many . (3 4)))) (ruins . ((how-many . (3 4))))) &quot;Feature types that are labeled, and thus renameable. Also we want to consider how many of these we might place as well as the minimum distance (if any).&quot;) </code></pre> <p>For <code>holdings</code>, there are 4 at a minimum distance of 5. For <code>myths</code> there are always 6. And for the others, there is either 3 or 4.</p> <p>And now we have the code that generates the map based on the given configuration.</p> <p>In short:</p> <ol> <li>We place the given features; when a feature has more than one coordinate, we randomly pick a coordinate that does not have something in it.</li> <li>Build a list of the remaining features to place.</li> <li>Looping through the locations to place, attempt to place them on the map; honoring minimum distance, omitted coordinates, as well as only allowing one feature per hex.</li> <li>Randomly place known barriers, skipping over omitted ones. (As of <time datetime="2025-12-15">&lt;2025-12-15 Mon&gt;</time>, I don’t have a means of placing known barriers, but that feature is trivial to add).</li> <li>Validate that all constraints are true; if not, try again.</li> <li>The record any <code>omens-revealed</code>.</li> </ol> <pre><code class="language-emacs-lisp">(defun mythic-bastionland-map-generate (config) &quot;Generate and store `mythic-bastionland-map' via CONFIG. See `mythic-bastionland-features' for some of the `car' values of CONFIG. Another is `barriers' (which are unamed). Another is `omit', itself an alist, with the same `car' values as those in CONFIG (except `omit'). When providing existing locations to place, you may provide either a single coordinate or a list of coordinates (from which the function will randomly pick a candidate of coordinates not already placed). The logic enforces that only one feature may be placed in each hex. Given this placement logic, ensure that the config places features with less candidate spaces earlier.&quot; (let ((max-retries (or (alist-get 'max-retries config) 10)) (keep-mapping t) (the-map nil)) (while (and keep-mapping (&gt; max-retries 0)) ;; Assume that we don't need to keep trying to build the map (setq keep-mapping nil) (setq the-map nil) (setq max-retries (- max-retries 1)) ;; Now, let's see if our assumption is correct. (let ((barriers nil) (locations nil) (locations-to-place nil)) ;; First put the locations on the map...no effort is taken to ;; avoid location collisions. Also, queue up further locations ;; to place. (cl-loop for (feature . fconfig) in mythic-bastionland-features do (let* ((feat-locations (alist-get feature config)) (how-many (alist-get 'how-many fconfig)) ;; TODO: allow for multiple feature entries. (placed-features '())) ;; When we are given location qs for this feature type, add ;; it to the placed list. (when feat-locations (cl-loop for (label . list-or-one-coord) in feat-locations do (let ((placed-coordinates (mapcar #'car locations))) (if (consp (car list-or-one-coord)) ;; We have a list of coordinates (let ((coord (seq-random-elt (seq-filter (lambda (c) (not (member c placed-coordinates))) list-or-one-coord)))) (unless coord (user-error &quot;Location %s with coordinate options %s cannot be placed due to collisoin with all other placed locations.&quot; (label list-or-one-coord))) (cl-pushnew (cons coord label) locations) (cl-pushnew (cons label coord) placed-features)) ;; We have one coordinate (let ((coord list-or-one-coord)) (when (member coord placed-coordinates) (user-error &quot;Location %s with coord %s cannot be placed due to existing placed location&quot; label coord)) (cl-pushnew (cons coord label) locations) (cl-pushnew (cons label coord) placed-features)))))) (cl-pushnew (cons feature placed-features) the-map) ;; Next queue up placing the remainder of locations for the ;; feature type (accounting for what was already given). (dotimes (i (- (seq-random-elt how-many) (length feat-locations))) (cl-pushnew (cons feature (format &quot;%s %s&quot; feature (+ i 1))) locations-to-place)))) ;; Now that we have our task list of what all needs adding. ;; ;; This involves avoiding collisions with other placed features ;; as well as heading the guidance of an omit coordinates for ;; the given feature. (cl-loop for (feature . label) in locations-to-place do (let ((keep-trying t) (min-distance (alist-get 'min-distance (alist-get feature mythic-bastionland-features))) (omitted-feature-coordinates (alist-get feature (alist-get 'omit the-map)))) (while keep-trying (let* ((coord (mythic-bastionland--random-coord))) (when (and ;; Verify that what we're placing is place at ;; the minimum distance. (if min-distance (&lt;= min-distance (min (mapcar (lambda (label-coord) (mythic-bastionland--hex-distance coord (cdr label-coord))) (alist-get feature the-map)))) t) (not (or (assoc coord locations) (member coord omitted-feature-coordinates)))) (progn (setq keep-trying nil) ;; For locations we favor storing the (coord . label) ;; This makes later comparisons easier.n (cl-pushnew (cons coord label) locations) ;; For a named feature favor storing (label . coord) ;; as this makes prompts easier. (cl-pushnew (cons label coord) (alist-get feature the-map)))))))) ;; Nex, we handle the barriers as they are a bit of a different ;; creature. We generate them by placing them between two ;; neighboring hexes. ;; ;; I have given special consideration for hexes on the edge of ;; the map; Namely don't create barriers on the edges. And ;; proportionally reduce the chance of adding a barrier on those ;; edges proportional to the number sides that the hex has ;; on-map neighbors.&quot; (let ((omitted-barriers (mapcar (lambda (b) (mythic-bastionland--make-ordered-pair (car b) (cdr b))) (alist-get 'barriers (alist-get 'omit config))))) (dotimes (i (+ 23 (random 3))) (let ((keep-trying t)) (while keep-trying (let* ((coord (mythic-bastionland--random-coord)) (in-6-chance (cond ((member coord '((0 . 0) (11 . 22))) ;; top-left, bottom-right 2) ((member coord '((11 . 0) (0 . 22))) ;; top-right, bottom-right 3) ((member (car coord) '(0 11)) ;; from or to 4) ((member (cdr coord) '(0 23)) ;; top of col that is taller; bottom of ;; col that is shorter 3) ((member (cdr coord) '(1 22)) ;; top of col that is shorter; bottom of ;; col that is taller 5) (t 6)))) (when (&lt;= (+ 1 (random 6)) in-6-chance) (progn (let* ((neighbor (seq-random-elt (mythic-bastionland--neighbors coord))) (pair (mythic-bastionland--make-ordered-pair coord neighbor))) ;; Don't repeat barriers (when (not (or (member pair barriers) (member pair omitted-barriers))) (progn (cl-pushnew pair barriers) (setq keep-trying nil))))))))))) ;; PS...make sure we add the locations and barriers to the map. (cl-pushnew `(locations . ,locations) the-map) (cl-pushnew `(barriers . ,barriers) the-map) ;; Next, see if we have a conformant map (cl-loop for (constraint . info) in (alist-get 'constraints config) do (pcase constraint ('nearest (unless (mythic-bastionland--test-constraint-nearest info the-map) (setq keep-mapping t))) (_ (user-error &quot;Unknow constraint %s&quot; constraint)))))) ;; TODO: Consider generalizations but for now this is adequate. (when-let ((omens-revealed (assoc 'omens-revealed config))) (push omens-revealed the-map)) the-map)) </code></pre> <h2 id="its-all-a-mapping-problem">It’s All a Mapping Problem</h2> <p>I once read that all computer science problems are mapping problems. There were two that I needed to consider.</p> <p>First, when rolling up a barrier, it is placed along the shared side of two adjacent hexes. This meant creating a “unique key” for those pairs, so that I don’t accidentally pix Hex <code>0,0</code> then its neighbor Hex <code>0,1</code> to place a barrier, and then pick Hex <code>0,1</code> and its neighbor Hex <code>0,0</code> to place a hex.</p> <p>Enter the <code>mythic-bastionland--make-ordered-pair</code> function:</p> <pre><code class="language-emacs-lisp">(defun mythic-bastionland--make-ordered-pair (from to) &quot;Provide a consistent sort order FROM and TO coordinates.&quot; (let ((from (or from (mythic-bastionland--text-to-coord nil &quot;Left &quot;))) (to (or to (mythic-bastionland--text-to-coord nil &quot;Right &quot;)))) (if (&gt; (car from) (car to)) `(,from . ,to) (if (&gt; (cdr from) (cdr to)) `(,from . ,to) `(,to . ,from))))) </code></pre> <p>It normalizes a pair of coordinates so that we can have consistent interaction when referencing those two coordinates.</p> <p>Second, one of the questions was direction from one coordinate to another. And here we have <code>mythic-bastionland--direction</code>:</p> <pre><code class="language-emacs-lisp">(defun mythic-bastionland--direction (&amp;optional from to) &quot;Get human-readable direction FROM TO.&quot; (let ((from (or from (mythic-bastionland--text-to-coord nil &quot;From &quot;))) (to (or to (mythic-bastionland--text-to-coord nil &quot;To &quot;)))) (cond ((equal to from) &quot;Under your nose&quot;) ((= (car from) (car to)) (if (&gt; (cdr from) (cdr to)) &quot;North&quot; &quot;South&quot;)) (t (let ((slope (/ (float (- (cdr to) (cdr from))) (float (- (car to) (car from)))))) (cond ;; After compass, protractor, marker, and spreadsheet ;; work, I'm happy with the direction calculations. ;; Remember, hex maps starting from top-left instead ;; of bottom right like Geometry means things get a ;; mind bending (at least for this old guy). ((or (&gt; slope 4) (&lt; slope -4)) (if (&gt; (cdr from) (cdr to)) &quot;North&quot; &quot;South&quot;)) ((&lt;= 0.8 slope) (&lt;= slope 4) (if (&gt; (cdr from) (cdr to)) &quot;Northwest&quot; &quot;Southeast&quot;)) ((&lt; -0.8 slope 0.8) (if (&gt; (car from) (car to)) &quot;West&quot; &quot;East&quot;)) ((&lt;= -4 slope -0.8) (if (&gt; (cdr from) (cdr to)) &quot;Northeast&quot; &quot;Southwest&quot;)))))))) </code></pre> <p>Using geometry of Rise over Run to determine slope, I can enter the from and to coordinate to get the named direction. As the comments indicate, this involved some protractor work to make sure I got the algorithm correct.</p> <p>When I had set out, I had first thought of saying the two adjacent hexes to the right of a given hex were to the given hex’s east. But the geometry suggested breaking this apart.</p> <p>So for a given Hex, and looking at Hexes one space away and starting at the Hex directly above the given Hex and working clockwise we have: north, north east, south east, south, south west, and north west. Stepping to the next ring out, we have: north, north east, north east, west, south east, south east, south, south west, south west, west, north west, north west.</p> <p>I felt that having the algorithm well understood by me would make for consistent solo play.</p> <h2 id="testing-this-thing">Testing This Thing</h2> <p>When you look at the code, you might notice that the <code>interactive</code> functions will take a coordinate or prompt you for one. You might also note that some non-<code>interactive</code> functions take optional coordinates, and prompt if none are given.</p> <p>All of this was in service of attempting to test functions. Verifying the correctness of distance and direction required no knowledge of the map, but instead relied on two coordinates. So I could bombard these functions in the <abbr title="Read-eval-print loop">REPL</abbr> and prompt for the inputs.</p> <p>I also made a decision not to codify Sir Weydlyn’s map until I’d test driven things a few times. Hence I write the map to disk and then read it back when I want to use it. This also serves to clobber the variable’s value, preventing accidental peaking. I am considering further measures, but am holding off.</p> <p>I found that once it was all tested, and I started playing, I realized I wanted to adjust some functionality. Namely, determining the nearest myth. I refactored that section. And to test, used a bit of dependency injection, to pass in the map I wanted to test (so as to not peak).</p> <p>Once I verified behavior, I loaded the game map and made sure the question I had previously asked of the map returned the same result. And it didn’t so I set about further refactoring (which added the <code>constraints</code> option). I adjusted the initial config, adding <code>constraints</code> and allowing for features to be placed from a subset of coordinates.</p> <h2 id="conclusion">Conclusion</h2> <p>I’ve had two significant refactors of the base functionality.</p> <p>From the initial state to the next state, I needed to consider that I was changing the logic for what was nearest, going from randomly picking hexes that had the same distance to now consistently picking hexes.</p> <p>I performed the refactor then tested my map. The answer I got conflicted with established facts (e.g. “The Judge” was the closest myth to <code>9,1</code>). So I needed to refactor again. This is when I introduced <code>constraints</code>. Which was relatively easy to introduce.</p> <p>I did the second refactor in two parts. Part 1 was wrapping the existing body in the following then re-indenting:</p> <pre><code class="language-emacs-lisp">(let ((max-retries (or (alist-get 'max-retries config) 10)) (keep-mapping t) (the-map nil)) (while (and keep-mapping (&gt; max-retries 0)) ;; Assume that we don't need to keep trying to build the map (setq keep-mapping nil) (setq the-map nil) (setq max-retries (- max-retries 1)) …EXISTING BODY… )) </code></pre> <p>This change was a noop change, that I committed. Then I set about implementing the <code>constraints</code> logic. This way I would have smaller second commit that didn’t interweave with indentation changes.</p> <p>You can find the <a href="https://git.sr.ht/~jeremyf/mythic-bastionland.el">“mythic-bastionland” package on Sourcehut</a>.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Mythic%20Bastionland%20Map%20Play%20Aid%20Emacs%20Package">Reply by Email</a></p> Take on Rules Forged from the Worst: Session 3 https://takeonrules.com/2025/12/16/forged-from-the-worst-session-3/ Tue, 16 Dec 2025 17:37:09 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/16/forged-from-the-worst-session-3/ rpgs sessions <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Forged from the Worst: Session 3”"> <span role="listitem" aria-label="&ldquo;rpgs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/10/forged-from-the-worst-session-2/" aria-label="Previous post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;" title="Older post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/rpgs/" class="p-category" aria-label="All posts tagged with &ldquo;rpgs&rdquo;" title="All posts tagged with &ldquo;rpgs&rdquo;">rpgs</a> <a href="https://takeonrules.com/2025/12/16/mythic-bastionland-map-play-aid-emacs-package/" aria-label="Next post tagged with &ldquo;rpgs&rdquo; is &ldquo;Mythic Bastionland Map Play Aid Emacs Package&rdquo;" title="Newer post tagged with &ldquo;rpgs&rdquo; is &ldquo;Mythic Bastionland Map Play Aid Emacs Package&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;sessions&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/10/forged-from-the-worst-session-2/" aria-label="Previous post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;" title="Older post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/sessions/" class="p-category" aria-label="All posts tagged with &ldquo;sessions&rdquo;" title="All posts tagged with &ldquo;sessions&rdquo;">sessions</a> <a href="https://takeonrules.com/2025/12/19/forged-from-the-worst-session-4/" aria-label="Next post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;" title="Newer post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;"><small>&gt;</small></a> </span></span> <span aria-hidden="true"> :: </span><span class="label">Series:</span> <a href="https://takeonrules.com/2025/12/10/forged-from-the-worst-session-2/" aria-label="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;" title="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;"><small> &lt; </small></a><cite><a href="https://takeonrules.com/series/forged-from-the-worst">Forged from the Worst</a></cite><a href="https://takeonrules.com/2025/12/19/forged-from-the-worst-session-4/" aria-label="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;" title="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 4&rdquo;"><small> &gt; </small></a> </p/><p><strong>Summary: </strong> In which Sir Weydlyn continues his trek towards the castle, learning of a fate perhaps worse than death. </p> <p>The eastern golden dapple sky frames the two horses, a large stallion with horned helm and a smaller rouncey. On the stallion rides a broad shouldered man bedecked gambeson and dark polished scale, one hand holding the reins, the other a raised bolt-guisarme, and empty saddle bags. The rouncey, riderless, bears a clutch of javelins, heavy saddle bags, and bedroll.</p> <p>Ahead the overgrown plains begin rolling into hills that look as though shunned by the spring rains. Riding on, the waves of tall grasses fall behind the three as they ride amidst the dry hills (coordinates <code>8,2</code>), where morning sun has now drifted to mid-day.</p> <section class="inline-comments"> <p><small> I make a Barrier Check…encountering none. And then a Wilderness Roll…Encounter the Hex’s <strong>Landmark</strong> otherwise all clear. </small></p> <p><small> And here we come to another procedure that I will need to establish. </small></p> </section> <h1 id="establishing-a-landmark-procedure">Establishing a Landmark Procedure</h1> <blockquote class="h-cite"> Some Wilderness Hexes contain a Landmark. These are discovered when travellers roll 4-6 on the Wilderness roll. A typical Realm has 3 or 4 of each type of Landmark. Mark them with their initial or an icon. <footer>&mdash;<cite>Mythic Bastlionland</cite> page 14 </footer> </blockquote> <p>This prompts me to wonder: can a Landmark and Myth be in the same Hex? So I read about Myth Hex (emphasis mine).</p> <blockquote class="h-cite"> Place 6 Myths (p27) in remote places. Number them as 1–6. The Hexes are <em>clearly affected</em> by the presence of their Myth. <footer>&mdash;<cite>Mythic Bastionland</cite> page 14 </footer> </blockquote> <p>While not explicit, I’m going to assume that Landmarks and Myths will not share a Hex. Also, I need to consider that a Myth might be in a Hex and showing some signs. This will require a bit of logic as a knight travels across the realm.</p> <p>We need to know if the Hex has Landmark or alterations due to a Myth. There are 6 Myths. There are 6 types of Landmarks: Dwellings, Sanctums, Monuments, Hazards, Curses, and Ruins. So we’d have between 18 and 24 Landmarks. I’ll also assume that Myths do not exist in Holdings.</p> <p>As I set about doing this, I realized, why don’t I encode the map into an Emacs data structure then interrogate that data structure. Which proved to be a fun little diversion worthy of its own blog post; the long and short being I now have a few functions I can call to query the map to ask for:</p> <ul> <li>Is there a barrier between Hex one and Hex two?</li> <li>Is there Myth on this square?</li> <li>What is the nearest myth?</li> <li>What is a random myth that is not the nearest?</li> <li>What is direction to a given myth?</li> </ul> <p>One side-effect is that I had to change the coordinate system. Namely I’m starting the top-most left-most hex at <code>0,0</code>; immediately down is <code>0,1</code>, then down and right is <code>1,0</code>. I could make more significant adjustments, but for now that’s what I’ll be working from.</p> <p>With my map loaded, I ask it “What, if any feature is on <code>8,2</code>?” And I get “Monument 4“. I pull a Random Myth to find the Monument and get “Sky Spire.” Now, will Weydlyn tarry and explore this Sky Spire? I think not. He seeks to fulfill his <em>Promise</em> to Tompot.</p> <h1 id="amidst-the-hills">Amidst the Hills</h1> <p>Weydlyn rides southwest, making for the castle and <em>Seat of Power</em>. As the mid-day clouds make way, he sees a multi-coloured spire shimmering in the east. In his heart, he feels a desire to look upon the spire, to turn Ingot towards the scintillating spire.</p> <section class="inline-comments"> <p><small>I rolled a few sparks: Multi-colour, shimmering, and desire.</small></p> </section> <p>But his <em>Promise</em> to Tompot burns as a bright brand in the grim night of his soul. This spire of light and enchantment tugs and pulls at him. As though all his forge work was but slag, and only now has he beheld true beauty.</p> <section class="inline-comments"> <p><small> Here, I find myself wishing for the Virtues of Pendragon. Yet I, as the referee, am not quite wanting to compel Sir Weydlyn. So, let’s <i class="dfn">Ask the Stars</i> if I as the referee should compel Sir Weydlyn? The answer is “No but…” so as referee, I don’t call for the compulsion. </small></p> <p><small> Because I’m playing both sides of the table, should remove the option at this moment. </small></p> </section> <p>The tower pulses for a moment, Weydlyn hears an angelic song break out, and the tower vanishes. Heavy clouds roll in and with it the song fades. Sir Weydlyn, not wishing to chase phantoms, continues his journey towards the castle.</p> <section class="inline-comments"> <p><small> Making to exit <code>8,2</code> into <code>7,2</code>, I check for a <i class="dfn">Barrier</i>. And there is none. I make the <i class="dfn">Wilderness Roll</i> and “Encounter the next Omen from the nearest Myth.” I wonder, what is the nearest myth to <code>7,2</code>? I get “myth 1”. Which is neither the Mountain nor the Beast. I roll up a random Realm myth and get “The Judge.” </small></p> <p><small> This is my first encounter with the Judge, and the Omen reads as follows: “A wretch pleads for charity. She was a Knight, sentenced harshly by the Judge.” </small></p> <p><small> First, I need to know, is the Judge on this Hex? No. </small></p> <p><small> I roll a land character spark to determine the lay of these new hill: overgrown. </small></p> </section> <h1 id="of-wretch-and-judgment">Of Wretch and Judgment</h1> <p>With noon day now waning, Sir Weydlyn, Ingot, and the other horse, find themselves in the overgrown hills a days travel northeast of the castle. They make their way along the narrow trails of taken by the infrequent peddlers trekking between tower and castle.<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> We’re going to name these, but only upon arrival. Then I might go back and update my posts.<span class="hidden">)</span></span> </small> </p> <p>Ahead on the trail Weydlyn notes a downtrodden wretch, sitting beside the trail. She is rubbing her feet. And seeing Weydlyn, she lowers her head. Weydlyn slows and stops a few paces from the woman with tangled hair adorned in rags.</p> <section class="inline-comments"> <p><small> Here I need to read a bit about the Judge. Are these Judgments fair? It seems as though the judgments are arbitrary, perhaps stinking of the fey. Which helps me understand how next to proceed. </small></p> <p><small> I pull a random Knight/Seer to get a theme for the judgment: Sharpness. Another question </small></p> </section> <p>“Good Knight, might you spare a bit of charity for a fellow downtrodden Knight?” begs the wretch.</p> <p>Sir Weydlyn now looks to see if there is truth in these words. Uncertain he responds, “A Knight? I daresay you look not the part.”</p> <p>The woman bows her head, “No, I have lost that part, as the Judge, Ambrageft, of Diamond Eye has seen fit to judge me guilty and cast me to the road-side, poor and beggard.”</p> <p>Steadying Ingot and drawing him back a step, Weydlyn asks the wretch, “If knight you were, tell me true of your deeds.”</p> <p>The wretch, tells of her knighting and fetching the vassal rod from the red vultures and restoring it to Lord Prentise, ruler of the realm.</p> <section class="inline-comments"> <p><small>I used several different pages to assemble these narrative points. I also rolled the wretch up as the Violet Knight.</small></p> </section> <p>Listening, a few questions begin filling Weydlyn’s mind. And as she finishes her tail, he begins with his questions, “And it was not Lord Prentise whom judged you but this Amrageft? How can this be?”</p> <p>“Yes, not Lord Prentise, but Amrageft terrible and hard. And how it came to be? A courier handed me a lambskin scroll and written in crimson in language unknown was the decree. A season later, I was whisked away to a court, and judgment cast,” replied the woman.</p> <p>“And were you guilty?” asks Weydlyn.</p> <p>“I had upheld my Oaths. And the charges, why they were most absurd. I was found guilty of under-sharpening<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> Again, another random theme picked. I’m also opting for the absurd.<span class="hidden">)</span></span> </small> my grand mace,” responds the wretch now rising, “and after the season long trial they just this day returned me here. This Myth found me unworthy.”</p> <p>Weydlyn, now seeing the woman stand, looks her over. And the word “Myth” settles amongst the din of steel always clanging in his head. “These times are strange. And my heart wishes to know the truth of…”</p> <p>“They are true, I…,” she interrupts</p> <p>Sir Weydlyn hisses, “Silence. Your words, I wish I could know their truth. Ride with me to Lord Prentise’s castle. And there he can vouch for you and your tale. And know that if you have treated me false and now lead me astray, you’ll feel the bite of steal. I ask of you two things: your name and to give this horse a name; his previous owner failed to tell me before he died.”</p> <p>“I speak true and thank you for your kindness. I am Beatrice. And I shall call this lovely steed Light’s Return,” says Beatrice.</p> <p>Sir Weydlyn’s scornful eyes look past Beatrice, as though searching for a mirror to see check if this fear in his heart shows on his brow. Fear of what he could become if this tale of hers is true. Now looking on her, he hopes she proves false. He tightens his grip on his bolt-guisarme, aching to toss it into her lying mouth.</p> <p>He guides Ingot beside Light’s Return and grabs the javelin bundle then tosses the reins to Beatrice, and with a cold steely voice says, “We will ride a few more hours then camp for the night.”</p> <section class="inline-comments"> <p><small> I roll up Beatrice’s stats as though a Knight Errant: </small></p> <dl class="org-dl"> <dt><small>Guard</small></dt><dd><small>1</small></dd> <dt><small>Clarity</small></dt><dd><small>14</small></dd> <dt><small>Spirit</small></dt><dd><small>5</small></dd> <dt><small>Vigor</small></dt><dd><small>13</small></dd> </dl> <p><small> I’m envisioning that Beatrice might be a squire? Or swear an oath anew. Perhaps returning to her seer. </small></p> </section> <h1 id="reflections">Reflections</h1> <p>As mentioned, I started playing this session, prepared to manage the game state in a document and infer what must be where based on rolls. But then I thought how absurd, why not encode a map and then write functions to query the map. That was an enjoyable side-quest, and as mentioned is something I’ll later blog about.</p> <p>At the conclusion of this session, Weydlyn has directly encountered two myths and has it on authority the general location of another. Also, having reconciled past statements, I have a sense of where three Myths are. My algorithm for finding the closest myth, in the case of ties, is to randomly pick from those that share the closest distance.</p> <p>And as I write this, I realize that I want a consistent answer from a given hex. So I’m going to set about providing a consistent answer. That could mean my present map configuration is not correct given the new algorithm; but I have ways to rebuild the map in such a way as to be truthful to what has emerged in play.</p> <p>For now, before I set about a minor code change, I’m doodling a bit on the map, I know that the Judge must be within 3 hexes of <code>7,2</code>. Otherwise the logic would invalidate the in game facts regarding the Mountain and the Beast.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Forged%20from%20the%20Worst%3a%20Session%203">Reply by Email</a></p> Take on Rules Extending Core Emacs Bookmark Package https://takeonrules.com/2025/12/10/extending-core-emacs-bookmark-package/ Wed, 10 Dec 2025 21:01:36 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/10/extending-core-emacs-bookmark-package/ emacs programming <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Extending Core Emacs Bookmark Package”"> <span role="listitem" aria-label="&ldquo;emacs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/09/extending-emacs-to-play-mythic-bastionland/" aria-label="Previous post tagged with &ldquo;emacs&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;" title="Older post tagged with &ldquo;emacs&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/emacs/" class="p-category" aria-label="All posts tagged with &ldquo;emacs&rdquo;" title="All posts tagged with &ldquo;emacs&rdquo;">emacs</a> <a href="https://takeonrules.com/2025/12/16/mythic-bastionland-map-play-aid-emacs-package/" aria-label="Next post tagged with &ldquo;emacs&rdquo; is &ldquo;Mythic Bastionland Map Play Aid Emacs Package&rdquo;" title="Newer post tagged with &ldquo;emacs&rdquo; is &ldquo;Mythic Bastionland Map Play Aid Emacs Package&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;programming&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/09/extending-emacs-to-play-mythic-bastionland/" aria-label="Previous post tagged with &ldquo;programming&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;" title="Older post tagged with &ldquo;programming&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/programming/" class="p-category" aria-label="All posts tagged with &ldquo;programming&rdquo;" title="All posts tagged with &ldquo;programming&rdquo;">programming</a> <a href="https://takeonrules.com/2025/12/23/serializing-somewhat-large-emacs-alists/" aria-label="Next post tagged with &ldquo;programming&rdquo; is &ldquo;Serializing Somewhat Large Emacs Alists&rdquo;" title="Newer post tagged with &ldquo;programming&rdquo; is &ldquo;Serializing Somewhat Large Emacs Alists&rdquo;"><small>&gt;</small></a> </span></span> </p/><p><strong>Summary: </strong> Revisiting yesterday’s implementation and refactoring towards a bookmark implementation. </p> <p><time datetime="2025-12-09" title="2025-12-09">Yesterday</time> I wrote <a href="https://takeonrules.com/2025/12/09/extending-emacs-to-play-mythic-bastionland/">Extending Emacs to Play Mythic Bastionland</a> and as I thought about it, I realized that I was coming very close to re-implementing bookmarks. What I had worked. But lacked the elegance of the bookmark ecosystem when adding to the PDF list.</p> <p>And for those who took heart of what I did yesterday, read on, I found some bugs and fixed them.</p> <p>So with time to think about it, I set about exploring how I might open a PDF to a random page (from a list of possible pages). Also, how I could capture that I want this bookmark to be a random page.</p> <p>I also thought about how I might generalize my “starting and stopping” game play. After all, I have a few solo games that I might pick up.</p> <h2 id="bookmarks">Bookmarks</h2> <p>What follows almost completely replaces the previous implementation; except I don’t have a nifty re-roll a random table keybinding.</p> <p>I had previously written a bookmark handler, so set about writing another one.</p> <p>First, we should understand the structure of a PDF bookmark in <span><a href="https://en.wikipedia.org/wiki/Emacs">Emacs</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Emacs”" title="Other site-wide references of “Emacs”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-EMACS">&#128214;</a></small> :</p> <pre><code class="language-emacs-lisp"> (&quot;Tangled Seer&quot; (filename . &quot;~/mythic=bastionland--core-rules__rules_systems.pdf&quot;) (position . 1) (last-modified 26934 62792 320522 78000) (page . 104) (slice) (size . fit-page) (origin 0.0 . 0.0) (handler . pdf-view-bookmark-jump-handler)) </code></pre> <p>The <code>pdf-view-bookmark-jump-handler:random</code> function first checks if there’s an associated <code>pages</code> value. If so, it picks one at random, sets the <code>page</code> value and passes it along to the <code>pdf-view-bookmark-jump-handler</code>.</p> <pre><code class="language-emacs-lisp"> (defun pdf-view-bookmark-jump-handler:random (bmk) &quot;A handler-function implementing interface for bookmark PDF BMK. When the handler has a 'pages property, which is assumed to be a list, pick one from that. Otherwise fallack to the 'page property. See also `pdf-view-bookmark-jump-handler' and `pdf-view-bookmark-make-record'.&quot; (let ((pages (bookmark-prop-get bmk 'pages))) (bookmark-prop-set bmk 'page (or (seq-random-elt pages) (bookmark-prop-get bmk 'page))) (pdf-view-bookmark-jump-handler bmk))) </code></pre> <p>To test, I backed-up my bookmarks, and manually changed the handler to and added a <code>pages</code> attribute. I reloaded that file, and everything worked. Next, how could I avoid manually editing the file?don’t</p> <p>I don’t want to <em>always</em> have my PDF bookmarks to be random tables. So I figured I would again repurpose the existing PDF bookmark making. This time with using an advising function.</p> <p>First, I call the original <code>pdf-view-bookmark-make-record</code>; then if I have enabled 1) prompting for random pages and 2) said I want to specify the pages, then I prompt for the pages to use in randomization (yup, I had to manually enter those pages…or at least generate that list of pages programmatically, add it to the kill ring, then yank it into the prompt).</p> <p>Once I had the list of pages, I change the handler from <code>pdf-view-bookmark-jump-handler</code> to <code>pdf-view-bookmark-jump-handler:random</code>. And returned the modified bookmark.</p> <pre><code class="language-emacs-lisp"> (defun pdf-view-bookmark-make-record:with-randomizer (&amp;rest app) &quot;Conditionally randomize which page we'll open in a PDF. See `pdf-view-bookmark-make-record:prompt-for-random'.&quot; (let ((bmk (apply app))) (if (and pdf-view-bookmark-make-record:prompt-for-random (yes-or-no-p &quot;Specify Random Pages?&quot;)) (let* ((attributes (cdr bmk)) (integers-as-string (split-string (read-string &quot;Enter pages (comma-separated): &quot; (format &quot;%s,&quot; (alist-get 'page attributes))) &quot;[,; ]+&quot; t &quot;[[:space:]]+&quot;))) ;; We clobber the existing handler replacing it with one of ;; our own devising. (setcdr (assoc 'handler attributes) 'pdf-view-bookmark-jump-handler:random) (add-to-list 'attributes (cons 'pages (mapcar #'string-to-number integers-as-string))) ;; We need to return an object of the same form (e.g. a `cons' ;; cell). (cons (car bmk) attributes)) bmk))) (advice-add #'pdf-view-bookmark-make-record :around #'pdf-view-bookmark-make-record:with-randomizer) (defvar pdf-view-bookmark-make-record:prompt-for-random nil &quot;When non-nil, prompt as to whether or not to create a bookmark that is randomization.&quot;) </code></pre> <p>Next, I wanted to continue popping those pages into a dedicated side window. Enter some more advice. This time, advising the <code>bookmark-jump</code>. Reading that implementation, I was surprised that the default wasn’t a variable; which might have made things easier.</p> <pre><code class="language-emacs-lisp">(defvar default-bookmark-display-function nil &quot;When non-nil, favor opening bookmarks with this function.&quot;) (defun bookmark-jump-with-display (fn bookmark &amp;optional display-func) (let ((display-func (or display-func default-bookmark-display-function (when current-prefix-arg 'switch-to-buffer-side-window)))) (funcall fn bookmark display-func))) (advice-add #'bookmark-jump :around #'bookmark-jump-with-display) </code></pre> <p>And last, a little bit of glamour. I visually show that the bookmark will be randomized by showing a the 6-face of a die with the word PDF.</p> <pre><code class="language-emacs-lisp">;; Show that I'll be opening this PDF to a random page. (put 'pdf-view-bookmark-jump-handler:random 'bookmark-handler-type &quot;⚅PDF&quot;) </code></pre> <h2 id="starting-and-stopping">Starting and Stopping</h2> <p>With the new bookmark handling, I set about rethinking the implementation. As I needed to and unset more values, the <code>lambda</code> approach seemed cumbersome and repetitive. Also, in my experimentation, I wasn’t properly changing bookmarks files. The result was a steady appending to my default bookmarks.</p> <p>What follows addresses that issue. First a variable of no significant insight.</p> <pre><code class="language-emacs-lisp">(defvar playing-a-game nil &quot;When non-nil, indicates that I'm playing a game. See `playing-a-game-candidates' and `start-playing'.&quot;) </code></pre> <p>Next, I define what it means to start and stop playing my <a href="https://takeonrules.com/series/forged-from-the-worst/">Forged from the Worst</a>; using keywords.</p> <pre><code class="language-emacs-lisp">(defvar playing-a-game-candidates `( (&quot;Forged from the Worst (Mythic Bastionland)&quot; . ((start . ((bmk-display-func . switch-to-buffer-side-window) (bmk-prompt-for-random . t) (bmk-file . &quot;~/forged=from=the=worst--bookmarks.el&quot;))) (stop . ((bookmark-display-function . nil))))) ) &quot;Possible games I might be playing via Emacs. A game you are playing should have both a 'start' and 'stop' property.&quot;) </code></pre> <p>And then the function that prompts for the game played and applies the configuration; first stopping the previous game.</p> <pre><code class="language-emacs-lisp">(defun start-playing (game) &quot;Start playing the GAME; stopping any currently played game. A GAME has a 'start' and 'stop' property, that is an alist. That alist has the following properties: - 'bmk-file' :: what file we'll find our working bookmarks. - 'bmk-display-func' :: the function we use to display bookmarks. - 'bmk-prompt-for-random' :: if we'll prompt for possible random pages in PDF bookmarks. When a property is not provided, \&quot;suitable\&quot; defaults are assigned.&quot; (interactive (list (let ((handle (completing-read &quot;Start Playing: &quot; playing-a-game-candidates nil t))) (alist-get handle playing-a-game-candidates nil nil #'string=)))) ;; Stop playing what we were playing...if anything ;; Then start playing what we are playing...if anything (dolist (config (list playing-a-game (alist-get 'start game))) (when config (let ((file (or (alist-get 'bmk-file config) fallback-bookmark-file))) (setq default-bookmark-display-function (alist-get 'bmk-display-func config)) (setq pdf-view-bookmark-make-record:prompt-for-random (alist-get 'bmk-prompt-for-random config)) (bookmark-save) (setopt bookmark-default-file file) (bookmark-load file t nil t)))) ;; Last register how to stop playing. (setq playing-a-game (alist-get 'stop game))) </code></pre> <p>And for symmetry and ease of thinking, I have added the related <code>stop-playing</code>.</p> <pre><code class="language-emacs-lisp">(defun stop-playing () &quot;Stop playing a game.&quot; (interactive) (start-playing '(&quot;Nothing&quot; . nil))) </code></pre> <h2 id="conclusion">Conclusion</h2> <p>Consolidating file lookup functions feels like the correct path. That is reduce the number of ways I’m opening up files. And extending existing functionality. Also learn a bit more about that implementation.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Extending%20Core%20Emacs%20Bookmark%20Package">Reply by Email</a></p> Take on Rules Forged from the Worst: Session 2 https://takeonrules.com/2025/12/10/forged-from-the-worst-session-2/ Wed, 10 Dec 2025 18:31:54 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/10/forged-from-the-worst-session-2/ rpgs sessions <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Forged from the Worst: Session 2”"> <span role="listitem" aria-label="&ldquo;rpgs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/09/mythic-bastionland-session-reflection/" aria-label="Previous post tagged with &ldquo;rpgs&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;" title="Older post tagged with &ldquo;rpgs&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/rpgs/" class="p-category" aria-label="All posts tagged with &ldquo;rpgs&rdquo;" title="All posts tagged with &ldquo;rpgs&rdquo;">rpgs</a> <a href="https://takeonrules.com/2025/12/16/forged-from-the-worst-session-3/" aria-label="Next post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;" title="Newer post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;sessions&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/08/forged-from-the-worst-session-1/" aria-label="Previous post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 1&rdquo;" title="Older post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 1&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/sessions/" class="p-category" aria-label="All posts tagged with &ldquo;sessions&rdquo;" title="All posts tagged with &ldquo;sessions&rdquo;">sessions</a> <a href="https://takeonrules.com/2025/12/16/forged-from-the-worst-session-3/" aria-label="Next post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;" title="Newer post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;"><small>&gt;</small></a> </span></span> <span aria-hidden="true"> :: </span><span class="label">Series:</span> <a href="https://takeonrules.com/2025/12/09/extending-emacs-to-play-mythic-bastionland/" aria-label="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;" title="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;"><small> &lt; </small></a><cite><a href="https://takeonrules.com/series/forged-from-the-worst">Forged from the Worst</a></cite><a href="https://takeonrules.com/2025/12/16/forged-from-the-worst-session-3/" aria-label="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;" title="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 3&rdquo;"><small> &gt; </small></a> </p/><p><strong>Summary: </strong> In which hard-lessons are learned after witholding information. </p> <p>Before I get going, I need to establish a traveling procedure: namely barrier generation. And before that, as I think about play, Sir Weydlyn and Squire Kelwun have ended a Phase of the day in the Wilderness. Meaning <em>Wilderness Roll</em>.</p> <p>I make a Wilderness Roll (4) and all is clear. I also wonder if Sir Weydlyn or Squire Kelwun can discern if their captives are eager or nervous to head to the tower.</p> <p>I decide to give them both a Clarity save to notice. Kelwun notices, but Weydlyn does not. Now does he make mention of it to Weydlyn or the others? For the time being, I think it is unlikely. I <em>Ask the Stars</em>, they respond with “No but…” I think after a couple hours, Weydlyn notices something off about Kelwun. Enough for us to cross from one Hex to another.</p> <h1 id="establishing-a-procedure-for-barrier-generation-while-traveling">Establishing a Procedure for Barrier Generation while Traveling</h1> <p>I’ll be adding what follows to my Campaign Notebook, a document separate from the narrative play. However, I want to share this work as it may be useful for others playing <cite><a href="https://www.drivethrurpg.com/en/product/514996/mythic-bastionland?affiliate_id=318171">Mythic Bastionland</a></cite> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Mythic Bastionland”" title="Other site-wide references of “Mythic Bastionland”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND">&#128214;</a></small> .</p> <p>I’m considering the procedure for placing “just in time” barriers while a character travels the land.</p> <blockquote class="h-cite"> Some Hexes have a Barrier on one or more of their edges, typically a sudden altitude change or impassible feature. These cannot normally be travelled through. For a typical Realm, place a number of Barriers equal to one sixth of your total Hexes. <footer>&mdash;<cite>Mythic Bastionland</cite> page 14 </footer> </blockquote> <p>My read of the rules is that Barriers are revealed to players as they encounter them on their travels. This read is reinforced by the <a href="https://mythic.bastionland.tools/map">Realm Map</a> generator hides the barriers on the player’s map.</p> <p>Going by the book there are 144 Hexes in the Realm, meaning there are 24 barriers.</p> <blockquote class="h-cite"> Travel through a Barrier is not normally possible, though locals might know a way. Attempting to travel through a Barrier wasts that Phase of the day, but still causes a Wilderness Roll. <footer>&mdash;<cite>Mythic Bastionland</cite> page 18 </footer> </blockquote> <p>I read the above to mean that a barrier is applicable when leaving or arriving from that side of the Hex. There are 468 edges in a 12 by 12 Realm. Of those 96 are along the exterior border of the Realm. Leaving 372 edges on which there might be a barrier. Meaning that Sir Weydlyn has a 2 in 31 chance of encountering a barrier when they cross their first Hex. Which comes out to a 6.45% chance.</p> <p>Thinking about about the dice rolls I have two procedures that come to mind:</p> <ol> <li>Roll a d6 + d12; when the 6-sided dice is a 1 and the 12-sided is 1 through 5, there’s a barrier. This is generates a barrier 6.94%.</li> <li>Roll a d8 + d6; when the 8-sided die is a 1 and the 6-sided die is 1 through 3, there’s a barrier. This generates a barrier 6.25% of the time.</li> </ol> <p>As an alternative, were I to alternate procedures with each step, that would create a 6.60% chance, which gets closer; but definitely makes things more fiddly.</p> <p>Stepping back, I’ve already said the River is a known barrier. So, lets go with the lower probability. We’ll check the first time the character attempts to cross, and record that result for future reference.</p> <h1 id="setting-out">Setting Out</h1> <p>Sir Weydlyn on Ingot and Squire Kelwun with his three prisoners (and six riding horses) head south east to the tower. They’ve spent the morning at Tompot’s academy, eat a meager meal, and depart.</p> <section class="inline-comments"> <p><small>I grab some dice and roll for a barrier between hex <code>9,1</code> and hex <code>9,1</code>. I was hoping, a bit, that there would be a barrier…but the dice said no. For future reference, until I encounter tooling issues, the top left-most corner is <code>0,0</code> and moving right increments the first digit.</small></p> </section> <p>While traveling the land shifts from grey plains to overgrown, uneasing Weydlyn. The dear trail makes for easier travel, avoiding the worst of the overgrowth. Ahead, the trail appears to veer north avoiding a large knot of thickets that splays onto the plain.</p> <p>“Squire Kelwun, I noticed that you are a bit on edge. These tall grasses nipping at more than your stirrups? Maybe your spirit?”</p> <p>Kelwun, eyes darting amongst the prisoners, as though rechecking that he’s tied the knots suitably, answers, “Umm, no its not that,” he says trailing off, as though catching some unexpected movement amongst his prisoners.</p> <p>“Then what pray tell?”</p> <p>“I’m just a bit busy keeping my eye on the prisoners.”</p> <p>&ldquo;<em>Your</em> prisoners,&rdquo; reiterates Sir Weydlyn.</p> <p>“Yes, <em>my</em> prisoners. Just making sure their bonds are well suited. They…”</p> <section class="inline-comments"> <p><small>At this point, I consider what Kelwun has noticed of the prisoners. “Are the <i class="dfn">fancy bandits</i> eager to return to the tower?” I honestly don’t know. So instead of <i class="dfn">Asking the Stars</i> I’ll make a Luck Roll, and get a Crisis…something immediately bad.</small></p> </section> <p>“…don’t seem to be trying to escape,” says Kelwun.</p> <p>Sir Weydlyn draws a deep breath, leans towards Ingot’s head, running his fingers across the dark polished steel of Ingot’s curled horned helm, lazily asking, “and?”</p> <p>“And, that concerns me. We know them to be false. And to not attempt escape, well that, I dare think, means,” says Kelwun, as the three bandits each wince and test their bonds, “we’re probably returning them to welcoming arms.”</p> <p>Weydlyn halts Ingot, and locks his smouldering gaze with Kelwun, again asking “and?”</p> <p>That question hangs for a moment, as one of the three bandit’s eyes dart towards the thicket.</p> <p>“And, I think we should be prepared. Because, I think they’ve been nudging us.”</p> <p>The other bandits notice the first. They squint tilting their heads forward just a bit.</p> <p>“Prepared? And you’re now telling me this? No. Don’t answer. We could be walking into a trap.”</p> <p>Hisses split the sky, as the bandits dive off the deer trail into the tall overgrown grass, and arrows fly.</p> <h1 id="ambuscade">Ambuscade</h1> <section class="inline-comments"> <p><small> I check Weydlyn and Kelwun’s Clarity, both fail. No Guard for them. Four arrows fly at Weydlyn and 1 at Kelwun (I chose a d4 for each of them). </small></p> <dl class="org-dl"> <dt><small>Weydlyn</small></dt><dd><small>6, 3, 2, 1</small></dd> <dt><small>Kelwun</small></dt><dd><small>2</small></dd> </dl> <p><small> Weydlyn <i class="dfn">Denies</i> the 6. Fails the Clarity save, and is <i class="dfn">Fatigued</i>. With Armor 2, Weydlyn’s Vigor drops from 17 to 16. Kelwun’s Vigor drops from 8 to 6. </small></p> <p><small> Both have sustained a wound. I check Kelwun’s morale, and he’s ready to stay and fight. </small></p> <p><small> Without access to Feats, Weydlyn is far less dangerous. </small></p> </section> <p>An arrow pieces Kelwun’s thigh as he cries out. Another finds purchase between the plates of Weydlyn’s armor, sinking into the meat of his shoulder.</p> <p>Kelwun looks to Weydlyn, reaching for his javelin, noting that Weydlyn is pulling on Ingot’s reins for a hard turn. Seeing this, both knight and squire spur their horses into a galloping retreat.</p> <p>As hooves thunder amongst the tall grass, arrows again fly.</p> <section class="inline-comments"> <p><small> Two at Weydlyn and three at Kelwun.<sup><a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup> </small></p> <dl class="org-dl"> <dt><small>Weydlyn</small></dt><dd><small>6,1; dropping Weydlyn’s guard from 6 to 0. That’ll be a Scar. Disfigurement, a permanent mark on his Jaw.</small></dd> <dt><small>Kelwun</small></dt><dd><small>5,3,2; dropping Kelwun’s guard from 1 to 0. And reducing his vigor to 2. A Mortal Wound. I call for a Vigor save for Kelwun to stay horsed, but fails. He loses 4 more Vigor, dying in the fall.</small></dd> </dl> </section> <p>An arrow tears across Weydlyn’s jaw; a brief memory flashes of his forging of Ingot’s helmet; he snarls. And lowers himself spurring Ingot on. Gazing over his shoulder again, he sees an arrow sink into Kelwum’s neck. Weydlyn’s gaze holds a moment longer, as Kelwum slumps, bounces, then slides and caroms off of his horse. A horse pressing forward, spooked, and pulling at a leg still stirrup bound.</p> <p>Both horse and Weydlyn’s gaze shake free of Kelwum’s battered body. Growling and muttering a curse, Weydlyn rides on, steering Ingot southwest.</p> <section class="inline-comments"> <p><small> Weydlyn has a chance to shake off his Fatigue. And ends this portion of the day in the Wilderness. I get a 4 on my Wilderness Roll; no events. (Certainly not the Tower landmark). </small></p> <p><small> Reading Travel rules, Weydlyn’s spent the morning at Tompot’s and the afternoon in <code>9,1</code> and fleeing. Both were done as a Trek (e.g. 1 Hex). So he’ll be camping outside; meaning another Wilderness Roll: “Encounter the next Omen from the nearest Myth.” </small></p> </section> <h1 id="procedure-for-myth-when-only-having-a-player-facing-map">Procedure for Myth when Only Having a Player Facing Map</h1> <p>In <a href="https://takeonrules.com/2025/12/08/forged-from-the-worst-session-1/">Forged from the Worst: Session 1</a> Seer Tompot established that The Beast is on the western shores of the silver lake. That could mean the Beast is no more than 2 squares away, or as far as 5. <em>Asking the Stars</em> it seems likely that the Beast is the nearest Myth to <code>9,1</code> Hex: “No but…” Maybe equidistant? We’ll hold this lightly.</p> <p>I roll a random established Myth, and get “The Mountain.” Well, a mountain in the plains.</p> <blockquote class="h-cite"> Fur-clad monks pray toward the Mountain scattering stones, water, and coals in its direction. They warn that only the worthy can climb it. <footer>&mdash;<cite>Mystic Bastionland</cite> p81 </footer> </blockquote> <p>And that direction? South of <code>9,1</code>. This is enough to continue play.</p> <h1 id="an-evening-of-contemplation">An Evening of Contemplation</h1> <p>Sitting beside a small campfire, Weydlyn casts his gaze to Ingot and and Kelwum’s horse—he never did learn its name. Both graze after a hard afternoon of riding. Weydlyn thinks about when he first met Kelwum.<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> I <em>Ask the Stars</em> for their Signs and Positions: The Traveller (wandering - chance) Colliding (change - violence).<span class="hidden">)</span></span> </small> </p> <p>He had found Kelwum in the village streets, a blubbering mess, carrying on about his mother marrying a wicked man—a man that was scheming to kill Kelwum. Just as he had killed others. Tossing noose over gallows and kicking out the stool. Or so that’s what Kelwum said and Weydlyn remembered. Kelwum begged Sir Weydlyn to take him on as a squire.</p> <p>Weydlyn accepted, and being neither kind nor wicked towards Kelwum, set about working Kelwum as one might work steel on the forge. Folding fire and strength into his squire’s heart and soul.</p> <p>No tears came as Weydlyn looked into the embers of a fading fire. The embers throbbed and pulsed from muted burgundy to a glowing brilliant crimson. Weydlyn’s mind blank as he stared deeper into the eye of the fire.</p> <p>Was it an hour or a minute when he next heard Ingot and that other horse neigh. Reaching for his bolt-guisarme, Wedylyn rose, cursing as the smouldering echoes were all he could see.</p> <p>A weak poetic voice in the darkness spoke, “Traveler, might we join you by your fire? We too are travelers, no pilgrims, seeking an evening of warmth and rest.”</p> <p>As Weydlyn’s eyes adjusted, he saw 3 fur-clad monks bowing deep, each holding a bowl; one shimmering a bit as though catching the evening stars; the second smouldering embers and coal, the last filled with something unknown.</p> <p>Weydlyn snuffed, raising hand to chin and almost reaching to touch his field dressed jaw. His shoulder ached, as though pleading for soft bed and warm hearth.</p> <p>“Mayhaps, but answer me this. The night is warm, yet you fur clad. Why is that so?”</p> <p>“Ah, we are on a holy journey,” said another, as each reached into their bowl grabbed a pinch and cast it towards the campfire, “to the mountain, and in our supplication we hope it deems us worthy to ascend.”</p> <p>“A mountain you say? To the south? Those mountains are many leagues away. West of the great river.”</p> <p>“Oh not those, for there is one near. One that only the worthy may ascend,” says the third, who’s face looked as weather pocked and worn stone.</p> <p>Weydlyn nods, thinking of his map of the realm tucked into his saddle bags. Thinking to himself that there is no mountain on this side of the river.</p> <p>“Good monks, my fire has dwindled, providing poor company for this evening. Let us stoke the flames and share heart warming stories of the day.”</p> <p>The three bow graciously and they all set about fueling the fire. Weydlyn’s heart warms, for it is in the fire where he finds his solace.</p> <h1 id="reflections">Reflections</h1> <p>First, pour one out for Squire Kelwum. He was a tender heart, caught between a avoiding unwarranted violence and trying to “toughen up.” I’d imagine he chose to withhold information from Weydlyn, in part to avoid criticism.</p> <p>Second, Weydlyn’s a dick. And I felt him turning his discomfort into a question of Kelwum as one of those “would rather pick at someone than go to therapy” moments.</p> <p>I’m also quite satisfied with treating any knowledge Kelwum had as opaque to Weydlyn; that is Kelwum was filling a traditional <span><a href="https://en.wikipedia.org/wiki/Non-player_character">Non-Player Character</a></span> (<abbr title="Non-Player Character">NPC</abbr> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Non-Player Character”" title="Other site-wide references of “Non-Player Character”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-NPC">&#128214;</a></small>) role.</p> <p>I really love using Oracles to nudge things into a state of conflict, and felt that I had a reasonable flow. Made personally more interesting by withholding information and asking questions of the stars.</p> <p>I did not, however, ask the Oracle for the nature of the Crisis. It felt obvious. The prisoner’s attempting an escape against two mounted combatants did not feel correct. I suppose I could’ve <em>Asked the Stars</em> for a Sign. But the ambush felt right. And I can see a situation in which Sir Weydlyn would raise a warband to confront this brigandry.</p> <p>Without Guard available, the stakes felt high. And I got a better sense of just how delicate the characters are. For the second volley, I chose to randomize but with a likely lower number of arrows. The thought being that the assailants were likely also responding to the prisoners. Yet the same number of arrows flew. So perhaps there were more than 5?</p> <p>I didn’t give any consideration of Weydlyn would attempt to return for Kelwum. It felt as though grim pragmatism would lead Weydlyn on.</p> <p>For Weydlyn’s memory of Kelwum, I consulted the stars, rolled on a sparks table, and reincorporated his background. Also, it is quite clear that Weydlyn is inattentive.</p> <p>Playing in a world emerging—in which I’m trying to maintain ignorance of what would be behind the screen—is a fun little puzzle to resolve.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Forged%20from%20the%20Worst%3a%20Session%202">Reply by Email</a></p> Take on Rules Extending Emacs to Play Mythic Bastionland https://takeonrules.com/2025/12/09/extending-emacs-to-play-mythic-bastionland/ Tue, 09 Dec 2025 19:11:23 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/09/extending-emacs-to-play-mythic-bastionland/ emacs programming technologies <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Extending Emacs to Play Mythic Bastionland”"> <span role="listitem" aria-label="&ldquo;emacs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/05/managing-lightdark-scheme-in-macos-and-linux/" aria-label="Previous post tagged with &ldquo;emacs&rdquo; is &ldquo;Managing Light/Dark Scheme in MacOS and Linux&rdquo;" title="Older post tagged with &ldquo;emacs&rdquo; is &ldquo;Managing Light/Dark Scheme in MacOS and Linux&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/emacs/" class="p-category" aria-label="All posts tagged with &ldquo;emacs&rdquo;" title="All posts tagged with &ldquo;emacs&rdquo;">emacs</a> <a href="https://takeonrules.com/2025/12/10/extending-core-emacs-bookmark-package/" aria-label="Next post tagged with &ldquo;emacs&rdquo; is &ldquo;Extending Core Emacs Bookmark Package&rdquo;" title="Newer post tagged with &ldquo;emacs&rdquo; is &ldquo;Extending Core Emacs Bookmark Package&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;programming&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/05/managing-lightdark-scheme-in-macos-and-linux/" aria-label="Previous post tagged with &ldquo;programming&rdquo; is &ldquo;Managing Light/Dark Scheme in MacOS and Linux&rdquo;" title="Older post tagged with &ldquo;programming&rdquo; is &ldquo;Managing Light/Dark Scheme in MacOS and Linux&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/programming/" class="p-category" aria-label="All posts tagged with &ldquo;programming&rdquo;" title="All posts tagged with &ldquo;programming&rdquo;">programming</a> <a href="https://takeonrules.com/2025/12/10/extending-core-emacs-bookmark-package/" aria-label="Next post tagged with &ldquo;programming&rdquo; is &ldquo;Extending Core Emacs Bookmark Package&rdquo;" title="Newer post tagged with &ldquo;programming&rdquo; is &ldquo;Extending Core Emacs Bookmark Package&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;technologies&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/05/managing-lightdark-scheme-in-macos-and-linux/" aria-label="Previous post tagged with &ldquo;technologies&rdquo; is &ldquo;Managing Light/Dark Scheme in MacOS and Linux&rdquo;" title="Older post tagged with &ldquo;technologies&rdquo; is &ldquo;Managing Light/Dark Scheme in MacOS and Linux&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/technologies/" class="p-category" aria-label="All posts tagged with &ldquo;technologies&rdquo;" title="All posts tagged with &ldquo;technologies&rdquo;">technologies</a> <a href="https://takeonrules.com/2026/01/01/fallacy-of-record/" aria-label="Next post tagged with &ldquo;technologies&rdquo; is &ldquo;Fallacy of Record&rdquo;" title="Newer post tagged with &ldquo;technologies&rdquo; is &ldquo;Fallacy of Record&rdquo;"><small>&gt;</small></a> </span></span> <span aria-hidden="true"> :: </span><span class="label">Series:</span> <a href="https://takeonrules.com/2025/12/09/mythic-bastionland-session-reflection/" aria-label="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;" title="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;"><small> &lt; </small></a><cite><a href="https://takeonrules.com/series/forged-from-the-worst">Forged from the Worst</a></cite><a href="https://takeonrules.com/2025/12/10/forged-from-the-worst-session-2/" aria-label="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;" title="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;"><small> &gt; </small></a> </p/><p><strong>Summary: </strong> Swapping out bookmarks while playing #MythicBastionland then restoring when finished. Also opening PDFs to random pages to simulate rolling on #RandomTables. </p> <p>For playing <cite><a href="https://www.drivethrurpg.com/en/product/514996/mythic-bastionland?affiliate_id=318171">Mythic Bastionland</a></cite> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Mythic Bastionland”" title="Other site-wide references of “Mythic Bastionland”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND">&#128214;</a></small> , I’ve been using or building out tooling. First, I’m leaning on <a href="https://github.com/jeremyf/random-table.el">my random-tables package</a>. Next, while playing, I manually swapped out my baseline <span><a href="https://en.wikipedia.org/wiki/Emacs">Emacs</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Emacs”" title="Other site-wide references of “Emacs”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-EMACS">&#128214;</a></small> bookmarks for game specific bookmarks. Last, I began thinking about flipping to random PDF pages for inspiration.</p> <h2 id="swapping-out-bookmarks">Swapping Out Bookmarks</h2> <p>What I posted in <a href="https://takeonrules.com/2025/12/08/forged-from-the-worst-session-1/">Forged from the Worst: Session 1</a> worked, but I started thinking about how I might alter <span>Emacs</span> while running/playing the game. At first, this felt akin to turning on a minor mode. But the more I thought about it, it was more equivalent to using <code>org-clock</code>.</p> <p>A quick brainstorm, and I realized that while playing:</p> <ul> <li>I wanted different bookmarks.</li> <li>Additional snippets (for my knight and squires name).</li> <li>An indicator that I was playing the game.</li> <li>And depending on how I organize my campaign world notes, maybe I’d start a clock on the headline associated with my world notes.</li> </ul> <p>I haven’t yet implemented the world notes, but I have made adjustments for the others. Here’s what I have:</p> <p>First, I establish a variable to track the state of “playing/not playing.”</p> <pre><code class="language-emacs-lisp">(defvar playing-forged-from-the-worst nil &quot;When non-nil, indicates that I'm playing Forged from the Worst.&quot;) </code></pre> <p>Then I created a command to toggle that on and off:</p> <pre><code class="language-emacs-lisp">(defun toggle-forged-from-the-worst () &quot;Begin or end playing Forged from the Worst.&quot; (interactive) (load &quot;jf-mythic-bastionland.el&quot;) (setq playing-forged-from-the-worst (not playing-forged-from-the-worst)) (bookmark-load (if playing-forged-from-the-worst &quot;~/SyncThings/source/forged-from-the-worst/forged=from=the=worst--bookmarks.el&quot; &quot;~/emacs-bookmarks.el&quot;) t nil t)) </code></pre> <p>The command loads my random tables for the campaign. Toggles state. The loads the correct bookmarks based on state.</p> <p>To indicate that I’m “playing”, I then added a variable that I could use with my modeline:</p> <pre><code class="language-emacs-lisp">(defvar-local jf/mode-line-format/playing-fftw '(:eval (when (and (boundp playing-forged-from-the-worst) playing-forged-from-the-worst (mode-line-window-selected-p)) (concat (propertize &quot; 🎲 &quot; 'face 'mode-line-highlight) &quot; &quot;)))) </code></pre> <p>I add the variable into my <code>mode-line-format</code>:</p> <pre><code class="language-emacs-lisp">(setq-default mode-line-format '(&quot;%e&quot; &quot; &quot; jf/mode-line-format/timeclock jf/mode-line-format/org-clock jf/mode-line-format/vterm jf/mode-line-format/kbd-macro jf/mode-line-format/narrow jf/mode-line-format/playing-fftw jf/mode-line-format/buffer-name-and-status &quot; &quot; jf/mode-line-format/major-mode &quot; &quot; jf/mode-line-format/project &quot; &quot; jf/mode-line-format/vc-branch &quot; &quot; jf/mode-line-format/flymake &quot; &quot; jf/mode-line-format/eglot jf/mode-line-format/which-function )) </code></pre> <p>And ensure that I mark that variable as a <code>risky-local-variable</code>:</p> <pre><code class="language-emacs-lisp">(dolist (construct '( jf/mode-line-format/buffer-name-and-status jf/mode-line-format/eglot jf/mode-line-format/flymake jf/mode-line-format/kbd-macro jf/mode-line-format/playing-fftw jf/mode-line-format/major-mode jf/mode-line-format/misc-info jf/mode-line-format/narrow jf/mode-line-format/org-clock jf/mode-line-format/timeclock jf/mode-line-format/project jf/mode-line-format/vc-branch jf/mode-line-format/vterm jf/mode-line-format/which-function )) (put construct 'risky-local-variable t)) </code></pre> <p>With that, when I’m playing the game, I see a little dice in my mode-line and have access to game specific bookmarks. That clock part is going to gnaw at me, so I assume I’ll work through that once I’ve published this post.</p> <h2 id="flipping-to-random-pdf-page-in-emacs">Flipping to Random PDF Page in Emacs</h2> <p>In <a href="https://takeonrules.com/2025/12/09/mythic-bastionland-session-reflection/">Mythic Bastionland Session Reflection</a>, I thought about the fact that I now had the PDF bookmarked and could quickly, I assume, access the oracular information at the bottom of the Knight/Seer and Myths pages.</p> <p>My first pass was “what was the minimum viable command to open a random page in a PDF.” This involved reading the <code>pdf-view-bookmark-jump-handler</code> code and then setting about making it happen.</p> <p>What I’m presenting is not the first nor second pass, but instead a third iteration that introduces a bit more utility. But I digress.</p> <p>The algorithm I wanted was:</p> <ul> <li>Prompt for whether I wanted a Seer/Knight or a Myth page.</li> <li>Open the PDF in a dedicated window.</li> <li>Go to a random page based on selection.</li> </ul> <p>There are 72 Seer/Knight pages and 72 Myth pages. On a spread, the left page is a Seer/Knight and the right page is a Myth. The Seer/Knight starts on page 28.</p> <p>The random function started as:</p> <pre><code class="language-emacs-lisp">(+ (if seer-knight 28 29) (* (random 72) 2)) </code></pre> <p>That is pick a number between 0 and 71, multiple that by 2, then add 28 or 29 depending on Seer/Knight or Myth.</p> <p>I would then use <code>find-file</code> and in that buffer call <code>pdf-view-goto-page</code>. It was inelegant but was quick to verify general behavior.</p> <p>Then I set about creating a better user experience. Below is the <code>random-pages</code> to choose from, and their relevant information of what file and how to pick a page.</p> <pre><code class="language-emacs-lisp">(defvar random-pages '((&quot;Knights/Seers&quot; . (:file &quot;~/Documents/RPGs/Mythic Bastionland/mythic=bastionland--core-rules__rules_systems.pdf&quot; :callback (lambda () (pdf-view-goto-page (+ 28 (* (random 72) 2)))))) (&quot;Myths&quot; . (:file &quot;~/Documents/RPGs/Mythic Bastionland/mythic=bastionland--core-rules__rules_systems.pdf&quot; :callback (lambda () (pdf-view-goto-page (+ 29 (* (random 72) 2))))))) &quot;An alist where `car' is the label and `cdr' is a plist with :file and optional :callback. We'll open the :file, then if a :callback is present, we'll run that callback on the newly opened file.&quot;) </code></pre> <p>Next up is the function to open the random page in a dedicated window; with the happy little “bind <kbd>g</kbd> to pick a new random page.”</p> <pre><code class="language-emacs-lisp">(defun random-page (&amp;optional label set) &quot;Open the file from SET with given LABEL. SET is assumed to be an alist with `car' as the label and `cdr' a plist with :file and :callback. See `random-pages' for more information.&quot; (interactive) (let* ((set (or set random-pages)) (label (or label (completing-read &quot;Source: &quot; set nil t))) (source (alist-get label set nil nil #'string=)) (file (plist-get source :file)) (display-buffer-mark-dedicated t) (buffer (or (find-buffer-visiting file) (find-file-noselect file)))) ;; We'll pop open a dedicated side window with ample space for ;; viewing a new file. (pop-to-buffer buffer '((display-buffer-in-side-window) (side . right) (window-width 72) (window-parameters (tab-line-format . none) (mode-line-format . none) (no-delete-other-windows . t)))) (with-current-buffer buffer ;; As a courtesy let's bind &quot;g&quot; to refresh re-invoke the ;; random-page using the same label. (local-set-key (kbd &quot;g&quot;) (lambda () (interactive) (random-page label))) ;; I envision that not every random-page would have a callback. ;; Which highlights that perhaps the function name 'random-page' ;; is a misnomer based on my nascent understanding of what this ;; could be. (when-let ((callback (plist-get source :callback))) (funcall callback))))) </code></pre> <p>What the above does is pop open a window on the right, with plenty of space to view the whole page. That window gets focus and I can close it <kbd>q</kbd> or re-roll with <kbd>g</kbd>. It also does the work to re-use a buffer if it already exists.</p> <details><summary>An animated GIF demontsrating the functions along with a list of commands called.</summary> <figure aria-hidden="true"> <img src="https://takeonrules.com/images/2025-12-09-demo.gif" alt="" data-original-url="https://takeonrules.com/images/2025-12-09-demo.gif" width="720" height="438" data-width="720" data-height="438" /> </figure> <ul class="org-ul"> <li><code>M-x consult-bookmark</code> to show starting bookmarks.</li> <li><code>M-x jf/mode-line-format/playing-fftw</code> to start playing “Forged from the Worst.”</li> <li><code>M-x consult-bookmark</code> show a list of the game specific bookmarks.</li> <li><code>M-x random-page REG Seer/Knight RET</code> to pop open a random Knight/Seer page from the <cite>Mythic Bastionland</cite> rule book.</li> <li>Then <kbd>g</kbd> a few times to pick a new random Knight/Seer page each time.</li> </ul> </details> <h2 id="conclusion">Conclusion</h2> <p>I love the virtuous cycle of playing a game, having a tool to support that game-play, and knowing that I can extend the tool to facilitate play. The result tends towards a generative feedback loop.</p> <p>And both my during play moments of reflection as well as after play write-ups helped me consider what might be interesting to add to my tool chain. Which fed into exploring existing functionality and implementation to craft something just a bit new.</p> <p>Now to think about my next session of <a href="https://takeonrules.com/series/forged-from-the-worst">Forged from the Worst</a>. And attending to how I write up campaign notes while running. See what’s missing, maybe work and clocking time there. That would mean I’d have access to capture content to that clock, and could leverage more native <span><a href="https://orgmode.org/">Org-Mode</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Org-Mode”" title="Other site-wide references of “Org-Mode”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-ORG-MODE">&#128214;</a></small> functionality.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Extending%20Emacs%20to%20Play%20Mythic%20Bastionland">Reply by Email</a></p> Take on Rules Mythic Bastionland Session Reflection https://takeonrules.com/2025/12/09/mythic-bastionland-session-reflection/ Tue, 09 Dec 2025 17:46:12 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/09/mythic-bastionland-session-reflection/ reflections rpgs <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Mythic Bastionland Session Reflection”"> <span role="listitem" aria-label="&ldquo;reflections&rdquo; tag navigation"><a href="https://takeonrules.com/2025/08/25/on-sunrise-arriving-later-each-day/" aria-label="Previous post tagged with &ldquo;reflections&rdquo; is &ldquo;On Sunrise Arriving Later Each Day&rdquo;" title="Older post tagged with &ldquo;reflections&rdquo; is &ldquo;On Sunrise Arriving Later Each Day&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/reflections/" class="p-category" aria-label="All posts tagged with &ldquo;reflections&rdquo;" title="All posts tagged with &ldquo;reflections&rdquo;">reflections</a> <a href="https://takeonrules.com/2025/12/21/game-procedures-as-bridges-from-potential-to-actual/" aria-label="Next post tagged with &ldquo;reflections&rdquo; is &ldquo;Game Procedures as Bridges from Potential to Actual&rdquo;" title="Newer post tagged with &ldquo;reflections&rdquo; is &ldquo;Game Procedures as Bridges from Potential to Actual&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;rpgs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/08/forged-from-the-worst-session-1/" aria-label="Previous post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 1&rdquo;" title="Older post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 1&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/rpgs/" class="p-category" aria-label="All posts tagged with &ldquo;rpgs&rdquo;" title="All posts tagged with &ldquo;rpgs&rdquo;">rpgs</a> <a href="https://takeonrules.com/2025/12/10/forged-from-the-worst-session-2/" aria-label="Next post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;" title="Newer post tagged with &ldquo;rpgs&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;"><small>&gt;</small></a> </span></span> <span aria-hidden="true"> :: </span><span class="label">Series:</span> <a href="https://takeonrules.com/2025/12/08/forged-from-the-worst-session-1/" aria-label="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 1&rdquo;" title="Older post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Forged from the Worst: Session 1&rdquo;"><small> &lt; </small></a><cite><a href="https://takeonrules.com/series/forged-from-the-worst">Forged from the Worst</a></cite><a href="https://takeonrules.com/2025/12/09/extending-emacs-to-play-mythic-bastionland/" aria-label="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;" title="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;"><small> &gt; </small></a> </p/><p><strong>Summary: </strong> With one #solo #rpg session in the books, I take a bit to assess and reflect on my experience. Will there be more sessions? I’ll need to Ask the Stars. </p> <p>What follows are my reflections on <a href="https://takeonrules.com/2025/12/08/forged-from-the-worst-session-1/">Forged from the Worst: Session 1</a>.</p> <p>I reviewed the aggregate list of resources from <a href="https://elmc.at/running-mythic-bastionland/#resources">Running Mythic Bastionland</a>. Reading Chris McDowall’s <a href="https://www.bastionland.com/2025/04/landmark-sites-sanctum.html">BASTIONLAND: Landmark Sites - Sanctum</a>, I think of how quick I placed Sir Weydlyn in the presence of a <em>Seer</em>. Something to consider going forward.</p> <p>Then, I listened to <a href="https://luckroll.blogspot.com/2025/03/mythic-bastionland-knotte-session-1.html">Luck Roll: Mythic Bastionland - Knotte - Session 1</a>, I must consider that Sir Weydlyn appeared <em>en media res</em> . Which works, but I’ll want to consider the question: “Why this realm?”</p> <p>With those larger contexts, I’m going to dive into my thoughts.</p> <p>First and foremost, combat is intense and decisive. With a 17 Vigor, it feels like Sir Weydlyn can safely <em>Smite</em>. But his other Virtues are low, meaning I can only assume he could use one of these once, before experiencing <em>Fatigue</em>.</p> <p>The combat decisions feel meaningful; do I go for maximum damage or attempt a <em>Gambit</em> to sustain, press, or create an advantage? Having given Sir Weydlyn the initiative, and allowing for an initial burst was perhaps generous, but given my exploration of the system feels appropriate.</p> <p>With his high <em>Guard</em>, <em>Vigor</em> and <em>Armor</em> 2, charging into a volley of arrows likely wouldn’t have changed much. It really was the <em>Burst</em> that set the stage for the rout.</p> <p>Next, those seers. Reading those terse three bullet points, I felt as though I could play to the weirdness and idiosyncrasies of the Tangled Seer. I’d imagine at a group table in which I were running these games, I’d feel that exhilaration of improvising a bit of apparent insanity.</p> <p>One thing I want to remember is to also briefly study the image associated with the seer; it too is evocative and operates at a different level from the seer’s text.</p> <p>In writing the dialogue of Sir Weydlyn, and his announcement of no quarter, I knew that Squire Kelwun, with his piety and witness to an execution, could provide a good foil to the grim nature of his knight. So I chose to introduce tension and sustain it.</p> <p>From a play stand-point, I found considerable utility having the PDF of <cite><a href="https://www.drivethrurpg.com/en/product/514996/mythic-bastionland?affiliate_id=318171">Mythic Bastionland</a></cite> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Mythic Bastionland”" title="Other site-wide references of “Mythic Bastionland”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND">&#128214;</a></small> and bookmarking specific pages. As I write this, and know the auguries at the bottom of the book, I am contemplating a function to “open the PDF to a random Knight/Seer or Myth page.” So that I might quickly reference those tables (without need of transcription).</p> <p>As I was playing, and Squire Kelwun suggested traveling to the tower, I felt that direction served three aspects:</p> <ul> <li>Increase the fictional tension between squire and knight.</li> <li>Set in motion two settlements.</li> <li>Create a location triangle in the fiction: tower, castle, and lake.</li> </ul> <p>Digging into that location triangle a bit more, I’ve encumbered Sir Weydlyn with a <em>Promise</em> to a Seer to go to the castle, a begrudged acceptance that offloading prisoners sooner rather than later makes sense, and knowledge that a <em>Myth</em> (and adventure) lurks near the silver lake.</p> <p>Heading towards the tower also moves towards answering that lingering setup question about the <em>fancy bandits</em> relation to the settlement. Oh the vindication that Sir Weydlyn will feel if they return those prisoners not to justice but to their awaiting homes and friends.</p> <p>Aside from character creation and generating the map (as well as what you read in the <a href="https://takeonrules.com/2025/12/08/forged-from-the-worst-session-1/">Forged from the Worst: Session 1</a>) I have done no additional preparation. My plan is to do this all <em>just in time</em>. What this means is as knight and squire head towards the tower, I’ll determine if there’s a barrier. I have a bit of preparation to translate realm creation for a traditional GM role into a process for solo exploration.</p> <p>Yes, I could establish all of the barriers, and know them ahead of time. However, I find a narrative excitement when playing and needing to consult an oracle for information regarding the world. That oracle is bringing forth personal symbols from my experiences, interweaving them with the language and prompts of both the oracle’s words and images, as well as the fiction as presented.</p> <p>In other words, I can use all of this to <em>play to find out</em> .</p> <p>Last, I think about two solo campaigns. First <time datetime="2024-10" title="2024-10">in the fall of last year</time>, I was exploring <span><a href="https://www.drivethrurpg.com/en/publisher/2/chaosium?keyword=pendragon?affiliate_id=318171">Pendragon</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Pendragon”" title="Other site-wide references of “Pendragon”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-PENDRAGON">&#128214;</a></small> , see the following:</p> <ul> <li>Building a Family History for Pendragon</li> <li>On Starting a Solo Pendragon Campaign</li> <li>The Great Pendragon Campaign: Year 490</li> </ul> <p>But I lost steam. Why? Well there was a disheartening election, paired with moving into our house, and closing our retail store. Then, I found myself really enjoying reading a myriad of books. The time and space away from the game, has me thinking fondly of the system and the mini-game of character creation.</p> <p>Second, I think of The Travels of Duinhir Tailwind. I haven’t fully closed that game out, but I’m looking at the character sheet of Duinhir Tailwind versus Sir Weydlyn, and appreciate the terse nature.</p> <p><cite>Mythic Bastionland</cite> has less character sheet overhead, which I find refreshing. And while the Virtues and Passions of <span>Pendragon</span> are fantastic for solo-play, a flavorful oracle can do quite a lot of work.</p> <p>And, there’s the cognitive load/fatigue of playing a game in such a well established world. There’s the mood and tone to consider, but also the “fiction” as established. I’ll see how the travel procedures of <cite>Mythic Bastionland</cite> play out.</p> <p>Which is to say, for now, I’ve found a nice shiny to play with. And I’m enjoying the writing opportunity as well as building my toolbox for running this game. Now, to write that <span><a href="https://en.wikipedia.org/wiki/Emacs">Emacs</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Emacs”" title="Other site-wide references of “Emacs”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-EMACS">&#128214;</a></small> function to lookup random pages.</p> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Mythic%20Bastionland%20Session%20Reflection">Reply by Email</a></p> Take on Rules Forged from the Worst: Session 1 https://takeonrules.com/2025/12/08/forged-from-the-worst-session-1/ Mon, 08 Dec 2025 20:44:15 -0500 [email protected] (Jeremy Friesen) https://takeonrules.com/2025/12/08/forged-from-the-worst-session-1/ rpgs sessions <p>Related Links :: <span class="label">Tags:</span> <span role="list" aria-label="Tags for “Forged from the Worst: Session 1”"> <span role="listitem" aria-label="&ldquo;rpgs&rdquo; tag navigation"><a href="https://takeonrules.com/2025/12/03/musing-about-dolmenwood/" aria-label="Previous post tagged with &ldquo;rpgs&rdquo; is &ldquo;Musing about Dolmenwood&rdquo;" title="Older post tagged with &ldquo;rpgs&rdquo; is &ldquo;Musing about Dolmenwood&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/rpgs/" class="p-category" aria-label="All posts tagged with &ldquo;rpgs&rdquo;" title="All posts tagged with &ldquo;rpgs&rdquo;">rpgs</a> <a href="https://takeonrules.com/2025/12/09/mythic-bastionland-session-reflection/" aria-label="Next post tagged with &ldquo;rpgs&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;" title="Newer post tagged with &ldquo;rpgs&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;"><small>&gt;</small></a> </span><span aria-hidden=true> &middot; </span> <span role="listitem" aria-label="&ldquo;sessions&rdquo; tag navigation"><a href="https://takeonrules.com/2025/03/19/the-travels-of-duinhir-tailwind-session-13/" aria-label="Previous post tagged with &ldquo;sessions&rdquo; is &ldquo;The Travels of Duinhir Tailwind: Session 13&rdquo;" title="Older post tagged with &ldquo;sessions&rdquo; is &ldquo;The Travels of Duinhir Tailwind: Session 13&rdquo;"><small>&lt;</small></a> <a href="https://takeonrules.com/tags/sessions/" class="p-category" aria-label="All posts tagged with &ldquo;sessions&rdquo;" title="All posts tagged with &ldquo;sessions&rdquo;">sessions</a> <a href="https://takeonrules.com/2025/12/10/forged-from-the-worst-session-2/" aria-label="Next post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;" title="Newer post tagged with &ldquo;sessions&rdquo; is &ldquo;Forged from the Worst: Session 2&rdquo;"><small>&gt;</small></a> </span></span> <span aria-hidden="true"> :: </span><span class="label">Series:</span><small aria-hidden="true"> &lt; </small><cite><a href="https://takeonrules.com/series/forged-from-the-worst">Forged from the Worst</a></cite><a href="https://takeonrules.com/2025/12/09/mythic-bastionland-session-reflection/" aria-label="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;" title="Newer post in &ldquo;Forged from the Worst&rdquo; is &ldquo;Mythic Bastionland Session Reflection&rdquo;"><small> &gt; </small></a> </p/><p><strong>Summary: </strong> In which we establish our realm and we first meet Knight-Errant Sir Weydlyn, his helmed steed Ingot, and Squire Kelwum. </p> <p class="verse"> Gravid beats on ferrous slab, thick air a crimson sheen<br /> Each mallenstroke leaves scars aworn, apparent and unseen<br /> </p> <p>I’m going to start playing a solo campaign of <cite><a href="https://www.drivethrurpg.com/en/product/514996/mythic-bastionland?affiliate_id=318171">Mythic Bastionland</a></cite> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Mythic Bastionland”" title="Other site-wide references of “Mythic Bastionland”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND">&#128214;</a></small> . I’ll be using <span><a href="https://en.wikipedia.org/wiki/Emacs">Emacs</a></span> <small><a class="ref" rel="tag opener" aria-label="Other site-wide references of “Emacs”" title="Other site-wide references of “Emacs”" href="https://takeonrules.com/site-map/glossary/#abbr-dfn-GLOSSARY-EMACS">&#128214;</a></small> to manage the campaign.</p> <p>For my knight, I rolled up The Forge Knight; one knighted by The Worst Seer. I opted for a Knight-Errant and have the following characteristics:</p> <ul> <li><strong>Guard:</strong> 6</li> <li><strong>Clarity:</strong> 5</li> <li><strong>Spirit:</strong> 3</li> <li><strong>Vigor:</strong> 17</li> <li><strong>Glory:</strong> 0</li> <li><strong>Weapons:</strong> Bolt-guisarme (d10 long in melee or d10 slow ranged)</li> <li><strong>Armor:</strong> Gambeson (A1), Scale (A1)</li> <li><strong>Scars:</strong> blistered face; noise sensitivy</li> <li><strong>Steed:</strong> Ingot, Helmed steed (VIG 14, CLA 4, SPI 5, 4GD, d6 trample, A1)</li> <li><strong>Passion:</strong> Burning; restore SPI when you are wounded by fire.</li> <li><strong>Ability:</strong> Tempering Strike: when you cause a Wound with a melee weapon, that weapon receives +d8 until the end of combat. This effect can stack.</li> </ul> <p>I named this bruiser Sir Weydlyn and rolled up Squire Kelwum to accompany him:</p> <ul> <li><strong>Guard:</strong> 1</li> <li><strong>Clarity:</strong> 9</li> <li><strong>Spirit:</strong> 8</li> <li><strong>Vigor:</strong> 8</li> <li><strong>Steed:</strong> Pony (VIG 7, CLA 7, SP 2, 2GD)</li> <li><strong>Weapons:</strong> dagger (d6); three javelins (d6)</li> <li><strong>Upbringing:</strong> They were raised in a pious environment and carry memories of an execution.</li> <li><strong>Constraint:</strong> They will not eat meat.</li> </ul> <p>I’m referencing Plimbort’s guidance on <a href="https://plimbort.itch.io/solo-for-mythic-bastionland">Solo for Mythic Bastionland</a>; of which as the player, I know the general map of the realm, but am oblivious to where other things might be. I’ll instead use procedures to <em>play to find out</em> .</p> <p>Unlike the guidance of the solo-play, I chose to roll up the starting myths; though I only looked up the page so as to bookmark them. I got the following:</p> <ul> <li>the Beast</li> <li>the Fortress</li> <li>the Judge</li> <li>the Lich</li> <li>the Mountain</li> <li>the Wall</li> </ul> <p>I used the <a href="https://mythic.bastionland.tools/map">Realm Map</a> to generate a campaign for my suiting. What I like about this map is that there’s a major arterial river running north/south. Something that might facilitate travel.</p> <figure aria-hidden="true"><figcaption><p>A map of the Realm that Sir Weydlyn swore to protect.</p> </figcaption> <img src="https://takeonrules.com/images/forged-from-the-worst--campaign-map_hu_960bdbeff0c1c0b1.png" alt="" data-original-url="https://takeonrules.com/images/forged-from-the-worst--campaign-map.png" width="770" height="923" data-width="770" data-height="923" /> </figure> <p>Per the solo recommendations, I don’t know the locations of the staring Myth, Landmarks, nor Barriers. I’m also going to treat the river as a barrier; there will be bridges for crossing, but not in every hex.</p> <h2 id="setting-the-initial-situation">Setting the Initial Situation</h2> <p>From the solo rules, I looked at the starting point and tossed a d6 to see how Sir Weydlyn and Squire Kelwum starts… <em>a skirmish with bandits</em>.<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> The text is “Roll on the <em>Soldier</em> <em>Spark</em> tables. Will a nearby holding or dwelling be glad to see them gone, or wroth to have their raiders killed?”<span class="hidden">)</span></span> </small> </p> <p>Rolling on the <em>Sparks &gt; Combat &gt; Soldier</em> table I get <em>Fancy Scout(s)</em>.<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> Read that again…Fancy Scouts. Perhaps a Fancy Scout of Cornwood?<span class="hidden">)</span></span> </small> How many (1d6): 6. Looking at <em>Warfare</em> I don’t see “scouts” but figure “skirmishers” work: Vigor 10, Clarity 13, Spirit 10, 2GD, Shortbow (d6 long).<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> Yikes to archers.<span class="hidden">)</span></span> </small> </p> <p>Now which holding? The <em>Tower</em> in the northeast corner…we’ll name that in a bit.</p> <p>And how close? I’ll roll a d6; on a 1–2 it is the hex of the <em>Tower</em>; 3–5 adjacent hex; 6 two hexes away. I get an adjacent hex, and roll it is the grey plains to the northwest (coordinates <code>8,1</code>).<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> Note to self, I’m going to need a way of better tracking these things. Perhaps a sheet of paper? For now, coordinates are easier.<span class="hidden">)</span></span> </small> </p> <p>I review the Basic Rules. And think a bit about the situation. The question implies that combat has started. I wonder, why did Sir Weydlyn and Squire Kelwum engage these <em>fancy scouts</em>? Let’s <em>Ask the Stars</em> …The Elder (authority - tradition) Bowed (submission - mercy). Maybe they are threatening a <em>Seer</em>? Seems likely, let’s again <em>Ask the Stars</em> …and yes they are.</p> <p>I grab a d12 and d6, getting the <em>Tangled Seer</em>.<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> They are not quite here, but also too much of them is here. Appears as knotted appendages and faces, twisting in and out of the air.<span class="hidden">)</span></span> </small> Perhaps outside their humble academy.</p> <h2 id="skirmish-with-the-fancy-bandits">Skirmish with the Fancy Bandits</h2> <p>Sir Weydlyn and his squire having begun their journey into this mythic realm, traveling upon the grey plains. Near a copse of ash trees in bloom, they note six riding horses tethered up; adorned in finery, yet unattended. A cry of help and cursing erupts in the distance, coming from beyond the horses.</p> <p>“Come good Kelwum, something is amiss,” says Weydlyn as he spurs Ingot forward, “I hope we are not too late.” As they trot around the copse, through the waist high grasses, and see cleared land surrounding a small building, with a bell raised high on ashen beam.</p> <p>Between Sir Weydlyn and the building, somewhat scattered, are five men with short bows unbent. A sixth with walks amidst them with torch looking to light the arrows. All dressed in finery matching those of the horses.</p> <p>“You foul brigands, this fine academy, shall not submit,” rages a voice within the academy.</p> <p>“Then, I’m afraid, we shall make a pyre of you and yours,” howls the voice of the man with the firebrand.</p> <p>Sir Weydlyn’s eyes catch the firelight, and a grim smile bends his face. From trot to gallop, Weydlyn brandishes his bolt-guisarme, prepared to run over these bandits. “Kelwum, stay back, and should one escape give chase,” orders Sir Weydlyn, as he prepares for the clash.</p> <section class="inline-comments"> <p><small> Sir Weydlyn’s brings 1d10 (bolt-guisarme) + 1d6 (trample) dice and opts to invoke the <i class="dfn">Smite</i> feat to gain Blast. Can he hit them all with a blast? I <i class="dfn">Ask the Stars</i> and get a yes. Here comes the slop. </small></p> <p><small> Basic stats: Vigor 10, Clarity 13, Spirit 10, 2GD, Shortbow (d6 long) </small></p> <dl class="org-dl"> <dt><small>Bandit 1</small></dt><dd><small>10, 3; eliminate 2GD and Vigor is at 2; <i class="dfn">Mortally wounded</i> and dying.</small></dd> <dt><small>Bandit 2</small></dt><dd><small>4, 3; gambit impair (fails), eliminate 2GD, Vigor is at 9.</small></dd> <dt><small>Bandit 3</small></dt><dd><small>4, 3; gambit impair (success), eliminate 2GD, Vigor is at 9.</small></dd> <dt><small>Bandit 4</small></dt><dd><small>2, 2; eliminate 2GD; Inflict <i class="dfn">Scar</i> of <i class="dfn">Agony</i>, lose 11 Spirit, now <i class="dfn">Impaired</i>.</small></dd> <dt><small>Bandit 5</small></dt><dd><small>9, 1; eliminate 2GD and vigor at 3; <i class="dfn">Mortally wounded</i> and dying.</small></dd> <dt><small>Bandit 6 (with firebrand)</small></dt><dd><small>4, 3; gambit stop (fails), eliminate 2GD, Vigor is at 9.</small></dd> </dl> <p><small> And Weydlyn makes his <i class="dfn">Save</i> after using <i class="dfn">Smite</i>. And Weydlyn has wounded 4 bandits. That bolt-guisarme is going to be quite dangerous. </small></p> </section> <p>Grim determination sets Weydlyn in motion, charging into the archers, themselves confused, as they turn to face Ingot and Weydlyn explode amidst them. Weydlyn’s bolt-guisarme piercing in a flury, as though a hot poker stoking the coals of a fire. Ingot bashing and trampling, twisting the ankle of one as they avoid the worst of Ingot’s wrath. The others maintain their wits as they back away from Weydlyn and the helmed Ingot.</p> <section class="inline-comments"> <p><small>Consulting the rules, I see a call for a <i class="dfn">Wavering Morale</i>, check on Bandits 2, 3, and 4. Amazingly they all succeed. Bandit 2, 3, 4 move back and fire hoping that bandit 6 can pull Weydlyn from his horse. I grab 3d6 + 1d4 and roll: 1, 1, 3, 4. Their hope rests in unhorsing Weydlyn. So they inflict 3 damage; reducing Weylynd’s Guard from 6 to 3. And the Gambit fails as Sir Weydlyn succeeds at his save.</small></p> </section> <p>With wits about them, those with shortbows scatter, one limping along. And they hastily turn and fire, distracting Sir Weydlyn as the brigand with the fire brand attempts to pull Weydlyn down. Weydlyn feels the tug as Ingot pivots breaking the tenuous grapple of the brigand. Weydlyn bellows a laugh, “I am Sir Weydlyn, I offer no quarter nor assume any shall be given.”<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> This line came to me, as I realized the Sir Weydlyn offers only the fury of the fire.<span class="hidden">)</span></span> </small> </p> <section class="inline-comments"> <p><small>The <i class="dfn">Blast</i> option of <i class="dfn">Smite</i> is not available, so Sir Weydlyn needs to pick them off one at a time. I roll 1d10+4d8+1d6, netting: 8,7,6,5,5,1. That’s 7 base damage plus 3 for <i class="dfn">Bolster</i> and a <i class="dfn">Strong Gambit</i> for no save. Someone’s soaking 10 damage.</small></p> </section> <p>Making good on his grim declaration, he spurs Ingot towards the bandit already limping. Running him down, leaving a ruin of bone and blood. “Brigands and bandits, know this, I Sir Weydlyn have sworn a sacred oath to protect the realm. And I deem you a most wicked of threat to this glorious realm.”</p> <section class="inline-comments"> <p><small>With half of their ranks fallen, I again check for <i class="dfn">Wavering Morale</i>. There’s no real leader individual rolls. Rolling 11, 18, 19, the remaining all fail.</small></p> </section> <p>From the corner of Weydlyn’s eye, he sees Squire Kelwun and his pony ride after one of the bandits. Weydlyn hears Kelwun’s <em>melodic</em> voice shout, “halt and I shall claim you as my captive, your life shall be mine to spare.” The one bandit quickly drops to his knees and begs, accepting this chance of safety.</p> <p>As the other two bandits plead, with cracking voices, “We submit to you, oh merciful one.” Weydlyn curses under his breath, a hiss as though water poured over his hot iron heart.</p> <p>“Very well Squire Kelwun, these are your prisoners,” proclaims Weydlyn as he dismounts and approaches the dropped firebrand, watching as the flame sputters against the damp spring grasses.</p> <p>“And I do so hope that these caged birds will sing of why they attacked this academy,” barks Weydlyn as he drives his boot into the smouldering fire brand; his heart yearning that this were instead the dried thatch of harvest time.</p> <h2 id="the-tangled-seer">The Tangled Seer</h2> <p>Weydlyn winces as the small bell rings, piercing his reverie. He shifts his head, teeth clenched and looks upon a confusion of a man, fussing and flapping, as though himself tethered to the bell.</p> <p>“Sir Weydlyn, I am Tompot, at least so I’m told, and you have, I believe—yes, I think—saved me and perhaps, most probably, my academy…well the realms academy…if they might claim it,” bumbled the man as he found his ill-fitting clothes now tangled on the bell chord. All efforts to untangle, being met by both a piercing ring, and further ensnarement.</p> <p>Sir Weydlyn, bites his lip, breaths deep, and dismounts, walking towards the bell. His walk a chainmail song. “Here, let me help,” growls Sir Weydlyn, as he draws his dagger, Tompot wincing for a moment, then noticing the blade cut the chord; freeing Tompot from one tether, though finding himself now caught in what looks like twice as many clothes—none well-fitting.</p> <p>“Ah, thank you again for rescuing me. Though…perhaps this is not a good thing,” replies Tompot, as he stops moving, letting his clothes settle, as though a pine tree laden with heavy wet winter snow, “as I have said, you have saved me and this academy. How shall I reward you? Ah, you a knight of the realm, your squire as yet unpledged. Yes, what might I a humble school master give?”</p> <p>“You know my oaths,” states Sir Weydlyn, speaking slower, as to not sound irritated, “answer me true, are you a Seer?”</p> <p>“I have been known to be that. Yes,” replies Tompot, furrowing his brow as though a thought shattered as glass upon stone. “Yes, at least until this day ends, I’m a seer.”</p> <p>Drawing a deep, cooling breath, Weydlyn begins, “Then I ask nothing more of you than to know of what plagues realm. For I am oathbound to protect this realm.”</p> <p>“Nothing more than what ails this realm?” asks Tompot, lucid in his confusion regarding Weydlyn’s response.</p> <p>“Nothing,” affirms Sir Weydlyn.</p> <p>For a moment, Tompot’s face twists as though beard and brow were in a row, then in a clear and certain voice he speaks in verse<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> The five lines are the lines of verse from each of the <em>Myths</em>.<span class="hidden">)</span></span> </small> :</p> <p class="verse"> In cutting coil and snatching horn and crushing limb abound<br /> Tameless creature sees no knight, no seer, no king a’found<br /> <br /> A cage in stone, all thorned and vast<br /> Disguise a scheme in shadows cast<br /> <br /> In time she calls for all the knights<br /> Upon the best her blade still bites<br /> <br /> From fable’s heart springs fable’s fear, a past within a past<br /> From time before our nightmares still, made flesh by sullen mass<br /> <br /> Cutting through the land, a wonder two storms tall<br /> Guarding from invasion, or built to cage us all<br /> <br /> How earth ajoys to lay frailty bare<br /> Render us small in its coldstone stare<br /> </p> <p>While listening to the recitation Sir Weydlyn catches himself, wanting to interrupt and hurry on this doddering Seer. And when Tompot finish, Weydlyn’s wrath boils over, “You twisted man in riddles speak,” simmering down he continues, “…oh I spoke in haste and do apologize, as my ears and mind fail to unwind your riddled verse. Of those you speak, I wish to know more of this timeless creature. Where might I find it?”</p> <p>“Now that is a bit more than you first asked, though I guessed as much and said as less. For our score is settled and were I to yield more, I require less… less visitors from that cursed castle to the south west. These men, they insist on bringing messages and knowledge new, as though to barter for visions and knowledge held.”</p> <p>Sir Weydlyn, releases his held breath, as though opening the furnace door, “I can travel there and issue your demands, though I don’t know what sway I hold.”</p> <p>“All I ask, is that you ask. Now go, then return and I’ll tell you more,” commands Tompot.</p> <p>“Good Tompot, share this little truth before I depart, and I do so <em>swear</em> that I shall deliver your demands and petition those of the castle to take heed.”<small class="side-container"> <span class="side-label"><span class="hidden">(</span>Sidenote<span class="hidden">:</span></span> <span class="side" role="note"> Drawn from <a href="https://www.valerialoves.com/promises-a-mythic-bastionland-house-rule/">Promises - a Mythic Bastionland House Rule | Valeria Loves</a>. Looking at Weydlyn’s virtues, convincing someone might be a bit of a challenge.<span class="hidden">)</span></span> </small> </p> <p>Tompot writhes, again twisting and undulating within his clothes, as though many snakes sought to spill from these robes, “Very well, I accept your <em>Promise</em>. And give you this look for the fell beast on the western shores of the silver lake south east of here.”</p> <p>Sir Weydlyn bows deeply, “Thank you Tompot, I shall leave you this morning and make haste for the castle. Kelwun, are your prisoners bound by oath or leather, for we must ride to the castle.”</p> <p>“Sir, there’s a tower nearby, surely we could first take <em>the</em> prisoners…”</p> <p>“<em>Your</em> prisoners Kelwum. Yours!”</p> <p>“Yes, my prisoners,” continues Kelwum, “and perhaps there’s justice or reward offered in the tower. I’ve bound my prisoners hands, they’ll walk. We should also get their horses.”</p> <p>Sir Wydlyn growls eyeing the noon day sun. “Listen Kelwum’s prisoners, to attempt escape is to forfeit your life. We make for the tower.”</p> <h2 id="technicalities">Technicalities</h2> <p>I’m looking to reuse existing <span>Emacs</span> functionality. First, while playing, I’ve set custom bookmarks. When I invobke the following, it clobbers my default bookmarks and instead uses the given file.</p> <pre><code class="language-emacs-lisp">(bookmark-load &quot;~/SyncThings/source/campaign-forged-from-the-worst.el&quot; t nil t) </code></pre> <p>That file has links to various PDFs and web pages related to the campaign or how to run <cite>Mythic Bastionland</cite> .</p> <p>I also registered a new random table, using my <a href="https://github.com/jeremyf/random-table.el">random-table.el package (code on Github)</a>:</p> <pre><code class="language-emacs-lisp">(random-table/register :name &quot;Mythic Bastionlan &gt; Forged from the Worst &gt; Myth&quot; :data '(&quot;The Beast&quot; &quot;The Fortress&quot; &quot;The Judge&quot; &quot;The Lich&quot; &quot;The Mountain&quot; &quot;The Wall&quot;)) </code></pre> <p>The “Forged from the Worst” table provides a means of determining a random applicable myths.</p> <p>I also transcribed the following tables from <a href="https://bit.ly/askthestars">Chris McDowall’s Ask the Stars</a>, to use those for augury rolls.</p> <pre><code class="language-emacs-lisp">(random-table/register ;; From https://bit.ly/askthestars :name &quot;Ask the Stars &gt; Yes or No&quot; :roller (lambda (&amp;optional table) (if (yes-or-no-p &quot;Is the answer likely yes?&quot;) (max (+ 1 (random 12)) (+ 1 (random 12))) (min (+ 1 (random 12)) (+ 1 (random 12))))) :data '(&quot;No&quot; &quot;No&quot; &quot;No&quot; &quot;No but&quot; &quot;No but&quot; &quot;No but&quot; &quot;Yes but&quot; &quot;Yes but&quot; &quot;Yes but&quot; &quot;Yes&quot; &quot;Yes&quot; &quot;Yes&quot;)) (random-table/register ;; From https://bit.ly/askthestars :name &quot;Ask the Stars &gt; Signs &amp; Positions&quot; :data '(&quot;- Sign :: {Ask the Stars &gt; Sign}\n- Position :: {Ask the Stars &gt; Position}&quot;)) (random-table/register :name &quot;Ask the Stars &gt; Sign&quot; :private t :data '(&quot;The Fang (hostility - fear)&quot; &quot;The Wings (freedom - nature)&quot; &quot;The Cage (protection - obligation)&quot; &quot;The Hand (creation - misdirection)&quot; &quot;The Mask (persuasion - shame)&quot; &quot;The Eye (judgement - secrets)&quot; &quot;The Child (learning - greed)&quot; &quot;The Traveller (wandering - chance)&quot; &quot;The Elder (authority - tradition)&quot; &quot;The Ship (direciton - struggle)&quot; &quot;The Council (opposition - cycles)&quot; &quot;The Legion (unification - identity)&quot;)) (random-table/register :name &quot;Ask the Stars &gt; Position&quot; :private t :data '(&quot;Rising (growth - possibility)&quot; &quot;Entombed (memory - death)&quot; &quot;Twinned (intimacy - dependency)&quot; &quot;Waning (desire - decay)&quot; &quot;Rooted (stability - plenty)&quot; &quot;Bowed (submission - mercy)&quot; &quot;Colliding (change - violence)&quot; &quot;Burning (honesty - pride)&quot; &quot;Veiled (faith - deceit)&quot; &quot;Exiled (guilt - autonomy)&quot; &quot;Crowned (ambition - ruin)&quot; &quot;Reflected (reversal - vanity)&quot;)) </code></pre> <p><a class="reply-by-email" href="mailto:[email protected]?subject=RE:Forged%20from%20the%20Worst%3a%20Session%201">Reply by Email</a></p> Take on Rules