{"@attributes":{"version":"2.0"},"channel":{"title":"Take on Rules","link":"https:\/\/takeonrules.com\/","description":"Recent content for Take on Rules","generator":"Hugo -- gohugo.io","copyright":"Copyright 2026, Jeremy Friesen","language":"en-us","managingEditor":"jeremy@takeonrules.com (Jeremy Friesen)","webMaster":"jeremy@takeonrules.com (Jeremy Friesen)","docs":"https:\/\/cyber.harvard.edu\/rss\/rss.html","lastBuildDate":"Fri, 27 Feb 2026 08:12:48 -0500","item":[{"title":"Local Library Programming","link":"https:\/\/takeonrules.com\/2026\/02\/27\/local-library-programming\/","pubDate":"Fri, 27 Feb 2026 08:12:48 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2026\/02\/27\/local-library-programming\/","category":["personal","poetry"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cLocal Library Programming\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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;\u00abA Poetry Handbook\u00bb by Mary Oliver&rdquo;\" title=\"Older post tagged with &ldquo;poetry&rdquo; is &ldquo;\u00abA Poetry Handbook\u00bb by Mary Oliver&rdquo;\"><small>&lt;<\/small><\/a>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nEstablishing intentional plans for personal enrichment.\n<\/p>\n        <p>As I understand it, in mid-<time datetime=\"2025\" title=\"2025\">2025<\/time> the topic of personal curriculum started\nemerging on TikTok.  Jenny, then working at a small local library, sought to add\na Personal Curriculum segment to the library programming.  The schedule up until\nthe turn of the year was packed.<\/p>\n<p>So they scheduled a session for January; but due to inclement weather, postponed\nthe inaugural session until <time datetime=\"2026-02-26\" title=\"2026-02-26\">yesterday<\/time>.<\/p>\n<p>There were five attendees with Jenny facilitating.  She introduced the concept\nwith a presentation, a mix of examples and videos, highlighting the breadth of\nwhat others had considered as well as how to write a curriculum:<\/p>\n<ul>\n<li>topic<\/li>\n<li>learning objectives and tangible outputs<\/li>\n<li>secondary outcomes<\/li>\n<li>potential resources<\/li>\n<li>schedule of activity<\/li>\n<\/ul>\n<p>Jenny emphasized that the topic should be of interest, one in which you have\nsome basic knowledge, and identifying a goal to achieve.  Everything else was in\nsupport of enriching a personal interest.<\/p>\n<p>Jenny gave her example: Color Theory.  With a list of weekly activities.  And a\nfinal outcome.<\/p>\n<p>The others of us shared our ideas:<\/p>\n<ul>\n<li>Bassoon reed making<\/li>\n<li>Mushroom foraging<\/li>\n<li>Either ancient history or true crime<\/li>\n<\/ul>\n<p>For myself, I came with a list of possibilities:<\/p>\n<ul>\n<li>poetry<\/li>\n<li>standing up a media server<\/li>\n<li>reading chonky books<\/li>\n<li>doodling<\/li>\n<\/ul>\n<p>And while we were discussing our topics, I began narrowing mine.  I knew that I\nwanted to avoid technology for my first foray; after all I\u2019m on a computer all\nday.  I looked to my other topics and narrowed poetry to haiku and chonky books\nto <cite data-id=\"works-don-quixote\">Don Quixote<\/cite>; with secondary sources.<\/p>\n<p>We had a great shared conversation, I asked the young patron about their\ninterest in ancient history.  And knowing she was a young mother, made mention\nof Dan Carlin\u2019s <em>Hardcore History<\/em>.  Something she could listen to in those\nmoments between parenting.<\/p>\n<p>As the session wound down I settled on a 4 week exploration of Haiku.  We also\nagreed to meet in 4 weeks to check-in and report back.<\/p>\n<h1 id=\"started-a-personal-curriculum-haiku\">STARTED A Personal Curriculum: Haiku<\/h1>\n<ul>\n<li><strong>Outcome:<\/strong> Assemble a small haiku zine (8 or so)<\/li>\n<li><strong>Secondary Outcomes:<\/strong> Read classic haikus.  Read on writing haiku.<\/li>\n<li><strong>Timeframe:<\/strong> 4 weeks<\/li>\n<\/ul>\n<p><strong>Throughout:<\/strong><\/p>\n<ul>\n<li>Write with pen and pencil on paper; one goal is to disconnect from my\ncomputer.<\/li>\n<li>Always carry a pen and paper.<\/li>\n<li>Seek to always carry <cite data-id=\"isbn-1400041287\">Haiku<\/cite> and read from,\ninstead of glancing at my phone.<\/li>\n<\/ul>\n<p><strong>Schedule:<\/strong><\/p>\n<ul>\n<li>Week 1: Read <a href=\"work:how-to-haiku-a-writers-guide-to-haiku-and-related-forms-by-bruce-ross::author\">\u00abHow to Haiku\u00bb by Bruce Ross<\/a>.<\/li>\n<li>Week 2: Read introduction and excerpts of <cite data-id=\"isbn-9784805318454\">S\u014dseki Natsume&rsquo;s Collected Haiku<\/cite> translated by Erik R. Lofgren<\/li>\n<li>Week 3: Review past haiku\u2019s written to find samples.<\/li>\n<li>Week 4: Assemble hand-written haiku zine pamphlet, reproduce 20 copies.<\/li>\n<\/ul>\n<h1 id=\"the-morning-after\">The Morning After<\/h1>\n<p>When we got home from the library, I started reading <cite data-id=\"isbn-9781462916757\">How to Haiku<\/cite>.  I wrote a\nfew 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\nwaking, a short poem at the tip of my thought.<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> Not some <em>Kubla Kahn<\/em>, just myself parsing out a haiku.<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n<\/p>\n<p>I needed to capture that moment:<\/p>\n<p class=\"verse\">\nquiet early morn<br \/>\ncommuter cars growl on by<br \/>\nold dog curls on chair<br \/>\n<\/p>\n<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>\n<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\nsold off his entire wood working setup; he\u2019s moving and downsizing.  His whole\nlife, fixing things has been his identity, and the wood shop his means of\nbecoming.  The morning text being a follow up, saying that he has had to get\ncomfortable with reading during daylight hours.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Local%20Library%20Programming\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"\u00abA Poetry Handbook\u00bb by Mary Oliver","link":"https:\/\/takeonrules.com\/2026\/02\/10\/a-poetry-handbook-by-mary-oliver\/","pubDate":"Tue, 10 Feb 2026 19:33:35 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2026\/02\/10\/a-poetry-handbook-by-mary-oliver\/","category":"poetry","description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201c\u00abA Poetry Handbook\u00bb by Mary Oliver\u201d\">\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nA brief reflection on a #poetry #handbook that I just read.\n<\/p>\n        <p>I\u2019ve been reading more poetry, and scratching out efforts at poetry.  <time datetime=\"2026-02-10\" title=\"2026-02-10\">Today<\/time> I\nfinished reading <cite data-id=\"a-poetry-handbook-by-mary-oliver\">A Poetry Handbook<\/cite> by Mary Oliver.  A compact guide into the\nwriting and reading poetry; describing the basics, presenting a few examples,\nand most importantly giving bits of advice.<\/p>\n<ol>\n<li>If one must choose between reading poetry and attending a workshop, choose\nreading.  (Though consider a workshop)<\/li>\n<li>A poem must be complete; that is it contains all that it must and is atomic,\nthough may reference\/allude to other things.<\/li>\n<li>The process of writing a poem is vulnerable to interruptions; flow state is a\ngood thing.<\/li>\n<li>Revise and revisit.<\/li>\n<\/ol>\n<p>In reading, I haven\u2019t gotten beyond subvocalization.  That is I say \u201cin my mind\u201d\nthe words I\u2019m reading.  This, I think, helps in my read of poetry.  Because I\ncan almost imagine the breaths.  But subvocalizing poems, when I have the option\nto read aloud, does a disservice.  I don\u2019t feel the flip of my tongue, nor the\nbreath leaving.<\/p>\n<p>Mary Oliver\u2019s <cite data-id=\"a-poetry-handbook-by-mary-oliver\">A Poetry Handbook<\/cite> provides this and more, delving into\nphilosophy.  I read the following and my mind cracked open:<\/p>\n<blockquote class=\"quote epigraph\" data-id=\"literature-is-the-apparatus-through-which-the-world\">\n<p>\nLiterature is the apparatus through which the world tries to keep intact its\nimportant ideas and feelings.\n<\/p>\n<footer>&#8213;Mary Oliver, <cite>A Poetry Handbook<\/cite><\/footer><\/blockquote>\n<p>Yes, this definition of literature excludes the reality of oral tradition, which\nI think is unfortunate.  But a quick substitution of \u201cstory\u201d for \u201cliterature\u201d\nand we hit at the heart of things.  And by cracked open, I read that passage as\nputting words to a known truth.<\/p>\n<p>We write, narrate, and tell tales to convey that which we find important.  And\nthe act of re-telling and reading and listening is engaging in that\n\u201cpreservation.\u201d<\/p>\n<p>Poetry is my present fascination, wrestling with the sound, shape, and shadow of\nwords.  The books that bind these poems I keep close, filling the cherry\nbookshelf made by my father.  Throughout the days, I pull a book out, thumb to a\nrandom page, and read a poem or three.  With 7 or so linear feet of poetry, I\nfind this to be a wonderful and sustaining grazing.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:%c2%abA%20Poetry%20Handbook%c2%bb%20by%20Mary%20Oliver\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Prairie Poor","link":"https:\/\/takeonrules.com\/2026\/02\/08\/prairie-poor\/","pubDate":"Sun, 08 Feb 2026 10:22:07 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2026\/02\/08\/prairie-poor\/","category":"poetry","description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cPrairie Poor\u201d\">\n<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>\n<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;\u00abA Poetry Handbook\u00bb by Mary Oliver&rdquo;\" title=\"Newer post tagged with &ldquo;poetry&rdquo; is &ldquo;\u00abA Poetry Handbook\u00bb by Mary Oliver&rdquo;\"><small>&gt;<\/small><\/a>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nA #poem reflecting on land and language.\n<\/p>\n        <p class=\"verse\">\nMy ancestors carried with them a lowland language,<br \/>\nFrom flat Frisia to the banks of Mot\u0142awa,<br \/>\nlater amongst the golden fields of Ukraine,<br \/>\nthen, with treasured seed in tow, the prairie of Nebraska.<br \/>\n<br \/>\nListening to my father, aunt, and uncle speak<br \/>\nTheir low German, I hear my poverty revealed.<br \/>\nThis past year, I recorded them one night;<br \/>\nVisions of zweibach and veranika danced in my head.<br \/>\nTheir accents and cadences invoking<br \/>\nthe first of three spirits visiting that old miser,<br \/>\n<br \/>\nThey were telling tales of yore,<br \/>\ndredging as only the Dutch might,<br \/>\nlaughter from the depths of half an age ago.<br \/>\nMischief that spoke of simpler times<br \/>\n(At least that\u2019s what nostalgia would have me say).<br \/>\n<br \/>\nAs paternal lineage goes,<br \/>\nI\u2019m first generation English-as-a-first-language.<br \/>\nRaised on the prairie, fed a new language too,<br \/>\nI see now, as second generation, a privation<br \/>\nOf language and lore.  I learned the simple new words<br \/>\nof these not-so-simple folk.<br \/>\n<br \/>\nYet, old Scrooge and I, we\u2019re much the same.<br \/>\nWith our impoverished lexicon, near bankrupt<br \/>\nas we fail to name much more<br \/>\nbeyond accounts and ledgers.<br \/>\nWere that I had the native tongue,<br \/>\nI might know more than corn fields and cricks.<br \/>\n<br \/>\nThese days I read poetry, hoping to learn the song<br \/>\nI know still and once sung.  Reading Heaney, Shepherd,<br \/>\nand many others, I feel again my poverty.<br \/>\n<br \/>\nI\u2019m too new to this language<br \/>\n(though it is my only one),<br \/>\nthe one not of my father,<br \/>\nbut of a land fed on red, black, and brown blood.<br \/>\nA language (and land) that borrows, robs, and steals.<br \/>\n<br \/>\nAn\u2019 I wonder, to which (or whom) am I cognate?<br \/>\nMe, a settler adrift on these amber waves.<br \/>\n<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Prairie%20Poor\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Inverness","link":"https:\/\/takeonrules.com\/2026\/02\/06\/inverness\/","pubDate":"Fri, 06 Feb 2026 15:11:24 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2026\/02\/06\/inverness\/","category":"poetry","description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cInverness\u201d\">\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nA #poem of #winter reflection, of painting a ceiling not in white but in a bold color, and a mind thus adrift.\n<\/p>\n        <p class=\"verse\">\nI sit and ponder this canopy of evergreen,<br \/>\nPainted the long year prior;<br \/>\nBringing a sense of summer amongst the trees,<br \/>\nEven in this stick white winter<br \/>\namidst the perma-cloud,<br \/>\nMuting all color, joy, and\u2014dare I say\u2014hope.<br \/>\n<br \/>\nInverness, the green so named.<br \/>\n<br \/>\nEchoing<br \/>\n<br \/>\nThat city atop the British isles.<br \/>\nA place I\u2019ve never been, save for<br \/>\na neighboring Shepherd\u2019s tale;<br \/>\nOne of dancing amongst mountains,<br \/>\nalive and free.<br \/>\n<br \/>\nYet I am rooted here, and travel seems so distant<br \/>\nIn this wintry discontent.<br \/>\nWhen brother stands vigil over encroaching ice.<br \/>\nAnd I call to those who will not listen.<br \/>\n<br \/>\nHere, amidst this canopy,<br \/>\ntree that I am; Witness<br \/>\nto a forest fell-tide. Unmoving,<br \/>\nyet not unfeeling, waiting for:<br \/>\n<br \/>\nan axe to fall,<br \/>\na wedge to split,<br \/>\na fire to lick.<br \/>\n<br \/>\nKnowing a paralytic dread as winter grinds on,<br \/>\n<br \/>\nbiting,<br \/>\n&nbsp;&nbsp;clawing,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;raging.<br \/>\n<br \/>\nThe loon heralds a coming spring when:<br \/>\n<br \/>\nIce will melt,<br \/>\nBuds will burst,<br \/>\nLeaves will unfurl,<br \/>\n<br \/>\nAnd life anew shall begin again,<br \/>\nas hope arriving; a gentle morning glow,<br \/>\nBathing this room of mine,<br \/>\nWhere I sit each day,<br \/>\nAnd ponder.<br \/>\n<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Inverness\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Serendipity and Verse","link":"https:\/\/takeonrules.com\/2026\/02\/05\/serendipity-and-verse\/","pubDate":"Thu, 05 Feb 2026 19:25:06 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2026\/02\/05\/serendipity-and-verse\/","category":"personal","description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cSerendipity and Verse\u201d\">\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nIt is through epics and poetry that I my home.\n<\/p>\n        <p>I\u2019ve been enjoying narrative verse, poetry, myths, and legends.  <time datetime=\"2026-01-11\" title=\"2026-01-11\">Recently<\/time>, I\nfinished <cite data-id=\"isbn-9780763659394\">Yvain<\/cite> by M.T. Anderson.  I felt the thrill of\nstory and primacy of archetype.  I found the artistic style deeply textured and\nenchanting.  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>\n<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\nfelt the invocation\u2014an echo of Genesis.  From which Gill offers clusters poems\nrelated to a story; each of those poems digging behind the fairy tale to offer\nperspective of the characters in the story.<\/p>\n<p>Not to absolve the wicked step-mother, but to walk with her on a path\u2014one of\nmyriad\u2014that she traversed in donning that mantle.  Or, more correctly, one in\nwhich the mantle was forced upon her by the systems of oppression: poverty and\nmisogyny.<\/p>\n<p>This lead me to look for additional books by Nikita Gill\u2014I added a few to my\n\u201cshopping list.\u201d  Then I stumbled upon an interview with Gill, and learned of\ntheir collaboration with Anoushka Shankar on <cite>Sister Susannah<\/cite>.<\/p>\n<p>I gave a listen; I very much loved it.  I read more about the song\u2019s origins\n(<a href=\"https:\/\/livewire.thewire.in\/livewire\/sister-susannah-shattering-the-silence-around-abuse\/\">\u2018Sister Susannah\u2019: Shattering the Silence Around Abuse<\/a>).  And then spent time\nlistening to a few other of Anoushka Shankar\u2019s songs.  Now I\u2019m neck deep in\nsitar music; feeling such freshness move through me.  A fresh yet ancient force,\nthat draws upon the ancient echoes I also heard in <cite data-id=\"2CC8C24E-8223-4BE8-B47F-84709D6DB2BF\">Geek Sublime<\/cite> by Vikram Chandra.<\/p>\n<p>Years ago, a friend of mine, now since departed, journeyed to England.  His\ngoal: to see something truly ancient.  He started on a well trod tourist path,\nand at the first destination, he took it in and then asked the locals, \u201cWhere\nmight I find something even more ancient?\u201d<\/p>\n<p>They obliged and pointed him down a path.  Upon arrival, he took it in, then\nasked these other locals again where to find the ancient.  And they pointed him\nfurther.  He followed the local memory until he arrived at an ancient forge,\nhere he felt the world of myth touching upon him.<\/p>\n<p>That story hung with me, because of my friend leaning on local memory, one that\ncould continue to point further back in time.<\/p>\n<p>That is what I feel when I read these epics and retellings; most often in verse.\nI feel the author touching on something far older.  And both bringing it forward\nin time and transporting me backwards.<\/p>\n<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\nprosaic, then soon find ourselves on an adventure with fairy tale logic.<\/p>\n<p>It is present in Heaney\u2019s <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\u2019s <a href=\"https:\/\/murielrukeyser.org\/2019\/12\/29\/the-soul-and-body-of-john-brown\/\">The Soul and\nBody of John Brown<\/a>; itself not ancient nor regarding antiquity.  Yet as much a\npart of mythology, due to the complexities and nuance of the titular character.<\/p>\n<p>And then there is Borges; one who writes of myth, riddled with lies most true.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Serendipity%20and%20Verse\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Does One Call Oneself a Poet?","link":"https:\/\/takeonrules.com\/2026\/01\/17\/does-one-call-oneself-a-poet\/","pubDate":"Sat, 17 Jan 2026 12:26:19 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2026\/01\/17\/does-one-call-oneself-a-poet\/","category":"poetry","description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cDoes One Call Oneself a Poet?\u201d\">\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nA bit of introspection and a #haiku.  In part a post to say I&rsquo;m still here.\n<\/p>\n        <p>I wonder, what makes one a poet?  And perhaps not the general case, but the\nself-centered case.<\/p>\n<p>Am I a poet?<\/p>\n<p>I write poetry.  I am an adept conjurer of analogies and metaphors.  I have an\nabove average command of the English language.  I write poems, scratching out\nwords to find the best (in the moment) forms, sometimes returning to prior\nphrases.<\/p>\n<p>At our local library, next week we\u2019re kicking off a Personal Curriculum series.\nI had been considering poetry as mine\u2014though ham radio just joined the\nconsideration.<\/p>\n<p>My bedroom bookshelf is packed with poetry.  On occasion\u2014though not often\nenough\u2014I find myself grabbing a book and reading a few poems.  Life pours from\nthese works, bathing me in warmth.<\/p>\n<p>We were driving back home, and as we were passing a wooded area that chirps and\nwhistles in spring from the tree frogs.  At that moment, while driving in\nsilence, Jenny asked me what I was thinking about, I responded: frogs.<\/p>\n<p>That spot along with the neighbors saying that a large bullfrog had come out of\nhibernation earlier this month; when we had 55\u00b0 Fahrenheit weather (and rain).<\/p>\n<p>Which inspired the following haiku:<\/p>\n<p class=\"verse\">\nAmidst icy woods<br \/>\nNew moon hiding snow and branch<br \/>\nIn the thaw, frog song.<br \/>\n<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Does%20One%20Call%20Oneself%20a%20Poet%3f\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Bolstering Against the Permeating LLM Language","link":"https:\/\/takeonrules.com\/2026\/01\/07\/bolstering-against-the-permeating-llm-language\/","pubDate":"Wed, 07 Jan 2026 18:46:59 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2026\/01\/07\/bolstering-against-the-permeating-llm-language\/","category":["personal","poetry","responses"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cBolstering Against the Permeating LLM Language\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nOn being human, embracing the analogue, and working through private deep introspection.\n<\/p>\n        <p>From <a href=\"https:\/\/www.henrikkarlsson.xyz\/p\/being-creative-requires-taking-risks\">Being creative requires taking risks<\/a>:<\/p>\n\n<blockquote  class=\"h-cite\">\n\nChildren will say stuff that will shock you, because you can see where they are\ncoming from, but it\u2019s just not the thing you say. They\u2019re not yet collapsed. But\nwe are collapsed. We end up revisiting the same thoughts. We end up saying more\nand more of the same stuff, and the learning rates go down.\n\n<\/blockquote>\n\n<p>This requires further thinking and discussion.  Why?  These last few days I\u2019ve\nbeen actively and assertively deconstructing and mitigating deeply internalized\npatriarchy\u2014staring at a 50th birthday a half-a-year away; feeling the\nreverberations of pivoting from ever darkening days to those of light\u2019s return.<\/p>\n<p>I\u2019m also reading further in the blog post, and fucking hate the permeation of\nsemantics 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 \u201cLarge Language Model\u201d\" title=\"Other site-wide references of \u201cLarge Language Model\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-LLM\">&#128214;<\/a><\/small>)\n phenominon that are then projected onto the act of\nbeing human; I\u2019m not a fucking computer nor mathematical model.<\/p>\n<p>I am a human being, always arriving into a present in which I seek orientation,\nwonder, beauty, poetry, and art.<\/p>\n<p>A present in which I\u2019m 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 \u201cEmacs\u201d\" title=\"Other site-wide references of \u201cEmacs\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-EMACS\">&#128214;<\/a><\/small>\n <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 \u201cLisp\u201d\" title=\"Other site-wide references of \u201cLisp\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-LISP\">&#128214;<\/a><\/small>\n, love\nnotes to my wife, and read chunky books.<\/p>\n<p>Over the course of the last 9 days, I have watched only a fragment of something\non \u201ctelevision.\u201d  Most everything else I\u2019ve pursued is tactile: a book printed\non paper, dishes in the sink (so many), colored pencils scribbling on paper, and\nmore.  (I have had days of work in which I needed to clicky-clacky on the\nkeyboard to make the code behave).<\/p>\n<p>So, when I read a post in which \u201cthe human\u201d condition is mapped to the language\nof <abbr title=\"Large Language Models\">LLMs<\/abbr>\n, I think \u201cbro, get out, touch some dirt, read an older book of fiction,\nand watch a sunrise.\u201d  We are each, and all, more than that lingual effort to\ncollapse us into an ever simplifying model.<\/p>\n<p class=\"verse\">\nWarmth of mid-winter<br \/>\nI fear you most as herald<br \/>\nOf hell-blasted hate.<br \/>\n<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Bolstering%20Against%20the%20Permeating%20LLM%20Language\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Fallacy of Record","link":"https:\/\/takeonrules.com\/2026\/01\/01\/fallacy-of-record\/","pubDate":"Thu, 01 Jan 2026 10:02:43 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2026\/01\/01\/fallacy-of-record\/","category":["responses","technologies"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cFallacy of Record\u201d\">\n<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 \u201cBlack and Female: Essays\u201d by Tsitsi Dangarembga&rdquo;\" title=\"Older post tagged with &ldquo;responses&rdquo; is &ldquo;On \u201cBlack and Female: Essays\u201d by Tsitsi Dangarembga&rdquo;\"><small>&lt;<\/small><\/a>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nExhuming a reflection I wrote in October around \u201cleaving a record.\u201d\n<\/p>\n        <p class=\"verse\">\nWe cross the line, who pushed who over?<br \/>\nIt doesn\u2019t matter to you, it matters to me<br \/>\nWe\u2019re cut adrift, but still floating<br \/>\nI\u2019m only hanging on to watch you go down, my love.<br \/>\n<br \/>\n\u2014 U2, *So Cruel*<br \/>\n<\/p>\n<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>\n\n<blockquote  class=\"h-cite\">\n\nWhat record are we leaving if the printed word is not the most interesting\ncreative work being developed?\n\n<footer>&mdash;\n<span class=\"p-author h-card\">Naomi Duguid<\/span>\n<\/footer>\n<\/blockquote>\n\n<p>I question that the \u201cprinted word\u201c has ever been much of \u201cthe most interesting\ncreative work being developed.\u201d  Consider the interesting and ephemeral [saucy]\npuppet show, street protest, poetic recitation, dance routine, or concert.\nThough perhaps \u201cwork\u201d is carrying the burden?  As in the toil expressed?  Or the\nconcept enclosed?<\/p>\n<p>But then again, the word \u201cinteresting\u201d is one of those \u201ceye of the beholder\u201d\nwords.  The printed word\u2019s super power is one of slow moving transport: across\ntime and space.  Ideas bound and encoded for transport\u2014of atomic symbols\ncreating molecules with which we create a transport of cultural DNA.<\/p>\n<p>I read the lamenting question as one of the shift from analog to digital; in\nwhich digital preservation requires far more resources of active attention than\nanalog\u2014which itself requires more space than digital.  As though there is some\nuniversal constant that expresses the cost of sustaining memory: in physical\nspace, archival processes and systems, and\/or calories to maintain biological\nbrains\u2014though can a book or hard-drive be called \u201cmemory?\u201d<\/p>\n<p>And then to turn to \u201cWhat record are we leaving,\u201d implying a collective and\ncoordinated effort.  To join in the grandeur of cultural preservation and\nheritage; to belong to a line\u2014constructed\/fabricated\u2014connecting from antiquity\nto the days ahead.  We carry that ever accumulating baggage, as though an honor,\nand one we hope to add a little and bestow upon successive generations.  Do we\ndemand accretion? or is composting adequate?<\/p>\n<p>One record we will leave is the death rattle of capitalism<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <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 \u201cKyriarchy\u201d\" title=\"Other site-wide references of \u201cKyriarchy\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-KYRIARCHY\">\ud83d\udcd6<\/a><\/small>\nis more appropriate?<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n and its\nescalating ravages against the world.  Perhaps those ravages shall transform and\npass into myth, a Scylla and Charybdis of parched earth, nuclear waste, acidic\noceans, and eroded wastelands.  How might one notice any other record?<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Fallacy%20of%20Record\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"The Books of 2025","link":"https:\/\/takeonrules.com\/2025\/12\/31\/the-books-of-2025\/","pubDate":"Wed, 31 Dec 2025 08:15:42 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/31\/the-books-of-2025\/","category":["personal","reading"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cThe Books of 2025\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nNot all of the books of the year, but an overview of the ones that stuck out.\n<\/p>\n        <p>This year, my partner and I are participating as a team in our local library\nreading \u201cchallenge.\u201d  The goal is for the team to read 100 books.  Thusfar we\u2019ve\nread 150 or so books; me having read about 50 and my partner over a 100.<\/p>\n<p>What have been the stand-out books?  And more importantly, why?  Not all of\nthese are ones that I very much enjoyed (e.g. a 4 out of 4 rating), but they are\nones that stuck with me.<\/p>\n<ul>\n<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\nre-e**ngage with the world.  To find energy and capacity in quiet communion\nwith both others and nature.<\/li>\n<li><strong><cite data-id=\"817193e6-0ae6-4183-9c1b-87733e8a7eca\">Annihilation<\/cite> by Jeff Vandermeer:<\/strong> we listened to this audiobook throughout\na single day.  And found ourselves wondering what was happening.  The richness\nof language and imagery paired with withheld information drew me in.  Leaving\nme both wondering while also knowing that I won\u2019t find out.  Much like I won\u2019t\nknow how \u201cclimate change\u201d or \u201chistory\u201d <em>ends<\/em> .<\/li>\n<li><strong><cite data-id=\"ISBN-9780199567690\">Babbitt<\/cite> by Sinclair Lewis:<\/strong> a book written in the 1920s that seems almost\nimmediately applicable to 2020s; plus this was part of a community read, so I\nhad a fantastic conversation with community members.<\/li>\n<li><strong><cite data-id=\"ISBN-9781250776297\">Bea Wolf<\/cite> by Zach Weinersmith:<\/strong> I love reading Beowulf, each time a new\ntranslation.  And this one, while not a translation, is instead a retelling\nthat brought me absolute child-like joy.<\/li>\n<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\nHanh book, and this was a natural read after <cite data-id=\"fee4ffa7-1d45-46e7-86f1-af203b92f54b\">Aflame<\/cite>.<\/li>\n<li><strong><cite data-id=\"ISBN-9781644452110\">Black and Female<\/cite> by Tsitsi Dangarembga:<\/strong> these essays hit home the absolute\nvileness of apartheid, as applied in South Africa, but also in the Jim Crow\nera that the present regime is angling to restore and expand.  As an added\nbonus, Dangarembga was the first Zimbabwean author that I\u2019ve read.<\/li>\n<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\nof <cite data-id=\"817193e6-0ae6-4183-9c1b-87733e8a7eca\">Annihilation<\/cite> captivated me.  And one day, while waiting for my partner to\nfinish perusing the bookstore we were visiting, I cracked open the\n<cite>Ambergris<\/cite>omnibus, and started reading <cite>Draden, in Love<\/cite>.  And found myself immediately transported into the chaotic streets\nof Ambergris.<\/li>\n<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\nfind a bit of inspiration.<\/li>\n<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\ncan move past capitalism, yet also understand that it would be hard to fully\nescape it, while also knowing that governance is invariably a political and\npersonal affair.<\/li>\n<li><strong><cite data-id=\"c51d973a-21c0-406e-86cd-c334769cfc59\">The Empusium<\/cite> by Olga Tokarczuk:<\/strong> Tokarczuk writes to expand and enlarge the\npast through which we invariably construct and sustain an ever narrowing view.<\/li>\n<li><strong><cite data-id=\"252e3dc9-f174-41fe-a10f-7bcb13f6d0d5\">The Fellowship of the Ring<\/cite> by J.R.R. Tolkien:<\/strong> a\npassion project, in which Phil Dragash narrated and voice acted a production\nof the <cite data-id=\"B716B561-9CFB-4712-B247-848A312BE175\">The Fellowship of the Ring<\/cite>.<\/li>\n<li><strong><cite data-id=\"55348AB8-9909-4E68-878A-5458701F87E1\">Freedom is a Constant Struggle<\/cite> by Angela Y. Davis:<\/strong> articulating so clearly\nthat Palestine, the military industrial complex, petro-carceral state feed\ninto each other; and have created the conditions in which we find the United\nStates.<\/li>\n<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\nthough I might be thinking \u201cOh Sweet Summer Child\u201d of the grim days of yore.\nBut I instead found this collection of essays a timeless reminder that\nunpredictable positive events and situations arise from times of tribulation\nand uncertainty.  Importantly, Solnit provides receipts for past achievements\nand successes that we may have forgotten.<\/li>\n<li><strong><cite data-id=\"ISBN-9781945492600\">I Who Have Never Known Men<\/cite> by Jacqueline Harpman:<\/strong> a philosophical dystopian\nread in which one invariably will think about purpose and meaning of life.<\/li>\n<li><strong><cite data-id=\"ISBN-9780385550369\">James<\/cite> by Percival Everett:<\/strong> a great book in its own right, that\ndelivers a fantastic additional narrative perspective to the events told by\nHuck Finn (himself unreliable).  This book did double duty, rekindling\nmemories of reading <cite data-id=\"8EDAF156-FD70-48D5-8E92-D1C675F2C49A\">The Adventures of Huckleberry Finn<\/cite> and seeing Big River.<\/li>\n<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\nof history and thought lost in our march to forget the lessons of facing and\novercoming fascism.<\/li>\n<li><strong><cite data-id=\"1f28328c-be96-453d-a9a8-9b921c39fd8a\">The Little Book of Solitude<\/cite> by Joost Joossen:<\/strong> a collection of\nmini-biographies and quotes that lead me to to Pico Iyer\u2019s <cite data-id=\"fee4ffa7-1d45-46e7-86f1-af203b92f54b\">Aflame<\/cite>; it was\nalso amongst the first library books I checked out from our local library.<\/li>\n<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\nshelf, partially read, and I sat down to read it.  Solnit always provides a\nreminder of the misogynistic structures and cultural behaviors that course\nthrough the world in which we live.<\/li>\n<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\nI\u2019ve added a hefty dose of marginalia.  Considering how to better approach\nlove, death, and politics.<\/li>\n<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.\nSlow-moving, playing with memory.  I highly recommend reading this in close\nproximity to <cite data-id=\"ISBN-9781945492600\">I Who Have Never Known Men<\/cite>.<\/li>\n<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\nhow a complex game can be used to constrain a society, and how the rules and\nlanguage of the game impose upon the society.  And how diversity can be a\nmighty advantage.<\/li>\n<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\nlittle bit more about him and my family history.  And my uncles poem about\nsurviving polio ending with: \u201cand beside my bed \\ they spun, \\ an iron\ncocoon.\u201d  Goosebumps.<\/li>\n<li><strong><cite data-id=\"4b6ca2f0-8e70-40b4-b18e-fe87b643b3e6\">Pranksters vs. Autocrats<\/cite> by Srdja Popovic and Sophia A. McClennen:<\/strong> I have\nrecommended this book to many people looking for hope and action.  Evidence is\nthat humor wins.<\/li>\n<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\nquote: \u201cThere is a secret bond between slowness and memory, between speed and\nforgetting.\u201d  I found this book for a reasonable price and read it that\nevening.<\/li>\n<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,\nand it opened my awareness to other narrative structures, ones that I now look\nfor as a change of pace.<\/li>\n<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\nborrowed this via inter-library loan; read it and thought I might enjoy it.\nShe was right.  I appreciate the myth building through symbols; the language\nof thread, needle felting, and sleeping beauty (herself a wolf hungry for\nlittle red riding hood).<\/li>\n<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\nand subtitle, and found a philosophical memoir that reinforced the need for\nhumanism and conversation.<\/li>\n<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\nfoundational 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\nhooked.  Forget Cthulhu, existential dread is mindless bureaucracy.<\/li>\n<li><strong><cite data-id=\"isbn-9781250213587\">Upright Women Wanted<\/cite> by Sarah Gailey:<\/strong> not normally something I\u2019d read, but\nthis let the Wild West tropes do quite a bit of work, and then subvert those\ntropes and tell a unique story about resistance.<\/li>\n<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\nover-reaching state in which so much energy must be spent to sustain the\nsystems of oppression and coercion.  It felt a bit derivative, but as it came\nbefore, must be viewed with a freshness of thought relative to others.<\/li>\n<li><strong><cite data-id=\"95cc0be8-ed94-44c5-a193-696c32426e72\">When No Thing Works<\/cite> by Norma Kaelok\u016b Wong:<\/strong> an important reminder that it is\nnot enough to resist, but to imagine a future in which we are along moving\nalong the path of restoration and restitution.  Naming what that future looks\nlike\u2014in details.  The dishes one brings to celebrations, the evidence of how\nimprovements manifest.<\/li>\n<\/ul>\n<p>Then synthesizing all of these things: subvert tropes as this fosters further\nimagination of possibility.  And from there, action becomes possible.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:The%20Books%20of%202025\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"The Books of 2025","link":"https:\/\/takeonrules.com\/2025\/12\/31\/the-books-of-2025\/","pubDate":"Wed, 31 Dec 2025 08:12:40 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/31\/the-books-of-2025\/","category":["personal","reading"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cThe Books of 2025\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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 \u201cBlack and Female: Essays\u201d by Tsitsi Dangarembga&rdquo;\" title=\"Older post tagged with &ldquo;reading&rdquo; is &ldquo;On \u201cBlack and Female: Essays\u201d by Tsitsi Dangarembga&rdquo;\"><small>&lt;<\/small><\/a>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nNot all of the books of the year, but an overview of the ones that stuck out.\n<\/p>\n        <p>This year, my partner and I are participating as a team in our local library\nreading \u201cchallenge.\u201d  The goal is for the team to read 100 books.  Thusfar we\u2019ve\nread 150 or so books; me having read about 50 and my partner over a 100.<\/p>\n<p>What have been the stand-out books?  And more importantly, why?  Not all of\nthese are ones that I very much enjoyed (e.g. a 4 out of 4 rating), but they are\nones that stuck with me.<\/p>\n<ul>\n<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\nre-engage with the world.  To find energy and capacity in quiet communion\nwith both others and nature.<\/li>\n<li><strong><cite data-id=\"817193e6-0ae6-4183-9c1b-87733e8a7eca\">Annihilation<\/cite> by Jeff Vandermeer:<\/strong> we listened to this audiobook throughout\na single day.  And found ourselves wondering what was happening.  The richness\nof language and imagery paired with withheld information drew me in.  Leaving\nme both wondering while also knowing that I won\u2019t find out.  Much like I won\u2019t\nknow how \u201cclimate change\u201d or \u201chistory\u201d <em>ends<\/em> .<\/li>\n<li><strong><cite data-id=\"ISBN-9780199567690\">Babbitt<\/cite> by Sinclair Lewis:<\/strong> a book written in the 1920s that seems almost\nimmediately applicable to 2020s; plus this was part of a community read, so I\nhad a fantastic conversation with community members.<\/li>\n<li><strong><cite data-id=\"ISBN-9781250776297\">Bea Wolf<\/cite> by Zach Weinersmith:<\/strong> I love reading Beowulf, each time a new\ntranslation.  And this one, while not a translation, is instead a retelling\nthat brought me absolute child-like joy.<\/li>\n<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\nHanh book, and this was a natural read after <cite data-id=\"fee4ffa7-1d45-46e7-86f1-af203b92f54b\">Aflame<\/cite>.<\/li>\n<li><strong><cite data-id=\"ISBN-9781644452110\">Black and Female<\/cite> by Tsitsi Dangarembga:<\/strong> these essays hit home the absolute\nvileness of apartheid, as applied in South Africa, but also in the Jim Crow\nera that the present regime is angling to restore and expand.  As an added\nbonus, Dangarembga was the first Zimbabwean author that I\u2019ve read.<\/li>\n<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\nof <cite data-id=\"817193e6-0ae6-4183-9c1b-87733e8a7eca\">Annihilation<\/cite> captivated me.  And one day, while waiting for my partner to\nfinish perusing the bookstore we were visiting, I cracked open the\n<cite>Ambergris<\/cite>omnibus, and started reading <cite>Draden, in Love<\/cite>.  And found myself immediately transported into the chaotic streets\nof Ambergris.<\/li>\n<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\nfind a bit of inspiration.<\/li>\n<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\ncan move past capitalism, yet also understand that it would be hard to fully\nescape it, while also knowing that governance is invariably a political and\npersonal affair.<\/li>\n<li><strong><cite data-id=\"c51d973a-21c0-406e-86cd-c334769cfc59\">The Empusium<\/cite> by Olga Tokarczuk:<\/strong> Tokarczuk writes to expand and enlarge the\npast through which we invariably construct and sustain an ever narrowing view.<\/li>\n<li><strong><cite data-id=\"252e3dc9-f174-41fe-a10f-7bcb13f6d0d5\">The Fellowship of the Ring<\/cite> by J.R.R. Tolkien:<\/strong> a\npassion project, in which Phil Dragash narrated and voice acted a production\nof the <cite data-id=\"B716B561-9CFB-4712-B247-848A312BE175\">The Fellowship of the Ring<\/cite>.<\/li>\n<li><strong><cite data-id=\"55348AB8-9909-4E68-878A-5458701F87E1\">Freedom is a Constant Struggle<\/cite> by Angela Y. Davis:<\/strong> articulating so clearly\nthat Palestine, the military industrial complex, petro-carceral state feed\ninto each other; and have created the conditions in which we find the United\nStates.<\/li>\n<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\nthough I might be thinking \u201cOh Sweet Summer Child\u201d of the grim days of yore.\nBut I instead found this collection of essays a timeless reminder that\nunpredictable positive events and situations arise from times of tribulation\nand uncertainty.  Importantly, Solnit provides receipts for past achievements\nand successes that we may have forgotten.<\/li>\n<li><strong><cite data-id=\"ISBN-9781945492600\">I Who Have Never Known Men<\/cite> by Jacqueline Harpman:<\/strong> a philosophical dystopian\nread in which one invariably will think about purpose and meaning of life.<\/li>\n<li><strong><cite data-id=\"ISBN-9780385550369\">James<\/cite> by Percival Everett:<\/strong> a great book in its own right, that\ndelivers a fantastic additional narrative perspective to the events told by\nHuck Finn (himself unreliable).  This book did double duty, rekindling\nmemories of reading <cite data-id=\"8EDAF156-FD70-48D5-8E92-D1C675F2C49A\">The Adventures of Huckleberry Finn<\/cite> and seeing Big River.<\/li>\n<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\nof history and thought lost in our march to forget the lessons of facing and\novercoming fascism.<\/li>\n<li><strong><cite data-id=\"1f28328c-be96-453d-a9a8-9b921c39fd8a\">The Little Book of Solitude<\/cite> by Joost Joossen:<\/strong> a collection of\nmini-biographies and quotes that lead me to to Pico Iyer\u2019s <cite data-id=\"fee4ffa7-1d45-46e7-86f1-af203b92f54b\">Aflame<\/cite>; it was\nalso amongst the first library books I checked out from our local library.<\/li>\n<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\nshelf, partially read, and I sat down to read it.  Solnit always provides a\nreminder of the misogynistic structures and cultural behaviors that course\nthrough the world in which we live.<\/li>\n<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\nI\u2019ve added a hefty dose of marginalia.  Considering how to better approach\nlove, death, and politics.<\/li>\n<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.\nSlow-moving, playing with memory.  I highly recommend reading this in close\nproximity to <cite data-id=\"ISBN-9781945492600\">I Who Have Never Known Men<\/cite>.<\/li>\n<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\nhow a complex game can be used to constrain a society, and how the rules and\nlanguage of the game impose upon the society.  And how diversity can be a\nmighty advantage.<\/li>\n<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\nlittle bit more about him and my family history.  And my uncles poem about\nsurviving polio ending with: \u201cand beside my bed \\ they spun, \\ an iron\ncocoon.\u201d  Goosebumps.<\/li>\n<li><strong><cite data-id=\"4b6ca2f0-8e70-40b4-b18e-fe87b643b3e6\">Pranksters vs. Autocrats<\/cite> by Srdja Popovic and Sophia A. McClennen:<\/strong> I have\nrecommended this book to many people looking for hope and action.  Evidence is\nthat humor wins.<\/li>\n<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\nquote: \u201cThere is a secret bond between slowness and memory, between speed and\nforgetting.\u201d  I found this book for a reasonable price and read it that\nevening.<\/li>\n<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,\nand it opened my awareness to other narrative structures, ones that I now look\nfor as a change of pace.<\/li>\n<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\nborrowed this via inter-library loan; read it and thought I might enjoy it.\nShe was right.  I appreciate the myth building through symbols; the language\nof thread, needle felting, and sleeping beauty (herself a wolf hungry for\nlittle red riding hood).<\/li>\n<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\nfound a philosophical memoir that reinforced the need for humanism and\nconversation.<\/li>\n<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\nfoundational 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\nhooked.  Forget Cthulhu, existential dread is mindless bureaucracy.<\/li>\n<li><strong><cite data-id=\"isbn-9781250213587\">Upright Women Wanted<\/cite> by Sarah Gailey:<\/strong> not normally something I\u2019d read, but\nthis let the Wild West tropes do quite a bit of work, and then subvert those\ntropes and tell a unique story about resistance.<\/li>\n<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\nover-reaching state in which so much energy must be spent to sustain the\nsystems of oppression and coercion.  It felt a bit derivative, but as it came\nbefore, must be viewed with a freshness of thought relative to others.<\/li>\n<li><strong><cite data-id=\"95cc0be8-ed94-44c5-a193-696c32426e72\">When No Thing Works<\/cite> by Norma Kaelok\u016b Wong:<\/strong> an important reminder that it is\nnot enough to resist, but to imagine a future in which we are along moving\nalong the path of restoration and restitution.  Naming what that future looks\nlike\u2014in details.  The dishes one brings to celebrations, the evidence of how\nimprovements manifest.<\/li>\n<\/ul>\n<p>Then synthesizing all of these things: subvert tropes as this fosters further\nimagination of possibility.  And from there, action becomes possible.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:The%20Books%20of%202025\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Yuletide","link":"https:\/\/takeonrules.com\/2025\/12\/30\/yuletide\/","pubDate":"Tue, 30 Dec 2025 10:30:07 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/30\/yuletide\/","category":["personal","poetry"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cYuletide\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nI can think of no better time than that between Winter Solstice and New Year\u2019s Day.\n<\/p>\n        <blockquote class=\"quote epigraph\" data-id=\"20221009T120354\">\n<p>\nMyth is a tear in the fabric of reality, and immense energies pour\nthrough these holy fissures.  Our stories, our poems, are rips in this\nfabric as well, however slight.\n<\/p>\n<footer>&#8213;Jay Parini, <cite>Borges and Me<\/cite><\/footer><\/blockquote>\n<p>Yule-tide, the twelve days between Winter Solstice and New Year\u2019s Day.  <time datetime=\"2025\" title=\"2025\">This\nyear<\/time> those days coincide with my (paid) time off of work.<\/p>\n<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\nfelt very much like Sunday.  Much as <time datetime=\"2025-12-29\" title=\"2025-12-29\">yesterday<\/time> did.  Perhaps there\u2019s that sense\nof holiness that burns through these yule-lit days.<\/p>\n<p>Not holy as we might conflate with communion and sermons, but in those fissures.\nIn which a true light shines through, that of communal memory and myths\nconstructed around firelight.<\/p>\n<p>I think to those gatherings at Grandma and Grandpa Friesen\u2019s house.  We\u2019d be\nthere together for what felt like several days.  Time made little sense, as the\n15 of us stuffed into that small ranch house in Nebraska.  Laughter tumbling\namidst Low German and English.<\/p>\n<p>The younger cousins and I would play at grandpa\u2019s pool table.  Endless hours in\nthose pre-electronic entertainment console days.  Later I\u2019d learn that it was a\nshoddy thing, warped and uneven.  But in those days, the green felt felt\nenchantingly rich.<\/p>\n<p>In later years, there were those days in which we\u2019d pack up after Christmas and\ndrive to Vermont.  Late nights of laughter as we\u2019d play fishbowl around the\nhearth.  Yule-tide, is for gathering.  For catching glimpses of the sun\u2019s\nreturn.  Sharing in that joy of togetherness, when the world outside, at this\nlatitude at least, is grinding ice and howling wind.<\/p>\n<p>Now, I gather with Jenny and our dogs Lacey and Ollie.  Me writing (poetry and\nLisp, as though there were a difference) and Jenny reading.  Lacey curled up\nbeside Jenny and Ollie wedged into his lounging chair.  We\u2019ll go outside for a\nbit, and stomp through the fresh powder of yesterday.<\/p>\n<p>But Yule-tide is now a fragile thing, at least in these States of America.  Each\nyear, I claim some of my employer benefits: paid time off.  Yet not all of my\nchildren have benefits that provide paid time off.  Others must budget time off\nfor visiting their fractured families.<\/p>\n<p>Where is the sacred?<\/p>\n<p>I want to write \u201csacrificed to the maw of capitalism\u201d, but that is an\nindirection.  Capitalists, lets name them not their system, demand our time and\ntalent to extract and enrich themselves.  The sacred, cultural memories and\nechoes, is something to be shattered, rended, and in their flattening-mind,\nforgotten and\/or perverted.  Replaced with consumption.<\/p>\n<p class=\"verse\">\nYule-tide, yule-tide, a wave of night<br \/>\npassing through mists of time<br \/>\nwaxing toward growing light.<br \/>\n<br \/>\nThis yule-tide let pop the cork<br \/>\nand decant drought of warding warmth,<br \/>\nand celebrate family and friends<br \/>\nand home and hearth.<br \/>\n<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Yuletide\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Lake Effect Snow","link":"https:\/\/takeonrules.com\/2025\/12\/29\/lake-effect-snow\/","pubDate":"Mon, 29 Dec 2025 16:40:38 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/29\/lake-effect-snow\/","category":"poetry","description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cLake Effect Snow\u201d\">\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nA winter poem celebrating snow.\n<\/p>\n        <p class=\"verse\">\nOut windows, white flakes<br \/>\nDancing, twirling, falling hide<br \/>\nAll past nearest shore\u2014<br \/>\n<br \/>\nWhat darkening winter keeps<br \/>\nCurtains drawn our secrets near.<br \/>\n<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Lake%20Effect%20Snow\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"That Time In Between","link":"https:\/\/takeonrules.com\/2025\/12\/29\/that-time-in-between\/","pubDate":"Mon, 29 Dec 2025 08:27:55 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/29\/that-time-in-between\/","category":["personal","poetry"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cThat Time In Between\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nOn that sacred time during winter dark.\n<\/p>\n        <p class=\"verse\">\nFolly is to name the days between Christmas and New Years.<br \/>\nThere\u2019s hardly enough daytime to warrant such.<br \/>\nInstead, let us embrace these long winter\u2019s night;<br \/>\nWhere story presses against the glass,<br \/>\n&nbsp;&nbsp;breath hot, frozen fog forming crystalline lace.<br \/>\nNo logs split nor tallow lit, that once did dance.<br \/>\nInstead, light sits steady and flat,<br \/>\nAnd the only flicker that of picture panes.<br \/>\nThis is a moment when little sense does our time make.<br \/>\n<\/p>\n<p>I embrace <a href=\"https:\/\/ruk.ca\/content\/romjul\">Romjul<\/a>, that period between Christmas\/Boxing Day and New Year\u2019s Eve.\nFor most of my life, the time between Christmas and New Years has been one of\nholiday.  That is: not working for my employer, but instead spending time with\nfriends (both present and tome-bound).<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:That%20Time%20In%20Between\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Serializing Somewhat Large Emacs Alists","link":"https:\/\/takeonrules.com\/2025\/12\/23\/serializing-somewhat-large-emacs-alists\/","pubDate":"Tue, 23 Dec 2025 08:47:49 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/23\/serializing-somewhat-large-emacs-alists\/","category":["emacs","programming"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cSerializing Somewhat Large Emacs Alists\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nCreating a bespoke process to dump and load data in manageable chunks.\n<\/p>\n        <p>In <a href=\"https:\/\/git.sr.ht\/~jeremyf\/mythic-bastionland.el\">my Mythic Bastionland Emacs package<\/a> I\u2019ve 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 \u201cEmacs\u201d\" title=\"Other site-wide references of \u201cEmacs\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-EMACS\">&#128214;<\/a><\/small>\n <code>alist<\/code> with\ninformation related to the state of the map for my Forged from the Worst\ncampaign.<\/p>\n<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\nassociated elements, with <code>rivers<\/code>, <code>locations<\/code>, and <code>barriers<\/code> having more.<\/p>\n<p>Along the way, I found that when I went to persist the <code>alist<\/code> to a file, I was\ngetting trailing <code>...<\/code> characters in a few places.  The process was truncating my\ndata.  Which meant data loss when I went to load the persisted <code>alist<\/code>.<\/p>\n<p>No worries, due to the nature of the package, I could rebuild the map data and\nit would be true to the state of play (though the non-revealed information would\nbe different).  However, I wanted to solve this persistence issue.<\/p>\n<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\nprint the full variable out, it would truncate.<\/p>\n<p>So I set about writing out chunks of the data.  Then reassembling those chunks.<\/p>\n<h2 id=\"writing-the-data-out-in-chunks\">Writing the Data Out in Chunks<\/h2>\n<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\nthe code does is:<\/p>\n<ul>\n<li>Create a feature called <code>mythic-bastionland-map<\/code>, which we\u2019ll write as a\nloadable package.<\/li>\n<li>For each association in the map:\n<ul>\n<li>Chunk that data into groups of 8 and write each sub-group into a variable\nwith name based on the association\u2019s <code>car<\/code> and incremental suffix.<\/li>\n<li>Store those incremental variable names in another variable.<\/li>\n<\/ul>\n<\/li>\n<li>Store the name of each association\u2019s <code>car<\/code> rendered in yet another variable.<\/li>\n<\/ul>\n<pre><code class=\"language-emacs-lisp\">(defun mythic-bastionland-map-write (&amp;optional map)\n  &quot;Write the MAP into a re-loadable format.\n\nEmacs is truncating things so I need to jump through some hoops.&quot;\n  (setq mythic-bastionland-map (or map (mythic-bastionland-map)))\n  (with-temp-buffer\n    (let ((features nil))\n      (insert &quot;;;; mbm ---  -*- lexical-binding: t -*-\\n&quot;)\n      (cl-loop for (feature . values) in mythic-bastionland-map do\n               (let (;; In my experience somewhere around 10 elements\n                     ;; and we start seeing truncation.  So let's be\n                     ;; under that.\n                     (size 8)\n                     ;; This will be a list of the variable names that,\n                     ;; when reassembled, will be the values.\n                     (segment-names nil))\n                 (cl-pushnew feature features)\n                 (dotimes (i (+ 1 (\/ (length values) size)))\n                   (let (;; Name of variable that will hold a segment\n                         ;; of the values.\n                         (segment-name\n                          (format &quot;mbm--data-%s-%d&quot; feature i)))\n                     ;; Track this segment's variable name.\n                     (push (intern segment-name) segment-names)\n                     ;; Grab a subset of values for this segment and\n                     ;; store it in the variable with name that is the\n                     ;; value of the segment.\n                     (insert (format &quot;(defvar %s '&quot; segment-name))\n                     ;; Yes yes, this is likely less effecient as I'm\n                     ;; always reading the list.  But it was quick\n                     (prin1 (seq-take\n                             (nthcdr (* i size) values) size)\n                            (current-buffer))\n                     (insert &quot;)\\n&quot;)))\n                 ;; Now track all of the segment names associated with\n                 ;; this feature.\n                 (insert (format &quot;(defvar mbm--data-%s-list '&quot; feature))\n                 (prin1 segment-names (current-buffer))\n                 (insert &quot;)\\n&quot;)))\n      ;; Last track all feature names so we may reassemble them.\n      (insert (format\n               &quot;(defvar mbm--features \\&quot;%s\\&quot;)\\n&quot;\n               (mapconcat (lambda (e) (format &quot;%s&quot; e))\n                          features &quot; &quot;))))\n    (insert &quot;(provide 'mbm)\\n&quot;\n            &quot;;;; mythic-bastionland-map.el ends here\\n&quot;)\n    (write-file mythic-bastionland-map-state-file)))\n<\/code><\/pre>\n<h2 id=\"reading-the-data-back-in\">Reading the Data Back In<\/h2>\n<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\ndone I call <code>(unload-feature 'mbm)<\/code> to remove the fragmented variables, leaving\nonly the <code>mythic-bastionland-map<\/code> variable.<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun mythic-bastionland-map-read ()\n  &quot;Load the unduly complicated encoding of the map.&quot;\n  (unless (f-file-p mythic-bastionland-map-state-file)\n    (user-error &quot;No file found at %s&quot;\n                mythic-bastionland-map-state-file))\n  (require 'mbm mythic-bastionland-map-state-file)\n  (let ((map nil))\n    ;; Our serialized map has a variable mbm--map-features; we use that\n    ;; to start our loading of data.\n    (dolist (map-feature (s-split &quot; &quot; mbm--features))\n      (let* ((values nil)\n             ;; The name of each of the variables that houses a segment\n             ;; of the feature's data.\n             (segment-names\n              (symbol-value\n               (intern (format &quot;mbm--data-%s-list&quot; map-feature)))))\n        (dolist (segment-name segment-names)\n          (dolist (value (symbol-value segment-name))\n            (cl-pushnew value values)))\n        ;; Now that we've reassembled (in reverse order) the values for\n        ;; this feature, add them to the underlying map.\n        (cl-pushnew (cons (intern map-feature) values) map)))\n    ;; With all features and their values loaded, we assign the map to\n    ;; something more durable.\n    (setq mythic-bastionland-map map))\n  ;; And last clean up all those variables we used for reassembly.\n  (unload-feature 'mbm))\n<\/code><\/pre>\n<h2 id=\"perhaps-another-way\">Perhaps Another Way?<\/h2>\n<p>It seems a bit odd that this is how I could reliably read and write the data.\nAnd I\u2019m open for other approaches.  However, I felt it worth sharing this\nbespoke method as it might help others.<\/p>\n<p>If you know of another way, <a href=\"https:\/\/takeonrules.com\/contact-me\/\">please contact me<\/a>.<\/p>\n<h2 id=\"structured-data-and-iterating\">Structured Data and Iterating<\/h2>\n<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\nwith the malleability of the <code>alist<\/code>, and their ease of testing; in part because\nof 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 \u201cRead-eval-print loop\u201d\" title=\"Other site-wide references of \u201cRead-eval-print loop\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-REPL\">&#128214;<\/a><\/small>)\n but also because of the nature of Lisp.<\/p>\n<p>I can easily grab a portion of the syntax tree and reliably mash on that in the\n<abbr title=\"Read-eval-print loop\">REPL<\/abbr>\n.  Think about other programming languages, if you want to use a portion of\nthe inner logic of a function, what steps do you need to take to use it?<\/p>\n<p>Due to the primacy of the <code>alist<\/code> there are fantastic functions for working\nwith them.<\/p>\n<p>Segmenting the data was a bit odd, I was hoping to simply dump the <code>alist<\/code> to a\nfile.  However, with the problems I encountered, I started exploring other\noptions.  Maybe write to JSON and load from JSON.  But then I would\u2019ve needed to\nestablish a mechanism for describing that transformation.<\/p>\n<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>\nReader\u2019s rallied and submitted some options.  The following refactor works in\nplace of the previous implementations.\n<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun mythic-bastionland-map-write (&amp;optional map)\n  &quot;Write the MAP into a re-loadable format.&quot;\n  (setq mythic-bastionland-map (or map (mythic-bastionland-map)))\n  (with-temp-buffer\n    (let ((print-level nil)\n          (print-length nil))\n      (prin1 mythic-bastionland-map (current-buffer)))\n    (write-file mythic-bastionland-map-state-file)))\n\n(defun mythic-bastionland-map-read ()\n  &quot;Load the persisted map.&quot;\n  (if-let ((file mythic-bastionland-map-state-file))\n      (if (f-file-p file)\n          (progn\n            (setq mythic-bastionland-map\n                  (read (with-temp-buffer\n                          (insert-file-contents file)\n                          (buffer-string))))\n            (message &quot;Loaded mythic-bastionland-map from %s&quot; file))\n        (user-error &quot;No file found at %s&quot;\n                    mythic-bastionland-map-state-file))\n    (user-error &quot;'mythic-bastionland-state-file is nil&quot;)))\n<\/code><\/pre>\n<\/ins>\n\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Serializing%20Somewhat%20Large%20Emacs%20Alists\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Game Procedures as Bridges from Potential to Actual","link":"https:\/\/takeonrules.com\/2025\/12\/21\/game-procedures-as-bridges-from-potential-to-actual\/","pubDate":"Sun, 21 Dec 2025 11:07:13 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/21\/game-procedures-as-bridges-from-potential-to-actual\/","category":["reflections","rpgs"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cGame Procedures as Bridges from Potential to Actual\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nConsidering the great utility of procedures and tables as a means of developing the fictive world, passing from potential to actual.\n<\/p>\n        <p>I\u2019ve 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 \u201cMythic Bastionland\u201d\" title=\"Other site-wide references of \u201cMythic Bastionland\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND\">&#128214;<\/a><\/small>\n, tracking the story in my\nForged from the Worst series.  This morning <a href=\"https:\/\/gnomestones.substack.com\/p\/ep-4-gnomereign-mythic-bastionland\">Ep 4: Mythic Bastionland Solo\nCampaign<\/a> rolled through my feed.<\/p>\n<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\nTables and Faction Development in Mythic Bastionland<\/a>.  Very interesting and I\ncan see cribbing that encounter table procedure.<\/p>\n<p>In one of the comments, Jack Edward wrote:<\/p>\n\n<blockquote  class=\"h-cite\">\n\nIt&rsquo;s funny, I&rsquo;m always curious about how to work other kinds of play into Mythic\nBastionland \u2014 particularly other themes and dimensions of play \u2014 just reworking\nthe random encounter table to include more stuff is one of the most elegant ways\nI&rsquo;ve seen of doing it!\n\n<\/blockquote>\n\n<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:\nSession 5<\/a>, Sir Beatrice learned of The Lich.  I the referee and you the reader,\nhad known that the Lich was likely going to enter into the fiction.  Yet, as the\nplayer of Sir Beatrice, it was news to me.<\/p>\n<p>The fiction is what happens at the table: revealed random encounters, actions\ntaken, words spoken, tests passed and failed etc.  The potential is the random\nencounter tables, rumor tables, morale checks, reaction rolls, and backstory.\nAnd we use procedures, implicit and explicit, to transform potential into\nactual.<\/p>\n<p>In that moment between potential and actual, we gain glimpses.  When a referee\nand player negotiate task, intent, and the consequences of success and failure,\nthe game enters a liminal space.  There is visibility into the potentiality of\nsomething that will not occur (the failure consequences when the test succeeds).<\/p>\n<p>Likewise, when a player has visibility into the random tables (and procedures\nfor using them) they have access to more than what is\u2026they know what can be.<\/p>\n<h2 id=\"swapping-procedures\">Swapping Procedures<\/h2>\n<p>At a few sessions into <cite>Mythic Bastionland<\/cite>\n, I\u2019m looking at the Gnomestones\u2019s\nrandom event table.  The table and procedures mean that their game will involve\nmore consideration for weather and factions.<\/p>\n<p>I find the ability to swap out subsystems a compelling reason for these analogue\ngames.  And as these procedures are performed \u201cby hand\u201d there\u2019s an incentive for\nthem to be concise.  Which helps in their portability.<\/p>\n<p>Don\u2019t like that your players are always escalating to combat?  Introduce the\nReaction Roll?  See that the players are always leaning into the Reaction Roll\nbecause of high charisma?  Require that in order to gain the Charisma bonus the\nfirst action of the encounter must be Parlay; which might leave them\nill-prepared for an attack.<\/p>\n<p>I think it is important that you shouldn\u2019t significantly change procedures\nbetween sessions\u2026unless an Age has passed.  As in, if you are fast forwarding to\na time in which world events would change, consider the swap out.<\/p>\n<p>Thinking of Mythic Bastionland, how might we start shifting towards the \u201cInto\nthe Odd\u201d era (if we wanted to)?  What procedures might change?  How might I\nalter my random tables or procedures to move in that direction?<\/p>\n<p>Or how might I give more focus to the Factions?  I\u2019ve created the lever in the\nprocedures for entering a Holding, and when the current Age ends, perhaps I\u2019ll\nadjust the procedures to reflect the game I\u2019m seeing or wishing to further\nexplore.<\/p>\n<h2 id=\"building-forged-from-the-worst\">Building Forged from the Worst<\/h2>\n<p>These days, I eschew writing back story, instead spending time having that\nemerge in play.  I might seed situations, but most often that\u2019s through random\nprocedures.<\/p>\n<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\nconflicts, but only in service of seeding an Escalation Table for one of the\nrelationships.  And I\u2019m doing that in a just in time manner.<\/p>\n<p>Below is the relationship graph.  It\u2019s one where I\u2019ve thought a bit about each\nrelationship, marveling at some of those random rolls and how they compounded on\neach other.  But only the Escalation Table for the relationship between Prentise\nand Yelena carries any fictive reality; in that I\u2019ve now once rolled on it.<\/p>\n\n<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>\n<\/figcaption>\n  <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\" \/>\n<\/figure>\n\n<p>Further, in solo-play it seems absurd to spend much time on back story.  If I\u2019m\ndoing that, I might as well write a novel.<\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>I first started playing Dungeons &amp; Dragons in Second Edition era.  It was a time\nwhen backstory and story plot became vogue.  Amongst my local gaming groups, and\nthose that ran games, I remember derision towards random encounters \u2014\nself-included.  Yet now, I consider much of this required for the types of games\nI\u2019ll enjoy running.<\/p>\n<p>First, when I\u2019m running a game, I too want to experience surprise and wonder.\nWith procedures generating random situations, I\u2019m surprised first in the\nsituation I present and then in the response of the players.  Which I find far\nmore enjoyable than presenting the next plot point then being surprised by the\nplayer responses.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Game%20Procedures%20as%20Bridges%20from%20Potential%20to%20Actual\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Forged From the Worst: Session 5","link":"https:\/\/takeonrules.com\/2025\/12\/21\/forged-from-the-worst-session-5\/","pubDate":"Sun, 21 Dec 2025 11:07:12 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/21\/forged-from-the-worst-session-5\/","category":["rpgs","sessions"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cForged From the Worst: Session 5\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n<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>\n<\/p\/><p><strong>Summary: <\/strong>\nIn which the Knights learn of a blood feud and yet another Myth plaguing the realm.\n<\/p>\n        <p>Three horses, two with riders and the smaller other riderless.  Both riders\narmed and armored.  A bow shot away, they see the eastern gatehouse of Castle\nSteimfluss, its squat towers gleaming proud, gates open with portcullis raised,\nas though a mouth feed a feast of peddlers and vagabonds.  The gate house\nprotects the bridge that cross over the river to the fortress that rises from\nthe island in the middle of the river.<\/p>\n<p>Beatrice thinks upon the trial of the morning.  Her sense of purpose restored\nafter Weydlyn\u2019s victory over the Sergeants of the Judge.  Then her surprise at\nfinding her possessions restored and waiting outside the checkered courtyard.\nHer mace, radiant armor, polished mirror, and her horse.<\/p>\n<p>She grins thinking of Light\u2019s Return, once name unknown, yet no longer; now\ntethered to her blue roan horse.  She leans forward, scratching her horse\u2019s neck\nand whispers to the horse, \u201cWorry not, as forewarned, I shall not name you.\nThough I wonder, my friend, what power lurks within your name.\u201d<\/p>\n<p>Before being within bow shot, they both dismount and lead their horses forward,\nwhile battered and bruised and carrying news, they are not harbingers riding in\non the wings of haste.<\/p>\n<p>A guard in front of the gates takes note of the two heavily armed knights\napproaching, quickly raises then lowers his head just a bit then waits for the\nknights to draw within a suitable speaking distance.<\/p>\n<p>Beatrice looks to Weydlynd, and says, \u201cIntroduce yourself first, keep it short,\nand I\u2019ll do the remainder of the talking.  Lord Prentise will remember me and\nshould help us gain a more immediate audience with him.\u201d<\/p>\n<p>Weydlyn grunts as the guard draws close enough to speak without shouting, \u201cIn\nthe name of Lord Prentise, please state your business.\u201d<\/p>\n<p>\u201cI am Sir Weydlynd, the Reforger of Knighthood,\u201d he says as he catches the gaze\nof the guard then points his head toward Sir Beatrice.<\/p>\n<p>\u201cAnd I am Sir Beatrice, I have once before helped Lord Prentise; though I hope I\nmay do more.  And we wish to speak to Lord Prentise on matters regarding the\nRealm.  Of the devil\u2019s court of Amrageft.\u201d<\/p>\n<p>The guard tilts his head, as though puzzling something out, almost speaks,\npauses, then says, \u201cAs you insist Sir Beatrice and Sir Weydlynd, I shall ensure\nthat you are announced.  May you find the Lord\u2019s hospitality most welcoming.\u201d<\/p>\n<h2 id=\"checking-game-state\">Checking Game State<\/h2>\n<p>I have deferred on building out relationships between the different holdings.\nBut now that they\u2019ve arrived, I need to do some work.<\/p>\n<p>I also review the rule book to see what the Sir Prentise might know of the\nJudge.<\/p>\n\n<blockquote  class=\"h-cite\">\n\n<strong>Vassals<\/strong> know about the nearest Myth, and its general direction.  If it is\nadjacent to their home, then they know its precise location.  They know\nLandmarks in their home and neighbouring Hexes.\n\n<footer>&mdash;<cite>Mythic Bastionland<\/cite>\npage 19\n\n<\/footer>\n<\/blockquote>\n\n<p>Using my mythic-bastionland.el package and \u201chidden\u201d map, I invoke <code>M-x mythic-bastionland-nearest-myth<\/code>, punch in <code>5,3<\/code> (the coordinates of Castle\nSteimfluss) and get back \u201cThe Judge\u201d.  I then invoke <code>M-x mythic-bastionland-direction<\/code> to find that \u201cThe Judge\u201d is to the Northeast of the\nCastle.<\/p>\n<p>Unfortunately, I when checking direction I chose the wrong one.  And gained very\nuseful information about the actual hex: \u201cThe Judge\u201d was north of <code>7,3<\/code>.  Which\nthe player should not know.  So I\u2019m going to rebuild the map based on what must\nbe true.<\/p>\n<p>Also, I\u2019m going to need a command to reveal the direction of adjacent landmarks\nto a holding (maybe a Hex, but we\u2019ll work first from a Holding).  Which after a\nbit of work, I\u2019ve included.<\/p>\n<h2 id=\"just-in-time-locations-and-relationships\">Just in Time Locations and Relationships<\/h2>\n<p>Moving into a Holding, I wanted to attend to the relationship of holdings and\ntheir rulers.  I read through <a href=\"https:\/\/www.bastionland.com\/2023\/11\/sparking-conflict.html\">BASTIONLAND: Sparking Conflict<\/a> and rolled up the\nrelationships and conflicts.<\/p>\n<h3 id=\"locations-and-their-leaders\">Locations and Their Leaders<\/h3>\n<ul>\n<li><strong>Steimfluss (seat of power, castle):<\/strong> Lord Prentise (Rat Knight)<\/li>\n<li><strong>Skanya (town):<\/strong> Yuri the Beautiful (cult leader)<\/li>\n<li><strong>Twierdska (fortress):<\/strong> Tove the Elder (Tome Knight)<\/li>\n<li><strong>Vukturm (tower):<\/strong> Yelena (gambler)<\/li>\n<\/ul>\n<h3 id=\"locations-and-their-woesdramas\">Locations and Their Woes\/Dramas<\/h3>\n<ul>\n<li><strong>Skanya:<\/strong> Drama (ambition\/disguise)<\/li>\n<li><strong>Steimfluss:<\/strong> Drama (greed\/oath)<\/li>\n<li><strong>Twierdska:<\/strong> Woe (escalating\/theft)<\/li>\n<li><strong>Vukturm:<\/strong> Drama (rivalry\/oath)<\/li>\n<\/ul>\n<h3 id=\"conflicts-between-locations\">Conflicts Between Locations<\/h3>\n<ul>\n<li><strong>Skanya \/ Steimfluss:<\/strong> Waterway negotiations<\/li>\n<li><strong>Skanya \/ Twierdska:<\/strong> Conquest standoff<\/li>\n<li><strong>Skanya \/ Vukturm:<\/strong> Betrayal animosity<\/li>\n<li><strong>Steimfluss \/ Twierdska:<\/strong> Waterway war<\/li>\n<li><strong>Steimfluss \/ Vukturm:<\/strong> Bloodfeud truce<\/li>\n<li><strong>Twierdska \/ Vukturm:<\/strong> Marriage standoff<\/li>\n<\/ul>\n<h3 id=\"relationships-between-leaders\">Relationships Between Leaders<\/h3>\n<ul>\n<li><strong>Prentise \/ Tove:<\/strong> Estranged Mentor<\/li>\n<li><strong>Prentise \/ Yelena:<\/strong> Intimate Enemy<\/li>\n<li><strong>Tove \/ Yelena:<\/strong> Resentful Successor<\/li>\n<li><strong>Yuri \/ Prentise:<\/strong> Tumultuous Rival<\/li>\n<li><strong>Yuri \/ Tove:<\/strong> Reluctant Lover<\/li>\n<li><strong>Yuri \/ Yelena:<\/strong> Resentful Guardian<\/li>\n<\/ul>\n<h2 id=\"conflict-escalation-procedure\">Conflict Escalation Procedure<\/h2>\n<p>Reading <a href=\"https:\/\/www.bastionland.com\/2025\/09\/holding-threads.html\">Holding Threads<\/a> I\u2019m thinking about how to consider the relationship\nbetween leaders, conflicts between locations, and the present woes or dramas\nunfolding at a location.<\/p>\n<p>I\u2019m thinking that the relationships color the conflict; but are not things that\nnecessarily resolve.  Maybe an End of Year procedure to see how these\nrelations change?<\/p>\n<div class=\"table-wrapper\">\n<table id=\"table-271\" class=\"\" aria-labelledby=\"caption-271\"><caption id=\"caption-271\">Table 271: \nConflict Escalation Roll\n<\/caption>\n\n<thead>\n<tr>\n<th scope=\"col\">d6<\/th>\n<th scope=\"col\">Result<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th scope=\"row\">1<\/th>\n<td>News arrives of the next Escalation of a Conflict between two other holdings.<\/td>\n<\/tr>\n<tr>\n<th scope=\"row\">2\u20133<\/th>\n<td>Reveal the next Escalation of a Conflict between the current holding and another.<\/th>\n<\/tr>\n\n<tr>\n<th scope=\"row\">4\u20136<\/th>\n<td>Conflicts continue to simmer without Escalation.<\/td>\n<\/tr>\n<\/tbody>\n\n<\/table><\/div>\n\n<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\nthat is too frequent.  I\u2019m going to go with three things:<\/p>\n<ul>\n<li>When you start a session in a Holding make a Conflict Escalation Roll.<\/li>\n<li>When you first enter a Holding make a Conflict Escalation roll.<\/li>\n<\/ul>\n<p>I also must consider if these pre-rolled things \u201cexist\u201d regardless of revelation\nor only exist at the time of encountering them.  I\u2019m going to assume they don\u2019t\nexist.<\/p>\n<p>I\u2019m contemplating having the Drama and Woe of the current holding enter into the\nfray of Escalation.  For now, that\u2019s what I\u2019ll try.<\/p>\n<h2 id=\"back-to-the-narrative\">Back to the Narrative<\/h2>\n<section class=\"inline-comments\">\n<p><small>\nLet\u2019s check the Conflict Escalation: I get a 3.  And Escalate the\nConflict\u2014Bloodfeud Truce\u2014between Steimfluss and Vukturm.\n<\/small><\/p>\n<p><small>\nI quickly write up the following:\n<\/small><\/p>\n<ol class=\"org-ol\">\n<li><small>Kinsfolk of both feuding sides meet, any weapons ceremonially tied.<\/small><\/li>\n<li><small>Cursing of one or the other families can be heard throughout the streets and\ntaverns.  There are some who don\u2019t think the others are quite so bad.<\/small><\/li>\n<li><small>Kinsfolk recently arrived to plead case, are chased out of town.  Only a few\nrotten vegetables are thrown.<\/small><\/li>\n<li><small>Catchy songs and poems mocking and deriding the others are heard whistled,\nhummed and whispered.<\/small><\/li>\n<li><small>Allies are sought as reprisals are planned.<\/small><\/li>\n<li><small>Now is the time of reprisals.<\/small><\/li>\n<\/ol>\n\n<\/section>\n\n<h2 id=\"of-sir-weydlyns-days\">Of Sir Weydlyn\u2019s Days<\/h2>\n<p>During the first day Sir Weydlyn notices several <em>fancy<\/em> dressed people, wearing\nsimilar attire to those that were harassing Tompot.  He asks a few folks and\nthey say that they are pledged to Yelena, 2nd cousin of Lord Prentise.<\/p>\n<p>Weydlyn learns of the bad blood between these two.  And while a tentative peace\nholds, Weydlyn scratches the scar on his jaw and thinks how he would be quick to\nspill that <em>fancy<\/em> blood.<\/p>\n<p>After a few days of rest, recovery, and hospitality, Sir Weydlyn\u2019s wounds are\nnicely healed and he feels ready to present his case to Lord Prentise regarding\nTompot.  But he first stops to see how he might secure a helm for himself.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nFor Sir Weydlyn, I wonder what does the armor smith desire of Sir Weydlyn.  I\nroll on the Sparks and get Knowledge and Curiosity.  I think the smith wishes to\nknow about Weydlyn\u2019s bolt-guisarme and how to make it and would exchange\nknowledge for a fine coif.  Weydlyn agrees to share, again a Clarity test with a\nconsequence of failure being that this will take considerable time.\n<\/small><\/p>\n<p><small>\nAnd Weydlyn fails, he\u2019s not very good at explaining.  I tag the Woe of the\nCastle.  Greed and Oath are in play.\n<\/small><\/p>\n\n<\/section>\n\n<p>A few days into Weydlyn\u2019s work in the forge, agitation throbbing, the din of the\nforge piercing and pounding his aching skull, he hits his limit.  A page\u2019s\narrival brought his rage to a boil.  Lord Prentise was now demanding his\npresence, and the idiot armoursmith was still no closer to working out the\nnuances of the bolt-guisarme.<\/p>\n<p>Fed up, he looks at the blistered man, and barks, \u201cI have tried these last few\ndays to teach you, but you are an anvil, nothing getting through that thick\nskull of yours.\u201d<\/p>\n<p>Weydlyn continues with a litany of curses and excoriations that he often heard\ndirected at him during his apprenticeship.<\/p>\n<p>The armour smith\u2019s face grows even redder, but knows better than to challenge a\nknight of the realm.<\/p>\n<p>\u201cI\u2019ll be taking that coif as I have spent more time in this forge than I\u2019d ever\nneed to work one of those from steel.\u201d<\/p>\n<p>The smith scowls, biting his tongue, tasting the copper of drawn blood.  \u201cAy\nsir.\u201d<\/p>\n<h2 id=\"of-sir-beatrices-days\">Of Sir Beatrice\u2019s Days<\/h2>\n<p>Sir Beatrice, in the meantime, spends her time amongst the squires, looking to\nwhom she might recruit.  Neither Weydlyn nor Beatrice are certain if their paths\nwill continue after they present to themselves to Lord Prentise.<\/p>\n<section class=\"inline-comments\">\n<p><small>I call for a Clarity test for Sir Beatrice.  She succeeds and makes note of the\nquality of squires and prepares her request of Lord Prentise.<\/small><\/p>\n<\/section>\n\n<p>While watching and offering guidance to the exuberant and receptive youth, she\nfinds herself thinking of whether she wishes to cast her lot with Sir Weydlyn.\nShe saw him rise to greatness, and fight to the brink in order to restore her\nknighthood.<\/p>\n<p>She knew his deed was one motivated by fear of his mortality and losing his one\nidentity, knowing that without the mantle of Knighthood, he\u2019d return to the\nforge (and source of scars both seen and unseen) or he\u2019d fall into brigandry.<\/p>\n<p>Weydlyn took his Oaths seriously, but behind it was fear.  Something most\ndangerous.  She wondered how long she could withstand the blasts of hot anger\npouring from mouth and eyes.  Could she bring calming light to him?<\/p>\n<p>A few days after their arrival, Sir Beatrice requested an audience with Lord\nPrentise; she did not include Sir Weydlyn.  She spent the evening before\npolishing mirror and armor.  Though she would leave armor and weapon behind, she\nknew that her mirror was always welcome.<\/p>\n<h2 id=\"an-audience-with-lord-prentise\">An Audience with Lord Prentise<\/h2>\n<p>\u201cPresenting Sir Beatrice, the Violet Knight, Retriever of the Vassal Rod,\u201d\nproclaims a herald as the doors open to the throne room.  Upon a dias sits Lord\nPrentise, lounging in his blackened leather armor.  His mouth holding that\npuckered look, as though sniffing something.<\/p>\n<p>Sir Beatrice takes not of the numerous rat holes throughout this room, she\nshudders just a bit, seeing a tail dart into the darkness.<\/p>\n<p>\u201cGood Sir Beatrice, since last we spoke, I had received a decree from a most\nunwelcome courier, that you had been stripped of your knighthood.  Yet, when I\nheard your arrival and had my steward read that letter again, it was nothing\nmore than a naughty limerick not worth repeating,\u201d said the man smiling, at\nfirst looking Beatrice up and down, then looking away in some perhaps private\nshame.<\/p>\n<p>\u201cI have Sir Weydlyn to thank for my restoration.  I wish, that we might exchange\nnews so that we might both make better of our Knightly Oaths.\u201d<\/p>\n<p>Beatrice shares the events of the Judge.  Lord Prentise shares of the cursed\nSilence to the south and the Minstrel\u2019s Nook dwelling to the north.  Lord\nPrentise shares that the Lich is closer and to the West.<\/p>\n<p class=\"verse\">\nFrom fable\u2019s heart springs fable\u2019s fear, a past within a past<br \/>\nFrom time before our nightmares still, made flesh by sullen mass.<br \/>\n<\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>This session was me working through Holding\u2019s procedures and random tables as\nwell as implementing functions for my mapping.  I spent a bit of the morning\nworking 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>\n<p>My goal is to express game state in the data structure I use to generate a map.\nThat way, as new information arises, I can use that to track the information and\neven regenerate the map if I so choose.<\/p>\n<p>Regarding the fiction, I felt that this was a session in which I (as the\nreferee) needed to shift from the Wilderness mindset to a Holdings mindset.\nWhich meant reconciling various posts I\u2019ve read and creating corresponding\nprocedures.<\/p>\n<p>As a player, I\u2019m uncertain if I want to continue with both of the knights.  I\nthought I\u2019d explore writing from Sir Beatrice\u2019s perspective to see how that\nfeels.<\/p>\n<p>I also chose to step out of the narrative and exchange information.  I\u2019ll review\nthe Lich and bring that into the narrative in future sessions.<\/p>\n<p>Until next time.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Forged%20From%20the%20Worst%3a%20Session%205\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Forged from the Worst: Session 4","link":"https:\/\/takeonrules.com\/2025\/12\/19\/forged-from-the-worst-session-4\/","pubDate":"Fri, 19 Dec 2025 06:44:43 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/19\/forged-from-the-worst-session-4\/","category":["rpgs","sessions"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cForged from the Worst: Session 4\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n<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>\n<\/p\/><p><strong>Summary: <\/strong>\nIn which Sir Weydlyn confronts his fear and makes a solemn promise to Beatrice.\n<\/p>\n        <p>Sir Weydlyn and Beatrice spend an uneventful and rather quiet evening camping.\nSir Weydlyn tending and staring into the fire, and Beatrice brushing Light\u2019s\nReturn.  Several paces outside the fire ring, a placid skunk quietly watches,\nwondering if it too might appreciate a brushing from the woman.<\/p>\n<p>In the morning, they dowse the coals, forage a simple meal and begin their\njourney.  The two riders cross the dry hills making for the <em>barren<\/em> river valley,\nchoked by slate and slag.<\/p>\n<h1 id=\"ever-working-through-procedures\">Ever Working Through Procedures<\/h1>\n<p>I check and there is no barrier between <code>7,2<\/code> and <code>6,3<\/code>.<\/p>\n<p>And I realize I\u2019m uncertain about what to do if there\u2019s a Myth on the Hex.<\/p>\n\n<blockquote  class=\"h-cite\">\n\nEnding a phase in the Hex containing a Myth always reveals its next Omen without\nmaking a Wilderness Roll.  When possible the Knights also get the drop on the\nOmen.\n\n<footer>&mdash;<cite>Mythic Bastionland<\/cite>\npage 18\n\n<\/footer>\n<\/blockquote>\n\n<p>So the for Trek procedure (e.g. moving 1 Hex) is:<\/p>\n<ul>\n<li>Check for barrier<\/li>\n<li>When none\n<ul>\n<li>Cross and check for myth\n<ul>\n<li>When present encounter next Oment of the Myth<\/li>\n<li>When none make Wilderness Roll<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Gallop has a different procedure.<\/p>\n<p>Thus far, I have only performed Trek.  I take a bit of time and add a travel\nfunction to the Mythic Bastionland package.  As of <time datetime=\"2025-12-16\">&lt;2025-12-16 Tue&gt;<\/time> it only\nhandles Treks.<\/p>\n<p>I consult the function and get:<\/p>\n\n<blockquote  class=\"h-cite\">\n\nTrekking from (7 . 4) to (6 . 6).  You move to (6 . 6), and reveal the next Omen\nfor The Judge (the nearest Myth).\n\n<\/blockquote>\n\n<p>(Note: the output uses double-height coordinates)<\/p>\n<p>Which leads me to writing a function to help me track omens revealed.  But I\ndigress with this lengthy tangent.<\/p>\n<h1 id=\"a-courtyard-of-judgment\">A Courtyard of Judgment<\/h1>\n<p>They follow the bluff along the eastern bank of the river, the morning sun\ndancing upon the wide cobalt colored river.  The slate and slag spreading along\nthe eastern horizon.  Here and there they note a herons, some blue, others\ngreen, standing in the shallows.  Their attention to the hunt.<\/p>\n<p>As they follow the bow there amidst large menhirs and dead ash trees they see a\ncourtyard in black and white, carved seats in a circle.<\/p>\n<p>Beatrice halts Light\u2019s Return and soothes her to maintain a silence.  Sir\nWeydlyn, takes note, and himself halts, though not as concerned with maintaining\nsilence.<\/p>\n<p>\u201cThe court,\u201d says Beatrice in a nerve-pinched whisper.<\/p>\n<p>\u201cThe court?\u201d<\/p>\n<p>\u201cYes, I recognize this, it is a court of Amrageft,\u201d whispers Beatrice.<\/p>\n<p>\u201cIs Amrageft there?\u201d<\/p>\n<p>\u201cI can\u2019t tell.\u201d<\/p>\n<p>\u201cThen go and check.\u201d<\/p>\n<p>\u201cWhat?\u201d asks Beatrice.<\/p>\n<p>\u201cGo and check.  If this is the court of Amrageft, she\u2019s already passed judgment\non you once, so there\u2019s nothing more to fear,\u201d says Sir Weydlyn, eyeing the\ncircle, still considering that Beatrice might herself be untrue.<\/p>\n<p>\u201cMe?  Why you villain.  Your Oath is to Seek the Myths\u2026and one is right before\nyou, yet you cower behind me,\u201d replies Beatrice.<\/p>\n<p>As they converse, they hear vague voices echoing and arguing from the courtyard.<\/p>\n<p>\u201cYou say it is a Myth,\u201d says Weydlyn, his voice rising as a vein on his temple\nthrobs and his face reddens, \u201cyet the truth of your story hangs in the balance.\nPerhaps nothing but devils breath.\u201d<\/p>\n<p>Beatrice\u2019s nostrils flare, her eyes widen, as she walks Light\u2019s Return up beside\nIngot.  Through halting breaths she says, \u201cYou coward.  You would send me forth\nas sacrifice to maintain your knighthood.\u201d<\/p>\n<p>Sir Weydlyn raises his gauntlet, Beatrice flinches.  Weydlyn pauses, noting the\npassion and bravery in Beatrice\u2019s words.  Slowly he lowers his fist.  Then\nlowers his head.<\/p>\n<p>\u201cI see,\u201d says Beatrice, as she grabs the bundle of javelins, and makes for the\ncourtyard, passing between two large stones and onto the white and black\nflagstones.<\/p>\n<h1 id=\"to-face-ones-judgment\">To Face Ones Judgment<\/h1>\n<p>In a firm resounding voice, Beatrice proclaims, \u201cI come seeking the writ of\njudgment against Sir Beatrice, the Violet Knight.\u201d<\/p>\n<p>As Sir Weydlyn with head bowed deep, raises to look between the stones, the\nechoing voices stop.  And one voice, now loud, barking and bitter, says in\nbaritone \u201cWhat of this claim, oh wretched Beatrice?\u201d<\/p>\n<p>\u201cI seek this writ so I may prove true a warning to those who heed not the laws\nof Ambrageft,\u201d commands Beatrice, \u201cI demand that you, Muntin, produce this\nwrit.\u201d<\/p>\n<p>From between the stones Sir Weydlyn sees Beatrice now talking with a tall man\nwearing a checkered longcoat, holding a grim polehook.<\/p>\n<p>\u201cMuntin,\u201d mutters Sir Weydlyn, as he watches on seeing the tall man pull a\nsingular scroll from his longcoat, and unfurl it.<\/p>\n<p>\u201cBe it known throughout the land, I Ambrageft of Diamond Eye, do find guilty Sir\nBeatrice for the crime of under-sharpening their knightly weapons.  And for\nwhich she shall be stripped of her knighthood,\u201d reads the barking bitter man.<\/p>\n<p>As Muntin reads the scroll, Sir Weydlyn walks Ingot towards the courtyard,\npassing the two large stones.  Beatrice\u2019s gaze turns to Weydlyn, and he averts\nhis eyes and lowering his head a bit, then looking to Muntin.<\/p>\n<p>Muntin noting Sir Weydlyn\u2019s approach, commands him to halt and name himself.<\/p>\n<p>\u201cI am Sir Weydlyn, knight of the Realm.  The verdict of Ambrageft is capricious.\nSurely you Muntin, can see that,\u201d says Weydlyn as he draws Ingot to a halt.<\/p>\n<p>\u201cIt is not for me to see nor say, as I am now bound in service as Sergeant of\nthe Law,\u201d replies Muntin as he grips his polehook and looks up to mounted\nWeydlyn.<\/p>\n<p>\u201cThose Laws of your Mistress are false.\u201d<\/p>\n<p>\u201cKnight,\u201d growls Muntin, \u201cdo you challenge these laws?\u201d<\/p>\n<p>Weydlyn glancing to Beatrice then back to Muntin responds, \u201cI know not all of\nyour laws but I do challenge the judgment against Sir Beatrice.\u201d<\/p>\n<p>\u201cSir Beatrice is no more,\u201d hisses Muntin coiling tighter, readying to spring or\nstrike.<\/p>\n<p>\u201cThen I challenge you to Trial by Combat, to prove the verdict unjust and vacate\nthe sentence,\u201d howls Weydlyn.<\/p>\n<section class=\"inline-comments\">\n<p><small>I wonder, does Muntin have the authority to receive such a challenge?  Probably\nnot.  I <i class=\"dfn\">Ask the Stars<\/i> and get a \u201cYes but\u2026\u201d<\/small><\/p>\n<\/section>\n\n<p>Muntin chuckles, \u201cOh Sir Weydlyn, I alone have not the authority to vacate\nAmbrageft\u2019s judgment.\u201d<\/p>\n<p>\u201cFoul devil,\u201d replies Weydlyn, \u201cthen if not you alone, whom else?\u201d<\/p>\n<section class=\"inline-comments\">\n<p><small>I\u2019m torn, will Muntin share the levers that might move the gears of Justice?\nHow Kafka-esque is this Judge\u2019s court?  There\u2019s already the absurd failure to\nsharpen an mace.  So I\u2019m thinking absurd.  I again <i class=\"dfn\">Ask the Stars<\/i>, will Muntin\nshare the lever in which he moves?  The answer seems unlikely, and the stars\nagree.<\/small><\/p>\n<\/section>\n\n<p>Muntin begins to speak, and his mouth quickly clamps shut, nearly biting through\nhis tongue.  He looks at Weydlyn, as though now a dog caught doing something\nthat warrants a scolding, eyes begging for mercy and forgiveness.<\/p>\n<p>\u201cSpeak,\u201d commands Weydlyn.  Muntin\u2019s face shifts, shedding guilt, and instead\nlooking up at Weydlyn with bitter eyes.li<\/p>\n<p>\u201cVery well, I challenge those with whom you together have authority to vacate\nAmbrageft\u2019s judgment,\u201d says Weydlyn.<\/p>\n<p>Muntin nods, and responds, \u201cSo be it.\u201d<\/p>\n<section class=\"inline-comments\">\n<p><small>I <i class=\"dfn\">Ask the Stars<\/i> is it the three Sergeants of Law that together must be\nchallenged?  The answer seems likely.  And the stars agree.<\/small><\/p>\n<\/section>\n\n<p>Reaching into his checkerboard longcoat, he pulls forth a small trumpet, and\ndrawing to his mouth, blows a short blast, \u201cI summon Lyo and Tonnel, my fellow\nSergeants of Law.\u201d<\/p>\n<p>All the while, Beatrice watches the exchange, her eyes lighting for a moment as\nhope swells that she might find herself restored.  With hope rising, she casts\nher gaze to Sir Weydlyn, his fear forgotten and the quickening fires of passion\ndrawing him to a challenge unknown.<\/p>\n<section class=\"inline-comments\">\n<p><small>Do the two Sergeant\u2019s manifest almost immediately?  I <i class=\"dfn\">Ask the Stars<\/i> with the\nanswer likely.  The stars reply: Yes but\u2026<\/small><\/p>\n<\/section>\n\n<p>Mist gathers and swirls near Muntin.  Both Beatrice and Weydlyn back their\nhorses away.  The swirling mist expands and dissipates, leaving two similarly\nclad men standing.<\/p>\n<p>Each shakes his head, then looks to Muntin, who speaks, \u201cI must confer with my\nfellow Sergeants of Law, but know this, tomorrow at day break, we shall receive\nyour challenge and join in Trial by Combat.  For now, you have leave to rest.\nKnow that nothing shall disturb this day nor night.  Amidst the stones, you\u2019ll\nfind a small cottage where you might rest and prepare for the trial.\u201d<\/p>\n<h1 id=\"respite-before-the-trial\">Respite before the Trial<\/h1>\n<p>Is there access to Sustenance before the trial?  I <em>Ask the Stars<\/em> with the answer\nbeing unlikely.  The Stars respond: Yes but\u2026to eat the food is to accept future\nJudgment.  Now does Sir Weydlyn recognize this?  Or does Beatrice know this?\nLet\u2019s make a Clarity check, and use the better of the two: Beatrice by many\ntimes over.  She does not recognize this fact.<\/p>\n<p>Sir Weydlyn eats the meal provided, restoring his Vigor.  Weydlyn\u2019s stubborn and\nrefuses to apologize for doubting Beatrice\u2019s story.  Beatrice thanks him for\nfighting to restore her knighthood.  Weydlyn deflects, claiming he is doing this\nto Seek the Myths and Protect the Realm; which restoring a Knight will certainly\nhelp on both accounts.<\/p>\n<p>Weydlyn makes a solemn <em>Promise<\/em> to Beatrice, that he shall restore her\nknighthood.<\/p>\n<h1 id=\"the-trial\">The Trial<\/h1>\n<section class=\"inline-comments\">\n<p><small>\nIs this a Trial to the Death?  Yes but\u2026well we\u2019ll let that one hang for a bit.\n<\/small><\/p>\n<p><small>\nAnd the combat must remain within the chess board.\n<\/small><\/p>\n\n<\/section>\n\n<p>The humid morning air, hangs upon the four combatants.  Even before the trial,\nsweat beads on their brow.  The day beginning unseasonably hot for early spring.\nAs though the furnace forge had drawn close to bear witness to this day.<\/p>\n<p>Weydlyn, white beneath, begins on the white queen\u2019s square.  Muntin on the other\nside, stand not on the first row, but the second.  Muntin, center on white,\nTonnel and Lyo each flanking on black.  As though pawns standing guard of some\nyet to arrive queen.<\/p>\n<p>Amongst the seats in the stones, Beatrice watches.  Hope giving way to nerves.\nShe knows the prowess granted by the sacred sworn oaths, and prays to the stars\nnow vanished that Sir Weydlyn\u2019s oath carries him through.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nLyo, Tonnel, and Muntin have the same stats: Vigor 12, Clarity 14, Spirit 14,\nGuard 6, Armor 1, polehook (d10 long)\n<\/small><\/p>\n<p><small>\nThey stand close, forming a shield-wall.\n<\/small><\/p>\n\n<\/section>\n\n<p>Sir Weydlyn winces as a horn blasts and echoes throughout stone and courtyard.\nLyo says, \u201cWe have begun.\u201d  Patient, the sargeants wait, polehooks lowered ready\nto hold off the legendary assault of Knight of the Realm.<\/p>\n<p>Sir Weydlyn looks to Beatrice, smiles, reaches to his belt and hurls his dagger\nat Muntin.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nI invoke a <i class=\"dfn\">Smite<\/i> to add a d12 to the roll, getting a 10 and 5.  There\u2019s a few\noptions: do 6 damage and inflict a scare or 10 damage and perform a Gambit;\nwhich grants a Save.  Reviewing the scars, these aren\u2019t likely to sway the\ncombat.  So Gambit it is.  I choose to attempt to <i class=\"dfn\">Stop<\/i> Muntin from moving.  But\nhe Saves, so may move.  Since wounded, I also check if he routs, but does not.\nWeydlyn passes his Vigor save and is not fatigued.\n<\/small><\/p>\n<dl class=\"org-dl\">\n<dt><small>Muntin<\/small><\/dt><dd><small>Vigor 9, Guard 0.<\/small><\/dd>\n<\/dl>\n<\/section>\n\n<p>The Sergeants bark, \u201cCome face justice.\u201d  And begin a slow advance; not wishing\nto surrender the advantages of their shield wall.<\/p>\n<p>Sir Weydlyn surveying the board, sees nothing more to throw.  He grins and hurls\nhis bolt-guisarme at Lyo, who\u2019s face registers this unconventional action.<\/p>\n<section class=\"inline-comments\">\n<p><small>Again Weydlyn <i class=\"dfn\">Smites<\/i> and rolls a 1 and a 12.  The polearm dives deep into Lyo\u2019s\nshoulder, he crumples reduced to Vigor 7.  His morale holds.  I roll Weydlyn\u2019s\nVigor save and get a 20.  A failure.  Weydlyn is now <i class=\"dfn\">Fatigued.<\/i> I really had\nhoped for a Gambit or to make the save.  Things are going to get dire.<\/small><\/p>\n<\/section>\n\n<p>With Weydlyn presently unarmed, the three charge.<\/p>\n<section class=\"inline-comments\">\n<p><small>For them, I roll a 10, 9, 7.  It makes sense to inflict 8 damage and <i class=\"dfn\">Stop<\/i>\nWeydlyn from moving.  This reduces his Guard from 6 to 0, and his armor soaks\nthe remaining points.  He is also <i class=\"dfn\">Stopped<\/i>.<\/small><\/p>\n<\/section>\n\n<p>Weydlyn tries to lunges at Lyo, with his heavy mail gauntlet.  I roll a 4.\nLyo\u2019s Vigor drops to 4 (with that armor 1 preventing the mortal wound).<\/p>\n<p>The three Seargants roll 5,4,2 on their counter attack.  Sir Weydlyn\u2019s Vigor\ndrops from 16 to 12.  And he presses back, his gauntlet burning with the forge\nfires.  I roll a 5 and 3.  He punches Lyo, dropping inflicting a Mortal Wound\nand dropping him.<\/p>\n<p>Muntin and Tonnel, return a strike: 6 and 3.  Weylynd drops from 12 to 8 Vigor.\nCircumstances are beyond dire.<\/p>\n<p>The gauntlet, hot with Weydlyn\u2019s rage pounds into Muntin.  Inflicting, I roll an\n8,6,2.  Dropping Muntin\u2019s Vigor from 9 to 4.  He falls, face smashed and\nbleeding.<\/p>\n<p>Tonnel\u2019s resolve breaks (failing his Spirit save by 1).  And backs off.  With\nfury, Weydlyn charges up within Tonnel\u2019s reach.  Punching with a now blazing\ngauntlet.  I roll 7,4,1,1.  And opt for 7 damage and attempt to press the\nimpairment; which fails.  Reducing Tonnel\u2019s guard to 0 and inflicting a Scar;\nsmatching Tonnel\u2019s mouth.  He loses 6 Vigor, dropping from 14 to 8.<\/p>\n<p>Tonnel steps back, and pokes at Weydlyn.  There\u2019s a 50\/50 chance this is all\nover.  I roll a 5.  Weydlyn\u2019s armor soaks 2, leaving his Vigor at 5.  Weydlyn\ndives in with his gauntlet singing a song of the forge.  I roll 7,8,5,2.\nWeydlyn\u2019s fist catches Tonnel square in the skull, bone and blood splatter.<\/p>\n<p>Exhausted, bloody, and battered, Weydlyn limps to retrieve his bolt-quisarme.  A\nglowing violet nimbus surrounds Beatrice as she rushes to help Weydlyn.<\/p>\n<p>\u201cSir Weydlyn, you have fought with a fury unmatched.  And restored me to\nknighthood.  For that, I thank you.\u201d<\/p>\n<p>\u201cYes, yes,\u201d replies Weydyln between wincing breaths.<\/p>\n<h1 id=\"reflections\">Reflections<\/h1>\n<p>Well that was a brutal and close fight.  But let\u2019s move back a bit.<\/p>\n<p>I\u2019m working through Sir Weylynd\u2019s fears.  Playing his low Spirit and Clarity\nwith a bit of cowardice, low emotional intelligence, and manipulation.  And\nBeatrice rising to face her judgment.<\/p>\n<p>I let the oracles guide me, moving through the in play discovery of Weydlyn\u2019s\nbrashness, the arbitrary nature of the Judge, and how a Trial by Combat might\nreverse the sentence.<\/p>\n<p>And before I started the Trial by Combat, I reviewed the combat section.  And\nsaw that the spearwall was a strong defense against a the charge of a Knight.\nKnowing that in older style games, breaking morale is often the stronger\nstrategy.<\/p>\n<p>Which is why I had Weydlyn risk much by hurling his two weapons.  It was a risk.\nAnd the dice were fickle; lots of damage, no <em>Gambit<\/em>, and becoming <em>Fatigued<\/em>.  Had\nWeylynd been able to perform a <em>Gambit<\/em>, my plan was for him to quickly move and\nretrieve his spear.  And had he not become <em>Fatigued<\/em>, well he could\u2019ve weathered\nmore of the storm.<\/p>\n<p>But all of those early inflicted wounds set the stage for a pitched battle that\nWeydlynd narrowly survived, due very much to the power of Tempering Strike:\n\u201cwhen you cause a Wound with a melee weapon, that weapon receives +d8 until the\nend of combat.  This effect can stack.\u201d<\/p>\n<p>I made the call that wearing scale armor meant heavy gauntlets, which I consider\na melee weapon.<\/p>\n<p>I keep thinking that the Combat moves quickly with ample points for decisions\nand risk taking.  And the fictional state changes quickly.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Forged%20from%20the%20Worst%3a%20Session%204\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Mythic Bastionland Map Play Aid Emacs Package","link":"https:\/\/takeonrules.com\/2025\/12\/16\/mythic-bastionland-map-play-aid-emacs-package\/","pubDate":"Tue, 16 Dec 2025 20:11:00 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/16\/mythic-bastionland-map-play-aid-emacs-package\/","category":["emacs","rpgs"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cMythic Bastionland Map Play Aid Emacs Package\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nGenerating 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.\n<\/p>\n        <p>In the Forge from the Worst series, I\u2019ve been writing about my solo play in\n<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 \u201cMythic Bastionland\u201d\" title=\"Other site-wide references of \u201cMythic Bastionland\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND\">&#128214;<\/a><\/small>\n.  I had went into the game hoping to engage the map without\nreferee knowledge of the map; no insight into where all the features are, but\ninstead allowing the procedures of the game to reveal the locations of various\nfeatures.<\/p>\n<p>Midway through my 3rd session, I found myself needing to reveal information of\nthe map that was going to be more challenging to derive.  I chose that moment\u2014a\njust in time moment\u2014to 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 \u201cEmacs\u201d\" title=\"Other site-wide references of \u201cEmacs\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-EMACS\">&#128214;<\/a><\/small>\n and then write\ncommands to interrogate the map.<\/p>\n<p>I reviewed the questions I had already asked of the map, and wrote them down:<\/p>\n<ul>\n<li>What is the direction to a named Myth?<\/li>\n<li>What is the nearest Myth?<\/li>\n<li>What is a random Myth that is not the nearest?<\/li>\n<li>Is there a barrier when moving between these two hexes?<\/li>\n<li>Is there a Myth on this Hex?<\/li>\n<li>What is feature is there on this hex?<\/li>\n<\/ul>\n<p>I suspect I may also need to ask: \u201cWhat is the direction to the nearest Myth?\u201d<\/p>\n<p>I wasn\u2019t going to type up the map and store it, but instead randomly generate\nthe map.  Also, I wanted to make sure that I could generate a map that would\nconform to the player-discovered information from the sessions thus far session.<\/p>\n<h2 id=\"initial-research\">Initial Research<\/h2>\n<p>Given that I was going to be working out distances, I read through the amazing\nand helpful <a href=\"https:\/\/www.redblobgames.com\/grids\/hexagons\/\">Hexagonal Grids<\/a>.<\/p>\n<p>I needed to settle on an appropriate coordinates systems.  With some reading, I\nchose to adopt the <a href=\"https:\/\/www.redblobgames.com\/grids\/hexagons\/\">double-height coordinates<\/a>.  Which was not the notation I had\nalready written down in blog posts, but would be easy to map.<\/p>\n<h2 id=\"initial-work\">Initial Work<\/h2>\n<p>I knew that once I created a map that conformed to Sir Weydlyn\u2019s observations, I\nwouldn\u2019t want to dig into the data nor debug functions using that map.  So, my\napproach was to work from a disposable map and test the functions.<\/p>\n<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 \u201cRead-eval-print loop\u201d\" title=\"Other site-wide references of \u201cRead-eval-print loop\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-REPL\">&#128214;<\/a><\/small>)\n to test these functions.  One emergent foible is that I kept\nusing the single-height coordinates; introducing a translating function for\ninternal work.  As of <time datetime=\"2025-12-15\" title=\"2025-12-15\">today<\/time> this foible persists.  And creates a bit more\nchatter, which we\u2019ll see in a bit.<\/p>\n<h2 id=\"encoding-the-known-world\">Encoding the Known World<\/h2>\n<p>Once I had a solid set of functions that could answer questions, I set about\nencoding the Known World.  Let\u2019s walk through this.<\/p>\n<p>First we have this <code>mbc<\/code> function.  It converts single-height coordinates to\ndouble-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>\n<pre><code class=\"language-emacs-lisp\">(defalias 'mbc 'mythic-bastionland--random-coord)\n<\/code><\/pre>\n<p>Next let\u2019s read over the code and comments.  I\u2019ll meet you after the code block.<\/p>\n<pre><code class=\"language-emacs-lisp\">(defalias 'mbc 'mythic-bastionland--random-coord)\n(mythic-bastion-land-map-write\n (mythic-bastionland-map-generate\n  `((constraints .\n                 ((nearest . ((label . &quot;The Mountain&quot;)\n                              (feature . myths)\n                              (coord . ,(mbc 9 1))))\n                  (nearest . ((label . &quot;The Judge&quot;)\n                              (feature . myths)\n                              (coord . ,(mbc 7 2))))))\n    ;; This is where Sir Weydlyn encountered Seer Tompot.\n    (sanctums . ((&quot;Tompot (Tangled Seer)&quot; . ,(mbc 8 1))))\n    ;; With the chosen random scenario, we assign the Moutain, then\n    ;; pick a random one for the Beast\n    (myths . ((&quot;The Mountain&quot; .\n               (,(mbc 10 4) ,(mbc 8 4) ,(mbc 9 2)\n                ,(mbc 9 3) ,(mbc 9 4) ,(mbc 9 5)))\n              (&quot;The Beast&quot; .\n               (,(mbc 8 3) ,(mbc 9 3) ,(mbc 8 4)\n                ,(mbc 9 4) ,(mbc 8 5)))\n              (&quot;The Judge&quot; .\n               ,(mythic-bastionland-hexes-within-range\n                 (mbc 7 2) 3))))\n    ;; These have been converted to double height coordinates.\n    (holdings . ((&quot;Tower&quot; . (9 . 3)) (&quot;Castle&quot; . (5 . 7))\n                 (&quot;Fortress&quot; . (1 . 19)) (&quot;Town&quot; . (8 . 16))))\n    (omens-revealed . ((&quot;The Mountain&quot; . 1)))\n    (omit (\n           ;; Sir Wedylyn crossed between these two potential\n           ;; barriers.\n           (barriers .\n                     ((,(mbc 8 1) . ,(mbc 9 1))\n                      (,(mbc 9 1) . ,(mbc 8 2))\n                      (,(mbc 8 2) . ,(mbc 7 2)))))))))\n<\/code><\/pre>\n<p>The <code>mythic-bastionland-map-generate<\/code> function takes an <code>alist<\/code> with keys: <code>holdings<\/code>,\n<code>myths<\/code>, <code>landmarks<\/code>, <code>dwellings<\/code>, <code>sanctums<\/code>, <code>monuments<\/code>, <code>hazards<\/code>, <code>curses<\/code>, <code>ruins<\/code>,\n<code>barriers<\/code>, <code>constraints<\/code>, <code>omens-revealed<\/code>, and <code>omit<\/code>.<\/p>\n<p>This allows me to specify where to place specific already known landmarks as\nwell as to omit placing landmarks at a given coordinate.<\/p>\n<p>Of those: <code>holdings<\/code>, <code>myths<\/code>, <code>landmarks<\/code>, <code>dwellings<\/code>, <code>sanctums<\/code>, <code>monuments<\/code>, <code>hazards<\/code>,\n<code>curses<\/code>, and <code>ruins<\/code> are nameable feature types; a function I wanted as I managed\nthe map.<\/p>\n<p>The <code>omit<\/code> option allows me to specify coordinates that I will not place the\nnamed feature.<\/p>\n<p>The <code>constraints<\/code> option are tests that must be true with the completed map.  When\nall of them are not true, I discard that generated map and create another one.\nBy default this will be attempted 10 times; but you can also pass <code>max-retries<\/code> to\nthe generation to modify that amount.<\/p>\n<p>And <code>omens-revealed<\/code> allows for tracking of each omen\u2019s present state.<\/p>\n<h2 id=\"generating-the-world-from-that-which-is-known\">Generating the World from that Which is Known<\/h2>\n<p>With the <code>mythic-bastionland-features<\/code>, I define the feature types (that are\nrenamable), how many there should be, and optionally a minimum distance.<\/p>\n<pre><code class=\"language-emacs-lisp\"> (defvar mythic-bastionland-features\n  '((myths . ((how-many . (6))))\n     (holdings . ((how-many . (4)) (min-distance . 5)))\n     (sanctums . ((how-many . (3 4))))\n     (monuments . ((how-many . (3 4))))\n     (dwellings . ((how-many . (3 4))))\n     (hazards . ((how-many . (3 4))))\n     (curses . ((how-many . (3 4))))\n     (ruins . ((how-many . (3 4)))))\n  &quot;Feature types that are labeled, and thus renameable.  Also we want\nto consider how many of these we might place as well as the minimum\ndistance (if any).&quot;)\n<\/code><\/pre>\n<p>For <code>holdings<\/code>, there are 4 at a minimum distance of 5.  For <code>myths<\/code> there are\nalways 6.  And for the others, there is either 3 or 4.<\/p>\n<p>And now we have the code that generates the map based on the given\nconfiguration.<\/p>\n<p>In short:<\/p>\n<ol>\n<li>We place the given features; when a feature has more than one coordinate, we\nrandomly pick a coordinate that does not have something in it.<\/li>\n<li>Build a list of the remaining features to place.<\/li>\n<li>Looping through the locations to place, attempt to place them on the map;\nhonoring minimum distance, omitted coordinates, as well as only allowing one\nfeature per hex.<\/li>\n<li>Randomly place known barriers, skipping over omitted ones.  (As of\n<time datetime=\"2025-12-15\">&lt;2025-12-15 Mon&gt;<\/time>, I don\u2019t have a means of placing known barriers, but that\nfeature is trivial to add).<\/li>\n<li>Validate that all constraints are true; if not, try again.<\/li>\n<li>The record any <code>omens-revealed<\/code>.<\/li>\n<\/ol>\n<pre><code class=\"language-emacs-lisp\">(defun mythic-bastionland-map-generate (config)\n  &quot;Generate and store `mythic-bastionland-map' via CONFIG.\n\nSee `mythic-bastionland-features' for some of the `car' values of\nCONFIG.  Another is `barriers' (which are unamed).  Another is `omit',\nitself an alist, with the same `car' values as those in CONFIG (except\n`omit').\n\nWhen providing existing locations to place, you may provide either a\nsingle coordinate or a list of coordinates (from which the function will\nrandomly pick a candidate of coordinates not already placed).  The logic\nenforces that only one feature may be placed in each hex.\n\nGiven this placement logic, ensure that the config places features with\nless candidate spaces earlier.&quot;\n  (let ((max-retries\n          (or (alist-get 'max-retries config) 10))\n         (keep-mapping t)\n         (the-map nil))\n    (while (and keep-mapping (&gt; max-retries 0))\n      ;; Assume that we don't need to keep trying to build the map\n      (setq keep-mapping nil)\n      (setq the-map nil)\n      (setq max-retries (- max-retries 1))\n\n      ;; Now, let's see if our assumption is correct.\n      (let ((barriers nil)\n             (locations nil)\n             (locations-to-place nil))\n        ;; First put the locations on the map...no effort is taken to\n        ;; avoid location collisions.  Also, queue up further locations\n        ;; to place.\n        (cl-loop for (feature . fconfig) in mythic-bastionland-features do\n          (let* ((feat-locations\n                   (alist-get feature config))\n                  (how-many\n                    (alist-get 'how-many fconfig))\n                  ;; TODO: allow for multiple feature entries.\n                  (placed-features '()))\n\n            ;; When we are given location qs for this feature type, add\n            ;; it to the placed list.\n            (when feat-locations\n              (cl-loop for (label . list-or-one-coord) in feat-locations do\n                (let ((placed-coordinates\n                        (mapcar #'car locations)))\n                  (if (consp (car list-or-one-coord))\n                    ;; We have a list of coordinates\n                    (let ((coord\n                            (seq-random-elt\n                              (seq-filter\n                                (lambda (c)\n                                  (not (member c placed-coordinates)))\n                                list-or-one-coord))))\n                      (unless coord\n                        (user-error &quot;Location %s with coordinate options %s cannot be placed due to collisoin with all other placed locations.&quot;\n                          (label list-or-one-coord)))\n                      (cl-pushnew (cons coord label) locations)\n                      (cl-pushnew (cons label coord) placed-features))\n                    ;; We have one coordinate\n                    (let ((coord list-or-one-coord))\n                      (when (member coord placed-coordinates)\n                        (user-error &quot;Location %s with coord %s cannot be placed due to existing placed location&quot;\n                          label coord))\n                      (cl-pushnew (cons coord label) locations)\n                      (cl-pushnew (cons label coord) placed-features))))))\n            (cl-pushnew (cons feature placed-features) the-map)\n\n            ;; Next queue up placing the remainder of locations for the\n            ;; feature type (accounting for what was already given).\n            (dotimes (i (- (seq-random-elt how-many)\n                          (length feat-locations)))\n              (cl-pushnew (cons feature\n                            (format &quot;%s %s&quot; feature (+ i 1)))\n                locations-to-place))))\n\n        ;; Now that we have our task list of what all needs adding.\n        ;;\n        ;; This involves avoiding collisions with other placed features\n        ;; as well as heading the guidance of an omit coordinates for\n        ;; the given feature.\n        (cl-loop for (feature . label) in locations-to-place do\n          (let ((keep-trying t)\n                 (min-distance\n                   (alist-get 'min-distance\n                     (alist-get feature mythic-bastionland-features)))\n                 (omitted-feature-coordinates\n                   (alist-get feature (alist-get 'omit the-map))))\n            (while keep-trying\n              (let* ((coord\n                       (mythic-bastionland--random-coord)))\n                (when (and\n                        ;; Verify that what we're placing is place at\n                        ;; the minimum distance.\n                        (if min-distance\n                          (&lt;= min-distance\n                            (min\n                              (mapcar\n                                (lambda (label-coord)\n                                  (mythic-bastionland--hex-distance\n                                    coord (cdr label-coord)))\n                                (alist-get feature the-map))))\n                          t)\n                        (not (or\n                               (assoc coord locations)\n                               (member coord\n                                 omitted-feature-coordinates))))\n                  (progn\n                    (setq keep-trying nil)\n                    ;; For locations we favor storing the (coord . label)\n                    ;; This makes later comparisons easier.n\n                    (cl-pushnew (cons coord label) locations)\n                    ;; For a named feature favor storing (label . coord)\n                    ;; as this makes prompts easier.\n                    (cl-pushnew (cons label coord)\n                      (alist-get feature the-map))))))))\n\n        ;; Nex, we handle the barriers as they are a bit of a different\n        ;; creature.  We generate them by placing them between two\n        ;; neighboring hexes.\n        ;;\n        ;; I have given special consideration for hexes on the edge of\n        ;; the map; Namely don't create barriers on the edges.  And\n        ;; proportionally reduce the chance of adding a barrier on those\n        ;; edges proportional to the number sides that the hex has\n        ;; on-map neighbors.&quot;\n        (let ((omitted-barriers\n                (mapcar\n                  (lambda (b)\n                    (mythic-bastionland--make-ordered-pair\n                      (car b) (cdr b)))\n                  (alist-get 'barriers (alist-get 'omit config)))))\n          (dotimes (i (+ 23 (random 3)))\n            (let ((keep-trying t))\n              (while keep-trying\n                (let* ((coord\n                         (mythic-bastionland--random-coord))\n                        (in-6-chance\n                          (cond\n                            ((member coord '((0 . 0) (11 . 22)))\n                              ;; top-left, bottom-right\n                              2)\n                            ((member coord '((11 . 0) (0 . 22)))\n                              ;; top-right, bottom-right\n                              3)\n                            ((member (car coord) '(0 11))\n                              ;; from or to\n                              4)\n                            ((member (cdr coord) '(0 23))\n                              ;; top of col that is taller; bottom of\n                              ;; col that is shorter\n                              3)\n                            ((member (cdr coord) '(1 22))\n                              ;; top of col that is shorter; bottom of\n                              ;; col that is taller\n                              5)\n                            (t 6))))\n                  (when (&lt;= (+ 1 (random 6)) in-6-chance)\n                    (progn\n                      (let* ((neighbor\n                               (seq-random-elt\n                                 (mythic-bastionland--neighbors coord)))\n                              (pair\n                                (mythic-bastionland--make-ordered-pair\n                                  coord neighbor)))\n                        ;; Don't repeat barriers\n                        (when\n                          (not (or (member pair barriers)\n                                 (member pair omitted-barriers)))\n                          (progn\n                            (cl-pushnew pair barriers)\n                            (setq keep-trying nil)))))))))))\n\n        ;; PS...make sure we add the locations and barriers to the map.\n        (cl-pushnew `(locations . ,locations) the-map)\n        (cl-pushnew `(barriers . ,barriers) the-map)\n\n        ;; Next, see if we have a conformant map\n        (cl-loop\n          for (constraint . info)\n          in (alist-get 'constraints config) do\n          (pcase constraint\n            ('nearest\n              (unless (mythic-bastionland--test-constraint-nearest info the-map)\n                (setq keep-mapping t)))\n            (_ (user-error &quot;Unknow constraint %s&quot; constraint))))))\n\n    ;; TODO: Consider generalizations but for now this is adequate.\n    (when-let ((omens-revealed (assoc 'omens-revealed config)))\n      (push omens-revealed the-map))\n    the-map))\n<\/code><\/pre>\n<h2 id=\"its-all-a-mapping-problem\">It\u2019s All a Mapping Problem<\/h2>\n<p>I once read that all computer science problems are mapping problems.  There were\ntwo that I needed to consider.<\/p>\n<p>First, when rolling up a barrier, it is placed along the shared side of two\nadjacent hexes.  This meant creating a \u201cunique key\u201d for those pairs, so that I\ndon\u2019t accidentally pix Hex <code>0,0<\/code> then its neighbor Hex <code>0,1<\/code> to place a barrier, and\nthen pick Hex <code>0,1<\/code> and its neighbor Hex <code>0,0<\/code> to place a hex.<\/p>\n<p>Enter the <code>mythic-bastionland--make-ordered-pair<\/code> function:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun mythic-bastionland--make-ordered-pair (from to)\n  &quot;Provide a consistent sort order FROM and TO coordinates.&quot;\n  (let ((from\n          (or from\n            (mythic-bastionland--text-to-coord nil &quot;Left &quot;)))\n         (to\n           (or to\n             (mythic-bastionland--text-to-coord nil &quot;Right &quot;))))\n    (if (&gt; (car from) (car to))\n      `(,from . ,to)\n      (if (&gt; (cdr from) (cdr to))\n        `(,from . ,to)\n        `(,to . ,from)))))\n<\/code><\/pre>\n<p>It normalizes a pair of coordinates so that we can have consistent interaction\nwhen referencing those two coordinates.<\/p>\n<p>Second, one of the questions was direction from one coordinate to another.\nAnd here we have <code>mythic-bastionland--direction<\/code>:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun mythic-bastionland--direction (&amp;optional from to)\n  &quot;Get human-readable direction FROM TO.&quot;\n  (let ((from\n          (or from\n            (mythic-bastionland--text-to-coord nil &quot;From &quot;)))\n         (to\n           (or to\n             (mythic-bastionland--text-to-coord nil &quot;To &quot;))))\n      (cond\n        ((equal to from)\n          &quot;Under your nose&quot;)\n        ((= (car from) (car to))\n          (if (&gt; (cdr from) (cdr to))\n            &quot;North&quot; &quot;South&quot;))\n        (t (let ((slope (\/\n                          (float (- (cdr to) (cdr from)))\n                          (float (- (car to) (car from))))))\n             (cond\n               ;; After compass, protractor, marker, and spreadsheet\n               ;; work, I'm happy with the direction calculations.\n               ;; Remember, hex maps starting from top-left instead\n               ;; of bottom right like Geometry means things get a\n               ;; mind bending (at least for this old guy).\n               ((or (&gt; slope 4) (&lt; slope -4))\n                 (if (&gt; (cdr from) (cdr to))\n                   &quot;North&quot; &quot;South&quot;))\n               ((&lt;= 0.8 slope) (&lt;= slope 4)\n                 (if (&gt; (cdr from) (cdr to))\n                   &quot;Northwest&quot; &quot;Southeast&quot;))\n               ((&lt; -0.8 slope 0.8)\n                 (if (&gt; (car from) (car to))\n                   &quot;West&quot; &quot;East&quot;))\n               ((&lt;= -4 slope -0.8)\n                 (if (&gt; (cdr from) (cdr to))\n                   &quot;Northeast&quot; &quot;Southwest&quot;))))))))\n<\/code><\/pre>\n<p>Using geometry of Rise over Run to determine slope, I can enter the from and to\ncoordinate to get the named direction.  As the comments indicate, this involved\nsome protractor work to make sure I got the algorithm correct.<\/p>\n<p>When I had set out, I had first thought of saying the two adjacent hexes to the\nright of a given hex were to the given hex\u2019s east.  But the geometry suggested\nbreaking this apart.<\/p>\n<p>So for a given Hex, and looking at Hexes one space away and starting at the Hex\ndirectly above the given Hex and working clockwise we have: north, north east,\nsouth east, south, south west, and north west.  Stepping to the next ring out,\nwe have: north, north east, north east, west, south east, south east, south,\nsouth west, south west, west, north west, north west.<\/p>\n<p>I felt that having the algorithm well understood by me would make for consistent\nsolo play.<\/p>\n<h2 id=\"testing-this-thing\">Testing This Thing<\/h2>\n<p>When you look at the code, you might notice that the <code>interactive<\/code> functions will\ntake a coordinate or prompt you for one.  You might also note that some\nnon-<code>interactive<\/code> functions take optional coordinates, and prompt if none are\ngiven.<\/p>\n<p>All of this was in service of attempting to test functions.  Verifying the\ncorrectness of distance and direction required no knowledge of the map, but\ninstead relied on two coordinates.  So I could bombard these functions in the\n<abbr title=\"Read-eval-print loop\">REPL<\/abbr>\n and prompt for the inputs.<\/p>\n<p>I also made a decision not to codify Sir Weydlyn\u2019s map until I\u2019d test driven\nthings a few times.  Hence I write the map to disk and then read it back when I\nwant to use it.  This also serves to clobber the variable\u2019s value, preventing\naccidental peaking.  I am considering further measures, but am holding off.<\/p>\n<p>I found that once it was all tested, and I started playing, I realized I wanted\nto adjust some functionality.  Namely, determining the nearest myth.  I\nrefactored that section.  And to test, used a bit of dependency injection, to\npass in the map I wanted to test (so as to not peak).<\/p>\n<p>Once I verified behavior, I loaded the game map and made sure the question I had\npreviously asked of the map returned the same result.  And it didn\u2019t so I set\nabout further refactoring (which added the <code>constraints<\/code> option).  I adjusted the\ninitial config, adding <code>constraints<\/code> and allowing for features to be placed from a\nsubset of coordinates.<\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>I\u2019ve had two significant refactors of the base functionality.<\/p>\n<p>From the initial state to the next state, I needed to consider that I was\nchanging the logic for what was nearest, going from randomly picking hexes that\nhad the same distance to now consistently picking hexes.<\/p>\n<p>I performed the refactor then tested my map.  The answer I got conflicted with\nestablished facts (e.g. \u201cThe Judge\u201d was the closest myth to <code>9,1<\/code>).  So I needed\nto refactor again.  This is when I introduced <code>constraints<\/code>.  Which was relatively\neasy to introduce.<\/p>\n<p>I did the second refactor in two parts.  Part 1 was wrapping the existing body in the following then re-indenting:<\/p>\n<pre><code class=\"language-emacs-lisp\">(let ((max-retries\n       (or (alist-get 'max-retries config) 10))\n      (keep-mapping t)\n      (the-map nil))\n  (while (and keep-mapping (&gt; max-retries 0))\n    ;; Assume that we don't need to keep trying to build the map\n    (setq keep-mapping nil)\n    (setq the-map nil)\n    (setq max-retries (- max-retries 1))\n\n    \u2026EXISTING BODY\u2026\n    ))\n<\/code><\/pre>\n<p>This change was a noop change, that I committed.  Then I set about implementing\nthe <code>constraints<\/code> logic.  This way I would have smaller second commit that didn\u2019t\ninterweave with indentation changes.<\/p>\n<p>You can find the <a href=\"https:\/\/git.sr.ht\/~jeremyf\/mythic-bastionland.el\">\u201cmythic-bastionland\u201d package on Sourcehut<\/a>.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Mythic%20Bastionland%20Map%20Play%20Aid%20Emacs%20Package\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Forged from the Worst: Session 3","link":"https:\/\/takeonrules.com\/2025\/12\/16\/forged-from-the-worst-session-3\/","pubDate":"Tue, 16 Dec 2025 17:37:09 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/16\/forged-from-the-worst-session-3\/","category":["rpgs","sessions"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cForged from the Worst: Session 3\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n<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>\n<\/p\/><p><strong>Summary: <\/strong>\nIn which Sir Weydlyn continues his trek towards the castle, learning of a fate perhaps worse than death.\n<\/p>\n        <p>The eastern golden dapple sky frames the two horses, a large stallion with\nhorned helm and a smaller rouncey.  On the stallion rides a broad shouldered man\nbedecked gambeson and dark polished scale, one hand holding the reins, the other\na raised bolt-guisarme, and empty saddle bags.  The rouncey, riderless, bears a\nclutch of javelins, heavy saddle bags, and bedroll.<\/p>\n<p>Ahead the overgrown plains begin rolling into hills that look as though shunned\nby the spring rains.  Riding on, the waves of tall grasses fall behind the three\nas they ride amidst the dry hills (coordinates <code>8,2<\/code>), where morning sun has now\ndrifted to mid-day.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nI make a Barrier Check\u2026encountering none.  And then a Wilderness Roll\u2026Encounter\nthe Hex\u2019s <strong>Landmark<\/strong> otherwise all clear.\n<\/small><\/p>\n<p><small>\nAnd here we come to another procedure that I will need to establish.\n<\/small><\/p>\n\n<\/section>\n\n<h1 id=\"establishing-a-landmark-procedure\">Establishing a Landmark Procedure<\/h1>\n\n<blockquote  class=\"h-cite\">\n\nSome Wilderness Hexes contain a Landmark.  These are discovered when travellers\nroll 4-6 on the Wilderness roll. A typical Realm has 3 or 4 of each type of\nLandmark.  Mark them with their initial or an icon.\n\n<footer>&mdash;<cite>Mythic Bastlionland<\/cite>\npage 14\n\n<\/footer>\n<\/blockquote>\n\n<p>This prompts me to wonder: can a Landmark and Myth be in the same Hex?  So I\nread about Myth Hex (emphasis mine).<\/p>\n\n<blockquote  class=\"h-cite\">\n\nPlace 6 Myths (p27) in remote places.  Number them as 1\u20136.  The Hexes are\n<em>clearly affected<\/em> by the presence of their Myth.\n\n<footer>&mdash;<cite>Mythic Bastionland<\/cite>\npage 14\n\n<\/footer>\n<\/blockquote>\n\n<p>While not explicit, I\u2019m going to assume that Landmarks and Myths will not share\na Hex.  Also, I need to consider that a Myth might be in a Hex and showing some\nsigns.  This will require a bit of logic as a knight travels across the realm.<\/p>\n<p>We need to know if the Hex has Landmark or alterations due to a Myth.  There are\n6 Myths.  There are 6 types of Landmarks: Dwellings, Sanctums, Monuments,\nHazards, Curses, and Ruins.  So we\u2019d have between 18 and 24 Landmarks.  I\u2019ll\nalso assume that Myths do not exist in Holdings.<\/p>\n<p>As I set about doing this, I realized, why don\u2019t I encode the map into an Emacs\ndata structure then interrogate that data structure.  Which proved to be a fun\nlittle diversion worthy of its own blog post; the long and short being I now\nhave a few functions I can call to query the map to ask for:<\/p>\n<ul>\n<li>Is there a barrier between Hex one and Hex two?<\/li>\n<li>Is there Myth on this square?<\/li>\n<li>What is the nearest myth?<\/li>\n<li>What is a random myth that is not the nearest?<\/li>\n<li>What is direction to a given myth?<\/li>\n<\/ul>\n<p>One side-effect is that I had to change the coordinate system.  Namely I\u2019m\nstarting the top-most left-most hex at <code>0,0<\/code>; immediately down is <code>0,1<\/code>, then down\nand right is <code>1,0<\/code>.  I could make more significant adjustments, but for now that\u2019s\nwhat I\u2019ll be working from.<\/p>\n<p>With my map loaded, I ask it \u201cWhat, if any feature is on <code>8,2<\/code>?\u201d  And I get\n\u201cMonument 4\u201c.  I pull a Random Myth to find the Monument and get \u201cSky Spire.\u201d\nNow, will Weydlyn tarry and explore this Sky Spire?  I think not.  He seeks to\nfulfill his <em>Promise<\/em> to Tompot.<\/p>\n<h1 id=\"amidst-the-hills\">Amidst the Hills<\/h1>\n<p>Weydlyn rides southwest, making for the castle and <em>Seat of Power<\/em>.  As the\nmid-day clouds make way, he sees a multi-coloured spire shimmering in the east.\nIn his heart, he feels a desire to look upon the spire, to turn Ingot towards\nthe scintillating spire.<\/p>\n<section class=\"inline-comments\">\n<p><small>I rolled a few sparks: Multi-colour, shimmering, and desire.<\/small><\/p>\n<\/section>\n\n<p>But his <em>Promise<\/em> to Tompot burns as a bright brand in the grim night of his soul.\nThis spire of light and enchantment tugs and pulls at him.  As though all his\nforge work was but slag, and only now has he beheld true beauty.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nHere, I find myself wishing for the Virtues of Pendragon.  Yet I, as the\nreferee, am not quite wanting to compel Sir Weydlyn.  So, let\u2019s <i class=\"dfn\">Ask the Stars<\/i> if\nI as the referee should compel Sir Weydlyn?  The answer is \u201cNo but\u2026\u201d so as\nreferee, I don\u2019t call for the compulsion.\n<\/small><\/p>\n<p><small>\nBecause I\u2019m playing both sides of the table, should remove the option at this\nmoment.\n<\/small><\/p>\n\n<\/section>\n\n<p>The tower pulses for a moment, Weydlyn hears an angelic song break out, and the\ntower vanishes.  Heavy clouds roll in and with it the song fades.  Sir Weydlyn,\nnot wishing to chase phantoms, continues his journey towards the castle.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nMaking 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\nthe <i class=\"dfn\">Wilderness Roll<\/i> and \u201cEncounter the next Omen from the nearest Myth.\u201d  I\nwonder, what is the nearest myth to <code>7,2<\/code>?  I get \u201cmyth 1\u201d.  Which is neither the\nMountain nor the Beast.  I roll up a random Realm myth and get \u201cThe Judge.\u201d\n<\/small><\/p>\n<p><small>\nThis is my first encounter with the Judge, and the Omen reads as follows: \u201cA\nwretch pleads for charity.  She was a Knight, sentenced harshly by the Judge.\u201d\n<\/small><\/p>\n<p><small>\nFirst, I need to know, is the Judge on this Hex?  No.\n<\/small><\/p>\n<p><small>\nI roll a land character spark to determine the lay of these new hill: overgrown.\n<\/small><\/p>\n\n<\/section>\n\n<h1 id=\"of-wretch-and-judgment\">Of Wretch and Judgment<\/h1>\n<p>With noon day now waning, Sir Weydlyn, Ingot, and the other horse, find\nthemselves in the overgrown hills a days travel northeast of the castle.  They\nmake their way along the narrow trails of taken by the infrequent peddlers\ntrekking between tower and castle.<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> We\u2019re going to name these, but only upon arrival.  Then I might go back and\nupdate my posts.<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n<\/p>\n<p>Ahead on the trail Weydlyn notes a downtrodden wretch, sitting beside the trail.\nShe is rubbing her feet.  And seeing Weydlyn, she lowers her head.  Weydlyn\nslows and stops a few paces from the woman with tangled hair adorned in rags.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nHere I need to read a bit about the Judge.  Are these Judgments fair?  It seems\nas though the judgments are arbitrary, perhaps stinking of the fey.  Which helps\nme understand how next to proceed.\n<\/small><\/p>\n<p><small>\nI pull a random Knight\/Seer to get a theme for the judgment: Sharpness.  Another question\n<\/small><\/p>\n\n<\/section>\n\n<p>\u201cGood Knight, might you spare a bit of charity for a fellow downtrodden Knight?\u201d\nbegs the wretch.<\/p>\n<p>Sir Weydlyn now looks to see if there is truth in these words.  Uncertain he\nresponds, \u201cA Knight?  I daresay you look not the part.\u201d<\/p>\n<p>The woman bows her head, \u201cNo, I have lost that part, as the Judge, Ambrageft, of\nDiamond Eye has seen fit to judge me guilty and cast me to the road-side, poor\nand beggard.\u201d<\/p>\n<p>Steadying Ingot and drawing him back a step, Weydlyn asks the wretch, \u201cIf knight\nyou were, tell me true of your deeds.\u201d<\/p>\n<p>The wretch, tells of her knighting and fetching the vassal rod from the red\nvultures and restoring it to Lord Prentise, ruler of the realm.<\/p>\n<section class=\"inline-comments\">\n<p><small>I used several different pages to assemble these narrative points.  I also\nrolled the wretch up as the Violet Knight.<\/small><\/p>\n<\/section>\n\n<p>Listening, a few questions begin filling Weydlyn\u2019s mind.  And as she finishes\nher tail, he begins with his questions, \u201cAnd it was not Lord Prentise whom\njudged you but this Amrageft?  How can this be?\u201d<\/p>\n<p>\u201cYes, not Lord Prentise, but Amrageft terrible and hard.  And how it came to be?\nA courier handed me a lambskin scroll and written in crimson in language unknown\nwas the decree.  A season later, I was whisked away to a court, and judgment\ncast,\u201d replied the woman.<\/p>\n<p>\u201cAnd were you guilty?\u201d asks Weydlyn.<\/p>\n<p>\u201cI had upheld my Oaths.  And the charges, why they were most absurd.  I was\nfound guilty of under-sharpening<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> Again, another random theme picked.  I\u2019m also opting for the absurd.<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n my grand mace,\u201d responds the wretch now rising,\n\u201cand after the season long trial they just this day returned me here.  This Myth\nfound me unworthy.\u201d<\/p>\n<p>Weydlyn, now seeing the woman stand, looks her over.  And the word \u201cMyth\u201d\nsettles amongst the din of steel always clanging in his head.  \u201cThese times are\nstrange.  And my heart wishes to know the truth of\u2026\u201d<\/p>\n<p>\u201cThey are true, I\u2026,\u201d she interrupts<\/p>\n<p>Sir Weydlyn hisses, \u201cSilence.  Your words, I wish I could know their truth.\nRide with me to Lord Prentise\u2019s castle.  And there he can vouch for you and your\ntale.  And know that if you have treated me false and now lead me astray, you\u2019ll\nfeel the bite of steal.  I ask of you two things: your name and to give this\nhorse a name; his previous owner failed to tell me before he died.\u201d<\/p>\n<p>\u201cI speak true and thank you for your kindness.  I am Beatrice.  And I shall call\nthis lovely steed Light\u2019s Return,\u201d says Beatrice.<\/p>\n<p>Sir Weydlyn\u2019s scornful eyes look past Beatrice, as though searching for a mirror\nto see check if this fear in his heart shows on his brow.  Fear of what he could\nbecome if this tale of hers is true.  Now looking on her, he hopes she proves\nfalse.  He tightens his grip on his bolt-guisarme, aching to toss it into her\nlying mouth.<\/p>\n<p>He guides Ingot beside Light\u2019s Return and grabs the javelin bundle then tosses\nthe reins to Beatrice, and with a cold steely voice says, \u201cWe will ride a few\nmore hours then camp for the night.\u201d<\/p>\n<section class=\"inline-comments\">\n<p><small>\nI roll up Beatrice\u2019s stats as though a Knight Errant:\n<\/small><\/p>\n<dl class=\"org-dl\">\n<dt><small>Guard<\/small><\/dt><dd><small>1<\/small><\/dd>\n<dt><small>Clarity<\/small><\/dt><dd><small>14<\/small><\/dd>\n<dt><small>Spirit<\/small><\/dt><dd><small>5<\/small><\/dd>\n<dt><small>Vigor<\/small><\/dt><dd><small>13<\/small><\/dd>\n<\/dl>\n<p><small>\nI\u2019m envisioning that Beatrice might be a squire?  Or swear an oath anew.\nPerhaps returning to her seer.\n<\/small><\/p>\n\n<\/section>\n\n<h1 id=\"reflections\">Reflections<\/h1>\n<p>As mentioned, I started playing this session, prepared to manage the game state\nin a document and infer what must be where based on rolls.  But then I thought\nhow absurd, why not encode a map and then write functions to query the map.\nThat was an enjoyable side-quest, and as mentioned is something I\u2019ll later blog\nabout.<\/p>\n<p>At the conclusion of this session, Weydlyn has directly encountered two myths\nand has it on authority the general location of another.  Also, having\nreconciled past statements, I have a sense of where three Myths are.  My\nalgorithm for finding the closest myth, in the case of ties, is to randomly pick\nfrom those that share the closest distance.<\/p>\n<p>And as I write this, I realize that I want a consistent answer from a given hex.\nSo I\u2019m going to set about providing a consistent answer.  That could mean my\npresent map configuration is not correct given the new algorithm; but I have\nways to rebuild the map in such a way as to be truthful to what has emerged in\nplay.<\/p>\n<p>For now, before I set about a minor code change, I\u2019m doodling a bit on the map,\nI know that the Judge must be within 3 hexes of <code>7,2<\/code>.  Otherwise the logic would\ninvalidate the in game facts regarding the Mountain and the Beast.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Forged%20from%20the%20Worst%3a%20Session%203\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Extending Core Emacs Bookmark Package","link":"https:\/\/takeonrules.com\/2025\/12\/10\/extending-core-emacs-bookmark-package\/","pubDate":"Wed, 10 Dec 2025 21:01:36 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/10\/extending-core-emacs-bookmark-package\/","category":["emacs","programming"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cExtending Core Emacs Bookmark Package\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nRevisiting yesterday\u2019s implementation and refactoring towards a bookmark implementation.\n<\/p>\n        <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\nabout it, I realized that I was coming very close to re-implementing bookmarks.\nWhat I had worked.  But lacked the elegance of the bookmark ecosystem when\nadding to the PDF list.<\/p>\n<p>And for those who took heart of what I did yesterday, read on, I found some bugs\nand fixed them.<\/p>\n<p>So with time to think about it, I set about exploring how I might open a PDF to\na random page (from a list of possible pages).  Also, how I could capture that I\nwant this bookmark to be a random page.<\/p>\n<p>I also thought about how I might generalize my \u201cstarting and stopping\u201d game\nplay.  After all, I have a few solo games that I might pick up.<\/p>\n<h2 id=\"bookmarks\">Bookmarks<\/h2>\n<p>What follows almost completely replaces the previous implementation; except I\ndon\u2019t have a nifty re-roll a random table keybinding.<\/p>\n<p>I had previously written a bookmark handler, so set about writing another one.<\/p>\n<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 \u201cEmacs\u201d\" title=\"Other site-wide references of \u201cEmacs\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-EMACS\">&#128214;<\/a><\/small>\n:<\/p>\n<pre><code class=\"language-emacs-lisp\"> (&quot;Tangled Seer&quot;\n(filename . &quot;~\/mythic=bastionland--core-rules__rules_systems.pdf&quot;)\n(position . 1)\n(last-modified 26934 62792 320522 78000)\n(page . 104)\n(slice)\n(size . fit-page)\n(origin 0.0 . 0.0)\n(handler . pdf-view-bookmark-jump-handler))\n<\/code><\/pre>\n<p>The <code>pdf-view-bookmark-jump-handler:random<\/code> function first checks if there\u2019s an\nassociated <code>pages<\/code> value.  If so, it picks one at random, sets the <code>page<\/code> value and\npasses it along to the <code>pdf-view-bookmark-jump-handler<\/code>.<\/p>\n<pre><code class=\"language-emacs-lisp\">  (defun pdf-view-bookmark-jump-handler:random (bmk)\n    &quot;A handler-function implementing interface for bookmark PDF BMK.\n\nWhen the handler has a 'pages property, which is assumed to be a list,\npick one from that.  Otherwise fallack to the 'page property.\n\nSee also `pdf-view-bookmark-jump-handler' and\n`pdf-view-bookmark-make-record'.&quot;\n    (let ((pages\n            (bookmark-prop-get bmk 'pages)))\n      (bookmark-prop-set bmk 'page\n        (or (seq-random-elt pages) (bookmark-prop-get bmk 'page)))\n      (pdf-view-bookmark-jump-handler bmk)))\n<\/code><\/pre>\n<p>To test, I backed-up my bookmarks, and manually changed the handler to and added\na <code>pages<\/code> attribute.  I reloaded that file, and everything worked.  Next, how\ncould I avoid manually editing the file?don\u2019t<\/p>\n<p>I don\u2019t want to <em>always<\/em> have my PDF bookmarks to be random tables.  So\nI figured I would again repurpose the existing PDF bookmark making.  This time\nwith using an advising function.<\/p>\n<p>First, I call the original <code>pdf-view-bookmark-make-record<\/code>; then if I have\nenabled 1) prompting for random pages and 2) said I want to specify the pages,\nthen I prompt for the pages to use in randomization (yup, I had to manually\nenter those pages\u2026or at least generate that list of pages programmatically, add\nit to the kill ring, then yank it into the prompt).<\/p>\n<p>Once I had the list of pages, I change the handler from\n<code>pdf-view-bookmark-jump-handler<\/code> to <code>pdf-view-bookmark-jump-handler:random<\/code>.  And\nreturned the modified bookmark.<\/p>\n<pre><code class=\"language-emacs-lisp\">  (defun pdf-view-bookmark-make-record:with-randomizer (&amp;rest app)\n    &quot;Conditionally randomize which page we'll open in a PDF.\n\nSee `pdf-view-bookmark-make-record:prompt-for-random'.&quot;\n    (let ((bmk\n            (apply app)))\n      (if (and\n            pdf-view-bookmark-make-record:prompt-for-random\n            (yes-or-no-p &quot;Specify Random Pages?&quot;))\n        (let* ((attributes\n                (cdr bmk))\n               (integers-as-string\n                 (split-string\n                   (read-string &quot;Enter pages (comma-separated): &quot;\n                     (format &quot;%s,&quot; (alist-get 'page attributes)))\n                   &quot;[,; ]+&quot; t &quot;[[:space:]]+&quot;)))\n          ;; We clobber the existing handler replacing it with one of\n          ;; our own devising.\n          (setcdr (assoc 'handler attributes)\n            'pdf-view-bookmark-jump-handler:random)\n          (add-to-list 'attributes\n            (cons 'pages\n              (mapcar #'string-to-number integers-as-string)))\n          ;; We need to return an object of the same form (e.g. a `cons'\n          ;; cell).\n          (cons (car bmk) attributes))\n        bmk)))\n\n  (advice-add #'pdf-view-bookmark-make-record\n    :around #'pdf-view-bookmark-make-record:with-randomizer)\n\n  (defvar pdf-view-bookmark-make-record:prompt-for-random\n    nil\n    &quot;When non-nil, prompt as to whether or not to create a bookmark\nthat is randomization.&quot;)\n<\/code><\/pre>\n<p>Next, I wanted to continue popping those pages into a dedicated side window.\nEnter some more advice.  This time, advising the <code>bookmark-jump<\/code>.  Reading that\nimplementation, I was surprised that the default wasn\u2019t a variable; which might\nhave made things easier.<\/p>\n<pre><code class=\"language-emacs-lisp\">(defvar default-bookmark-display-function\n  nil\n  &quot;When non-nil, favor opening bookmarks with this function.&quot;)\n\n(defun bookmark-jump-with-display (fn bookmark &amp;optional display-func)\n  (let ((display-func\n          (or display-func\n            default-bookmark-display-function\n            (when current-prefix-arg 'switch-to-buffer-side-window))))\n    (funcall fn bookmark display-func)))\n(advice-add #'bookmark-jump :around #'bookmark-jump-with-display)\n\n<\/code><\/pre>\n<p>And last, a little bit of glamour.  I visually show that the bookmark will be\nrandomized by showing a the 6-face of a die with the word PDF.<\/p>\n<pre><code class=\"language-emacs-lisp\">;; Show that I'll be opening this PDF to a random page.\n(put 'pdf-view-bookmark-jump-handler:random 'bookmark-handler-type &quot;\u2685PDF&quot;)\n\n<\/code><\/pre>\n<h2 id=\"starting-and-stopping\">Starting and Stopping<\/h2>\n<p>With the new bookmark handling, I set about rethinking the implementation.  As I\nneeded to and unset more values, the <code>lambda<\/code> approach seemed cumbersome and\nrepetitive.  Also, in my experimentation, I wasn\u2019t properly changing bookmarks\nfiles.  The result was a steady appending to my default bookmarks.<\/p>\n<p>What follows addresses that issue.  First a variable of no significant insight.<\/p>\n<pre><code class=\"language-emacs-lisp\">(defvar playing-a-game nil\n  &quot;When non-nil, indicates that I'm playing a game.\n\nSee `playing-a-game-candidates' and `start-playing'.&quot;)\n\n<\/code><\/pre>\n<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>;\nusing keywords.<\/p>\n<pre><code class=\"language-emacs-lisp\">(defvar playing-a-game-candidates\n  `(\n     (&quot;Forged from the Worst (Mythic Bastionland)&quot; .\n       ((start .\n          ((bmk-display-func . switch-to-buffer-side-window)\n            (bmk-prompt-for-random . t)\n            (bmk-file . &quot;~\/forged=from=the=worst--bookmarks.el&quot;)))\n         (stop .\n           ((bookmark-display-function . nil)))))\n     )\n  &quot;Possible games I might be playing via Emacs.  A game you are playing\nshould have both a 'start' and 'stop' property.&quot;)\n<\/code><\/pre>\n<p>And then the function that prompts for the game played and applies the\nconfiguration; first stopping the previous game.<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun start-playing (game)\n  &quot;Start playing the GAME; stopping any currently played game.\n\nA GAME has a 'start' and 'stop' property, that is an alist.  That alist\nhas the following properties:\n\n- 'bmk-file' :: what file we'll find our working bookmarks.\n- 'bmk-display-func' :: the function we use to display bookmarks.\n- 'bmk-prompt-for-random' :: if we'll prompt for possible random pages\n  in PDF bookmarks.\n\nWhen a property is not provided, \\&quot;suitable\\&quot; defaults are assigned.&quot;\n  (interactive\n    (list\n      (let ((handle\n              (completing-read &quot;Start Playing: &quot;\n                playing-a-game-candidates nil t)))\n        (alist-get handle playing-a-game-candidates nil nil #'string=))))\n  ;; Stop playing what we were playing...if anything\n  ;; Then start playing what we are playing...if anything\n  (dolist (config (list playing-a-game (alist-get 'start game)))\n    (when config\n      (let ((file\n              (or\n                (alist-get 'bmk-file config)\n                fallback-bookmark-file)))\n        (setq default-bookmark-display-function\n          (alist-get 'bmk-display-func config))\n        (setq pdf-view-bookmark-make-record:prompt-for-random\n          (alist-get 'bmk-prompt-for-random config))\n        (bookmark-save)\n        (setopt bookmark-default-file file)\n        (bookmark-load file t nil t))))\n  ;; Last register how to stop playing.\n  (setq playing-a-game (alist-get 'stop game)))\n<\/code><\/pre>\n<p>And for symmetry and ease of thinking, I have added the related <code>stop-playing<\/code>.<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun stop-playing ()\n  &quot;Stop playing a game.&quot;\n  (interactive)\n  (start-playing '(&quot;Nothing&quot; . nil)))\n\n<\/code><\/pre>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>Consolidating file lookup functions feels like the correct path.  That is reduce\nthe number of ways I\u2019m opening up files.  And extending existing functionality.\nAlso learn a bit more about that implementation.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Extending%20Core%20Emacs%20Bookmark%20Package\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Forged from the Worst: Session 2","link":"https:\/\/takeonrules.com\/2025\/12\/10\/forged-from-the-worst-session-2\/","pubDate":"Wed, 10 Dec 2025 18:31:54 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/10\/forged-from-the-worst-session-2\/","category":["rpgs","sessions"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cForged from the Worst: Session 2\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n<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>\n<\/p\/><p><strong>Summary: <\/strong>\nIn which hard-lessons are learned after witholding information.\n<\/p>\n        <p>Before I get going, I need to establish a traveling procedure: namely barrier\ngeneration.  And before that, as I think about play, Sir Weydlyn and Squire\nKelwun have ended a Phase of the day in the Wilderness.  Meaning <em>Wilderness\nRoll<\/em>.<\/p>\n<p>I make a Wilderness Roll (4) and all is clear.  I also wonder if Sir Weydlyn or\nSquire Kelwun can discern if their captives are eager or nervous to head to the\ntower.<\/p>\n<p>I decide to give them both a Clarity save to notice.  Kelwun notices, but\nWeydlyn does not.  Now does he make mention of it to Weydlyn or the others?  For\nthe time being, I think it is unlikely.  I <em>Ask the Stars<\/em>, they respond with \u201cNo\nbut\u2026\u201d I think after a couple hours, Weydlyn notices something off about Kelwun.\nEnough for us to cross from one Hex to another.<\/p>\n<h1 id=\"establishing-a-procedure-for-barrier-generation-while-traveling\">Establishing a Procedure for Barrier Generation while Traveling<\/h1>\n<p>I\u2019ll be adding what follows to my Campaign Notebook, a document separate from\nthe narrative play.  However, I want to share this work as it may be useful\nfor 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 \u201cMythic Bastionland\u201d\" title=\"Other site-wide references of \u201cMythic Bastionland\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND\">&#128214;<\/a><\/small>\n.<\/p>\n<p>I\u2019m considering the procedure for placing \u201cjust in time\u201d barriers while a\ncharacter travels the land.<\/p>\n\n<blockquote  class=\"h-cite\">\n\nSome Hexes have a Barrier on one or more of their edges, typically a sudden\naltitude change or impassible feature.  These cannot normally be travelled\nthrough.  For a typical Realm, place a number of Barriers equal to one sixth of\nyour total Hexes.\n\n<footer>&mdash;<cite>Mythic Bastionland<\/cite>\npage 14\n\n<\/footer>\n<\/blockquote>\n\n<p>My read of the rules is that Barriers are revealed to players as they encounter\nthem on their travels.  This read is reinforced by the <a href=\"https:\/\/mythic.bastionland.tools\/map\">Realm Map<\/a> generator hides\nthe barriers on the player\u2019s map.<\/p>\n<p>Going by the book there are 144 Hexes in the Realm, meaning there are 24\nbarriers.<\/p>\n\n<blockquote  class=\"h-cite\">\n\nTravel through a Barrier is not normally possible, though locals might know a\nway.  Attempting to travel through a Barrier wasts that Phase of the day, but\nstill causes a Wilderness Roll.\n\n<footer>&mdash;<cite>Mythic Bastionland<\/cite>\npage 18\n\n<\/footer>\n<\/blockquote>\n\n<p>I read the above to mean that a barrier is applicable when leaving or arriving\nfrom that side of the Hex.  There are 468 edges in a 12 by 12 Realm.  Of those\n96 are along the exterior border of the Realm.  Leaving 372 edges on which there\nmight be a barrier.  Meaning that Sir Weydlyn has a 2 in 31 chance of\nencountering a barrier when they cross their first Hex.  Which comes out to a\n6.45% chance.<\/p>\n<p>Thinking about about the dice rolls I have two procedures that come to mind:<\/p>\n<ol>\n<li>Roll a d6 + d12; when the 6-sided dice is a 1 and the 12-sided is 1 through 5,\nthere\u2019s a barrier.  This is generates a barrier 6.94%.<\/li>\n<li>Roll a d8 + d6; when the 8-sided die is a 1 and the 6-sided die is 1 through\n3, there\u2019s a barrier.  This generates a barrier 6.25% of the time.<\/li>\n<\/ol>\n<p>As an alternative, were I to alternate procedures with each step, that would\ncreate a 6.60% chance, which gets closer; but definitely makes things more\nfiddly.<\/p>\n<p>Stepping back, I\u2019ve already said the River is a known barrier.  So, lets go with\nthe lower probability.  We\u2019ll check the first time the character attempts to\ncross, and record that result for future reference.<\/p>\n<h1 id=\"setting-out\">Setting Out<\/h1>\n<p>Sir Weydlyn on Ingot and Squire Kelwun with his three prisoners (and six riding\nhorses) head south east to the tower.  They\u2019ve spent the morning at Tompot\u2019s\nacademy, eat a meager meal, and depart.<\/p>\n<section class=\"inline-comments\">\n<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\nhoping, a bit, that there would be a barrier\u2026but the dice said no.  For future\nreference, until I encounter tooling issues, the top left-most corner is <code>0,0<\/code> and\nmoving right increments the first digit.<\/small><\/p>\n<\/section>\n\n<p>While traveling the land shifts from grey plains to overgrown, uneasing Weydlyn.\nThe dear trail makes for easier travel, avoiding the worst of the overgrowth.\nAhead, the trail appears to veer north avoiding a large knot of thickets that\nsplays onto the plain.<\/p>\n<p>\u201cSquire Kelwun, I noticed that you are a bit on edge.  These tall grasses\nnipping at more than your stirrups?  Maybe your spirit?\u201d<\/p>\n<p>Kelwun, eyes darting amongst the prisoners, as though rechecking that he\u2019s tied\nthe knots suitably, answers, \u201cUmm, no its not that,\u201d he says trailing off, as\nthough catching some unexpected movement amongst his prisoners.<\/p>\n<p>\u201cThen what pray tell?\u201d<\/p>\n<p>\u201cI\u2019m just a bit busy keeping my eye on the prisoners.\u201d<\/p>\n<p>&ldquo;<em>Your<\/em> prisoners,&rdquo; reiterates Sir Weydlyn.<\/p>\n<p>\u201cYes, <em>my<\/em> prisoners.  Just making sure their bonds are well suited.  They\u2026\u201d<\/p>\n<section class=\"inline-comments\">\n<p><small>At this point, I consider what Kelwun has noticed of the prisoners.  \u201cAre the\n<i class=\"dfn\">fancy bandits<\/i> eager to return to the tower?\u201d I honestly don\u2019t know.  So instead\nof <i class=\"dfn\">Asking the Stars<\/i> I\u2019ll make a Luck Roll, and get a Crisis\u2026something\nimmediately bad.<\/small><\/p>\n<\/section>\n\n<p>\u201c\u2026don\u2019t seem to be trying to escape,\u201d says Kelwun.<\/p>\n<p>Sir Weydlyn draws a deep breath, leans towards Ingot\u2019s head, running his fingers\nacross the dark polished steel of Ingot\u2019s curled horned helm, lazily asking,\n\u201cand?\u201d<\/p>\n<p>\u201cAnd, that concerns me.  We know them to be false.  And to not attempt escape,\nwell that, I dare think, means,\u201d says Kelwun, as the three bandits each wince\nand test their bonds, \u201cwe\u2019re probably returning them to welcoming arms.\u201d<\/p>\n<p>Weydlyn halts Ingot, and locks his smouldering gaze with Kelwun, again asking\n\u201cand?\u201d<\/p>\n<p>That question hangs for a moment, as one of the three bandit\u2019s eyes dart towards\nthe thicket.<\/p>\n<p>\u201cAnd, I think we should be prepared.  Because, I think they\u2019ve been nudging us.\u201d<\/p>\n<p>The other bandits notice the first.  They squint tilting their heads forward\njust a bit.<\/p>\n<p>\u201cPrepared?  And you\u2019re now telling me this?  No.  Don\u2019t answer.  We could be\nwalking into a trap.\u201d<\/p>\n<p>Hisses split the sky, as the bandits dive off the deer trail into the tall\novergrown grass, and arrows fly.<\/p>\n<h1 id=\"ambuscade\">Ambuscade<\/h1>\n<section class=\"inline-comments\">\n<p><small>\nI check Weydlyn and Kelwun\u2019s Clarity, both fail.  No Guard for them.  Four\narrows fly at Weydlyn and 1 at Kelwun (I chose a d4 for each of them).\n<\/small><\/p>\n<dl class=\"org-dl\">\n<dt><small>Weydlyn<\/small><\/dt><dd><small>6, 3, 2, 1<\/small><\/dd>\n<dt><small>Kelwun<\/small><\/dt><dd><small>2<\/small><\/dd>\n<\/dl>\n<p><small>\nWeydlyn <i class=\"dfn\">Denies<\/i> the 6.  Fails the Clarity save, and is <i class=\"dfn\">Fatigued<\/i>.  With Armor 2,\nWeydlyn\u2019s Vigor drops from 17 to 16.  Kelwun\u2019s Vigor drops from 8 to 6.\n<\/small><\/p>\n<p><small>\nBoth have sustained a wound.  I check Kelwun\u2019s morale, and he\u2019s ready to stay\nand fight.\n<\/small><\/p>\n<p><small>\nWithout access to Feats, Weydlyn is far less dangerous.\n<\/small><\/p>\n\n<\/section>\n\n<p>An arrow pieces Kelwun\u2019s thigh as he cries out.  Another finds purchase between\nthe plates of Weydlyn\u2019s armor, sinking into the meat of his shoulder.<\/p>\n<p>Kelwun looks to Weydlyn, reaching for his javelin, noting that Weydlyn is\npulling on Ingot\u2019s reins for a hard turn.  Seeing this, both knight and squire\nspur their horses into a galloping retreat.<\/p>\n<p>As hooves thunder amongst the tall grass, arrows again fly.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nTwo at Weydlyn and three at Kelwun.<sup><a id=\"fnr.1\" class=\"footref\" href=\"#fn.1\" role=\"doc-backlink\">1<\/a><\/sup>\n<\/small><\/p>\n<dl class=\"org-dl\">\n<dt><small>Weydlyn<\/small><\/dt><dd><small>6,1; dropping Weydlyn\u2019s guard from 6 to 0.  That\u2019ll be a Scar.\nDisfigurement, a permanent mark on his Jaw.<\/small><\/dd>\n<dt><small>Kelwun<\/small><\/dt><dd><small>5,3,2; dropping Kelwun\u2019s guard from 1 to 0.  And reducing his vigor\nto 2.  A Mortal Wound.  I call for a Vigor save for Kelwun to stay horsed, but\nfails.  He loses 4 more Vigor, dying in the fall.<\/small><\/dd>\n<\/dl>\n<\/section>\n\n<p>An arrow tears across Weydlyn\u2019s jaw; a brief memory flashes of his forging of\nIngot\u2019s helmet; he snarls.  And lowers himself spurring Ingot on.  Gazing over\nhis shoulder again, he sees an arrow sink into Kelwum\u2019s neck.  Weydlyn\u2019s gaze\nholds a moment longer, as Kelwum slumps, bounces, then slides and caroms off of\nhis horse.  A horse pressing forward, spooked, and pulling at a leg still\nstirrup bound.<\/p>\n<p>Both horse and Weydlyn\u2019s gaze shake free of Kelwum\u2019s battered body.  Growling\nand muttering a curse, Weydlyn rides on, steering Ingot southwest.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nWeydlyn has a chance to shake off his Fatigue.  And ends this portion of the day\nin the Wilderness.  I get a 4 on my Wilderness Roll; no events.  (Certainly not\nthe Tower landmark).\n<\/small><\/p>\n<p><small>\nReading Travel rules, Weydlyn\u2019s spent the morning at Tompot\u2019s and the afternoon\nin <code>9,1<\/code> and fleeing.  Both were done as a Trek (e.g. 1 Hex).  So he\u2019ll be\ncamping outside; meaning another Wilderness Roll: \u201cEncounter the next Omen from\nthe nearest Myth.\u201d\n<\/small><\/p>\n\n<\/section>\n\n<h1 id=\"procedure-for-myth-when-only-having-a-player-facing-map\">Procedure for Myth when Only Having a Player Facing Map<\/h1>\n<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\nthe western shores of the silver lake.  That could mean the Beast is no more\nthan 2 squares away, or as far as 5.  <em>Asking the Stars<\/em> it seems likely that the\nBeast is the nearest Myth to <code>9,1<\/code> Hex: \u201cNo but\u2026\u201d  Maybe equidistant?  We\u2019ll hold\nthis lightly.<\/p>\n<p>I roll a random established Myth, and get \u201cThe Mountain.\u201d  Well, a mountain in\nthe plains.<\/p>\n\n<blockquote  class=\"h-cite\">\n\nFur-clad monks pray toward the Mountain scattering stones, water, and coals in\nits direction.  They warn that only the worthy can climb it.\n\n<footer>&mdash;<cite>Mystic Bastionland<\/cite>\np81\n\n<\/footer>\n<\/blockquote>\n\n<p>And that direction?  South of <code>9,1<\/code>.  This is enough to continue play.<\/p>\n<h1 id=\"an-evening-of-contemplation\">An Evening of Contemplation<\/h1>\n<p>Sitting beside a small campfire, Weydlyn casts his gaze to Ingot and and\nKelwum\u2019s horse\u2014he never did learn its name.  Both graze after a hard afternoon\nof riding.  Weydlyn thinks about when he first met Kelwum.<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> I <em>Ask the Stars<\/em> for their Signs and Positions: The Traveller (wandering -\nchance) Colliding (change - violence).<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n<\/p>\n<p>He had found Kelwum in the village streets, a blubbering mess, carrying on about\nhis mother marrying a wicked man\u2014a man that was scheming to kill Kelwum.  Just\nas he had killed others.  Tossing noose over gallows and kicking out the stool.\nOr so that\u2019s what Kelwum said and Weydlyn remembered.  Kelwum begged Sir Weydlyn\nto take him on as a squire.<\/p>\n<p>Weydlyn accepted, and being neither kind nor wicked towards Kelwum, set about\nworking Kelwum as one might work steel on the forge.  Folding fire and strength\ninto his squire\u2019s heart and soul.<\/p>\n<p>No tears came as Weydlyn looked into the embers of a fading fire.  The embers\nthrobbed and pulsed from muted burgundy to a glowing brilliant crimson.\nWeydlyn\u2019s mind blank as he stared deeper into the eye of the fire.<\/p>\n<p>Was it an hour or a minute when he next heard Ingot and that other horse neigh.\nReaching for his bolt-guisarme, Wedylyn rose, cursing as the smouldering echoes\nwere all he could see.<\/p>\n<p>A weak poetic voice in the darkness spoke, \u201cTraveler, might we join you by your\nfire?  We too are travelers, no pilgrims, seeking an evening of warmth and\nrest.\u201d<\/p>\n<p>As Weydlyn\u2019s eyes adjusted, he saw 3 fur-clad monks bowing deep, each holding a\nbowl; one shimmering a bit as though catching the evening stars; the second\nsmouldering embers and coal, the last filled with something unknown.<\/p>\n<p>Weydlyn snuffed, raising hand to chin and almost reaching to touch his field\ndressed jaw.  His shoulder ached, as though pleading for soft bed and warm\nhearth.<\/p>\n<p>\u201cMayhaps, but answer me this.  The night is warm, yet you fur clad.  Why is that\nso?\u201d<\/p>\n<p>\u201cAh, we are on a holy journey,\u201d said another, as each reached into their bowl\ngrabbed a pinch and cast it towards the campfire, \u201cto the mountain, and in our\nsupplication we hope it deems us worthy to ascend.\u201d<\/p>\n<p>\u201cA mountain you say?  To the south?  Those mountains are many leagues away.\nWest of the great river.\u201d<\/p>\n<p>\u201cOh not those, for there is one near.  One that only the worthy may ascend,\u201d\nsays the third, who\u2019s face looked as weather pocked and worn stone.<\/p>\n<p>Weydlyn nods, thinking of his map of the realm tucked into his saddle bags.\nThinking to himself that there is no mountain on this side of the river.<\/p>\n<p>\u201cGood monks, my fire has dwindled, providing poor company for this evening.  Let\nus stoke the flames and share heart warming stories of the day.\u201d<\/p>\n<p>The three bow graciously and they all set about fueling the fire.  Weydlyn\u2019s\nheart warms, for it is in the fire where he finds his solace.<\/p>\n<h1 id=\"reflections\">Reflections<\/h1>\n<p>First, pour one out for Squire Kelwum.  He was a tender heart, caught between a\navoiding unwarranted violence and trying to \u201ctoughen up.\u201d  I\u2019d imagine he chose\nto withhold information from Weydlyn, in part to avoid criticism.<\/p>\n<p>Second, Weydlyn\u2019s a dick.  And I felt him turning his discomfort into a question\nof Kelwum as one of those \u201cwould rather pick at someone than go to therapy\u201d\nmoments.<\/p>\n<p>I\u2019m also quite satisfied with treating any knowledge Kelwum had as opaque to\nWeydlyn; 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 \u201cNon-Player Character\u201d\" title=\"Other site-wide references of \u201cNon-Player Character\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-NPC\">&#128214;<\/a><\/small>)\n role.<\/p>\n<p>I really love using Oracles to nudge things into a state of conflict, and felt\nthat I had a reasonable flow.  Made personally more interesting by withholding\ninformation and asking questions of the stars.<\/p>\n<p>I did not, however, ask the Oracle for the nature of the Crisis.  It felt\nobvious.  The prisoner\u2019s attempting an escape against two mounted combatants did\nnot feel correct.  I suppose I could\u2019ve <em>Asked the Stars<\/em> for a Sign.  But the\nambush felt right.  And I can see a situation in which Sir Weydlyn would raise a\nwarband to confront this brigandry.<\/p>\n<p>Without Guard available, the stakes felt high.  And I got a better sense of just\nhow delicate the characters are.  For the second volley, I chose to randomize\nbut with a likely lower number of arrows.  The thought being that the assailants\nwere likely also responding to the prisoners.  Yet the same number of arrows\nflew.  So perhaps there were more than 5?<\/p>\n<p>I didn\u2019t give any consideration of Weydlyn would attempt to return for Kelwum.\nIt felt as though grim pragmatism would lead Weydlyn on.<\/p>\n<p>For Weydlyn\u2019s memory of Kelwum, I consulted the stars, rolled on a sparks table,\nand reincorporated his background.  Also, it is quite clear that Weydlyn is\ninattentive.<\/p>\n<p>Playing in a world emerging\u2014in which I\u2019m trying to maintain ignorance of what\nwould be behind the screen\u2014is a fun little puzzle to resolve.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Forged%20from%20the%20Worst%3a%20Session%202\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Extending Emacs to Play Mythic Bastionland","link":"https:\/\/takeonrules.com\/2025\/12\/09\/extending-emacs-to-play-mythic-bastionland\/","pubDate":"Tue, 09 Dec 2025 19:11:23 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/09\/extending-emacs-to-play-mythic-bastionland\/","category":["emacs","programming","technologies"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cExtending Emacs to Play Mythic Bastionland\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n<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>\n<\/p\/><p><strong>Summary: <\/strong>\nSwapping out bookmarks while playing #MythicBastionland then restoring when finished.  Also opening PDFs to random pages to simulate rolling on #RandomTables.\n<\/p>\n        <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 \u201cMythic Bastionland\u201d\" title=\"Other site-wide references of \u201cMythic Bastionland\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND\">&#128214;<\/a><\/small>\n, I\u2019ve been using or building out tooling.  First,\nI\u2019m leaning on <a href=\"https:\/\/github.com\/jeremyf\/random-table.el\">my random-tables package<\/a>.  Next, while playing, I manually\nswapped 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 \u201cEmacs\u201d\" title=\"Other site-wide references of \u201cEmacs\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-EMACS\">&#128214;<\/a><\/small>\n bookmarks for game specific bookmarks.  Last, I\nbegan thinking about flipping to random PDF pages for inspiration.<\/p>\n<h2 id=\"swapping-out-bookmarks\">Swapping Out Bookmarks<\/h2>\n<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\nabout how I might alter <span>Emacs<\/span>\n while running\/playing the game.  At first, this\nfelt akin to turning on a minor mode.  But the more I thought about it, it was\nmore equivalent to using <code>org-clock<\/code>.<\/p>\n<p>A quick brainstorm, and I realized that while playing:<\/p>\n<ul>\n<li>I wanted different bookmarks.<\/li>\n<li>Additional snippets (for my knight and squires name).<\/li>\n<li>An indicator that I was playing the game.<\/li>\n<li>And depending on how I organize my campaign world notes, maybe I\u2019d start a\nclock on the headline associated with my world notes.<\/li>\n<\/ul>\n<p>I haven\u2019t yet implemented the world notes, but I have made adjustments for the\nothers.  Here\u2019s what I have:<\/p>\n<p>First, I establish a variable to track the state of \u201cplaying\/not playing.\u201d<\/p>\n<pre><code class=\"language-emacs-lisp\">(defvar playing-forged-from-the-worst nil\n  &quot;When non-nil, indicates that I'm playing Forged from the Worst.&quot;)\n<\/code><\/pre>\n<p>Then I created a command to toggle that on and off:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun toggle-forged-from-the-worst ()\n  &quot;Begin or end playing Forged from the Worst.&quot;\n  (interactive)\n  (load &quot;jf-mythic-bastionland.el&quot;)\n  (setq playing-forged-from-the-worst\n    (not playing-forged-from-the-worst))\n  (bookmark-load\n    (if playing-forged-from-the-worst\n      &quot;~\/SyncThings\/source\/forged-from-the-worst\/forged=from=the=worst--bookmarks.el&quot;\n      &quot;~\/emacs-bookmarks.el&quot;)\n    t nil t))\n\n<\/code><\/pre>\n<p>The command loads my random tables for the campaign.  Toggles state.  The loads\nthe correct bookmarks based on state.<\/p>\n<p>To indicate that I\u2019m \u201cplaying\u201d, I then added a variable that I could use with my\nmodeline:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defvar-local jf\/mode-line-format\/playing-fftw\n    '(:eval\n       (when (and (boundp playing-forged-from-the-worst)\n               playing-forged-from-the-worst\n               (mode-line-window-selected-p))\n         (concat\n           (propertize &quot; \ud83c\udfb2 &quot; 'face 'mode-line-highlight) &quot; &quot;))))\n<\/code><\/pre>\n<p>I add the variable into my <code>mode-line-format<\/code>:<\/p>\n<pre><code class=\"language-emacs-lisp\">(setq-default mode-line-format\n    '(&quot;%e&quot; &quot; &quot;\n       jf\/mode-line-format\/timeclock\n       jf\/mode-line-format\/org-clock\n       jf\/mode-line-format\/vterm\n       jf\/mode-line-format\/kbd-macro\n       jf\/mode-line-format\/narrow\n       jf\/mode-line-format\/playing-fftw\n       jf\/mode-line-format\/buffer-name-and-status &quot; &quot;\n       jf\/mode-line-format\/major-mode &quot; &quot;\n       jf\/mode-line-format\/project &quot; &quot;\n       jf\/mode-line-format\/vc-branch &quot; &quot;\n       jf\/mode-line-format\/flymake &quot; &quot;\n       jf\/mode-line-format\/eglot\n       jf\/mode-line-format\/which-function\n       ))\n<\/code><\/pre>\n<p>And ensure that I mark that variable as a <code>risky-local-variable<\/code>:<\/p>\n<pre><code class=\"language-emacs-lisp\">(dolist (construct '(\n                        jf\/mode-line-format\/buffer-name-and-status\n                        jf\/mode-line-format\/eglot\n                        jf\/mode-line-format\/flymake\n                        jf\/mode-line-format\/kbd-macro\n                        jf\/mode-line-format\/playing-fftw\n                        jf\/mode-line-format\/major-mode\n                        jf\/mode-line-format\/misc-info\n                        jf\/mode-line-format\/narrow\n                        jf\/mode-line-format\/org-clock\n                        jf\/mode-line-format\/timeclock\n                        jf\/mode-line-format\/project\n                        jf\/mode-line-format\/vc-branch\n                        jf\/mode-line-format\/vterm\n                        jf\/mode-line-format\/which-function\n                        ))\n    (put construct 'risky-local-variable t))\n<\/code><\/pre>\n<p>With that, when I\u2019m playing the game, I see a little dice in my mode-line and\nhave access to game specific bookmarks.  That clock part is going to gnaw at me,\nso I assume I\u2019ll work through that once I\u2019ve published this post.<\/p>\n<h2 id=\"flipping-to-random-pdf-page-in-emacs\">Flipping to Random PDF Page in Emacs<\/h2>\n<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\nhad the PDF bookmarked and could quickly, I assume, access the oracular\ninformation at the bottom of the Knight\/Seer and Myths pages.<\/p>\n<p>My first pass was \u201cwhat was the minimum viable command to open a random page in\na PDF.\u201d  This involved reading the <code>pdf-view-bookmark-jump-handler<\/code> code and then\nsetting about making it happen.<\/p>\n<p>What I\u2019m presenting is not the first nor second pass, but instead a third\niteration that introduces a bit more utility.  But I digress.<\/p>\n<p>The algorithm I wanted was:<\/p>\n<ul>\n<li>Prompt for whether I wanted a Seer\/Knight or a Myth page.<\/li>\n<li>Open the PDF in a dedicated window.<\/li>\n<li>Go to a random page based on selection.<\/li>\n<\/ul>\n<p>There are 72 Seer\/Knight pages and 72 Myth pages.  On a spread, the left page is\na Seer\/Knight and the right page is a Myth.  The Seer\/Knight starts on page 28.<\/p>\n<p>The random function started as:<\/p>\n<pre><code class=\"language-emacs-lisp\">(+ (if seer-knight 28 29)\n   (* (random 72) 2))\n<\/code><\/pre>\n<p>That is pick a number between 0 and 71, multiple that by 2, then add 28 or 29\ndepending on Seer\/Knight or Myth.<\/p>\n<p>I would then use <code>find-file<\/code> and in that buffer call <code>pdf-view-goto-page<\/code>.  It was\ninelegant but was quick to verify general behavior.<\/p>\n<p>Then I set about creating a better user experience.  Below is the <code>random-pages<\/code>\nto choose from, and their relevant information of what file and how to pick a\npage.<\/p>\n<pre><code class=\"language-emacs-lisp\">(defvar random-pages\n  '((&quot;Knights\/Seers&quot; .\n     (:file\n      &quot;~\/Documents\/RPGs\/Mythic Bastionland\/mythic=bastionland--core-rules__rules_systems.pdf&quot;\n      :callback\n      (lambda () (pdf-view-goto-page (+ 28 (* (random 72) 2))))))\n    (&quot;Myths&quot; .\n     (:file\n      &quot;~\/Documents\/RPGs\/Mythic Bastionland\/mythic=bastionland--core-rules__rules_systems.pdf&quot;\n      :callback\n      (lambda ()\n        (pdf-view-goto-page (+ 29 (* (random 72) 2)))))))\n  &quot;An alist where `car' is the label and `cdr' is a plist with :file and\noptional :callback.\n\nWe'll open the :file, then if a :callback is present, we'll run that\ncallback on the newly opened file.&quot;)\n<\/code><\/pre>\n<p>Next up is the function to open the random page in a dedicated window; with the\nhappy little \u201cbind <kbd>g<\/kbd> to pick a new random page.\u201d<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun random-page (&amp;optional label set)\n  &quot;Open the file from SET with given LABEL.\n\nSET is assumed to be an alist with `car' as the label and `cdr' a plist\nwith :file and :callback.  See `random-pages' for more information.&quot;\n  (interactive)\n  (let* ((set\n           (or set random-pages))\n          (label\n           (or label\n             (completing-read &quot;Source: &quot; set nil t)))\n          (source\n            (alist-get label set nil nil #'string=))\n          (file\n            (plist-get source :file))\n          (display-buffer-mark-dedicated\n            t)\n          (buffer (or\n                    (find-buffer-visiting file)\n                    (find-file-noselect file))))\n    ;; We'll pop open a dedicated side window with ample space for\n    ;; viewing a new file.\n    (pop-to-buffer buffer '((display-buffer-in-side-window)\n                             (side . right)\n                             (window-width 72)\n                             (window-parameters\n                               (tab-line-format . none)\n                               (mode-line-format . none)\n                               (no-delete-other-windows . t))))\n    (with-current-buffer buffer\n      ;; As a courtesy let's bind &quot;g&quot; to refresh re-invoke the\n      ;; random-page using the same label.\n      (local-set-key (kbd &quot;g&quot;)\n        (lambda () (interactive)\n          (random-page label)))\n      ;; I envision that not every random-page would have a callback.\n      ;; Which highlights that perhaps the function name 'random-page'\n      ;; is a misnomer based on my nascent understanding of what this\n      ;; could be.\n      (when-let ((callback\n                   (plist-get source :callback)))\n        (funcall callback)))))\n\n<\/code><\/pre>\n<p>What the above does is pop open a window on the right, with plenty of space to\nview the whole page.  That window gets focus and I can close it <kbd>q<\/kbd> or\nre-roll with <kbd>g<\/kbd>.  It also does the work to re-use a buffer if it\nalready exists.<\/p>\n<details><summary>An animated GIF demontsrating the functions along with a list of commands called.<\/summary>\n\n<figure  aria-hidden=\"true\">\n  <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\" \/>\n<\/figure>\n\n<ul class=\"org-ul\">\n<li><code>M-x consult-bookmark<\/code> to show starting bookmarks.<\/li>\n<li><code>M-x jf\/mode-line-format\/playing-fftw<\/code> to start playing \u201cForged from the Worst.\u201d<\/li>\n<li><code>M-x consult-bookmark<\/code> show a list of the game specific bookmarks.<\/li>\n<li><code>M-x random-page REG Seer\/Knight RET<\/code> to pop open a random Knight\/Seer page from\nthe <cite>Mythic Bastionland<\/cite>\n rule book.<\/li>\n<li>Then <kbd>g<\/kbd> a few times to pick a new random Knight\/Seer page each time.<\/li>\n<\/ul>\n<\/details>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>I love the virtuous cycle of playing a game, having a tool to support that\ngame-play, and knowing that I can extend the tool to facilitate play.  The\nresult tends towards a generative feedback loop.<\/p>\n<p>And both my during play moments of reflection as well as after play write-ups\nhelped me consider what might be interesting to add to my tool chain.  Which fed\ninto exploring existing functionality and implementation to craft something just\na bit new.<\/p>\n<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\nhow I write up campaign notes while running.  See what\u2019s missing, maybe work and\nclocking time there.  That would mean I\u2019d have access to capture content to that\nclock, 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 \u201cOrg-Mode\u201d\" title=\"Other site-wide references of \u201cOrg-Mode\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-ORG-MODE\">&#128214;<\/a><\/small>\n functionality.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Extending%20Emacs%20to%20Play%20Mythic%20Bastionland\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Mythic Bastionland Session Reflection","link":"https:\/\/takeonrules.com\/2025\/12\/09\/mythic-bastionland-session-reflection\/","pubDate":"Tue, 09 Dec 2025 17:46:12 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/09\/mythic-bastionland-session-reflection\/","category":["reflections","rpgs"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cMythic Bastionland Session Reflection\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n<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>\n<\/p\/><p><strong>Summary: <\/strong>\nWith one #solo #rpg session in the books, I take a bit to assess and reflect on my experience.  Will there be more sessions?  I\u2019ll need to Ask the Stars.\n<\/p>\n        <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>\n<p>I reviewed the aggregate list of resources from <a href=\"https:\/\/elmc.at\/running-mythic-bastionland\/#resources\">Running Mythic\nBastionland<\/a>.  Reading Chris McDowall\u2019s <a href=\"https:\/\/www.bastionland.com\/2025\/04\/landmark-sites-sanctum.html\">BASTIONLAND: Landmark Sites - Sanctum<\/a>, I\nthink of how quick I placed Sir Weydlyn in the presence of a <em>Seer<\/em>.  Something to\nconsider going forward.<\/p>\n<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\nconsider that Sir Weydlyn appeared <em>en media res<\/em> .  Which works, but\nI\u2019ll want to consider the question: \u201cWhy this realm?\u201d<\/p>\n<p>With those larger contexts, I\u2019m going to dive into my thoughts.<\/p>\n<p>First and foremost, combat is intense and decisive.  With a 17 Vigor, it feels\nlike Sir Weydlyn can safely <em>Smite<\/em>.  But his other Virtues are low, meaning I can\nonly assume he could use one of these once, before experiencing <em>Fatigue<\/em>.<\/p>\n<p>The combat decisions feel meaningful; do I go for maximum damage or attempt a\n<em>Gambit<\/em> to sustain, press, or create an advantage?  Having given Sir Weydlyn the\ninitiative, and allowing for an initial burst was perhaps generous, but given my\nexploration of the system feels appropriate.<\/p>\n<p>With his high <em>Guard<\/em>, <em>Vigor<\/em> and <em>Armor<\/em> 2, charging into a volley of arrows likely\nwouldn\u2019t have changed much.  It really was the <em>Burst<\/em> that set the stage for the\nrout.<\/p>\n<p>Next, those seers.  Reading those terse three bullet points, I felt as though I\ncould play to the weirdness and idiosyncrasies of the Tangled Seer.  I\u2019d imagine\nat a group table in which I were running these games, I\u2019d feel that exhilaration\nof improvising a bit of apparent insanity.<\/p>\n<p>One thing I want to remember is to also briefly study the image associated with\nthe seer; it too is evocative and operates at a different level from the seer\u2019s\ntext.<\/p>\n<p>In writing the dialogue of Sir Weydlyn, and his announcement of no quarter, I\nknew that Squire Kelwun, with his piety and witness to an execution, could\nprovide a good foil to the grim nature of his knight.  So I chose to introduce\ntension and sustain it.<\/p>\n<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 \u201cMythic Bastionland\u201d\" title=\"Other site-wide references of \u201cMythic Bastionland\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND\">&#128214;<\/a><\/small>\n and bookmarking specific pages.  As I write this, and know the\nauguries at the bottom of the book, I am contemplating a function to \u201copen the\nPDF to a random Knight\/Seer or Myth page.\u201d  So that I might quickly reference\nthose tables (without need of transcription).<\/p>\n<p>As I was playing, and Squire Kelwun suggested traveling to the tower, I felt\nthat direction served three aspects:<\/p>\n<ul>\n<li>Increase the fictional tension between squire and knight.<\/li>\n<li>Set in motion two settlements.<\/li>\n<li>Create a location triangle in the fiction: tower, castle, and lake.<\/li>\n<\/ul>\n<p>Digging into that location triangle a bit more, I\u2019ve encumbered Sir Weydlyn with\na <em>Promise<\/em> to a Seer to go to the castle, a begrudged acceptance that offloading\nprisoners sooner rather than later makes sense, and knowledge that a <em>Myth<\/em> (and\nadventure) lurks near the silver lake.<\/p>\n<p>Heading towards the tower also moves towards answering that lingering setup\nquestion about the <em>fancy bandits<\/em> relation to the settlement.  Oh the vindication\nthat Sir Weydlyn will feel if they return those prisoners not to justice but to\ntheir awaiting homes and friends.<\/p>\n<p>Aside from character creation and generating the map (as well as what you read\nin 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.\nMy plan is to do this all <em>just in time<\/em>.  What this means is as knight and squire\nhead towards the tower, I\u2019ll determine if there\u2019s a barrier.  I have a bit of\npreparation to translate realm creation for a traditional GM role into a process\nfor solo exploration.<\/p>\n<p>Yes, I could establish all of the barriers, and know them ahead of time.\nHowever, I find a narrative excitement when playing and needing to consult an\noracle for information regarding the world.  That oracle is bringing forth\npersonal symbols from my experiences, interweaving them with the language and\nprompts of both the oracle\u2019s words and images, as well as the fiction as\npresented.<\/p>\n<p>In other words, I can use all of this to <em>play to find out<\/em> .<\/p>\n<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\nexploring <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 \u201cPendragon\u201d\" title=\"Other site-wide references of \u201cPendragon\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-PENDRAGON\">&#128214;<\/a><\/small>\n, see the following:<\/p>\n<ul>\n<li>Building a Family History for Pendragon<\/li>\n<li>On Starting a Solo Pendragon Campaign<\/li>\n<li>The Great Pendragon Campaign: Year 490<\/li>\n<\/ul>\n<p>But I lost steam.  Why?  Well there was a disheartening election, paired with\nmoving into our house, and closing our retail store.  Then, I found myself\nreally enjoying reading a myriad of books.  The time and space away from the\ngame, has me thinking fondly of the system and the mini-game of character\ncreation.<\/p>\n<p>Second, I think of The Travels of Duinhir Tailwind.  I haven\u2019t fully closed that\ngame out, but I\u2019m looking at the character sheet of Duinhir Tailwind versus Sir\nWeydlyn, and appreciate the terse nature.<\/p>\n<p><cite>Mythic Bastionland<\/cite>\n has less character sheet overhead, which I find refreshing.\nAnd while the Virtues and Passions of <span>Pendragon<\/span>\n are fantastic for solo-play, a\nflavorful oracle can do quite a lot of work.<\/p>\n<p>And, there\u2019s the cognitive load\/fatigue of playing a game in such a well\nestablished world.  There\u2019s the mood and tone to consider, but also the\n\u201cfiction\u201d as established.  I\u2019ll see how the travel procedures of <cite>Mythic Bastionland<\/cite>\n play out.<\/p>\n<p>Which is to say, for now, I\u2019ve found a nice shiny to play with.  And I\u2019m\nenjoying the writing opportunity as well as building my toolbox for running this\ngame.  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 \u201cEmacs\u201d\" title=\"Other site-wide references of \u201cEmacs\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-EMACS\">&#128214;<\/a><\/small>\n function to lookup random pages.<\/p>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Mythic%20Bastionland%20Session%20Reflection\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Forged from the Worst: Session 1","link":"https:\/\/takeonrules.com\/2025\/12\/08\/forged-from-the-worst-session-1\/","pubDate":"Mon, 08 Dec 2025 20:44:15 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/08\/forged-from-the-worst-session-1\/","category":["rpgs","sessions"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cForged from the Worst: Session 1\u201d\">\n<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>\n<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>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<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>\n<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>\n<\/span><\/span>\n<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>\n<\/p\/><p><strong>Summary: <\/strong>\nIn which we establish our realm and we first meet Knight-Errant Sir Weydlyn, his helmed steed Ingot, and Squire Kelwum.\n<\/p>\n        <p class=\"verse\">\nGravid beats on ferrous slab, thick air a crimson sheen<br \/>\nEach mallenstroke leaves scars aworn, apparent and unseen<br \/>\n<\/p>\n<p>I\u2019m 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 \u201cMythic Bastionland\u201d\" title=\"Other site-wide references of \u201cMythic Bastionland\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-MYTHIC-BASTIONLAND\">&#128214;<\/a><\/small>\n.  I\u2019ll be using\n<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 \u201cEmacs\u201d\" title=\"Other site-wide references of \u201cEmacs\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-EMACS\">&#128214;<\/a><\/small>\n to manage the campaign.<\/p>\n<p>For my knight, I rolled up The Forge Knight; one knighted by The Worst Seer.  I\nopted for a Knight-Errant and have the following characteristics:<\/p>\n<ul>\n<li><strong>Guard:<\/strong> 6<\/li>\n<li><strong>Clarity:<\/strong> 5<\/li>\n<li><strong>Spirit:<\/strong> 3<\/li>\n<li><strong>Vigor:<\/strong> 17<\/li>\n<li><strong>Glory:<\/strong> 0<\/li>\n<li><strong>Weapons:<\/strong> Bolt-guisarme (d10 long in melee or d10 slow ranged)<\/li>\n<li><strong>Armor:<\/strong> Gambeson (A1), Scale (A1)<\/li>\n<li><strong>Scars:<\/strong> blistered face; noise sensitivy<\/li>\n<li><strong>Steed:<\/strong> Ingot, Helmed steed (VIG 14, CLA 4, SPI 5, 4GD, d6 trample, A1)<\/li>\n<li><strong>Passion:<\/strong> Burning; restore SPI when you are wounded by fire.<\/li>\n<li><strong>Ability:<\/strong> Tempering Strike: when you cause a Wound with a melee weapon, that\nweapon receives +d8 until the end of combat.  This effect can stack.<\/li>\n<\/ul>\n<p>I named this bruiser Sir Weydlyn and rolled up Squire Kelwum to accompany him:<\/p>\n<ul>\n<li><strong>Guard:<\/strong> 1<\/li>\n<li><strong>Clarity:<\/strong> 9<\/li>\n<li><strong>Spirit:<\/strong> 8<\/li>\n<li><strong>Vigor:<\/strong> 8<\/li>\n<li><strong>Steed:<\/strong> Pony (VIG 7, CLA 7, SP 2, 2GD)<\/li>\n<li><strong>Weapons:<\/strong> dagger (d6); three javelins (d6)<\/li>\n<li><strong>Upbringing:<\/strong> They were raised in a pious environment and carry memories of an\nexecution.<\/li>\n<li><strong>Constraint:<\/strong> They will not eat meat.<\/li>\n<\/ul>\n<p>I\u2019m referencing Plimbort\u2019s guidance on <a href=\"https:\/\/plimbort.itch.io\/solo-for-mythic-bastionland\">Solo for Mythic Bastionland<\/a>; of which as\nthe player, I know the general map of the realm, but am oblivious to where other\nthings might be.  I\u2019ll instead use procedures to <em>play to find out<\/em> .<\/p>\n<p>Unlike the guidance of the solo-play, I chose to roll up the starting myths;\nthough I only looked up the page so as to bookmark them.  I got the following:<\/p>\n<ul>\n<li>the Beast<\/li>\n<li>the Fortress<\/li>\n<li>the Judge<\/li>\n<li>the Lich<\/li>\n<li>the Mountain<\/li>\n<li>the Wall<\/li>\n<\/ul>\n<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\nthis map is that there\u2019s a major arterial river running north\/south.  Something\nthat might facilitate travel.<\/p>\n\n<figure  aria-hidden=\"true\"><figcaption><p>A map of the Realm that Sir Weydlyn swore to protect.<\/p>\n<\/figcaption>\n  <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\" \/>\n<\/figure>\n\n<p>Per the solo recommendations, I don\u2019t know the locations of the staring Myth,\nLandmarks, nor Barriers.  I\u2019m also going to treat the river as a barrier; there\nwill be bridges for crossing, but not in every hex.<\/p>\n<h2 id=\"setting-the-initial-situation\">Setting the Initial Situation<\/h2>\n<p>From the solo rules, I looked at the starting point and tossed a d6 to see how\nSir Weydlyn and Squire Kelwum starts\u2026 <em>a skirmish with bandits<\/em>.<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> The text is \u201cRoll 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?\u201d<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n<\/p>\n<p>Rolling on the <em>Sparks &gt; Combat &gt; Soldier<\/em> table I get <em>Fancy Scout(s)<\/em>.<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> Read that again\u2026Fancy Scouts.  Perhaps a Fancy Scout of Cornwood?<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n How\nmany (1d6): 6.  Looking at <em>Warfare<\/em> I don\u2019t see \u201cscouts\u201d but figure \u201cskirmishers\u201d\nwork: Vigor 10, Clarity 13, Spirit 10, 2GD, Shortbow (d6 long).<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> Yikes to archers.<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n<\/p>\n<p>Now which holding?  The <em>Tower<\/em> in the northeast corner\u2026we\u2019ll name that in a bit.<\/p>\n<p>And how close?  I\u2019ll roll a d6; on a 1\u20132 it is the hex of the <em>Tower<\/em>; 3\u20135\nadjacent hex; 6 two hexes away.  I get an adjacent hex, and roll it is the\ngrey plains to the northwest (coordinates <code>8,1<\/code>).<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> Note to self, I\u2019m going to need a way of better tracking these things.\nPerhaps a sheet of paper?  For now, coordinates are easier.<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n<\/p>\n<p>I review the Basic Rules.  And think a bit about the situation.  The question\nimplies that combat has started.  I wonder, why did Sir Weydlyn and Squire\nKelwum engage these <em>fancy scouts<\/em>?  Let\u2019s <em>Ask the Stars<\/em> \u2026The Elder (authority -\ntradition) Bowed (submission - mercy).  Maybe they are threatening a <em>Seer<\/em>?\nSeems likely, let\u2019s again <em>Ask the Stars<\/em> \u2026and yes they are.<\/p>\n<p>I grab a d12 and d6, getting the <em>Tangled Seer<\/em>.<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> They are not quite here, but also too much of them is here.  Appears as\nknotted appendages and faces, twisting in and out of the air.<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n Perhaps outside their humble\nacademy.<\/p>\n<h2 id=\"skirmish-with-the-fancy-bandits\">Skirmish with the Fancy Bandits<\/h2>\n<p>Sir Weydlyn and his squire having begun their journey into this mythic realm,\ntraveling upon the grey plains.  Near a copse of ash trees in bloom, they note\nsix riding horses tethered up; adorned in finery, yet unattended.  A cry of help\nand cursing erupts in the distance, coming from beyond the horses.<\/p>\n<p>\u201cCome good Kelwum, something is amiss,\u201d says Weydlyn as he spurs Ingot forward,\n\u201cI hope we are not too late.\u201d  As they trot around the copse, through the waist\nhigh grasses, and see cleared land surrounding a small building, with a bell\nraised high on ashen beam.<\/p>\n<p>Between Sir Weydlyn and the building, somewhat scattered, are five men with\nshort bows unbent.  A sixth with walks amidst them with torch looking to light\nthe arrows.  All dressed in finery matching those of the horses.<\/p>\n<p>\u201cYou foul brigands, this fine academy, shall not submit,\u201d rages a voice within\nthe academy.<\/p>\n<p>\u201cThen, I\u2019m afraid, we shall make a pyre of you and yours,\u201d howls the voice of\nthe man with the firebrand.<\/p>\n<p>Sir Weydlyn\u2019s eyes catch the firelight, and a grim smile bends his face.  From\ntrot to gallop, Weydlyn brandishes his bolt-guisarme, prepared to run over these\nbandits.  \u201cKelwum, stay back, and should one escape give chase,\u201d orders Sir\nWeydlyn, as he prepares for the clash.<\/p>\n<section class=\"inline-comments\">\n<p><small>\nSir Weydlyn\u2019s brings 1d10 (bolt-guisarme) + 1d6 (trample) dice and opts to\ninvoke the <i class=\"dfn\">Smite<\/i> feat to gain Blast.  Can he hit them all with a blast?  I <i class=\"dfn\">Ask\nthe Stars<\/i> and get a yes.  Here comes the slop.\n<\/small><\/p>\n<p><small>\nBasic stats: Vigor 10, Clarity 13, Spirit 10, 2GD, Shortbow (d6 long)\n<\/small><\/p>\n<dl class=\"org-dl\">\n<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>\n<dt><small>Bandit 2<\/small><\/dt><dd><small>4, 3; gambit impair (fails), eliminate 2GD, Vigor is at 9.<\/small><\/dd>\n<dt><small>Bandit 3<\/small><\/dt><dd><small>4, 3; gambit impair (success), eliminate 2GD, Vigor is at 9.<\/small><\/dd>\n<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>\n<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>\n<dt><small>Bandit 6 (with firebrand)<\/small><\/dt><dd><small>4, 3; gambit stop (fails), eliminate 2GD, Vigor is at 9.<\/small><\/dd>\n<\/dl>\n<p><small>\nAnd Weydlyn makes his <i class=\"dfn\">Save<\/i> after using <i class=\"dfn\">Smite<\/i>.  And Weydlyn has wounded 4\nbandits.  That bolt-guisarme is going to be quite dangerous.\n<\/small><\/p>\n\n<\/section>\n\n<p>Grim determination sets Weydlyn in motion, charging into the archers, themselves\nconfused, as they turn to face Ingot and Weydlyn explode amidst them.  Weydlyn\u2019s\nbolt-guisarme piercing in a flury, as though a hot poker stoking the coals of a\nfire.  Ingot bashing and trampling, twisting the ankle of one as they avoid the\nworst of Ingot\u2019s wrath.  The others maintain their wits as they back away from\nWeydlyn and the helmed Ingot.<\/p>\n<section class=\"inline-comments\">\n<p><small>Consulting the rules, I see a call for a <i class=\"dfn\">Wavering Morale<\/i>, check on Bandits 2, 3,\nand 4.  Amazingly they all succeed.  Bandit 2, 3, 4 move back and fire hoping\nthat bandit 6 can pull Weydlyn from his horse.  I grab 3d6 + 1d4 and roll: 1, 1,\n3, 4.  Their hope rests in unhorsing Weydlyn.  So they inflict 3 damage;\nreducing Weylynd\u2019s Guard from 6 to 3.  And the Gambit fails as Sir Weydlyn\nsucceeds at his save.<\/small><\/p>\n<\/section>\n\n<p>With wits about them, those with shortbows scatter, one limping along.  And they\nhastily turn and fire, distracting Sir Weydlyn as the brigand with the fire\nbrand attempts to pull Weydlyn down.  Weydlyn feels the tug as Ingot pivots\nbreaking the tenuous grapple of the brigand.  Weydlyn bellows a laugh, \u201cI am Sir\nWeydlyn, I offer no quarter nor assume any shall be given.\u201d<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <span class=\"side\" role=\"note\"> This line came to me, as I realized the Sir Weydlyn offers only the fury of\nthe fire.<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n<\/p>\n<section class=\"inline-comments\">\n<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\noff one at a time.  I roll 1d10+4d8+1d6, netting: 8,7,6,5,5,1.  That\u2019s 7 base\ndamage plus 3 for <i class=\"dfn\">Bolster<\/i> and a <i class=\"dfn\">Strong Gambit<\/i> for no save.  Someone\u2019s soaking 10\ndamage.<\/small><\/p>\n<\/section>\n\n<p>Making good on his grim declaration, he spurs Ingot towards the bandit already\nlimping.  Running him down, leaving a ruin of bone and blood.  \u201cBrigands and\nbandits, know this, I Sir Weydlyn have sworn a sacred oath to protect the realm.\nAnd I deem you a most wicked of threat to this glorious realm.\u201d<\/p>\n<section class=\"inline-comments\">\n<p><small>With half of their ranks fallen, I again check for <i class=\"dfn\">Wavering Morale<\/i>.  There\u2019s no\nreal leader individual rolls.  Rolling 11, 18, 19, the remaining all fail.<\/small><\/p>\n<\/section>\n\n<p>From the corner of Weydlyn\u2019s eye, he sees Squire Kelwun and his pony ride after\none of the bandits.  Weydlyn hears Kelwun\u2019s <em>melodic<\/em> voice shout, \u201chalt and I\nshall claim you as my captive, your life shall be mine to spare.\u201d  The one\nbandit quickly drops to his knees and begs, accepting this chance of safety.<\/p>\n<p>As the other two bandits plead, with cracking voices, \u201cWe submit to you, oh\nmerciful one.\u201d  Weydlyn curses under his breath, a hiss as though water poured\nover his hot iron heart.<\/p>\n<p>\u201cVery well Squire Kelwun, these are your prisoners,\u201d proclaims Weydlyn as he\ndismounts and approaches the dropped firebrand, watching as the flame sputters\nagainst the damp spring grasses.<\/p>\n<p>\u201cAnd I do so hope that these caged birds will sing of why they attacked this\nacademy,\u201d barks Weydlyn as he drives his boot into the smouldering fire brand;\nhis heart yearning that this were instead the dried thatch of harvest time.<\/p>\n<h2 id=\"the-tangled-seer\">The Tangled Seer<\/h2>\n<p>Weydlyn winces as the small bell rings, piercing his reverie.  He shifts his\nhead, teeth clenched and looks upon a confusion of a man, fussing and flapping,\nas though himself tethered to the bell.<\/p>\n<p>\u201cSir Weydlyn, I am Tompot, at least so I\u2019m told, and you have, I believe\u2014yes, I\nthink\u2014saved me and perhaps, most probably, my academy\u2026well the realms academy\u2026if\nthey might claim it,\u201d bumbled the man as he found his ill-fitting clothes now\ntangled on the bell chord.  All efforts to untangle, being met by both a\npiercing ring, and further ensnarement.<\/p>\n<p>Sir Weydlyn, bites his lip, breaths deep, and dismounts, walking towards the\nbell.  His walk a chainmail song.  \u201cHere, let me help,\u201d growls Sir Weydlyn, as\nhe draws his dagger, Tompot wincing for a moment, then noticing the blade cut\nthe chord; freeing Tompot from one tether, though finding himself now caught in\nwhat looks like twice as many clothes\u2014none well-fitting.<\/p>\n<p>\u201cAh, thank you again for rescuing me.  Though\u2026perhaps this is not a good thing,\u201d\nreplies Tompot, as he stops moving, letting his clothes settle, as though a pine\ntree laden with heavy wet winter snow, \u201cas I have said, you have saved me and\nthis academy.  How shall I reward you?  Ah, you a knight of the realm, your\nsquire as yet unpledged.  Yes, what might I a humble school master give?\u201d<\/p>\n<p>\u201cYou know my oaths,\u201d states Sir Weydlyn, speaking slower, as to not sound\nirritated, \u201canswer me true, are you a Seer?\u201d<\/p>\n<p>\u201cI have been known to be that.  Yes,\u201d replies Tompot, furrowing his brow as\nthough a thought shattered as glass upon stone.  \u201cYes, at least until this day\nends, I\u2019m a seer.\u201d<\/p>\n<p>Drawing a deep, cooling breath, Weydlyn begins, \u201cThen I ask nothing more of you\nthan to know of what plagues realm.  For I am oathbound to protect this realm.\u201d<\/p>\n<p>\u201cNothing more than what ails this realm?\u201d asks Tompot, lucid in his confusion regarding Weydlyn\u2019s response.<\/p>\n<p>\u201cNothing,\u201d affirms Sir Weydlyn.<\/p>\n<p>For a moment, Tompot\u2019s face twists as though beard and brow were in a row, then\nin a clear and certain voice he speaks in verse<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <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>\n<\/small>\n:<\/p>\n<p class=\"verse\">\nIn cutting coil and snatching horn and crushing limb abound<br \/>\nTameless creature sees no knight, no seer, no king a\u2019found<br \/>\n<br \/>\nA cage in stone, all thorned and vast<br \/>\nDisguise a scheme in shadows cast<br \/>\n<br \/>\nIn time she calls for all the knights<br \/>\nUpon the best her blade still bites<br \/>\n<br \/>\nFrom fable\u2019s heart springs fable\u2019s fear, a past within a past<br \/>\nFrom time before our nightmares still, made flesh by sullen mass<br \/>\n<br \/>\nCutting through the land, a wonder two storms tall<br \/>\nGuarding from invasion, or built to cage us all<br \/>\n<br \/>\nHow earth ajoys to lay frailty bare<br \/>\nRender us small in its coldstone stare<br \/>\n<\/p>\n<p>While listening to the recitation Sir Weydlyn catches himself, wanting to\ninterrupt and hurry on this doddering Seer.  And when Tompot finish, Weydlyn\u2019s\nwrath boils over, \u201cYou twisted man in riddles speak,\u201d simmering down he\ncontinues, \u201c\u2026oh I spoke in haste and do apologize, as my ears and mind fail to\nunwind your riddled verse.  Of those you speak, I wish to know more of this\ntimeless creature.  Where might I find it?\u201d<\/p>\n<p>\u201cNow that is a bit more than you first asked, though I guessed as much and said\nas less.  For our score is settled and were I to yield more, I require less\u2026\nless visitors from that cursed castle to the south west.  These men, they insist\non bringing messages and knowledge new, as though to barter for visions and\nknowledge held.\u201d<\/p>\n<p>Sir Weydlyn, releases his held breath, as though opening the furnace door, \u201cI\ncan travel there and issue your demands, though I don\u2019t know what sway I hold.\u201d<\/p>\n<p>\u201cAll I ask, is that you ask.  Now go, then return and I\u2019ll tell you more,\u201d\ncommands Tompot.<\/p>\n<p>\u201cGood Tompot, share this little truth before I depart, and I do so <em>swear<\/em> that I\nshall deliver your demands and petition those of the castle to take heed.\u201d<small class=\"side-container\">\n  <span class=\"side-label\"><span class=\"hidden\">(<\/span>Sidenote<span class=\"hidden\">:<\/span><\/span>\n  <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>.\nLooking at Weydlyn\u2019s virtues, convincing someone might be a bit of a challenge.<span class=\"hidden\">)<\/span><\/span>\n<\/small>\n<\/p>\n<p>Tompot writhes, again twisting and undulating within his clothes, as though many\nsnakes sought to spill from these robes, \u201cVery well, I accept your <em>Promise<\/em>.  And\ngive you this look for the fell beast on the western shores of the silver lake\nsouth east of here.\u201d<\/p>\n<p>Sir Weydlyn bows deeply, \u201cThank you Tompot, I shall leave you this morning and\nmake haste for the castle.  Kelwun, are your prisoners bound by oath or leather,\nfor we must ride to the castle.\u201d<\/p>\n<p>\u201cSir, there\u2019s a tower nearby, surely we could first take <em>the<\/em>\nprisoners\u2026\u201d<\/p>\n<p>\u201c<em>Your<\/em> prisoners Kelwum.  Yours!\u201d<\/p>\n<p>\u201cYes, my prisoners,\u201d continues Kelwum, \u201cand perhaps there\u2019s justice or reward\noffered in the tower.  I\u2019ve bound my prisoners hands, they\u2019ll walk.  We should\nalso get their horses.\u201d<\/p>\n<p>Sir Wydlyn growls eyeing the noon day sun.  \u201cListen Kelwum\u2019s prisoners, to\nattempt escape is to forfeit your life.  We make for the tower.\u201d<\/p>\n<h2 id=\"technicalities\">Technicalities<\/h2>\n<p>I\u2019m looking to reuse existing <span>Emacs<\/span>\n functionality.  First, while playing, I\u2019ve\nset custom bookmarks.  When I invobke the following, it clobbers my default\nbookmarks and instead uses the given file.<\/p>\n<pre><code class=\"language-emacs-lisp\">(bookmark-load &quot;~\/SyncThings\/source\/campaign-forged-from-the-worst.el&quot;\n                 t nil t)\n<\/code><\/pre>\n<p>That file has links to various PDFs and web pages related to the campaign or how\nto run <cite>Mythic Bastionland<\/cite>\n.<\/p>\n<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\nGithub)<\/a>:<\/p>\n<pre><code class=\"language-emacs-lisp\">(random-table\/register\n :name &quot;Mythic Bastionlan &gt; Forged from the Worst &gt; Myth&quot;\n :data '(&quot;The Beast&quot;\n         &quot;The Fortress&quot;\n         &quot;The Judge&quot;\n         &quot;The Lich&quot;\n         &quot;The Mountain&quot;\n         &quot;The Wall&quot;))\n<\/code><\/pre>\n<p>The \u201cForged from the Worst\u201d table provides a means of determining a random\napplicable myths.<\/p>\n<p>I also transcribed the following tables from <a href=\"https:\/\/bit.ly\/askthestars\">Chris McDowall\u2019s Ask the Stars<\/a>, to\nuse those for augury rolls.<\/p>\n<pre><code class=\"language-emacs-lisp\">(random-table\/register\n ;; From https:\/\/bit.ly\/askthestars\n :name &quot;Ask the Stars &gt; Yes or No&quot;\n :roller (lambda (&amp;optional table)\n           (if (yes-or-no-p &quot;Is the answer likely yes?&quot;)\n               (max (+ 1 (random 12)) (+ 1 (random 12)))\n             (min (+ 1 (random 12)) (+ 1 (random 12)))))\n :data '(&quot;No&quot; &quot;No&quot; &quot;No&quot;\n         &quot;No but&quot; &quot;No but&quot; &quot;No but&quot;\n         &quot;Yes but&quot; &quot;Yes but&quot; &quot;Yes but&quot;\n         &quot;Yes&quot; &quot;Yes&quot; &quot;Yes&quot;))\n\n(random-table\/register\n ;; From https:\/\/bit.ly\/askthestars\n :name &quot;Ask the Stars &gt; Signs &amp; Positions&quot;\n :data '(&quot;- Sign :: {Ask the Stars &gt; Sign}\\n- Position :: {Ask the Stars &gt; Position}&quot;))\n\n(random-table\/register\n :name &quot;Ask the Stars &gt; Sign&quot;\n :private t\n :data '(&quot;The Fang (hostility - fear)&quot;\n         &quot;The Wings (freedom - nature)&quot;\n         &quot;The Cage (protection - obligation)&quot;\n         &quot;The Hand (creation - misdirection)&quot;\n         &quot;The Mask (persuasion - shame)&quot;\n         &quot;The Eye (judgement - secrets)&quot;\n         &quot;The Child (learning - greed)&quot;\n         &quot;The Traveller (wandering - chance)&quot;\n         &quot;The Elder (authority - tradition)&quot;\n         &quot;The Ship (direciton - struggle)&quot;\n         &quot;The Council (opposition - cycles)&quot;\n         &quot;The Legion (unification - identity)&quot;))\n\n(random-table\/register\n :name &quot;Ask the Stars &gt; Position&quot;\n :private t\n :data '(&quot;Rising (growth - possibility)&quot;\n         &quot;Entombed (memory - death)&quot;\n         &quot;Twinned (intimacy - dependency)&quot;\n         &quot;Waning (desire - decay)&quot;\n         &quot;Rooted (stability - plenty)&quot;\n         &quot;Bowed (submission - mercy)&quot;\n         &quot;Colliding (change - violence)&quot;\n         &quot;Burning (honesty - pride)&quot;\n         &quot;Veiled (faith - deceit)&quot;\n         &quot;Exiled (guilt - autonomy)&quot;\n         &quot;Crowned (ambition - ruin)&quot;\n         &quot;Reflected (reversal - vanity)&quot;))\n<\/code><\/pre>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Forged%20from%20the%20Worst%3a%20Session%201\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"},{"title":"Managing Light\/Dark Scheme in MacOS and Linux","link":"https:\/\/takeonrules.com\/2025\/12\/05\/managing-lightdark-scheme-in-macos-and-linux\/","pubDate":"Fri, 05 Dec 2025 21:04:34 -0500","author":"jeremy@takeonrules.com (Jeremy Friesen)","guid":"https:\/\/takeonrules.com\/2025\/12\/05\/managing-lightdark-scheme-in-macos-and-linux\/","category":["emacs","programming","technologies"],"description":"\n        <p>Related Links :: <span class=\"label\">Tags:<\/span> <span role=\"list\" aria-label=\"Tags for \u201cManaging Light\/Dark Scheme in MacOS and Linux\u201d\">\n<span role=\"listitem\" aria-label=\"&ldquo;emacs&rdquo; tag navigation\"><a href=\"https:\/\/takeonrules.com\/2025\/09\/21\/adding-more-link-description-defaults\/\" aria-label=\"Previous post tagged with &ldquo;emacs&rdquo; is &ldquo;Adding More Link Description Defaults&rdquo;\" title=\"Older post tagged with &ldquo;emacs&rdquo; is &ldquo;Adding More Link Description Defaults&rdquo;\"><small>&lt;<\/small><\/a>\n<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\/09\/extending-emacs-to-play-mythic-bastionland\/\" aria-label=\"Next post tagged with &ldquo;emacs&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;\" title=\"Newer post tagged with &ldquo;emacs&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;\"><small>&gt;<\/small><\/a>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<span role=\"listitem\" aria-label=\"&ldquo;programming&rdquo; tag navigation\"><a href=\"https:\/\/takeonrules.com\/2025\/04\/17\/automating-adding-books-to-my-org-mode-document\/\" aria-label=\"Previous post tagged with &ldquo;programming&rdquo; is &ldquo;Automating Adding Books to My Org-Mode Document&rdquo;\" title=\"Older post tagged with &ldquo;programming&rdquo; is &ldquo;Automating Adding Books to My Org-Mode Document&rdquo;\"><small>&lt;<\/small><\/a>\n<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\/09\/extending-emacs-to-play-mythic-bastionland\/\" aria-label=\"Next post tagged with &ldquo;programming&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;\" title=\"Newer post tagged with &ldquo;programming&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;\"><small>&gt;<\/small><\/a>\n<\/span><span aria-hidden=true> &middot; <\/span>\n<span role=\"listitem\" aria-label=\"&ldquo;technologies&rdquo; tag navigation\"><a href=\"https:\/\/takeonrules.com\/2025\/11\/06\/gnome-and-a-trixie-debian\/\" aria-label=\"Previous post tagged with &ldquo;technologies&rdquo; is &ldquo;Gnome and a Trixie Debian&rdquo;\" title=\"Older post tagged with &ldquo;technologies&rdquo; is &ldquo;Gnome and a Trixie Debian&rdquo;\"><small>&lt;<\/small><\/a>\n<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\/2025\/12\/09\/extending-emacs-to-play-mythic-bastionland\/\" aria-label=\"Next post tagged with &ldquo;technologies&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;\" title=\"Newer post tagged with &ldquo;technologies&rdquo; is &ldquo;Extending Emacs to Play Mythic Bastionland&rdquo;\"><small>&gt;<\/small><\/a>\n<\/span><\/span>\n\n<\/p\/><p><strong>Summary: <\/strong>\nA code walk through of toggling dark\/light scheme in Emacs.\n<\/p>\n        <p>On my personal machine I\u2019m using <span><a href=\"http:\/\/debian.org\/\">Debian<\/a><\/span> <small><a class=\"ref\" rel=\"tag opener\" aria-label=\"Other site-wide references of \u201cDebian\u201d\" title=\"Other site-wide references of \u201cDebian\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-DEBIAN\">&#128214;<\/a><\/small>\n with the <span><a href=\"https:\/\/www.gnome.org\/\">Gnome<\/a><\/span> <small><a class=\"ref\" rel=\"tag opener\" aria-label=\"Other site-wide references of \u201cGnome\u201d\" title=\"Other site-wide references of \u201cGnome\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-GNOME\">&#128214;<\/a><\/small>\n desktop.  And my work\nmachine runs MacOS.  I have written 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 \u201cEmacs\u201d\" title=\"Other site-wide references of \u201cEmacs\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-EMACS\">&#128214;<\/a><\/small>\n function (<code>M-x jf\/dark<\/code>) that toggles\nbetween light and dark for either my personal machine or work machine.  You can\n<a href=\"https:\/\/github.com\/jeremyf\/dotemacs\/blob\/c636f26559b09617a11c0ee82875b6cc12078e0d\/emacs.d\/init.el#L2533-L2632\">find the code up on Github<\/a>.<\/p>\n<p>First we have the general function (and associated alias for ease of typing):<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun jf\/color-scheme-system-toggle ()\n  &quot;Toggle system-wide Dark or Light setting.&quot;\n  (interactive)\n  (funcall\n    (intern\n      (format &quot;jf\/color-scheme-system-toggle:%s&quot; system-type))))\n\n(defalias 'jf\/dark 'jf\/color-scheme-system-toggle)\n<\/code><\/pre>\n<p>I\u2019m opting to use a dispatch pattern, in which I dynamically construct the\nfunction name(s) to call based on the <code>system-type<\/code> variable.  A disadvantage of\nthis approach is that I\u2019m defining functions for an <span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Operating_system\">Operating System<\/a><\/span> (<abbr title=\"Operating System\">OS<\/abbr> <small><a class=\"ref\" rel=\"tag opener\" aria-label=\"Other site-wide references of \u201cOperating System\u201d\" title=\"Other site-wide references of \u201cOperating System\u201d\" href=\"https:\/\/takeonrules.com\/site-map\/glossary\/#abbr-dfn-GLOSSARY-OS\">&#128214;<\/a><\/small>)\n that is not relevant to\nthe machine.<\/p>\n<p>It would be simple to refactor, but for reasons of the example, I\u2019ll keep them\nseparate.<\/p>\n<p>For themes I have the following:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defvar jf\/themes-plist\n  '(:dark ef-owl :light ef-elea-light))\n<\/code><\/pre>\n<p>And I use the following command to set the theme based on the color scheme:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun jf\/color-scheme:emacs (&amp;optional given-scheme)\n  &quot;Function to load named theme.&quot;\n  (let ((scheme\n         (or given-scheme\n             (funcall\n              (intern\n               (format &quot;jf\/color-scheme-func:%s&quot; system-type))))))\n    (modus-themes-select (plist-get jf\/themes-plist scheme))))\n<\/code><\/pre>\n<h1 id=\"for-macos\">For MacOS<\/h1>\n<p>I have the following:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun jf\/color-scheme-system-toggle:darwin ()\n  &quot;Toggle the darwin system scheme.&quot;1\u2019\n  (shell-command\n   (concat &quot;osascript -e 'tell application \\&quot;System Events\\&quot; &quot;\n           &quot;to tell appearance preferences &quot;\n           &quot;to set dark mode to not dark mode'&quot;))\n  (jf\/color-scheme-set-for-emacs))\n<\/code><\/pre>\n<p>To determine the MacOS color scheme:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun jf\/color-scheme-func:darwin ()\n  &quot;Determine MacOS preferred\/current theme.&quot;\n  (if (equal &quot;Dark&quot;\n             (substring\n              (shell-command-to-string\n               &quot;defaults read -g AppleInterfaceStyle&quot;) 0 4))\n      :dark :light))\n<\/code><\/pre>\n<h1 id=\"for-gnulinux-with-gnome\">For GNU\/Linux with Gnome<\/h1>\n<p>The command for Linux and Gnome is as follows:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun jf\/color-scheme-system-toggle:gnu\/linux ()\n  &quot;Toggle the gnu\/linux system scheme.&quot;\n  (let* ((target_scheme\n          (plist-get '(:dark :light :light :dark)\n                     (jf\/color-scheme-func:gnu\/linux))))\n    ;; Instead of all of the shelling out, we could assemble the shell\n    ;; commands into a singular command and issue that.\n    (dolist (setting jf\/color-scheme-commands:gnu\/linux)\n      ;; In essence pipe the output to \/dev\/null\n      (shell-command-to-string\n       (format (plist-get setting :template)\n               (plist-get setting target_scheme))))\n    (jf\/color-scheme:emacs target_scheme)))\n<\/code><\/pre>\n<p>The list of settings to change are as follows:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defvar jf\/color-scheme-system-toggle\/gnome-settings\n  '((:template &quot;gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled %s&quot;\n               :light &quot;false&quot; :dark &quot;true&quot;)\n    (:template &quot;gsettings set org.gnome.desktop.interface color-scheme %s&quot;\n               :light &quot;default&quot; :dark &quot;prefer-dark&quot;)\n    (:template &quot;gsettings set org.gnome.desktop.interface gtk-theme %s&quot;\n               :light &quot;default&quot; :dark &quot;prefer-dark&quot;))\n  &quot;A list of plists with three parts:\n\n- :template :: command to run.\n- :dark :: what the setting should be to be in \\&quot;dark\\&quot; mode.\n- :light :: what the setting should be to be in \\&quot;light\\&quot; mode.&quot;)\n<\/code><\/pre>\n<p>To determine the current color scheme in Gnome:<\/p>\n<pre><code class=\"language-emacs-lisp\">(defun jf\/color-scheme-func:gnu\/linux ()\n  &quot;Determine Gnome preferred\/current theme.&quot;\n  (if (equal\n        &quot;'prefer-dark'&quot;\n        (s-trim\n          (shell-command-to-string\n            &quot;gsettings get org.gnome.desktop.interface color-scheme&quot;)))\n    :dark :light))\n<\/code><\/pre>\n\n\t<p><a class=\"reply-by-email\" href=\"mailto:reply-to@takeonrules.com?subject=RE:Managing%20Light%2fDark%20Scheme%20in%20MacOS%20and%20Linux\">Reply by Email<\/a><\/p>\n\n      ","source":"Take on Rules"}]}}