<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>hi, it&#39;s mike</title>
    <link>https://mike.puddingtime.org/tags/doomemacs/</link>
    <description>Recent content on hi, it&#39;s mike</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>mike@puddingtime.org (mike)</managingEditor>
    <webMaster>mike@puddingtime.org (mike)</webMaster>
    <copyright>© 2026, mike</copyright>
    <lastBuildDate>Tue, 23 May 2023 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://mike.puddingtime.org/tags/doomemacs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Daily Notes for 2023-05-23</title>
      <link>https://mike.puddingtime.org/posts/2023-05-23-daily-notes/</link>
      <pubDate>Tue, 23 May 2023 00:00:00 +0000</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-05-23-daily-notes/</guid>
      <description>Doom&amp;rsquo;s UI-building affordances. A little more on Denote. Fences are weird.</description>
      <content:encoded><![CDATA[<h2 id="the-ui-construction-set">The UI construction set</h2>
<p>Years and years ago, before it was what it is today, which is horrible, Electronic Arts did some interesting marketing things that would lead you to believe that it was less a software company than some sort of rural artist colony that happened to make software but otherwise spent its time in rustic pursuits. They had a &ldquo;Construction Set&rdquo; product line that let you make your own stuff: music, racing games, pinball games, and adventure games.</p>
<p>I had the <a href="https://en.wikipedia.org/wiki/Adventure_Construction_Set">Adventure Game</a> and Racing Destruction Construction Sets and they were really fun. The Adventure Game set gave you all you needed to make a world with regions, rooms, things, and creatures. Things could do magical stuff, and creatures had a very simple set of behavioral rules.</p>
<p>That was my first experience with a software tool that let me make things inside a computer.</p>
<p>Jump forward a few years, and Borland came out with <a href="https://en.wikipedia.org/wiki/Sprint_(word_processor)">Sprint</a>, an extensible word processor with a modifiable UI that let you pick from several basic keybinding profiles (WordStar and Emacs, at least) and then add your own customizations if you wanted.</p>
<p>I was reminded of Sprint this morning as I sat down to extend Doom&rsquo;s menus for use with Denote, <a href="/posts/2023-05-22-more-plaintext-primitivism-with-denote/">which I wrote about yesterday</a>. It&rsquo;s just very clean and easy to do:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nv">map!</span> <span class="nb">:leader</span>
</span></span><span class="line"><span class="cl">      <span class="nb">:nv</span> <span class="s">&#34;n d&#34;</span> <span class="no">nil</span> <span class="c1">;; Doom has deft here, so we have to nil it out first</span>
</span></span><span class="line"><span class="cl">      <span class="p">(</span><span class="nb">:prefix-map</span> <span class="p">(</span><span class="s">&#34;n&#34;</span> <span class="o">.</span> <span class="s">&#34;notes&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">      <span class="p">(</span><span class="nb">:prefix</span> <span class="p">(</span><span class="s">&#34;d&#34;</span> <span class="o">.</span> <span class="s">&#34;Denote&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">         <span class="nb">:desc</span> <span class="s">&#34;ripgrep&#34;</span> <span class="s">&#34;/&#34;</span> <span class="nf">#&#39;</span><span class="nv">mph/denote-rg-search</span>
</span></span><span class="line"><span class="cl">         <span class="nb">:desc</span> <span class="s">&#34;Backlinks&#34;</span> <span class="s">&#34;b&#34;</span> <span class="nf">#&#39;</span><span class="nv">denote-link-backlinks</span>
</span></span><span class="line"><span class="cl">         <span class="nb">:desc</span> <span class="s">&#34;Move subtree&#34;</span> <span class="s">&#34;c&#34;</span> <span class="nf">#&#39;</span><span class="nv">mph/denote-org-copy-subtree</span>
</span></span><span class="line"><span class="cl">         <span class="nb">:desc</span> <span class="s">&#34;add keywords&#34;</span> <span class="s">&#34;k&#34;</span> <span class="nf">#&#39;</span><span class="nv">denote-keywords-add</span>
</span></span><span class="line"><span class="cl">         <span class="nb">:desc</span> <span class="s">&#34;remove keywords&#34;</span> <span class="s">&#34;K&#34;</span> <span class="nf">#&#39;</span><span class="nv">denote-keywords-remove</span>
</span></span><span class="line"><span class="cl">         <span class="nb">:desc</span> <span class="s">&#34;Move subtree&#34;</span> <span class="s">&#34;m&#34;</span> <span class="nf">#&#39;</span><span class="nv">mph/denote-org-move-subtree</span>
</span></span><span class="line"><span class="cl">         <span class="nb">:desc</span> <span class="s">&#34;New note&#34;</span> <span class="s">&#34;n&#34;</span> <span class="nf">#&#39;</span><span class="nv">denote</span>
</span></span><span class="line"><span class="cl">         <span class="nb">:desc</span> <span class="s">&#34;Rename with frontmatter&#34;</span> <span class="s">&#34;r&#34;</span> <span class="nf">#&#39;</span><span class="nv">denote-rename-file-using-front-matter</span><span class="p">)))</span></span></span></code></pre></div>
<p>It took me a few minutes to find my way back to how to deal with a keybinding collision in Doom&rsquo;s mappings &ndash; it has Deft bound to <code>d</code> under the <code>notes</code> (org) section. I don&rsquo;t use Deft and didn&rsquo;t want to skirt around the binding with <code>D</code> for <code>denote</code> so I had to nil <code>d</code> out before I could use it.</p>
<p>Otherwise &ndash; five minutes of work to build out a submenu for Denote with a mix of things I&rsquo;ll use all the time (making new notes, doing a ripgrep search of my Denote directory, showing backlinks) plus a few things that are useful in the short term, such as renaming a file on the disk after changing its metadata (since Denote uses file naming as metadata) or removing provisional keywords I used to move a bunch of notes in and operate on them in steps.</p>
<p>It&rsquo;s simple, mnemonic, but also offers visual prompts to help with learning. After a while you&rsquo;re not even going to look at the menu because the simple three-key sequences sink in after enough repetition.</p>
<p>It has made learning how to do new things much, much easier than it used to be. I&rsquo;ve just taken to opening a scratch buffer, copying over an existing menu config and clearing it out, then I start trying to do things with a new tool, figuring out over the course of a few hours what things I&rsquo;d like to be able to get to with a few keystrokes instead of remembering the function name or native keybindings. As I figure one of those things out, I add it to the menu, evaluate, and keep going. That is so much better than all the chord memorization I used to do.</p>
<h2 id="a-little-more-on-denote">A little more on Denote</h2>
<p>I also spent some time this morning figuring out how to do things &ldquo;the Denote Way,&rdquo; which means leveraging existing tools in Emacs instead of learning a bunch of functions that significantly duplicate functionality you already have.</p>
<p>&ldquo;Part of the reason Denote does not reinvent existing functionality is to encourage you to learn more about Emacs,&rdquo; says Denote&rsquo;s creator, Prot. Like, just bookmark your Denote directory and use the built-in find-file command in (<code>SPC .</code> to narrow by tags in <code>dired</code> in Doom), because tags are embedded in filenames, and lead with <code>_</code>. If you need fulltext search, ripgrep is there for you, and you&rsquo;ve probably already used it somewhere else.</p>
<p>I appreciate the approach. I think it will lead to learning how to do more by using fewer things across different use cases, instead of learning shallow functionality across a plethora of hyper-specialized tools.</p>
<p>I also learned that Denote leverages org dynamic blocks, so you can create dynamic backlinks blocks with live links:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-org" data-lang="org"><span class="line"><span class="cl"><span class="c">#+BEGIN: </span><span class="cs">denote-links</span><span class="c"> :regexp &#34;_management&#34;
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c">#+END:</span></span></span></code></pre></div>
<p><code>C-c C-c</code> in the block and it dynamically updates all the items tagged with <code>management</code>. All that stuff is just atomized interview prep notes from my job search, which I broke down and stuck in org-roam and spent a little time converting to Denote&rsquo;s format to try things out.</p>
<p><video width="100%" controls><source src="/img/denote_org_dblock.mp4" type="video/mp4">
Your browser does not support the video tag.</video></p>
<h2 id="fully-equipped">Fully equipped</h2>
<p>I took my Townie down to Foster Rd. for lunch today, then stopped off at one of the local bike shops in the Mt. Scott neighborhood. At some point early in my ownership I stuck hybrid pedals on it. Years ago Shimano came out with <a href="https://bike.shimano.com/en-US/technologies/component/details/shimano-clickr.html">the Click&rsquo;r pedal</a>, which offered some of the stability and torque advantages of a clipless pedal with a little more ease of use. The hybrid pedals were supposed to make it easier to just hop on and ride with street shoes on if you didn&rsquo;t want to change, or to snap in with cleats if you wanted to do a longer ride (or ride in the rain).</p>
<p>In practice, I don&rsquo;t think it was a great idea. I very seldom wanted to wear the cleats, and don&rsquo;t use the Townie for more than a few miles at a time. The right side of the pedals never seemed to be facing up. And they were small under normal street shoes.</p>
<p>So I just got some decent pedals with good traction today, and also added a cup holder, which seemed to tickle the counter guy.</p>
<p>&ldquo;It&rsquo;s complete now,&rdquo; he said.</p>
<p>I&rsquo;ve got a six mile ride for lunch on Thursday &hellip; that&rsquo;s a little farther than I usually consider, but new pedals and a cup holder seem to demand a celebratory cruise.</p>
<h2 id="fences">Fences</h2>
<p>I need to do some reading on fences. The one around our property is in bad shape. The way our house is built and situated, the east and west sides don&rsquo;t need one for privacy at all. The north side sort of demands it during the summer months &ndash; our neighbors on that side are as avid about their back yard time as we are.</p>
<p>But also, fences are sort of weird to me. Whoever built our house took the initiative to put one in. Our neighbors to the east sort of built off of it to fence in the south side of their lot. Our neighbors to the west don&rsquo;t care because their garage is our west property line.  My thought is just &ldquo;there is a total of one east window in this house, and it is a high window that doesn&rsquo;t line up with the neighbors&rsquo; west window, and there are no west windows at all, so why even have fences on those sides?&rdquo;</p>
<p>I&rsquo;m wondering if there&rsquo;s a way to handle the north side &hellip; the longest part of our lot that shares a boundary with a neighbor &hellip; without a <em>fence</em> fence. Or if the answer is something relatively high back there, but not as high (and hence more durable?) on the other two sides.</p>
<p>But mostly I just don&rsquo;t understand anything about fences at all.</p>
<p>When I look at them, sometimes they seem to be for privacy &ndash; they&rsquo;re high and block people on the street seeing in &ndash; and other times they seem to be <em>kind of</em> for security? Like, you&rsquo;d have to make an effort to vault a waist-high one made out of chain link,  or they wall off access to the back yard, or they (more rarely) seal in the driveway (though good lord do I get annoyed with all the old chain link driveway gates that just sort of loll around blocking the sidewalk).  Sometimes they just seem to be there to demark the property line, which would suggest something less elaborate would do, and serve mainly as lawn mower guidance.</p>
<p>They weren&rsquo;t a common feature in the small town where I lived in Indiana. They weren&rsquo;t common in the Virginia neighborhood I lived in, or else they were low, chain link things.  They were unheard of out in the Pennsylvania coal and dairy country I lived in except for one place that was half house, half mechanic&rsquo;s garage there in the hamlet.  I remember low, chain link fences around every yard in Houston, TX as a child. The only childhood home I can remember having tall fences was when my family lived in a townhouse in suburban Pittsburgh, and everyone had a tiny patch of back patio. They&rsquo;re very common in this neighborhood, more tall than not for newer construction, more likely to be low chain link things for all the smaller postwar houses.</p>
<p>Anyhow, I need to learn more about them. There&rsquo;s the part of me trying to engage with the whole topic by observation &ndash; a mode I get into that Al tolerates, but barely &ndash;  and the part of me that has a vague inkling that fences around yards might be one of those things that are <em>common</em> but also <em>not thought through in detail</em>, which means there are lots of opportunities to step on norms people didn&rsquo;t even know they had.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Daily Notes for 2023-04-28</title>
      <link>https://mike.puddingtime.org/posts/2023-04-28-daily-notes/</link>
      <pubDate>Fri, 28 Apr 2023 00:00:00 +0000</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-04-28-daily-notes/</guid>
      <description>Fixing mixed-pitch in Doom, Carlson&amp;rsquo;s fake populism, ethics in affiliate linking.</description>
      <content:encoded><![CDATA[<h2 id="mixed-pitch-in-doom">Mixed pitch in Doom</h2>
<p>Less a big thing to write about and more a thing I learned that was helpful after pounding my head against this wall:</p>
<p><code>mixed-pitch-mode</code>  allows for both variable and fixed pitches. It&rsquo;s nice for org-mode, where you&rsquo;ve got a mix of prose and more code-looking stuff &ndash; headings and body text look nicely typeset, property drawers and tags continue to use a fixed face.</p>
<p>My Doom font setting is pretty basic:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nb">setq</span> <span class="nv">doom-font</span> <span class="p">(</span><span class="nf">font-spec</span> <span class="nb">:family</span> <span class="s">&#34;Fira Code Retina&#34;</span> <span class="nb">:size</span> <span class="mi">15</span> <span class="nb">:weight</span> <span class="ss">&#39;regular</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">      <span class="nv">doom-variable-pitch-font</span> <span class="p">(</span><span class="nf">font-spec</span> <span class="nb">:family</span> <span class="s">&#34;SF Pro&#34;</span> <span class="nb">:size</span> <span class="mi">16</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="p">(</span></span></span></code></pre></div>
<p>&hellip; but for reasons that eluded me, when I entered <code>mixed-pitch</code> mode, my variable pitch font was way too small, except when it was way too big.</p>
<p>I did a lot of poking around, a lot of searching, and a lot of scrolling forums, then I broke down and asked ChatGPT, which told me to add this:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nb">setq</span> <span class="nv">mixed-pitch-set-height</span> <span class="mi">16</span><span class="p">)</span></span></span></code></pre></div>
<p>That did it.  Combined with the <code>doom-earl-grey</code> theme, I&rsquo;ve got a pleasant, low-contrast, paper-like display to work with.</p>
<h2 id="a-rare-political-link">A rare political link</h2>
<p>I was braced to hate this column, but ended up appreciating it a lot:</p>
<p><a href="https://www.thenation.com/article/society/tucker-carlson-fake-populism-fascism/">No, You Absolutely Do Not Have to Hand It To Tucker Carlson</a> (The Nation)</p>
<blockquote>
<p>&ldquo;&hellip; there’s every reason to view Carlson’s alleged anti-war politics and putative politics as a fraud. It’s true that Carlson worries about escalation in the Ukraine/Russia conflict and has pushed for diplomacy. But his position on that issue is based not on any aversion to militarism but a belief that the United States should focus its firepower on other enemies, notably Mexico and China. Rather like the late Gore Vidal (who, alas, made this argument in the pages of The Nation), Carlson wants an American-Russia alliance against the non-white hordes. International relations scholar Daniel Drezner observes, &lsquo;It&rsquo;s also hard to claim that Carlson was opposed to U.S. military adventurism; it’s more accurate to say Carlson preferred aggressive military adventurism closer to home. Carlson repeatedly called for using the military south of the border in Mexico.&rsquo;&rdquo;</p>
</blockquote>
<p>&hellip; and</p>
<blockquote>
<p>As for economic populism, Carlson is far more likely to criticize big corporations for “wokeness” (in other words trying to keep up with changing social mores) than union busting. His populism is the kind that worries about gender ambiguity in M&amp;Ms candy—not rampant inequality. He’s all too quick to revert to GOP business-class norms when there is a partisan battle. Business Insider reported on a telling moment in 2021 when Carlson “accused President Joe Biden of proposing a tax hike on wealthy Americans to ‘punish’ them.” This was a tax on people earning more than $400,000 per year—hardly a fitting target for proletarian outrage.</p>
</blockquote>
<p>In sum:</p>
<blockquote>
<p>His occasional populist and pacifist sentiments only exist in the context of a politics that aims to take justified anti-establishment outrage and harvest it for far-right ethnonationalism.</p>
</blockquote>
<p>Why was I braced to hate it?</p>
<p>Because one of my core theses about What is Going on Right Now is that formerly cherished political categories are disintegrating, but we&rsquo;re not doing a great job of understanding what that means, or allowing each other to explore what that means. So while it&rsquo;s good to call out a charlatan like Tucker Carlson or assorted other <em>faux</em> populists (<em>fauxpulists?</em>), it&rsquo;s not great when we just shoot on past that useful distinction-making and on into the territory of &ldquo;therefore, nothing they&rsquo;re saying should have any resonance with decent people.&rdquo;</p>
<p>The danger of Tucker Carlson and others like him is not, to me, that they think bad or dangerous things. It&rsquo;s that they are accomplished ideological entrepreneurs. They&rsquo;re good at catching scent of shifts in the popular mood, understanding the language of those shifts, and then folding those shifts into whatever their real political commitments are. I&rsquo;m not sure who you could name on the left that has shown the same acumen for that kind of political marketing. Bernie Sanders, AOC, Elizabeth Warren, and Katie Porter come to mind as politicians working the left populist beat. In terms of commentators? Not sure.</p>
<p>One bad side effect has been the rise of commentator who exist outside the mainstreams of conservative or liberal thought and engage in their own entrepreneurialism despite being badly confused about their own political commitments.</p>
<p>I&rsquo;m thinking of people like Batya Sargon Unghar, who wrote a snarling takedown of student loan forgiveness as a populist issue because, she said, it wasn&rsquo;t helping &ldquo;enough classes of people,&rdquo; implying that there couldn&rsquo;t be any working people with student loan debt. She has made some good observations about the cultural and class proclivities of the professional media &ldquo;class,&rdquo; but that&rsquo;s just it: She doesn&rsquo;t see a working reporter as a &ldquo;working class person.&rdquo; The top one percent of households in the US control a third of the wealth, the bottom half of US households control 2.6 percent of it,  but let&rsquo;s pit the nurse (or reporter, or software developer, or corporate recruiter, or technical writer) paying off their student loans against the person working a job that didn&rsquo;t require college.</p>
<p>And I&rsquo;m also thinking of the contrarian class &ndash; people who probably have some sort of left political commitment but respond poorly to reflexive rejection of an idea because the wrong person coopted it, and who end up contributing to a feedback loop: They become impatient with the echo chamber, they resent the lazy dunks and thoughtless inconsistencies of politics built around cultural antagonisms, and they get lumped, in turn, with &ldquo;the dark side,&rdquo; tainting anything <em>they&rsquo;ve</em> ever put forth regardless of its worthiness.</p>
<p>Anyhow, my point, I suppose, builds off this one:</p>
<blockquote>
<p>The strategy of selectively borrowing left-wing ideas in order to bolster a program of nationalism, racism, and gender conformity is not new. As Meyerson and Mavuram rightly observe, this is a familiar tactic of fascism, which typically emerges in a time where establishment politics are in crisis and the public is open to multiple solutions.</p>
</blockquote>
<p>I appreciate an article that can acknowledge that selective borrowing, and remind readers that Carlson and other fake populists like him are identifying &ldquo;what works&rdquo; about left political ideas. That doesn&rsquo;t mean we should spend our time understanding how we could rehabilitate Tucker Carlson: He does not want to be rehabilitated. He is a cynic whose commitments are not mine. But we should spend <em>some</em> time understanding what in there both resonates with our own politics and speaks to people who are suffering.</p>
<h2 id="affiliate-links-and-ethics">Affiliate links and ethics</h2>
<p>If you truly think a product is too bulky, pointlessly prods people toward buying a thing that replaces a shared good they probably already have, is hard to use, leaks water, takes forever, and <a href="https://www.theverge.com/23659598/steambox-electric-lunchbox-battery">is only worth a score of &ldquo;5/10&rdquo;</a> even though you couldn&rsquo;t even get your own spouse to try it out, I&rsquo;d propose that you not put affiliate links in your review.</p>
<p>I think this cuts to the core of my issue with modern review sites. The only way to get the reviews is to accept that they need affiliate link revenue; but you end up in situations like this, where the product is a sustainability nightmare about which the only nice things you can say are &ldquo;doesn&rsquo;t smell,&rdquo; &ldquo;looks cute,&rdquo; and &ldquo;good if you don&rsquo;t have an outlet&rdquo; (even though you also note it is too big and heavy to actually carry anywhere there are no outlets). They still feel okay tossing up the affiliate links, even though their review nets out to &ldquo;useless; do not buy.&rdquo;</p>
<p>I&rsquo;m just picking on this review because it went by in the news stream last week. There&rsquo;s much worse.</p>
<p>But man it could also be better. There is so much electronic junk in the world &ndash; drop-shipped ripoffs, poorly thought out Kickstarters, parts-bin garbage. There should be less of it. It should not be okay to make something out of plastic and toxic battery components <a href="https://www.macrumors.com/2023/04/26/amazon-discontinuing-halo-wristband/">then render it useless in six months</a>.</p>
<p>It&rsquo;s fine for the Verge to do its journalistic duty by fairly reviewing a bad product and saying it&rsquo;s bad. It&rsquo;s correct for the Verge to disclose the existence of affiliate links to better educate people on how they&rsquo;re incentivized.  It would be awesome if the Verge, and sites like it, would go one step further and say &ldquo;we&rsquo;re not going to help you buy this thing&rdquo; when they plainly don&rsquo;t think the thing is worth buying, and when that thing is going to be turning up in a landfill.</p>
<p>Okay.  That&rsquo;s it for today. This afternoon is spoken for.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Daily Notes for 2023-04-12</title>
      <link>https://mike.puddingtime.org/posts/2023-04-12-daily-notes/</link>
      <pubDate>Wed, 12 Apr 2023 16:01:09 -0700</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-04-12-daily-notes/</guid>
      <description>More ChatGPT and org, using the org agenda, Yellowjackets again, Doom keybindings</description>
      <content:encoded><![CDATA[<h2 id="chatgpt-and-org-configuration">ChatGPT and org configuration</h2>
<p>I tried out <a href="https://github.com/alphapapa/org-super-agenda">org-superagenda</a> a while back. It improves on the vanilla org agenda by creating customizable sections, which help it scan a little better. I bounced off of it because while I wanted the quality of life improvements it offered, I was struggling a little with the syntax, and was caught up in that brainspace you can get into where you just want the thing to work and it&rsquo;s throwing off your sense of time and perception of the required investment to make it work.</p>
<p>This morning I was looking at my agenda and hating it because it was in a &ldquo;mostly correct except where it is glaringly incorrect&rdquo; state, so I figured it&rsquo;d be a good practical task to throw at ChatGPT:</p>
<p><code>Describe an orgmode super agenda configuration that shows habits, important items, overdue items, and items due in the near future</code></p>
<p>I got a copy-pastable example that met the requirements.</p>
<p><code>Could you add items due today to that list</code></p>
<p>Yep. That worked.</p>
<p><code>could you move the today list to second place and add a list at the bottom of unscheduled todo items</code></p>
<p>That response worked well, too. It does a decent job of explaining what each piece of the solution does.</p>
<h2 id="using-the-org-agenda">Using the org agenda</h2>
<p>Figuring out the org agenda has been key to how I use the tool.</p>
<p>With a good agenda setup I can feel pretty on top of things. When it&rsquo;s broken I know there are things out there in my file collection that I&rsquo;m not going to see. As I&rsquo;ve leaned into org capture, that&rsquo;s become even more true, because capture buffers keep you out of the file you&rsquo;re adding something to: You don&rsquo;t see the other things in there because you don&rsquo;t go past them to get to where you&rsquo;re adding new content.</p>
<p>Besides surfacing stuff, the agenda is also the nerve center. You can do basic scheduling and status changes from it, and maybe even more importantly for a sense of organizational calm, you can refile from it. So rather than visiting each file to find stuff and move it around, you can see it all from the agenda overview and refile it from there.</p>
<p>With a restored agenda, I made the connection between my literate Emacs config and all the other stuff flying around in my org mode ecosystem: Links I gathered about configuration tweaks or things I&rsquo;d like to try can more easily go into a literate config file, so I made an &ldquo;Ideas&rdquo; heading at the bottom of the file and started refiling my the Emacs-related things in my agenda&rsquo;s inbox into my <code>config.org</code> file.</p>
<p>People love hooking into org, too, so even things that started life without org mode in mind can pick up org affinities. The pinboard mode I adopted, for instance, doesn&rsquo;t natively use org&rsquo;s link storing function when copying a link, but someone wrote a function to do that.  Now I can retrieve a link and add it to a post without taking my hands off the keyboard or switching contexts.</p>
<h3 id="which-reminds-me-dot-dot-dot">Which reminds  me &hellip;</h3>
<p>I discovered <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Window-Convenience.html">winner-mode</a> today.</p>
<p>It&rsquo;s annoying when an Emacs mode splits the window into frames, then leaves two frames behind when I quit it. <code>winner-mode</code> &ldquo;records the changes in the window configuration (i.e., how the frames are partitioned into windows), so that you can undo them.&rdquo; It&rsquo;s useful to me because I want to use <code>pinboard-mode</code> as a link retrieval tool for blogging. Once I&rsquo;ve grabbed the link, I just want to tap <code>q</code> and get back to my blog buffer, not find myself with a split window. <code>winner-mode</code> closes the pinboard buffer, then removes the frame, and I&rsquo;m back where I left off, able to add my link and keep typing.</p>
<h2 id="custom-doom-keybindings">Custom Doom keybindings</h2>
<p>I&rsquo;ve been digging Doom&rsquo;s modal interface, and waiting around for a reason to extend it. Yesterday&rsquo;s addition of <code>pinboard.el</code> finally gave me an excuse, since Doom was killing its keybindings out of the box.</p>
<p>The <code>p</code> prefix in Doom&rsquo;s menu system is already occupied by <code>projectile</code>, so I used <code>P</code>:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nv">map!</span> <span class="nb">:leader</span>
</span></span><span class="line"><span class="cl">      <span class="p">(</span><span class="nb">:prefix-map</span> <span class="p">(</span><span class="s">&#34;P&#34;</span> <span class="o">.</span> <span class="s">&#34;Pinboard&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="nb">:desc</span> <span class="s">&#34;open Pinboard&#34;</span> <span class="s">&#34;p&#34;</span> <span class="nf">#&#39;</span><span class="nv">pinboard</span>
</span></span><span class="line"><span class="cl">        <span class="nb">:desc</span> <span class="s">&#34;open current link&#34;</span> <span class="s">&#34;o&#34;</span> <span class="nf">#&#39;</span><span class="nv">pinboard-open</span>
</span></span><span class="line"><span class="cl">        <span class="nb">:desc</span> <span class="s">&#34;copy org link&#34;</span> <span class="s">&#34;l&#34;</span> <span class="nf">#&#39;</span><span class="nv">org-store-link</span>
</span></span><span class="line"><span class="cl">        <span class="nb">:desc</span> <span class="s">&#34;edit link&#34;</span> <span class="s">&#34;e&#34;</span> <span class="nf">#&#39;</span><span class="nv">pinboard-edit</span>
</span></span><span class="line"><span class="cl">        <span class="nb">:desc</span> <span class="s">&#34;copy URL&#34;</span> <span class="s">&#34;c&#34;</span> <span class="nf">#&#39;</span><span class="nv">pinboard-kill-url</span>
</span></span><span class="line"><span class="cl">        <span class="p">)))</span></span></span></code></pre></div>
<p>So <code>spc Pp</code> will open the pinboard buffer (or switch to it), <code>spc Po</code> will open a given link, <code>spc Pl</code> will store an org link (for retrieval via <code>spc mll</code>), etc. etc.</p>
<p>One thing I&rsquo;m struggling with here is a vagary of Doom as an environment. The logical place for all of that is in the <code>bindings.el</code> file, but the bindings don&rsquo;t &ldquo;take&rdquo; when I put them there.  They do when I put them in <code>config.el</code>. The docs weren&rsquo;t super helpful in debugging that, and the things that look syntactically intuitive didn&rsquo;t seem to solve the problem.</p>
<p>It&rsquo;s no big deal, and I&rsquo;d rather just have all of that stuff travel together with the mode it addresses, anyhow, but it&rsquo;s a thing I Do Not Understand About the Environment except at a very vague &ldquo;well, there&rsquo;s a lot of lazy loading going on to keep things fast&rdquo; level, and it&rsquo;s going to bother me.</p>
<p>I should just add an <code>INSOMNIA</code> state to my TODO lists and save it for the next &ldquo;welp, it&rsquo;s 3 a.m. and I might as well screw around with this problem&rdquo; session.</p>
<h2 id="yellowjackets-again">Yellowjackets again</h2>
<p>Well, we finished the first season last night.</p>
<ul>
<li><strong>Standalone season</strong> score: 8</li>
<li><strong>Prospects for the future</strong> score: 5</li>
</ul>
<p>Basically, my &ldquo;endless puzzlebox&rdquo; antennae are quivering.</p>
<p>The season all on its own was gripping and kept our interest. I felt invested in the characters and whatever they were dealing with. I love the way it walks right up to the <em><a href="https://www.imdb.com/title/tt6998518/">Mandy</a></em> line a few times. It has a dark sense of humor but it&rsquo;s not mean.</p>
<p>The 2 missing points for the standalone season score are because it had some minor pacing/bog-down stuff in the middle, and because some stuff going on just felt like gratuitous puzzlebox misdirection. It felt at times like it was written too self-consciously aware of recap culture and a certain kind of mock-obsessive over-read/over-think that comes along with that.</p>
<p>The &ldquo;prospects for the future&rdquo; score is a function of how I felt as the credits rolled on the season ender, and it honestly wasn&rsquo;t great. The episode didn&rsquo;t feel energetic, it suggested an appetite for &ldquo;surprise reversal&rdquo; that will exceed my patience over the long haul, and it reminded a bit too much of the first couple of seasons of HBO&rsquo;s <em><a href="https://www.imdb.com/title/tt8068860/">Servant</a></em>, which I abandoned with no remorse at the end of the second season.</p>
<p>I feel a little bad about my reaction, because maybe I&rsquo;m suggesting that television productions should simply abandon the only tools they have to get more seasons. In some ways, they <em>have</em> to pander to recap culture. They <em>have</em> to pander to fannish over-analysis. They <em>have</em> to end each season with a hook and a sense of incompleteness. They <em>have</em> to live within a fickle system run by people addicted to the analytics streaming affords, who will happily kill a property and move on to the next with no sense of investment.</p>
<p>But, you know, don&rsquo;t point out a problem without pointing out a solution:</p>
<p><em>For All Mankind</em> (Al prefers to think of it as <em>Space is Trying to Murder You Again This Week</em>) does a nice job with this conundrum: Each season has an arc and a sense of conclusion. There&rsquo;s payoff. Then it does an end-credits thing where it flash-forwards to the next season&rsquo;s era and offers you a look. It doesn&rsquo;t appeal to your thwarted expectations of closure, it appeals to your curiosity.</p>
<p>And to make note of a counterpoint, <em>Succession</em> isn&rsquo;t above leaving things on a hanging note of tension, but I&rsquo;ve stuck with it. It&rsquo;s not terrible to leave things unresolved, or end a season with a directional cue in the form of an unfinished arc. Maybe the thing I&rsquo;m reacting to with the puzzlebox stuff is the garish palette those shows paint with, swinging for the meme fences.</p>
<p>Anyhow, we have a few episodes of <em>Yellowjackets</em> season 2 cued up. The prospect of watching them, having skimmed a few episode descriptions in Plex, is not sparking a &ldquo;full-body yes.&rdquo; There&rsquo;s just so much other stuff out there that I&rsquo;m okay with the thought of letting it have its run then deciding whether it&rsquo;s worth it to watch through the whole thing.</p>
]]></content:encoded>
    </item>
    <item>
      <title>First stab at literate config with Doom Emacs</title>
      <link>https://mike.puddingtime.org/posts/2023-04-05-first-stab-at-literate-config/</link>
      <pubDate>Wed, 05 Apr 2023 08:53:21 -0700</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-04-05-first-stab-at-literate-config/</guid>
      <description>&lt;p&gt;My historic pattern for descending into Emacs hell has always started with the kitchen-sink init, and the path to recovery has always involved a patient refactoring into multiple files: Some kind of &amp;ldquo;the basics,&amp;rdquo; something just for org, something for odd little quality of life things, and a quarantine file where new stuff can enjoy a probation period where I can bisect it first when something goes wrong. If I add a big chunk of functionality from a new mode, that might get its own file, too.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>My historic pattern for descending into Emacs hell has always started with the kitchen-sink init, and the path to recovery has always involved a patient refactoring into multiple files: Some kind of &ldquo;the basics,&rdquo; something just for org, something for odd little quality of life things, and a quarantine file where new stuff can enjoy a probation period where I can bisect it first when something goes wrong. If I add a big chunk of functionality from a new mode, that might get its own file, too.</p>
<p>That has always helped me feel a little in control, at least.</p>
<p>I noticed Doom Emacs has a <code>literate</code> module in its <code>init.el</code>, so I did some reading. The very high level summary is that Doom lets you use <a href="https://en.wikipedia.org/wiki/Literate_programming">literate programming</a> principles via org-mode to build your <code>config.el</code> file from an org file:</p>
<ul>
<li>You enclose your actual configuration code in src blocks:</li>
</ul>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="c1">#+begin_src emacs-lisp</span>
</span></span><span class="line"><span class="cl"><span class="p">(</span><span class="n">setq</span> <span class="n">doom</span><span class="o">-</span><span class="n">font</span> <span class="p">(</span><span class="n">font</span><span class="o">-</span><span class="n">spec</span> <span class="p">:</span><span class="n">family</span> <span class="s2">&#34;Fira Code Retina&#34;</span> <span class="p">:</span><span class="n">size</span> <span class="mi">14</span> <span class="p">)</span>
</span></span><span class="line"><span class="cl">      <span class="n">doom</span><span class="o">-</span><span class="n">variable</span><span class="o">-</span><span class="n">pitch</span><span class="o">-</span><span class="n">font</span> <span class="p">(</span><span class="n">font</span><span class="o">-</span><span class="n">spec</span> <span class="p">:</span><span class="n">family</span> <span class="s2">&#34;Fira Sans&#34;</span> <span class="p">:</span><span class="n">size</span> <span class="mi">13</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="c1">#+end_src</span></span></span></code></pre></div>
<p>&hellip; and those blocks are &ldquo;tangled&rdquo; into a <code>config.el</code> file.</p>
<p>You get to use all of org-mode&rsquo;s affordances for document structure, so you can add headings, and your comments can just be prose:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="o">**</span> <span class="n">Base</span> <span class="n">Appearance</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">***</span> <span class="n">Line</span> <span class="n">spacing</span> 
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">#+begin_src emacs-lisp</span>
</span></span><span class="line"><span class="cl"><span class="p">(</span><span class="n">setq</span><span class="o">-</span><span class="n">default</span> <span class="n">line</span><span class="o">-</span><span class="n">spacing</span> <span class="mf">0.5</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1">#+end_src</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">***</span> <span class="ne">Font</span> <span class="n">Settings</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">#+begin_src emacs-lisp</span>
</span></span><span class="line"><span class="cl"><span class="p">(</span><span class="n">setq</span> <span class="n">doom</span><span class="o">-</span><span class="n">font</span> <span class="p">(</span><span class="n">font</span><span class="o">-</span><span class="n">spec</span> <span class="p">:</span><span class="n">family</span> <span class="s2">&#34;Fira Code Retina&#34;</span> <span class="p">:</span><span class="n">size</span> <span class="mi">14</span> <span class="p">)</span>
</span></span><span class="line"><span class="cl">      <span class="n">doom</span><span class="o">-</span><span class="n">variable</span><span class="o">-</span><span class="n">pitch</span><span class="o">-</span><span class="n">font</span> <span class="p">(</span><span class="n">font</span><span class="o">-</span><span class="n">spec</span> <span class="p">:</span><span class="n">family</span> <span class="s2">&#34;Fira Sans&#34;</span> <span class="p">:</span><span class="n">size</span> <span class="mi">13</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="c1">#+end_src</span></span></span></code></pre></div>
<p>So this morning I moved my still-pretty-simple <code>config.el</code> into <code>config.org</code> to see what I thought.</p>
<p>It&rsquo;s pretty cool!</p>
<p>The traditional ugliness of Emacs configs, for me, has always been the slow drift out of organization. Maybe for a while all the UI stuff, personalization stuff, appearance stuff is traveling together, but something makes its way in at the bottom of the file, then something else, and you&rsquo;re left with a bunch of things that aren&rsquo;t near their logical neighbors. There are the things you comment out that just become a big chunk of &hellip; something &hellip; it&rsquo;s hard to read because they aren&rsquo;t syntax highlighted anymore. There&rsquo;s verbose documentation that makes it hard to scan. etc.</p>
<p>Literate config in Emacs allows you to bring semantically meaningful structure to the configuration file: Broad categories of options can go under headings, commentary is written as prose, and you can use all of org mode&rsquo;s structure editing tools to quickly move chunks of configuration around into a more readable, logical order.</p>
<p>Doom&rsquo;s default <code>config.el</code> comes with a ton of comments. I&rsquo;m glad they&rsquo;re there when I need them, I hate having to scroll through and past them. Moving everything into <code>config.org</code> let me just move the comments into a <code>Docs</code> heading for each section, so they stay folded away unless I need them.</p>
<p>I&rsquo;ve got a few chunks of config that need some work. I can research how to use a given module, toss in reference links and sample snippets, and only allow certain code blocks to be compiled into my final <code>config.el</code>.</p>
<p>And I can also evaluate a src block by hitting <code>enter</code> on the last line of the block, so if you&rsquo;re in an iterative mode, trying things out and testing them, it&rsquo;s a few keystrokes less to make sure something evaluates cleanly, returns the value I was hoping for, etc.</p>
<p>I&rsquo;ve known about literate programming in the context of org for a while. A very long while ago, when I was first playing around with web analytics reporting, I had some simple code blocks embedded in an org file that allowed me to pull basic website numbers into my org file by getting the output of a script. That could all then be exported into a status report.  It was cool but also trivial. It didn&rsquo;t feel like a huge quality of life improvement. This feels like something that, with very little time spent getting it into basic shape, will be more maintainable over time. It&rsquo;s easy to see where to insert something in the document, so things are more likely to stay organized,  and it&rsquo;s easy to test.</p>
<p>It was very little work to set up in the Doom Emacs context:</p>
<ol>
<li>I enabled the functionality in <code>init.el</code> by uncommenting <code>literate</code></li>
<li>I copied my <code>config.el</code> file into <code>config.org</code> wholesale.</li>
<li>I put every config stanza under a level 2 heading to start.</li>
<li>Short (5 lines or fewer) comments became leading prose blocks.</li>
<li>Long comments went into level 3 <code>Docs</code> subheads.</li>
<li>I collapsed my view to headings only and  moved everything related to each other into proximity of each other with org&rsquo;s section up/down keys.</li>
<li>I added top-level headings for basic config, my more extensive org mode stuff, and utility functions.</li>
</ol>
<p>I&rsquo;m still building up my Doom config, so it didn&rsquo;t take long. Maybe 15 minutes to get to something much more easy to scan:</p>
<p><img src="/img/org-config.jpg" alt="Screenshot of an org-based config file&rsquo;s heading hierarchy"></p>
<p>Sitting here thinking about it, I guess it reminds me a little of the first time I sat down and wrote a real Puppet manifest for a real purpose and not a &ldquo;how does this thing work?&rdquo; purpose. It felt like clarity was emerging from the writing process.</p>
<p>Seems like a keeper.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Daily notes for 2023-03-20</title>
      <link>https://mike.puddingtime.org/posts/2023-03-20-daily-notes-for-2023-03-20/</link>
      <pubDate>Mon, 20 Mar 2023 09:33:02 -0700</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-03-20-daily-notes-for-2023-03-20/</guid>
      <description>Doom Emacs, Mackup for config backups, Rocky IV, Jedi: Fallen Order.</description>
      <content:encoded><![CDATA[<p>Well, we got busy and it was hard to keep up daily posts last week. So back at it this week.</p>
<h3 id="doom-emacs">Doom Emacs</h3>
<p>I made it a point to give myself a bunch of fussing around time yesterday, and decided to spend it on installing <a href="https://github.com/doomemacs/doomemacs">Doom Emacs</a>. In its own words:</p>
<blockquote>
<p>Doom is a configuration framework for GNU Emacs tailored for Emacs bankruptcy veterans who want less framework in their frameworks, a modicum of stability (and reproducibility) from their package manager, and the performance of a hand rolled config (or better). It can be a foundation for your own config or a resource for Emacs enthusiasts to learn more about our favorite operating system.</p>
</blockquote>
<p>There&rsquo;s a small omission: It also starts from the assumption you want to use <a href="https://github.com/emacs-evil/evil">Evil mode</a>.</p>
<p>So, the highlights?</p>
<ul>
<li>You get a splash screen with the option to restart your last session, open your org agenda, go to your config files.</li>
<li>You get a modal interface with handy menus you can open up by tapping the space bar.</li>
<li>You get a more terse config up front by uncommenting functionality in an init file and letting Doom handle a lot of presets.</li>
<li>You have to take a few more steps when you make a change because you have to run an external command to compile your config.</li>
<li>You get a little more verbosity in parts of your config because you have to frame any custom changes as post-instantiation variables for a given module.</li>
</ul>
<p>My subjective take thus far:</p>
<ul>
<li>Initially hated it because of course I did: I&rsquo;ve got Stockholm syndrome around my multi-file Emacs config, and Doom even cuts you off from using Emacs&rsquo; native Customize.</li>
<li>Went to bed thinking &ldquo;if this feels god awful tomorrow morning, when it is time to get things done, I am going to get rid of it ASAP.&rdquo;</li>
<li>Woke up feeling curious and a little eager to try it out.</li>
<li>Currently in the painful &ldquo;develop muscle memory&rdquo; phase for some basic operations, still stumbling with modal editing, but not having a pinkie poised over the control key is nice.</li>
<li>I kind of like the whole <code>doom sync</code> workflow when I make a change. A lot of weird Emacs things-that-go-wrong seem to come down to package weirdness and compile errors, and Doom does a lot to clean that stuff up.</li>
<li>A little more empathy for the ortholinear and Planck people when the space-bar is what initiates actions and there&rsquo;s less emphasis on the control key.</li>
<li>I like the preset configs for features I wouldn&rsquo;t have bothered with otherwise. I&rsquo;ve come to appreciate minimaps, and wouldn&rsquo;t have bothered with one if it weren&rsquo;t something I could simply turn on and expect to work without a lot of fiddling.</li>
<li>The theme I settled on (&ldquo;Nord&rdquo;) is coherent and well thought out, and it covers all the UI I&rsquo;ve encountered so far. One challenge with Emacs themes is the challenge with any theme, I guess, which is that you can&rsquo;t always know what&rsquo;s out there with its own notions about a good palette. As a result, you sometimes get disappearing UI elements as the foreground of something coincidentally matches the theme&rsquo;s background, etc.</li>
</ul>
<p>You don&rsquo;t have to do the whole Evil thing, either: It can be toggled off and you still get a lot of Doom affordances, but with more complex keystrokes to invoke them. I&rsquo;m keeping it on because I have time to mess with it, and because my foundational Unix user myth re: my editor religion is a matter of freak happenstance I&rsquo;ve never really reconciled myself to.</p>
<p>No verdict yet, really, besides &ldquo;gonna keep using it because it has some very sane defaults that make Emacs feel more cohesive than my hacked-together &ldquo;<code>init.el</code> of Theseus&rdquo; that started its life on an Amiga 500 in 1996.</p>
<h3 id="mackup">Mackup</h3>
<p><a href="https://github.com/lra/mackup">Mackup</a> is just this backup config thing. On a Mac you install it from Homebrew, run it, and it backs up configs for over 550 applications: Everything from Adium to zsh, with ssh, Emacs, tmux, Sublime, git, rubocop and hundreds more in between.</p>
<p>Basic features:</p>
<ul>
<li>A variety of cloud stores: Dropbox, iCloud, Google Drive, and your own filesystem.</li>
<li>Exclude lists, for the things you don&rsquo;t want backed up/syncing across machines.</li>
<li>An Include list, to narrow what it touches to explicit apps.</li>
<li>Custom files, so you can tell it to, e.g. backup your <code>~/bin</code> or something with an odd location for its config.</li>
</ul>
<p>It has a dry-run switch so you can review what it would do, and a &ldquo;no, this is awful, put it all back&rdquo; argument.</p>
<p>There are some bugs. It did something weird to my iTerm config after I forced it to, reasoning that the only reason I use iTerm is because some YouTuber told me to and so didn&rsquo;t care if I learned a Mackup limitation the hard way. It also believes that the Doom Emacs config is somewhere it is not, so I wrote a custom config for that in two minutes:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">[application]
</span></span><span class="line"><span class="cl">name = My Doom Emacs
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[configuration_files]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[xdg_configuration_files]
</span></span><span class="line"><span class="cl">doom</span></span></code></pre></div>
<p>Verdict so far: It&rsquo;s fine and I&rsquo;m going to keep using it. I recently started putting more config stuff in Git and was beginning to think about how to make something similar. Glad I don&rsquo;t have to.</p>
<h3 id="rocky-iv">Rocky IV</h3>
<p>We finished up our run of the OG Rocky movies I was willing to watch with <em>Rocky IV</em> last night. The one with the Russian. Al was in her phone after the first montage/music video (of four? I lost count). I knew it was going to be awful, but I haven&rsquo;t seen it since my dad took me and Cousin Scotty to see it in the theater in 1985 and a mild spirit of completionism had descended on me.</p>
<p>It was sort of interesting to see the music video editing sensibility in the direction. Like, you could spot music video tropes in the angles and cuts. It served to make Drago, the Russian, weirdly sympathetic because some of it is bewildering, or at least seems designed to provoke feelings of bewilderment and maybe a little nausea. I think the tempo of editing is generally faster these days, but perhaps less jumpy and discontiguous.</p>
<p>Anyhow, I found myself wondering when they were going to show Drago being injected with steroids with a brief closeup of a dripping needle, then wondered how, almost 40 years later, I remembered that passing detail, then learned it was because they show the needle four or five times in case you were looking away and didn&rsquo;t get that the Russian was cheating.</p>
<p>Also, wow, this weird conflation of Soviet and Nazi ideologies where the Russians start bragging that Drago is of superior genetic stock.</p>
<p>And the lyrics in one of the music video tracks about how it feels like &ldquo;freedom is on the ropes.&rdquo;</p>
<h3 id="finished-jedi-fallen-order">Finished Jedi: Fallen Order</h3>
<p>I wrapped up <em>Star Wars Jedi: Fallen Order</em> over the weekend.
:
I get the impression it is very much A Kind of Game with a lot of the conventions people not only tolerate but even look forward in that kind of thing.</p>
<p>I found some of it frustrating until I dug into the configuration menu and found I could turn on some accessibility features that made a few recurring tasks (e.g. grabbing while jumping) less fiddly, and that allowed me to spend more time exploring and letting the story unfold than repeatedly falling to my death or tumbling to the bottom of some puzzle.</p>
<p>I learned to live with Jedi Wall Running, but never warmed up to all the moments where you have to slide down a slick mud or ice path and time jumps/grabs/wall-runs/bounces. That all felt less like Jedi Bad-Assery and more like someone decided to reskin a snowboarding game.</p>
<p>I was also a little over all the planet-hopping. You have to revisit things several times. I get that part of the way you make the power fantasy aspects of these games feel more acute is by presenting an impossible obstacle then letting the character skill up and overcome it. But that <em>could</em> take the form of presenting an impossible <em>kind</em> of obstacle and letting the player skill up and overcome one <em>just like it</em> somewhere else?</p>
<p>As a <em>Star Wars</em> property, I really enjoyed it. It&rsquo;s a lightweight story, but the whole time period between the fall of the Republic and SW:ANH has good story-telling potential, and I liked what they did with it in this game.</p>
<p>The upcoming sequel won&rsquo;t be on PS4, so &hellip; so much for all my gloating about being a trailing-edge casual who doesn&rsquo;t need the latest.</p>
<p>Anyhow, I think my next game is going to be <em>Ghost of Tsushima</em>. I went into <em>Fallen Order</em> thinking it&rsquo;d be a good way to get a little more grounded in modern Big Games, and <em>Ghost</em> is what I had in mind specifically.</p>
<p>Okay. We&rsquo;re at time. This was more of a tool for procrastination today than it should have been. I want to put in two hours on some overdue work.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
