<?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>Lmno on hi, it&#39;s mike</title>
    <link>/tags/lmno/</link>
    <description>Recent content in Lmno on hi, it&#39;s mike</description>
    <generator>Hugo -- 0.146.5</generator>
    <language>en-us</language>
    <copyright>Copyright © 2025, mike</copyright>
    <lastBuildDate>Mon, 14 Jul 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="/tags/lmno/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>What is practice</title>
      <link>/posts/2025-07-14-what-is-practice/</link>
      <pubDate>Mon, 14 Jul 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-07-14-what-is-practice/</guid>
      <description>&lt;p&gt;Al and I went to a dome show at OMSI called &amp;ldquo;Trust the Universe: The Philosophy of Alan Watts.&amp;rdquo; Up front, because reviews are thin on the ground, I would recommend against it: It&amp;rsquo;s only 45 minutes long, feels pretty disjointed, and the psychedelic visuals are sometimes a little campy. When the lotus position guy sort of gets sucked up into the mandala having dissolved his own ego I was annoyed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About this project</title>
      <link>/posts/2025-07-13-about-this-project/</link>
      <pubDate>Sun, 13 Jul 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-07-13-about-this-project/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m adding a section to my Claude Code-driven project READMEs (below).&lt;/p&gt;
&lt;p&gt;I came across someone&amp;rsquo;s attempt to create an &amp;ldquo;AI Free&amp;rdquo; badge people could adopt for their projects, and decided that while I appreciate the sentiment, it is not actually helpful to anyone besides people whose position stops at &amp;ldquo;I don&amp;rsquo;t want to use code produced by an LLM.&amp;rdquo; That&amp;rsquo;s a fine position I take no philosophical issue with, but it doesn&amp;rsquo;t help people who come across my projects, which are plainly excluded from using that badge, to understand what it means to use them or interact with the code base if their position is not reflexively anti-AI.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OmniFocus through a new lens</title>
      <link>/posts/2025-07-11-omnifocus-through-a-new-lens/</link>
      <pubDate>Fri, 11 Jul 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-07-11-omnifocus-through-a-new-lens/</guid>
      <description>&lt;p&gt;I got a notification that the OmniFocus subscription I forgot all about was about to expire, so naturally I had to go see what I made of that. It was sort of interesting reapproaching OF through the lens of having spent a bunch of time trying different task management tools before deciding to make my own that did everything I wanted.&lt;/p&gt;
&lt;p&gt;My past reaction to OmniFocus has traditionally been &amp;ldquo;no, get it away from me.&amp;rdquo; Some of that reaction is to the tool itself and some of it is cultural: I remember OmniFocus when it was a bunch of AppleScript meant to make OmniOutliner do unnatural things, and I remember the culture it came out of. And some of that reaction is from thinking it is just too much, but that &amp;ldquo;productivity wang overkill&amp;rdquo; is pretty much its most loyal niche.&lt;/p&gt;</description>
    </item>
    <item>
      <title>denote-tasks</title>
      <link>/posts/2025-07-10-denote-tasks/</link>
      <pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-07-10-denote-tasks/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Denote Tasks&#34; loading=&#34;lazy&#34; src=&#34;https://live.staticflickr.com/65535/54647278914_80ca1a82ff_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/pdxmph/denote-tasks&#34;&gt;denote-tasks&lt;/a&gt; is pretty much &amp;ldquo;what I hoped to get with TaskWarrior but didn&amp;rsquo;t.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Rather than using sqlite it uses Markdown files named using Denote conventions, with some extra metadata in the YAML frontmatter for priority, due date, and project associations.&lt;/p&gt;
&lt;p&gt;I chose to use the Denote naming convention because it gives me a reliable index for making associations between normal tasks and projects and can be the foundation for subtasks at some point. That also means you can use it in the context of a normal Denote notes corpus and take advantage of Denote stuff like dblocks if you like.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trying to figure out how to live with LLMs at work</title>
      <link>/posts/2025-07-03-trying-to-figure-out-how-to-live-with-llms-at-work/</link>
      <pubDate>Thu, 03 Jul 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-07-03-trying-to-figure-out-how-to-live-with-llms-at-work/</guid>
      <description>&lt;p&gt;Today I was writing an interview summary in Greenhouse, the recruiting tool, when I noticed one of those little &amp;ldquo;pixie dust&amp;rdquo; icons I have come to understand means &amp;ldquo;AI here!&amp;rdquo; It made me curious, so I carefully saved my work elsewhere then clicked the button.&lt;/p&gt;
&lt;p&gt;Because I sit on my company&amp;rsquo;s AI governance committee, I have spent a lot of time over the past 18 months or so wondering what that button does in its many manifestations in all the apps where it appears. Sometimes it suggests some stuff you might want the LLM to do for you, like help plan a project, and other times it just does some sort of rewrite based on &amp;hellip; ideas? &amp;hellip; about &amp;ldquo;helping&amp;rdquo; you with your writing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I think I&#39;m finally over the savage wound that was GNOME 2.</title>
      <link>/posts/2025-07-02-i-think-im-finally-over-the-savage-wound-that-was-gnome-2/</link>
      <pubDate>Wed, 02 Jul 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-07-02-i-think-im-finally-over-the-savage-wound-that-was-gnome-2/</guid>
      <description>&lt;p&gt;I finally remembered after a lot of &amp;ldquo;it must be in here somewhere&amp;rdquo; through each tiny little submenu of GNOME Tweaks that the &amp;ldquo;swap fn and ctrl&amp;rdquo; option is actually in Framework&amp;rsquo;s BIOS settings, not somewhere near &amp;ldquo;swap meta and super&amp;rdquo; in GNOME Tweaks.&lt;/p&gt;
&lt;p&gt;I got so used to GNOME&amp;rsquo;s overview being under my thumb with only x percent of thumb curl instead of the pre-tweak y percent that the Framework 12 felt actively hostile. Now it matches my other Linux stuff and the slight change in the number of milimeters my thumb curls to invoke the overview/launcher feels like much less effort.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Just me, my list, and a day with no meetings</title>
      <link>/posts/2025-06-27-just-me-my-list-and-a-day-with-no-meetings/</link>
      <pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-27-just-me-my-list-and-a-day-with-no-meetings/</guid>
      <description>&lt;p&gt;Today was the first day in a little while that I had a true &amp;ldquo;heads down&amp;rdquo; day to truly dig in on the backlog I&amp;rsquo;ve been storing in Taskwarrior: No scheduled meetings, a painful awareness I&amp;rsquo;m behind on a few things, and a vague unease over the fact that unstructured time is my biggest enemy.&lt;/p&gt;
&lt;p&gt;It was off to a good start, though, when I just made sure I was in the right context in TW and got ready to dig in: &lt;code&gt;task context:work&lt;/code&gt; filtered out the non-work stuff, and all my &amp;ldquo;today&amp;rdquo; stuff was red, with tasks from my current focus project in yellow. Very easy to be clear on what I&amp;rsquo;d committed to or what the best things to pull forward would be if I exhausted the day&amp;rsquo;s list, and it helped me spot things that I knew I&amp;rsquo;d need to rethink as I worked through the focus project and future tasks were affected by current work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Well, I remember kind of what I was thinking</title>
      <link>/posts/2025-06-27-well-i-remember-kind-of-what-i-was-thinking/</link>
      <pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-27-well-i-remember-kind-of-what-i-was-thinking/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;tinyPod&#34; loading=&#34;lazy&#34; src=&#34;https://live.staticflickr.com/65535/54618930208_1787c2eeae_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I forgot I even ordered a &lt;a href=&#34;https://thetinypod.com&#34;&gt;tinyPod&lt;/a&gt; until it showed up at my door Wednesday. I ordered it a very long time ago. (Checked the mail after posting this: &lt;em&gt;10 months ago&lt;/em&gt;!)&lt;/p&gt;
&lt;p&gt;It, uh, it turns your Apple Watch into an Apple Watch encased in plastic with a scroll wheel.&lt;/p&gt;
&lt;p&gt;I think the logic of this purchase was:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I don&amp;rsquo;t really like my Apple Watch as a watch anymore. I am wearing my field watch these days.&lt;/li&gt;
&lt;li&gt;It seems like a neat idea to have a little iPod-like thing with cellular connectivity.&lt;/li&gt;
&lt;li&gt;I like the idea of having access to things like calendar, weather, directions, etc. without having my phone along.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One could say, &amp;ldquo;if you&amp;rsquo;re getting all that utility out of the watch anyhow, one easy way to carry it would be on your wrist.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>More on managing Taskwarrior (and integrating with mutt and notes-tui)</title>
      <link>/posts/2025-06-26-more-on-managing-taskwarrior-and-integrating-with-mutt-and-notes-tui/</link>
      <pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-26-more-on-managing-taskwarrior-and-integrating-with-mutt-and-notes-tui/</guid>
      <description>&lt;p&gt;After a few days of fiddling, I almost feel like Taskwarrior is dialed in.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve got a pair of aliases that take away some of the wordiness of task entry: &lt;code&gt;twa&lt;/code&gt; and &lt;code&gt;twp&lt;/code&gt; for things that get either the work or personal tag. If I want to add metadata I can, but if I need to just dash something in, it&amp;rsquo;s fast.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve set up a &lt;code&gt;work&lt;/code&gt; context, a &lt;code&gt;personal&lt;/code&gt; context (which is just &lt;code&gt;not tagged work&lt;/code&gt;), and a &lt;code&gt;contacts&lt;/code&gt; context. So it&amp;rsquo;s easy to cut away the noise from different areas of concern.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On Monokai Pro</title>
      <link>/posts/2025-06-26-on-monokai-pro/</link>
      <pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-26-on-monokai-pro/</guid>
      <description>&lt;p&gt;I really like the Monokai Pro theme. I&amp;rsquo;m using it in Helix as I write this post. Specifically, I really like the &amp;ldquo;Ristretto&amp;rdquo; sub theme, which hits a really nice note with its browns, oranges, and cyans. (Green figures heavily in it, too, and it&amp;rsquo;s one of those things where it can be used well or used too much, so I won&amp;rsquo;t use kitty&amp;rsquo;s version of Ristretto because I&amp;rsquo;d need to go in and figure out how to swap out the green in my shell color scheme and haven&amp;rsquo;t yet.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Seeking the right kind of friction</title>
      <link>/posts/2025-06-24-seeking-the-right-kind-of-friction/</link>
      <pubDate>Tue, 24 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-24-seeking-the-right-kind-of-friction/</guid>
      <description>&lt;p&gt;I picked TaskWarrior as an entry point into CLI todo tools. There are a lot of them, and the struggle between Danny-O&amp;rsquo;Brien-style &amp;ldquo;just write it in a text file&amp;rdquo; minimalism and &amp;hellip; the other extreme &amp;hellip; is real.&lt;/p&gt;
&lt;p&gt;I picked TW because it has been around forever. I will not presume to judge its design decisions. I can tell a few strategically placed aliases would do a lot to remove the sense of crushing overhead. I also picked it because it is super scriptable, so it was easy to build a tasks backend into my contacts TUI with it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Helix and Marksman LSP server</title>
      <link>/posts/2025-06-23-helix-and-marksman-lsp-server/</link>
      <pubDate>Mon, 23 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-23-helix-and-marksman-lsp-server/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://github.com/artempyanykh/marksman&#34;&gt;Marksman&lt;/a&gt; LSP server experience with Helix is so smooth. Given a directory of Markdown files, dropping in a blank &lt;code&gt;.marksman.toml&lt;/code&gt; or running &lt;code&gt;git init .&lt;/code&gt; puts the directory on Marksman&amp;rsquo;s radar as a thing to work with. Provided Marksman is in your path, there&amp;rsquo;s no need for additional config.&lt;/p&gt;
&lt;p&gt;Drop into insert mode, start typing wikilink brackets (&lt;code&gt;[[&lt;/code&gt;) and it invokes autocomplete on every file in the directory.&lt;/p&gt;
&lt;p&gt;Placing the cursor over a wikilink, you can use &lt;code&gt;gd&lt;/code&gt; (&lt;code&gt;go to definition&lt;/code&gt;) to open that file in a new buffer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Integrating notes and contacts</title>
      <link>/posts/2025-06-20-integrating-notes-and-contacts/</link>
      <pubDate>Fri, 20 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-20-integrating-notes-and-contacts/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been plugging away at another TUI app, &lt;a href=&#34;https://github.com/pdxmph/notes-tui&#34;&gt;this time for notes&lt;/a&gt;. It&amp;rsquo;s very much in line with the thing I was trying to do with bash and fzf, but instead in Go. Right now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fast search for notes in either a configured directory or one named on the command line&lt;/li&gt;
&lt;li&gt;Tag search, either in-line (&lt;code&gt;#tag&lt;/code&gt;) or in YAML frontmatter&lt;/li&gt;
&lt;li&gt;Open to-do search&lt;/li&gt;
&lt;li&gt;Hotkey to make a daily note of a given format&lt;/li&gt;
&lt;li&gt;Alternate note template. If you see the point in YAML frontmatter, it&amp;rsquo;ll do that. If you prefer &amp;ldquo;l1 heading from the title&amp;rdquo; it&amp;rsquo;ll do that.&lt;/li&gt;
&lt;li&gt;It does a very basic sort of Markdown rendering on its own for note preview, or you can configure it to shell out to bat, glow, etc. I am using glow because it has an option to edit a file under preview.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It works really well with Helix or other LSP-aware editors, because you can add the &lt;a href=&#34;https://github.com/artempyanykh/marksman&#34;&gt;Marksman&lt;/a&gt; LSP server and have your own connected notes system with wiki-linking without having to adopt another app, like Obsidian, if you don&amp;rsquo;t want that whole ride.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Helix</title>
      <link>/posts/2025-06-19-helix/</link>
      <pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-19-helix/</guid>
      <description>&lt;p&gt;I had insomnia a few nights ago, so I started fiddling with different things, including the CLI tasks tool dstask, which is sort of TaskWarrior without the misanthropy. (I kid.)&lt;/p&gt;
&lt;p&gt;So a kind of nice thing about dstask is that with &lt;code&gt;dstask #{note number} note&lt;/code&gt; you pop open $EDITOR in a Markdown note attached to the task. dstask is aware of any Markdown checklists inside the task note and blocks completion of the task if there are open ones.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Integrating task trackers with contacts-tui</title>
      <link>/posts/2025-06-18-integrating-task-trackers-with-contacts-tui/</link>
      <pubDate>Wed, 18 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-18-integrating-task-trackers-with-contacts-tui/</guid>
      <description>&lt;p&gt;One of the best parts of my org-contacts setup was that when I moved a contact into a given state (followup, call, write, etc.) it&amp;rsquo;d become a task in my org agenda, along with all my other todos.&lt;/p&gt;
&lt;p&gt;I added integrations with TaskWarrior, dstask, and Things to contacts-tui this evening:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Put a contact in a given state, the tasks backend creates a todo in your configured tracker with that contact&amp;rsquo;s label as a tag.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contacts management in a TUI</title>
      <link>/posts/2025-06-17-contacts-management-in-a-tui/</link>
      <pubDate>Tue, 17 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-17-contacts-management-in-a-tui/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Contacts TUI screenshot&#34; loading=&#34;lazy&#34; src=&#34;https://live.staticflickr.com/65535/54595512292_cf719d7c1e_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I haven&amp;rsquo;t really liked social networking as a development. Sometimes I&amp;rsquo;d even say I mourn its existence. I used to have people with whom I shared a great email correspondence who abandoned that in favor of the Eternal Holiday Newsletter mode of Facebook, or the &amp;ldquo;oh, I tweeted about it last week if you want to look it up&amp;rdquo; of the assorted microblogging services.&lt;/p&gt;
&lt;p&gt;The kind of conversation we can have at a BBQ you invited your high school friends to is different from the one we can have over coffee. The kinds of things I&amp;rsquo;d say to you on my front porch might even be different from what I&amp;rsquo;d say at the cafe.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The One-Armed Bandit</title>
      <link>/posts/2025-06-14-the-one-armed-bandit/</link>
      <pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-14-the-one-armed-bandit/</guid>
      <description>&lt;p&gt;Well, I&amp;rsquo;ve spent a few weeks now playing around with Claude on two projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An MCP for Remember the Milk&lt;/li&gt;
&lt;li&gt;An MCP for contacts management&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I haven&amp;rsquo;t read a lot of commentary on how to code with AI, and I&amp;rsquo;ll say a little more on the kind of AI-related commentary I &lt;em&gt;have&lt;/em&gt; read in a bit. Instead, I just let myself stumble into the challenges and try to figure out my way around them. The biggest ones were:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Remember the Milk MCP</title>
      <link>/posts/2025-06-07-remember-the-milk-mcp/</link>
      <pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-07-remember-the-milk-mcp/</guid>
      <description>&lt;p&gt;I have a lot of todos and a lot of meetings. I hate playing task/calendar Tetris. Sometimes my task list gets way out in front of my calendar. I got pretty curious about &amp;ldquo;what is an MCP and how do they work?&amp;rdquo; So this morning, when I woke up early anyhow, I set about to work with Claude to make a Remember the Milk MCP using some stuff I learned from making imgup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>imgup v0.12.0 (flipping the script)</title>
      <link>/posts/2025-06-05-imgup-v0120-flipping-the-script/</link>
      <pubDate>Thu, 05 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-05-imgup-v0120-flipping-the-script/</guid>
      <description>&lt;p&gt;One of my bigger annoyances with Lightroom CC is how magestically indifferent it is to anything a normal human being using a Mac in 2025 might want to with it in the way of sharing your pictures. It is a literal void on the desktop: AppleScript? lol. Even the standard macOS share sheet? Nope. You can export out to disk, and you can share things to Adobe&amp;rsquo;s own services. If you want more extensibility or flexibility well, go use Lightroom Classic.&lt;/p&gt;</description>
    </item>
    <item>
      <title>imgupv2 0.9.0 - Bluesky, multi-image, caching</title>
      <link>/posts/2025-06-03-imgupv2-090-bluesky-multi-image-caching/</link>
      <pubDate>Tue, 03 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-03-imgupv2-090-bluesky-multi-image-caching/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Screenshot of imgupv2 ready to upload multiple images with indicators for completed alt text&#34; loading=&#34;lazy&#34; src=&#34;https://live.staticflickr.com/65535/54566811333_767aa432cf_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I pushed out &lt;a href=&#34;https://github.com/pdxmph/imgupv2&#34;&gt;imgupv2 0.9.1&lt;/a&gt;. It&amp;rsquo;s what I&amp;rsquo;d call feature complete:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;multi-image posting to Flickr, Smugmug, Bluesky, and Mastodon&lt;/li&gt;
&lt;li&gt;world&amp;rsquo;s crabbiest, most indifferent caching strategy&lt;/li&gt;
&lt;li&gt;GUI for posting straight from Apple Photos or Finder selection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I kinda like where it ended up with multi-images from the command line. They were super clunky using standard command line switches and positional arguments, and I think that&amp;rsquo;s a weird use case for the command line, but it&amp;rsquo;s a normal use case for automation, so the tool biases in favor of machines talking at each other in those instances:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Well, I&#39;m less likely to subtoot, anyhow.</title>
      <link>/posts/2025-06-02-well-im-less-likely-to-subtoot-anyhow/</link>
      <pubDate>Mon, 02 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-02-well-im-less-likely-to-subtoot-anyhow/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m currently on my second life in Mastodon. I deleted my omg.lol account after a long period of having 30-day self-destructing toots anyhow, then sort of pulled myself together and &lt;a href=&#34;https://social.lol/@mph&#34;&gt;reinstated it&lt;/a&gt;. I turned off the self-destructing part, too.&lt;/p&gt;
&lt;p&gt;But part of the reason for getting rid of almost all my social accounts was frustration over seeing things go by and rinsing/repeating the whole &amp;ldquo;someone is wrong on the internet&amp;rdquo; cycle, except I&amp;rsquo;m way too retiring to do anything other than delete the post or turn it into a homeopathically vague subtoot. &amp;ldquo;If a tree falls on Jupiter and nobody is around to hear it&amp;rdquo; levels of vague.&lt;/p&gt;</description>
    </item>
    <item>
      <title>There&#39;s an addressable market of 1</title>
      <link>/posts/2025-06-01-theres-an-addressable-market-of-1/</link>
      <pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-06-01-theres-an-addressable-market-of-1/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Screenshot of the imgupv2 GUI prepared to upload the selected file from Photos&#34; loading=&#34;lazy&#34; src=&#34;https://live.staticflickr.com/65535/54560878713_25a7191dce_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Years ago when I was first learning to write scripts, I&amp;rsquo;d come up with stuff that made my life much better and would have helped other people on my team, and I&amp;rsquo;d run into the kinds of distribution problems you&amp;rsquo;d expect: I was a Linux/Mac guy, everyone around me was a Windows person, etc. I am guessing the 20th anniversary of the first time I said &amp;ldquo;well, it runs on &lt;em&gt;my&lt;/em&gt; laptop&amp;rdquo; is right around the corner. Even people who &lt;em&gt;could&lt;/em&gt; download the OSAX I was using for an AppleScript weren&amp;rsquo;t necessarily interested in doing it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>imgup v0.13.0 (Fedi-Ready)</title>
      <link>/posts/2025-05-28-imgup-v0130-fedi-ready/</link>
      <pubDate>Wed, 28 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-28-imgup-v0130-fedi-ready/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Asphalt factory machine shack&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54550622732_10eb18d114_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Over the weekend I roughed in support for posting to gotosocial or Mastodon &lt;a href=&#34;https://github.com/pdxmph/imgup-cli&#34;&gt;imgup&lt;/a&gt;, but made a decision about UI that my old jazz band director would have called &amp;ldquo;a choice that was not as good as the other ones,&amp;rdquo; and it took trying to wire the new functionality into a Raycast script to catch how it was a problem.&lt;/p&gt;
&lt;p&gt;So this morning was &amp;ldquo;untangle that mess&amp;rdquo; and I think it&amp;rsquo;s in a way better place:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exposure therapy</title>
      <link>/posts/2025-05-26-exposure-therapy/</link>
      <pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-26-exposure-therapy/</guid>
      <description>&lt;p&gt;I should probably apologize to a few people on the Fediverse for double-follows or weird Mastodon noise, but I&amp;rsquo;m not entirely clear on what kind of noise a small experiment might have generated. If you know me and noticed a weird follow, it&amp;rsquo;s because a quick automated trawl of my timeline flagged you as low-noise, high-signal for photography-related stuff and dropped you into my Photographers list.&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;reason&lt;/em&gt; for the trawl was to get back to a practice I used to follow a long time ago where I&amp;rsquo;d wake up in the morning and load up Flickr&amp;rsquo;s &amp;ldquo;Explore&amp;rdquo; feed in Flipboard and make myself flip through it for a while. It was a little hard to do some mornings, but I stuck with it, adopting a mindset of:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Focus Guardian</title>
      <link>/posts/2025-05-26-focus-guardian/</link>
      <pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-26-focus-guardian/</guid>
      <description>&lt;p&gt;Claude has enabled a sort of exuberant play recently, as I&amp;rsquo;ve figured out what it is good for and how it can help me do stuff that I&amp;rsquo;ve thought would be interesting or fun to play with, but not practical to implement on my own. That&amp;rsquo;s been fun, but also it has felt a little weird because it has led me fully into the territory of doing things because I can, not because they&amp;rsquo;re really useful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>imgup v0.10.0 - sharing is caring (fedi support)</title>
      <link>/posts/2025-05-25-imgup-v0100-sharing-is-caring-fedi-support/</link>
      <pubDate>Sun, 25 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-25-imgup-v0100-sharing-is-caring-fedi-support/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;A test post from imgup to gotosocial&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54545850354_7d63ed0380_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I started the day working through the setup for a &lt;a href=&#34;https://gotosocial.org&#34;&gt;gotosocial&lt;/a&gt; server. It took a little fussing with the Synology, but it&amp;rsquo;s &lt;a href=&#34;https://social.puddingtime.org&#34;&gt;up and running&lt;/a&gt;. There&amp;rsquo;s a little more to it than &amp;ldquo;because I could,&amp;rdquo; but not much. I think I&amp;rsquo;ll find a few things to follow from there that are not humans with feelings and see how well it runs before moving there.&lt;/p&gt;
&lt;p&gt;But that made me start thinking about imgup and how it&amp;rsquo;d be kind of cool to be able to use it to post to Fediverse services. So &lt;a href=&#34;https://github.com/pdxmph/imgup-cli/&#34;&gt;imgup 0.10.0&lt;/a&gt; does that by adding a way to enroll it with gotosocial as an app then adding it as an option when posting to Flickr or Smugmug.&lt;/p&gt;</description>
    </item>
    <item>
      <title>lmno-blog-capture bump (adds and polishes &#39;drafts&#39;)</title>
      <link>/posts/2025-05-24-lmno-blog-capture-bump-adds-and-polishes-drafts/</link>
      <pubDate>Sat, 24 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-24-lmno-blog-capture-bump-adds-and-polishes-drafts/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;bike commuter on a foggy morning&#34; loading=&#34;lazy&#34; src=&#34;https://live.staticflickr.com/65535/54513598558_7def3a08a0_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I rolled the lmno &amp;lsquo;drafts&amp;rsquo; stuff into &lt;a href=&#34;https://github.com/pdxmph/lmno-blog-capture&#34;&gt;lmno-blog-capture&lt;/a&gt;, which is sort of like org-capture for a &lt;a href=&#34;https://lmno.lol&#34;&gt;monolithic lmno.lol blog file&lt;/a&gt;: Invoke it, get a little transient window with a pre-populated heading, do your thing, &lt;code&gt;C-c C-c&lt;/code&gt; to save/exit.&lt;/p&gt;
&lt;p&gt;With the drafts feature added, you can configure a drafts file (e.g. &lt;code&gt;drafts-lmno.md&lt;/code&gt;), position the cursor inside a draft you&amp;rsquo;re working on in your main blog file, and teleport it to your drafts file. If you&amp;rsquo;re done with a draft, you can send it back over to the top of your lmno.lol file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The FujiFilm half made me think about the XF10</title>
      <link>/posts/2025-05-23-the-fujifilm-half-made-me-think-about-the-xf10/</link>
      <pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-23-the-fujifilm-half-made-me-think-about-the-xf10/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Portland waterfront on a misty morning&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54540514424_4bfef2f15b_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;The new #fujifilm #half looks sort of fun. I checked its dimensions against the XF10, and they&amp;rsquo;re quite similar.&lt;/p&gt;
&lt;p&gt;I re-read some release reviews of the XF10, then looked it up in Lightroom. I didn&amp;rsquo;t take too many pictures with it: I&amp;rsquo;ve never really done well with cameras that don&amp;rsquo;t have a viewfinder, and I got mine during the summer, when working with an LCD on bright beaches, etc. was a challenge.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Priorities app</title>
      <link>/posts/2025-05-23-the-priorities-app/</link>
      <pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-23-the-priorities-app/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Priorities PWA&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54541134086_eb2d7a9765_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;A long while back I had a small falling out with a boss. I was a green manager and we were trying to figure out what I needed for headcount. I had no idea how to have that conversation: I just knew &amp;ldquo;more people == more work done.&amp;rdquo; After a few back-and-forths, he finally realized I wasn&amp;rsquo;t getting it, and he said, &amp;ldquo;Look, I need to know each thing the team is doing, how important you think it is, and what it takes to keep the lights on. Tell me that and we can figure out if there&amp;rsquo;s something we could be doing differently, or slow down on, or reprioritize.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Plain text is calming</title>
      <link>/posts/2025-05-21-plain-text-is-calming/</link>
      <pubDate>Wed, 21 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-21-plain-text-is-calming/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Monochrome: Two fishermen walk on a jetty under tall clouds.&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54537151905_067d9236ec_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I managed to get too many plates spinning again, and made it worse for myself by trying very hard to use Asana, because it&amp;rsquo;s what we use for a few things at work and it&amp;rsquo;s easier to send todos back and forth in 1:1 and team boards. My own personal project board isn&amp;rsquo;t great and I vacillate between a column view and list view, but the fact is Asana just makes my brain freeze. I do not like it. It doesn&amp;rsquo;t matter how I arrange the view.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hoarder</title>
      <link>/posts/2025-05-20-hoarder/</link>
      <pubDate>Tue, 20 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-20-hoarder/</guid>
      <description>&lt;p&gt;I started to write about Basic Memory this afternoon, and that gave me an idea that turned into an evening of coaching Claude into helping me do some stuff:&lt;/p&gt;
&lt;p&gt;I took my corpus of old micro.blog posts and migrated them into my notes. They&amp;rsquo;re all YAML-n-Markdown, so they could just be imported.&lt;/p&gt;
&lt;p&gt;I did the same with my mono-topic Hugo posts. Same idea.&lt;/p&gt;
&lt;p&gt;I made a script for the many, many daily posts I wrote over a few years, grateful that I stuck to a convention of organizing them with l2 headings: Each heading became a title of a new, atomized post. I did that because my daily posts could cover a lot, so now it&amp;rsquo;s all more searchable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The eglot/lsp/apheleia rabbithole</title>
      <link>/posts/2025-05-20-the-eglotlspapheleia-rabbithole/</link>
      <pubDate>Tue, 20 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-20-the-eglotlspapheleia-rabbithole/</guid>
      <description>&lt;p&gt;&amp;hellip; I went down it last night and this morning.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m back on Doom after patiently dismantling a bunch of cruft I&amp;rsquo;d added to it. I set a goal of getting my package count under 200 (including all the batteries Doom includes). Because its default stance is that you want &lt;a href=&#34;https://github.com/emacs-lsp&#34;&gt;emacs-lsp&lt;/a&gt; and not &lt;a href=&#34;https://github.com/joaotavora/eglot&#34;&gt;eglot&lt;/a&gt; I went along with that initially, and it drove me a little bonkers. I think these things assume a much more organized person than I am, and LSP began to nag pretty much constantly until I made the mistake of telling it to blocklist &lt;code&gt;~/&lt;/code&gt;, at which point it pretty much stopped working, because there&amp;rsquo;s an implicit &lt;code&gt;-r&lt;/code&gt; in there.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple &#39;drafts&#39; for lmno.lol</title>
      <link>/posts/2025-05-19-simple-drafts-for-lmnolol/</link>
      <pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-19-simple-drafts-for-lmnolol/</guid>
      <description>&lt;p&gt;lmno.lol does have a feature for hiding posts, but the last time I did blogging out of a monolithic file I struggled to remember to toggle that, so when I started working on a post that got longer and longer I ended up moving the work into a scratch buffer. That was annoying to me, so there&amp;rsquo;s this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defvar&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;mph/blog-drafts-file&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;expand-file-name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;drafts_lmno.md&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;~/journal/blog/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defvar&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;mph/blog-published-file&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;expand-file-name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;lmno.md&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;~/journal/blog/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;mph/move-heading-between-draft-and-published&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Move current Markdown L1 heading to the other blog file (drafts_lmno.md or lmno.md).
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;If in drafts_lmno.md, moves to lmno.md. If in lmno.md, moves to drafts_lmno.md.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;Always inserts at the beginning of the file.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;let*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;current-file&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;buffer-file-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;target-file&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;cond&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;string=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file-truename&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;current-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file-truename&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;mph/blog-drafts-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;mph/blog-published-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;string=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file-truename&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;current-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file-truename&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;mph/blog-published-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;mph/blog-drafts-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;user-error&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;This file is not drafts_lmno.md or lmno.md&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;;; Save and cut the heading&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;save-excursion&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;;; Find the beginning of the current L1 heading&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;beginning-of-line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;looking-at&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;^# &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;bobp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;forward-line&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;looking-at&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;^# &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;user-error&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Not on a Markdown L1 heading&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;;; Find the end of the current heading (next L1 heading or end of buffer)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;forward-line&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;looking-at&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;^# &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;eobp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;forward-line&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;;; Cut the heading and its content&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;heading-text&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;buffer-substring-no-properties&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;delete-region&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;c1&#34;&gt;;; Paste into target file at beginning&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;with-current-buffer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;find-file-noselect&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;target-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;goto-char&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;point-min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;insert&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;heading-text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;save-buffer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Moved heading to %s&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file-name-nondirectory&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;target-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Doom leader key setup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;map!&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:leader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;ss&#34;&gt;:desc&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Blog commands&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s&#34;&gt;&amp;#34;l&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:ignore&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:which-key&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;blog&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;ss&#34;&gt;:desc&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Move heading to other blog file&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s&#34;&gt;&amp;#34;l r&amp;#34;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;mph/move-heading-between-draft-and-published&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;ss&#34;&gt;:desc&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;New lmno blog entry (md)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s&#34;&gt;&amp;#34;l b&amp;#34;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;lmno-capture-post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Just, &lt;code&gt;SPC l r&lt;/code&gt; on a given l1 heading to shuttle it to either the drafts file or the main blog file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>So many brooms, so many buckets (Updated)</title>
      <link>/posts/2025-05-17-so-many-brooms-so-many-buckets-updated/</link>
      <pubDate>Sat, 17 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-17-so-many-brooms-so-many-buckets-updated/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;A yellow CAT with a big claw approaches a big blue box.&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54525470407_762922cb42_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I started the day playing around with &lt;a href=&#34;https://modelcontextprotocol.io/introduction&#34;&gt;MCP&amp;rsquo;s&lt;/a&gt; for Claude Desktop. I found &lt;a href=&#34;https://github.com/keegancsmith/emacs-mcp-server&#34;&gt;one for Emacs&lt;/a&gt; and one called &lt;a href=&#34;https://github.com/basicmachines-co/basic-memory&#34;&gt;Basic Memory&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;emacs-mcp-server sends evals to your running Emacs instance via &lt;code&gt;emacsclient.&lt;/code&gt; It&amp;rsquo;s sort of fascinating to watch in progress. Not the fastest thing on the planet, but it was a jolt the first time I turned my attention to something else and came back to realize it had created a new function and added it to my configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A cautionary Syncthing tale</title>
      <link>/posts/2025-05-15-a-cautionary-syncthing-tale/</link>
      <pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-15-a-cautionary-syncthing-tale/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Sticker: &amp;ldquo;Fresh meat for the grinder&amp;rdquo;&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54521695712_d63f238ec5_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Over on the other blog I &lt;a href=&#34;https://mike.puddingtime.org/synctrain-for-syncthing-on-ios/&#34;&gt;recently enthused about SyncTrain&lt;/a&gt;, an iOS SyncThing client. I still maintain it is very good, but wow did I end up foot-gunning with it:&lt;/p&gt;
&lt;p&gt;I set Journelly up to use a SyncTrain share on my iPhone, promising myself I&amp;rsquo;d make sure to do the occasional manual sync, never leave my Journelly file open when not editing it on one of the real computers, etc. I still managed to end up with a sync error, and SyncThing dutifully created a sync error file. The Journelly app picked up that file and started using it as the default file to write to – I&amp;rsquo;m assuming iOS filesystem arcana is involved – which I wouldn&amp;rsquo;t have noticed if I hadn&amp;rsquo;t manually peeked in the directory instead of just using an org-capture template to make Journelly entries on my Mac.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Offsite&#39;s over</title>
      <link>/posts/2025-05-15-offsites-over/</link>
      <pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-15-offsites-over/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;A table by a corner window with metal stools around it.&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54522731514_e87aff2e15_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Rainy afternoon here on the last day of the work offsite. We all went down to Pine St. Market and had ramen at the end of the day, and I said goodbye to some of the folks who came in from out of town. A few I&amp;rsquo;ll see once more for dinner tomorrow.&lt;/p&gt;
&lt;p&gt;This kind of work function is always a little draining by the time it&amp;rsquo;s over. Spending days in a small room, even with pretty good people, just takes some battery, and this one was a little melancholy because one of my teammates is moving on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>trying to get org-capture to work is nature&#39;s way of telling us to slow down</title>
      <link>/posts/2025-05-13-trying-to-get-org-capture-to-work-is-natures-way-of-telling-us-to-slow-down/</link>
      <pubDate>Tue, 13 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-13-trying-to-get-org-capture-to-work-is-natures-way-of-telling-us-to-slow-down/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;An attendant stands alone in front of a house of mirrors.&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54518426203_6e7fccbac4_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been so happy with my emacs-plus install that there was an when-not-if element to the whole thing. It came today when I tried to get org-capture to work and it … just wouldn&amp;rsquo;t. So I tried an alternate build and lost over an hour I could have spent writing to uninstalling, reinstalling, troubleshooting, rewriting a launchd agent, etc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Digging in on the photo project</title>
      <link>/posts/2025-05-12-digging-in-on-the-photo-project/</link>
      <pubDate>Mon, 12 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-12-digging-in-on-the-photo-project/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;A man walks by a brick building, partially painted light blue partially natural brick.&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54515858100_18cc789705_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I abhor feeling attachment to &lt;em&gt;things&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Years ago I was out in the garage going through some old boxes at the same time I was thinking about some people I knew who seemed very connected to what they had been, and uncertain of how to go about being who they had become. So when I reached into the box and pulled out some old object I thought, &amp;ldquo;I don&amp;rsquo;t want this thing anymore,&amp;rdquo; then I thought &amp;ldquo;oh, but it&amp;rsquo;s a reminder of …&amp;rdquo; and then I thought, &amp;ldquo;I&amp;rsquo;m in no danger of forgetting that time.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Experiments in atomic writing</title>
      <link>/posts/2025-05-12-experiments-in-atomic-writing/</link>
      <pubDate>Mon, 12 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-12-experiments-in-atomic-writing/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Three men sit around a Starbucks.&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54516189438_ec2728009f_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I am not sure how this will go and it could be this is futzing under another guise, but this evening I &lt;em&gt;did&lt;/em&gt; improve on my futz pattern a little by choosing to devote a journal entry to some thinking I&amp;rsquo;ve been doing about The News, how to consume it, how much to consume, etc. etc. IOW, instead of diddling around with a tool or a toy, I started writing about something that matters to me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eugene</title>
      <link>/posts/2025-05-11-eugene/</link>
      <pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-11-eugene/</guid>
      <description>&lt;p&gt;We took a trip to Eugene to visit Ben. Walking around this morning we came across the &lt;a href=&#34;https://smjhouse.org&#34;&gt;Shelton McMurphey Johnson House&lt;/a&gt;, and then picked up the trail up Skinner&amp;rsquo;s Butte.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Concrete steps leading up to an old Victorian mansion&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54513438300_9ff7ef8f66_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;An air conditioner, old electricity meters, and barred windows on a green building&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54513267499_f2417da57f_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;A rock climber scales a face&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54513346273_fc50bfb2b1_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;A covered parking area in green and yellow light at night&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54513438965_7fa5b541d0_b.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>flickr&#39;s alright</title>
      <link>/posts/2025-05-11-flickrs-alright/</link>
      <pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-11-flickrs-alright/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been using SmugMug for a while, and really like how well it has worked for &lt;a href=&#34;https://pix.puddingtime.org&#34;&gt;my pix subdomain&lt;/a&gt;, but it has always come with a little feeling of &amp;ldquo;what am I even doing on SmugMug to begin with?&amp;rdquo; It&amp;rsquo;s meant for people who want to sell their photography, and everything about its customer comms reminds you of that.&lt;/p&gt;
&lt;p&gt;In the process of getting imgup to broaden its horizons and work with flickr, I remembered that I actually &lt;em&gt;like&lt;/em&gt; flickr (which is owned and operated by SmugMug now). It&amp;rsquo;s just more oriented around &amp;ldquo;you want to put photos up online,&amp;rdquo; without any emphasis on being a &amp;ldquo;pro,&amp;rdquo; and without Glass&amp;rsquo;s … whatever it is about Glass&amp;rsquo;s vibe.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The futzes</title>
      <link>/posts/2025-05-11-the-futzes/</link>
      <pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-11-the-futzes/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Seattle Waterfront&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54513392574_38506308f6_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Yeesh. So, re: imgup. It is pretty much &amp;ldquo;done&amp;rdquo; to me as a tool. Meaning, it does exactly what I want it to do, plus a few things I didn&amp;rsquo;t start out with. There&amp;rsquo;s maybe one more tweak (&amp;ldquo;just give me the URL&amp;rdquo;) I can go add in five minutes when I get around to it. But today I was thinking &amp;ldquo;oh, it&amp;rsquo;d be cool if it had a history,&amp;rdquo; and &amp;ldquo;oh, it&amp;rsquo;d be cool if it could show thumbnails in kitty.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>writeroom-mode</title>
      <link>/posts/2025-05-11-writeroom-mode/</link>
      <pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-11-writeroom-mode/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;rusty tools hanging on a barn wall&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54513402166_3694b82d0c_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;For whatever reason I have an allergic reaction to the phrase &amp;ldquo;distraction-free,&amp;rdquo; but as I&amp;rsquo;ve waffled back and forth between org-mode and Markdown as the starting point for prose I&amp;rsquo;ve also thought about how my model writing app on macOS is probably &lt;a href=&#34;https://ia.net/writer&#34;&gt;iA Writer&lt;/a&gt;, because it&amp;rsquo;s just so easy on the eyes. I kinda buy the limited choice it offers, too. That might be why it edges out Ulysses.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Missing Mixel</title>
      <link>/posts/2025-05-10-missing-mixel/</link>
      <pubDate>Sat, 10 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-10-missing-mixel/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;A collage of clipart and Soviet-era imagery&#34; loading=&#34;lazy&#34; src=&#34;https://live.staticflickr.com/7146/6774603235_d9ee88a716_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Does anyone else remember Mixel? It was a collaborative collage app that arrived early in the iPad era, was amazing for a little while, then pivoted into online postcards or something, then slipped under the waves.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Line art astronauts come through a swirling portal in a wheat field&#34; loading=&#34;lazy&#34; src=&#34;https://live.staticflickr.com/7174/6810827461_e4c9ba06a0_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;You started with a blank canvas and a collection of images that sort of acted like stickers you could plop on the canvas and manipulate into a collage. The collection was socially driven, so for periods something would find its way into collective consciousness, spawning a bunch of riffs on a theme.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I don&#39;t miss lockdown &amp;#x2026;</title>
      <link>/posts/2025-05-09-i-dont-miss-lockdown-x2026/</link>
      <pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-09-i-dont-miss-lockdown-x2026/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;A woman eats alone in a plastic-enclosed outdoor eating area&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-SSQFFqX/0/NPD7vdwXBLPJgbgpBT98zkw3CVVLrKgrsjKngT7df/XL/i-SSQFFqX-XL.jpg&#34;&gt; … but I do miss that it exerted tremendous pressure to figure out whatever it took to do things I cared about, and that sustained me.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Food Cart&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-mBV2z7q/0/Kv53qhgKf4WqrQPrvdrDcbG86HRjPZkfVQwMJJF8Z/XL/i-mBV2z7q-XL.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;So for a long while there, almost every night, it was just &amp;ldquo;grab a camera and go somewhere.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;A masked man in a red hat reads a menu on the wall&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-WJb98qh/0/KkxRPKKL9FxD5rfZBN7JwjchQgsq3kXWShFW4p9Xg/XL/i-WJb98qh-XL.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I guess I&amp;rsquo;m thinking about it because when we were walking on Foster Road last night I noticed that three places that had kept their outdoor areas all the way through now have taken them down in the space of a week.&lt;/p&gt;</description>
    </item>
    <item>
      <title>imgup 0.6 (flickr!)</title>
      <link>/posts/2025-05-09-imgup-06-flickr/</link>
      <pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-09-imgup-06-flickr/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Yellow brick walls in an SF Chinatown alley at night&#34; loading=&#34;lazy&#34; src=&#34;https://farm66.staticflickr.com/65535/54509153410_4d4d6e94e3_b.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;flickr&amp;rsquo;s API is way more comprehensible than SmugMug&amp;rsquo;s, so adding flickr support went down much more quickly. Just get an API key/secret (links in the README) and step through onboard to auth your copy of imgup.&lt;/p&gt;
&lt;p&gt;Otherwise, it&amp;rsquo;s the exact same interface and UI. You just have to add a &lt;code&gt;--backend&lt;/code&gt; argument to use flickr when you run it:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;imgup -b flickr -t &amp;quot;The Title&amp;quot; -c &amp;quot;The Caption&amp;quot; -f md img_123.jpg&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>imgup-cli 0.1.0</title>
      <link>/posts/2025-05-09-imgup-cli-010/</link>
      <pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-09-imgup-cli-010/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;High on Fire&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-rxrZLQf/0/KRxchj8kFzcmvbhrL9LwhnSKH8xg2PMq4JgzfmJvZ/XL/i-rxrZLQf-XL.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been using imgup as a cli tool for a few days and it has worked pretty well. A few things bothered me about it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The OAuth situation was janky and not very portable. You had to have a .env file with very little help in the way of configuring it.&lt;/li&gt;
&lt;li&gt;Onboarding via oauth was non-existent.&lt;/li&gt;
&lt;li&gt;Configuring a target album involved fiddling around in the API or knowing exactly where to hover your mouse on the website.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I spent some time just cleaving the CLI out of the core project and working on cleaning some of that up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bar Carlo</title>
      <link>/posts/2025-05-08-bar-carlo/</link>
      <pubDate>Thu, 08 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-08-bar-carlo/</guid>
      <description>&lt;p&gt;We decided to walk down to Foster Rd. for dinner at Bruno&amp;rsquo;s tonight, and walked past Bar Carlo. I still haven&amp;rsquo;t adjusted to the new red paint job, but it&amp;rsquo;s pretty striking.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Bright red Bar Carlo in the low evening sun.&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-fCcB6kT/0/MLNM2mmfRCQZ9FxXZTgCN3N7b8kz46g8FqWC2wnPg/XL/i-fCcB6kT-XL.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Bar Carlo back when it was blue.&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-mrCZ4ww/0/Mmt8TSGDpcTTC6nbVf9hczFRcQckMNkbMFkXrjnMb/XL/i-mrCZ4ww-XL.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Black mist filters</title>
      <link>/posts/2025-05-08-black-mist-filters/</link>
      <pubDate>Thu, 08 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-08-black-mist-filters/</guid>
      <description>&lt;p&gt;Late in the season last year I started getting into black mist filters on my cameras. They&amp;rsquo;re just glass with little black flecks that end up creating a really nice halation effect with night-time lighting; and they soften digital images a tiny bit, in a way that pairs well with the right preset if you like a kinda vintage look.&lt;/p&gt;
&lt;p&gt;I forgot I had one along on my trip to the Mutoid Man show and that was a mild bummer: The light was so low that the X100VI&amp;rsquo;s perfectly serviceable 3200 ISO had more of an uphill battle. On the other end of the spectrum, during bright daylight, they turn the highlights into a glowing mess.&lt;/p&gt;</description>
    </item>
    <item>
      <title>lmno-export</title>
      <link>/posts/2025-05-08-lmno-export/</link>
      <pubDate>Thu, 08 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-08-lmno-export/</guid>
      <description>&lt;p&gt;I packageized &lt;a href=&#34;https://github.com/pdxmph/lmno-export&#34;&gt;lmno-export&lt;/a&gt;, which just lets you work on your lmno blog in org-mode then export it to clean Markdown. Mainly I wanted &amp;ldquo;real&amp;rdquo; org-capture instead of my &lt;a href=&#34;https://github.com/pdxmph/lmno-blog-capture&#34;&gt;hacky alternative&lt;/a&gt;, and I like being able to reuse my org-mode notes as-is instead of extracting and converting them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write your blog in a monolithic org-mode file (set in Customize).&lt;/li&gt;
&lt;li&gt;Export it with &lt;code&gt;lmno-org-export-blog&lt;/code&gt; .&lt;/li&gt;
&lt;li&gt;It opens the target file (set in Customize).&lt;/li&gt;
&lt;li&gt;If you&amp;rsquo;re a Mac person, drag the proxy icon into the lmno.lol uploader.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s the org-capture template, which reuses the source file variable:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make a Markdown or org snippet from the flickr image in your browser (Raycast)</title>
      <link>/posts/2025-05-08-make-a-markdown-or-org-snippet-from-the-flickr-image-in-your-browser-raycast/</link>
      <pubDate>Thu, 08 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-08-make-a-markdown-or-org-snippet-from-the-flickr-image-in-your-browser-raycast/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t think I&amp;rsquo;ll use this a ton day-to-day because I haven&amp;rsquo;t put anything in flickr for a while, and generally use SmugMug these days for embedding stuff in a blog, but I&amp;rsquo;ve been learning how Raycast script actions work and this was an exercise in how to pass arguments in an action instead of going out to osascript dialogs.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Visit a flickr image in Safari or Chrome&lt;/li&gt;
&lt;li&gt;Invoke the action from Raycast and:
&lt;ul&gt;
&lt;li&gt;select a snippet format&lt;/li&gt;
&lt;li&gt;type in some alt text&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Get a snippet in Markdown, org, or HTML with your alt text, suitable for pasting into a blog post&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Why you want to do this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Maybe it was the shell scripts we made along the way</title>
      <link>/posts/2025-05-08-maybe-it-was-the-shell-scripts-we-made-along-the-way/</link>
      <pubDate>Thu, 08 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-08-maybe-it-was-the-shell-scripts-we-made-along-the-way/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Tourists in a Seattle alley&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-dwXr6Bv/0/LrhHRTQPDvFHpCwDNj38f2cXbKQJLCDFgs9LLpQTF/XL/i-dwXr6Bv-XL.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;The fundamental mania at work here is basically &amp;ldquo;wring all the motion out of a thing you can.&amp;rdquo; I wrote imgup because I hated what Microblog was doing to my photos, but also hated the whole shuffle of &amp;ldquo;upload an image to SmugMug, hand-write the markup to embed it in a post.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;So it was an incremental improvement to build a web UI that stripped all the extraneous motion out of that workflow using the only thing I knew very well, which is Ruby/Sinatra.&lt;/p&gt;</description>
    </item>
    <item>
      <title>imgup CLI improvement</title>
      <link>/posts/2025-05-07-imgup-cli-improvement/</link>
      <pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-07-imgup-cli-improvement/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;CLI imgup outputting multiple formats&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-bcCGxXj/0/NHVh4RT7f5wwdCPHt5kPcCXL9s5qvwcRtSLP9559d/XL/i-bcCGxXj-XL.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;I added a &lt;code&gt;format&lt;/code&gt; option to the &lt;a href=&#34;https://github.com/pdxmph/imgup&#34;&gt;imgup&lt;/a&gt; CLI, so it&amp;rsquo;ll provide a snippet in either org, Markdown, or HTML markup now, matching what it can do from the web interface. Also realized I don&amp;rsquo;t have a &amp;ldquo;picture of the week&amp;rdquo; feature anymore, so I replaced that part of the menu with a direct link to the Smugmug target album in the Smugmug management UI. Great for quickly getting to a bunch of test photos and removing them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>In which I solve a food bank communications problem</title>
      <link>/posts/2025-05-07-in-which-i-solve-a-food-bank-communications-problem/</link>
      <pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-07-in-which-i-solve-a-food-bank-communications-problem/</guid>
      <description>&lt;p&gt;I volunteered at the neighborhood food bank/pantry again today. &lt;a href=&#34;https://puddingtime.org/everyone-gets-a-number-choose-one-were-great-on-funyuns-but-the-rice-ran-out&#34;&gt;Like last week&lt;/a&gt; I was put on what I guess is the &amp;ldquo;starch and carbs&amp;rdquo; station:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One from a selection of a bag of flour, a bag of baking mix, or a bag of generic corn flakes cereal&lt;/li&gt;
&lt;li&gt;One or the other of a packet of spaghetti noodles or rice&lt;/li&gt;
&lt;li&gt;a can of pureed pumpkin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I had more to keep track of this week, and there was something in the air. The first people to draw numbers for their place in the line got high ones: in the 90s and 100s. They didn&amp;rsquo;t want high numbers because the better items are long gone by the last 25 or so people, but the food bank folks don&amp;rsquo;t allow do-overs. Then a general mood hit and everybody started crowding for their number, a few people darted past the line control people and tried to get a second number, and it got a little rowdy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Uploading to imgup from Photos</title>
      <link>/posts/2025-05-07-uploading-to-imgup-from-photos/</link>
      <pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-07-uploading-to-imgup-from-photos/</guid>
      <description>&lt;p&gt;Woof. It involved some AppleScripting, shell scripting, and some ugliness due to RayCast not wanting to inherit my login shell environment (circumventing rbenv to run imgup), but I finally got it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pick an image in photos&lt;/li&gt;
&lt;li&gt;Fire off the action in RayCast&lt;/li&gt;
&lt;li&gt;Select a snippet format of `org` or `markdown`&lt;/li&gt;
&lt;li&gt;Provide an alt tag&lt;/li&gt;
&lt;li&gt;Get a copy/pasteable snippet back from imgup I can drop into the blog&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have a matching one for a selected file in the Finder.&lt;/p&gt;</description>
    </item>
    <item>
      <title>imgup and org-mode (and lmno.org)</title>
      <link>/posts/2025-05-06-imgup-and-org-mode-and-lmnoorg/</link>
      <pubDate>Tue, 06 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-06-imgup-and-org-mode-and-lmnoorg/</guid>
      <description>&lt;p&gt;This morning I woke up wondering &amp;ldquo;what if I could do my lmno blogging from org-mode instead of Markdown?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Partly &amp;ldquo;why not&amp;rdquo; and partly &amp;ldquo;you get real org-capture and it becomes easier to shuttle text around.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;That led to this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(defun lmno/org-export-blog ()
  &amp;quot;Export ~/notes/blog.org → ~/notes/lmno.md.&amp;quot;
  (interactive)
  (let* ((input-file  (expand-file-name &amp;quot;~/notes/lmno.org&amp;quot;))
         (output-file (expand-file-name &amp;quot;~/notes/lmno.md&amp;quot;)))
    (with-temp-buffer
      (insert-file-contents input-file)
      (org-mode)
      ;; turn off all the bells that inject TOC, numbers, dates, etc.
      (let ((org-export-with-toc            nil)
            (org-export-with-section-numbers nil)
            (org-export-with-author         nil)
            (org-export-with-creator        nil)
            (org-export-with-date           nil)
            (org-export-with-priorities     nil)
            (org-export-with-timestamps     nil)
            (org-export-with-smart-quotes   nil)
            (org-export-with-broken-links   &#39;mark))
      (org-export-to-buffer &#39;md &amp;quot;*lmno-export*&amp;quot; nil nil nil nil))
      (with-current-buffer &amp;quot;*lmno-export*&amp;quot;
        ;; strip the anchors org&#39;s export insists on inserting
        (goto-char (point-min))
        (while (re-search-forward &amp;quot;&amp;lt;a id=\&amp;quot;[^\&amp;quot;]+\&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;quot; nil t)
          (replace-match &amp;quot;&amp;quot;))
        ;; strip the overhelpful datestamp spans
        (goto-char (point-min))
        (while (re-search-forward &amp;quot;&amp;lt;/?span[^&amp;gt;]*&amp;gt;&amp;quot; nil t)
          (replace-match &amp;quot;&amp;quot;)))
      ;; write out the clean Markdown
      (with-current-buffer &amp;quot;*lmno-export*&amp;quot;
        (write-region (point-min) (point-max) output-file)))
    (message &amp;quot;Clean export complete → %s&amp;quot; output-file)))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It has to do two things I wish it didn&amp;rsquo;t:&lt;/p&gt;</description>
    </item>
    <item>
      <title>git-auto-sync (and LaunchControl, and the Jurassic Park kid)</title>
      <link>/posts/2025-05-05-git-auto-sync-and-launchcontrol-and-the-jurassic-park-kid/</link>
      <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-05-git-auto-sync-and-launchcontrol-and-the-jurassic-park-kid/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t think it&amp;rsquo;s as magical as whatever nb is up to, but for wandering from machine to machine and not getting &lt;em&gt;too&lt;/em&gt; out of control with it, &lt;a href=&#34;https://github.com/GitJournal/git-auto-sync/&#34;&gt;git-auto-sync&lt;/a&gt; seems to do an okay job of periodically syncing up with a remote behind your back. When you target a directory with it, it creates a launchd agent, so the syncing daemon persists over reboots, etc.&lt;/p&gt;
&lt;p&gt;I got it from Homebrew, and discovered one issue with it, which is that the agent it sets up wants to log to &lt;code&gt;/usr/local/var/log&lt;/code&gt;, which is locked down in at least recent versions of macOS (and ignores &lt;code&gt;/opt/homebrew/var/log&lt;/code&gt;, which is already correctly permissioned, so now I&amp;rsquo;m wondering if I have the wherewithal to submit a patch somewhere). So you can either make that directory and set the right permissions, or twiddle the launch agent.&lt;/p&gt;</description>
    </item>
    <item>
      <title>git-auto-sync, Raycast, and terminal-notifier</title>
      <link>/posts/2025-05-05-git-auto-sync-raycast-and-terminal-notifier/</link>
      <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-05-git-auto-sync-raycast-and-terminal-notifier/</guid>
      <description>&lt;p&gt;Raycast has a nice setup for making shell scripts into actions. I have one wrapper for emacsclient that just invokes a GUI Emacs window from a running Emacs server and then foregrounds the window:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Emacsd
# @raycast.mode silent

# Optional parameters:
# @raycast.icon 🤖
# @raycast.packageName Emacs

# Documentation:
# @raycast.description Launch Emacs
# @raycast.author pdxmph
# @raycast.authorURL https://raycast.com/pdxmph

/opt/homebrew/bin/emacsclient -c --no-wait
osascript -e &#39;tell application &amp;quot;Emacs&amp;quot; to activate&#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;… and I made another one that lets me trigger &lt;code&gt;git-auto-sync&lt;/code&gt; operations when I&amp;rsquo;m going to step away for a while and want to make sure everything in my notes repo has been pushed:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Taking the X100VI to shows</title>
      <link>/posts/2025-05-04-taking-the-x100vi-to-shows/</link>
      <pubDate>Sun, 04 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-04-taking-the-x100vi-to-shows/</guid>
      <description>&lt;p&gt;I guess every music venue has rules for cameras and photography, and the nice thing about the X100VI is that it manages to avoid the &amp;ldquo;no interchangeable lens cameras&amp;rdquo; and &amp;ldquo;no lenses over 4 inches long&amp;rdquo; rules while also avoiding scrutiny as a &amp;ldquo;professional camera&amp;rdquo; because it&amp;rsquo;s small and vintage-looking. And it&amp;rsquo;s great for carrying along because it&amp;rsquo;s easy to cinch the strap up and have it close without a lot of bulk or weight.&lt;/p&gt;</description>
    </item>
    <item>
      <title>emacs-plus</title>
      <link>/posts/2025-05-03-emacs-plus/</link>
      <pubDate>Sat, 03 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-03-emacs-plus/</guid>
      <description>&lt;p&gt;I switched my Homebrew Emacs package to &lt;a href=&#34;https://github.com/d12frosted/homebrew-emacs-plus&#34;&gt;emacs-plus@30&lt;/a&gt; this past week. I am sure there are nuances that are escaping me, but I was mostly after something with a tested launchd service I could manage from &lt;code&gt;brew services&lt;/code&gt;, and I thought the built-in support for system appearance changes seemed pretty cool, since it let me retire 20 lines of elisp that wasn&amp;rsquo;t nearly as effective as this build is at detecting when Dark Mode is on or off.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ignoring the plumbing; Journelly and hashtags for mindful journaling</title>
      <link>/posts/2025-05-03-ignoring-the-plumbing-journelly-and-hashtags-for-mindful-journaling/</link>
      <pubDate>Sat, 03 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-03-ignoring-the-plumbing-journelly-and-hashtags-for-mindful-journaling/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s fun watching the threads around what people have been doing with &lt;a href=&#34;https://apps.apple.com/us/app/journelly/id6470714669&#34;&gt;Journelly&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A lot of people are very into the fact that it uses org-mode underneath. I am, too, because unlike Markdown, org-mode is super amenable to a variety of plaintext workflows that you could probably pull off with Markdown but without all the supporting infrastructure to make it easier.&lt;/p&gt;
&lt;p&gt;Take, for instance, the small problem of recreating reverse-chronological posting to a file:&lt;/p&gt;</description>
    </item>
    <item>
      <title>lmno-blog-capture v0.2 (&#39;won&#39;t somebody think of the windows&#39; edition)</title>
      <link>/posts/2025-05-03-lmno-blog-capture-v02-wont-somebody-think-of-the-windows-edition/</link>
      <pubDate>Sat, 03 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-03-lmno-blog-capture-v02-wont-somebody-think-of-the-windows-edition/</guid>
      <description>&lt;p&gt;My initial idea for &lt;a href=&#34;https://github.com/pdxmph/lmno-blog-capture&#34;&gt;lmno-blog-capture&lt;/a&gt; was &amp;ldquo;for dashing off super small posts in a transient window.&amp;rdquo; I wanted something org-capture-like so I could be writing about something, have a thought, and keep whatever I was working on in sight.&lt;/p&gt;
&lt;p&gt;So it never occurred to me to test what would happen if I had ended up going long and deciding to give myself more screen real estate with &lt;code&gt;C-x 1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then I did that and Emacs started squawking about having only one window to close, so even though it was saving my lmno.md file, it was complaining and not closing the posting minibuffer. I thought I fixed it once, but turns out I was fixing the wrong file in the wrong place for another project. Then it complained at me again today so I fixed it for real this time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Music night: Mutoid Man and Silver Lake</title>
      <link>/posts/2025-05-03-music-night-mutoid-man-and-silver-lake/</link>
      <pubDate>Sat, 03 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-03-music-night-mutoid-man-and-silver-lake/</guid>
      <description>&lt;p&gt;Last night ended up being kinda &amp;ldquo;music night&amp;rdquo;:&lt;/p&gt;
&lt;p&gt;Alison&amp;rsquo;s friend Patricia Rojas played a set with her band, Silver Lake, at a guitar shop/bar in Buckman. Really nice Americana.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-CwCZvzM/0/Mg5T7kpr39CRNnDv5fpWrbRXGgwSLm9Hvd7M92hBN/XL/i-CwCZvzM-XL.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Then we headed to the Twilight Cafe for Mutoid Man. I was super-excited for that one because I love just that band, and because all three members are in other bands I really love: High on Fire, Converge, and Cave In. They were really, really good and it was a great audience.&lt;/p&gt;</description>
    </item>
    <item>
      <title>cielagonote v0.11 (Home of the Whopper)</title>
      <link>/posts/2025-05-02-cielagonote-v011-home-of-the-whopper/</link>
      <pubDate>Fri, 02 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-02-cielagonote-v011-home-of-the-whopper/</guid>
      <description>&lt;p&gt;I sat for a day with the nb daily plugin support question, a little torn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I do not like the daily file-naming convention (&lt;code&gt;yyyymmdd.ext&lt;/code&gt;), especially since other files have datestamps in the names.&lt;/li&gt;
&lt;li&gt;I much prefer the &lt;code&gt;daily-yyyy-mm-dd.ext&lt;/code&gt; for scanability and fuzzy-finding, and I like the way cielagonote titles the daily file, which matters in some parts of the Markdown ecosystem.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So my initial approach was to tell nb people to just not expect the daily functionality to work in cielagonote, or that they&amp;rsquo;d just get a &lt;code&gt;daily-yyyy-mm-dd&lt;/code&gt; file dropped in their nb instance that wouldn&amp;rsquo;t work with the &lt;code&gt;daily&lt;/code&gt; plugin. I didn&amp;rsquo;t like that much.&lt;/p&gt;</description>
    </item>
    <item>
      <title>cielagonote v0.3</title>
      <link>/posts/2025-05-01-cielagonote-v03/</link>
      <pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-01-cielagonote-v03/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/pdxmph/cielagonote/releases/tag/v0.3&#34;&gt;This version&lt;/a&gt; just gets rid of a terminal reset after exiting the editor. It slowed things down, felt laggy, and seemed to be down to a thing that comes and goes depending on the combination of terminal, editor, and sunspots. Maybe I&amp;rsquo;ll add it to the configuration options.&lt;/p&gt;
&lt;p&gt;It also adds a warning in the README that &lt;code&gt;nb&lt;/code&gt; support is incomplete. I do want to make a config switch for that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>cielagonote v0.5 (No Really)</title>
      <link>/posts/2025-05-01-cielagonote-v05-no-really/</link>
      <pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-05-01-cielagonote-v05-no-really/</guid>
      <description>&lt;p&gt;Well, my lunch date canceled, so … with this version, &lt;code&gt;nb&lt;/code&gt; support is switchable:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;notes_dir: ~/notes
default_extension: md # or org
exclude_dirs:
  - denote
  - .git
hide_hidden: true # hides .files when enabled
editor: micro # will be overridden with `nb edit` if nb_support == true
nb_support: false # if true, overrides your editor: setting and enables nb file management
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So you can either just use cielagonote as a standalone note manager with no supporting ecosystem, or you can flip &lt;code&gt;nb_support:&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; and it&amp;rsquo;ll use nb&amp;rsquo;s native commands to create, rename, and delete notes, ensuring that &lt;code&gt;nb&lt;/code&gt;&amp;rsquo;s underlying git repo stays clean and in sync with remotes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Everyone gets a number. Choose one. We&#39;re great on Funyuns, but the rice ran out.</title>
      <link>/posts/2025-04-30-everyone-gets-a-number-choose-one-were-great-on-funyuns-but-the-rice-ran-out/</link>
      <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-30-everyone-gets-a-number-choose-one-were-great-on-funyuns-but-the-rice-ran-out/</guid>
      <description>&lt;p&gt;I did my first volunteer shift at a neighborhood food pantry today. It was over at the elementary school across the park, where Ben went. The person running things seemed a little harried, but did take the time to show me how to stand behind several bins and ensure proper distribution:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One or the other of a packet of spaghetti noodles or a pound of white rice&lt;/li&gt;
&lt;li&gt;One can of tomato paste, sauce, or diced tomatoes&lt;/li&gt;
&lt;li&gt;One jar of peanut butter&lt;/li&gt;
&lt;li&gt;One or the other from a box full of ramen, canned fruit, and other stuff &lt;em&gt;or&lt;/em&gt; baby food, apple sauce, white vinegar, soy sauce and cooking oils&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The station to my right had Funyuns and Nerds candies, and they were allowed to give away three of either. The station to my left had assorted meats: Hamburger, chicken thighs, and a few racks of ribs. Further down the way there was a vegetable person who had purple onions and some other vegetables.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Post-haircut drink at Bruno&#39;s</title>
      <link>/posts/2025-04-30-post-haircut-drink-at-brunos/</link>
      <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-30-post-haircut-drink-at-brunos/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-hRKCZhv/0/KF2zvZbjm3JJvBxFjwzJ8wLM4nGF4XCMQV4SHGcHF/XL/i-hRKCZhv-XL.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>cielagonote 0.2.1 (changed daily notes and an nb plugin)</title>
      <link>/posts/2025-04-29-cielagonote-021-changed-daily-notes-and-an-nb-plugin/</link>
      <pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-29-cielagonote-021-changed-daily-notes-and-an-nb-plugin/</guid>
      <description>&lt;p&gt;I did some quick fixups to daily notes in cielagonote this morning.&lt;/p&gt;
&lt;p&gt;You can start or add to a daily note in cielagonote with &lt;code&gt;C-t&lt;/code&gt;. That opens a file named &lt;code&gt;daily-yyyy-mm-dd.ext&lt;/code&gt; (where .ext is either &lt;code&gt;.org&lt;/code&gt; or &lt;code&gt;.md&lt;/code&gt; depending on what you set in &lt;code&gt;.cnconfig.yml&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s the naming convention I&amp;rsquo;ve been using forever for daily notes, and is at odds with nb&amp;rsquo;s own daily plugin, so I forked that and added it to the cielagonote repo as an extra.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Headspace</title>
      <link>/posts/2025-04-28-headspace/</link>
      <pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-28-headspace/</guid>
      <description>&lt;p&gt;I spent today in my pretty stripped down Emacs config. In the end, setting aside dependencies that got pulled in, I&amp;rsquo;ve installed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LSP&lt;/li&gt;
&lt;li&gt;Vertico&lt;/li&gt;
&lt;li&gt;osx-clipboard&lt;/li&gt;
&lt;li&gt;exec-path-from-shell&lt;/li&gt;
&lt;li&gt;recentf&lt;/li&gt;
&lt;li&gt;company&lt;/li&gt;
&lt;li&gt;orderless&lt;/li&gt;
&lt;li&gt;which-key&lt;/li&gt;
&lt;li&gt;marginalia&lt;/li&gt;
&lt;li&gt;evil&lt;/li&gt;
&lt;li&gt;prescient&lt;/li&gt;
&lt;li&gt;undo-fu&lt;/li&gt;
&lt;li&gt;lmno-blog-capture&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are 269 lines in my tangled config file to make it all work, and it seems to take somewhere around 0.7 seconds to launch from the shell (more like 1.3 seconds as a GUI). I had 387 lines in my Doom config, which is honestly a decent reflection on Doom: You can go totally &amp;ldquo;kid in a candy store&amp;rdquo; with that thing and it&amp;rsquo;s doing a lot to help you suffer less for that impulse.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making an nb bookmark from iOS</title>
      <link>/posts/2025-04-28-making-an-nb-bookmark-from-ios/</link>
      <pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-28-making-an-nb-bookmark-from-ios/</guid>
      <description>&lt;p&gt;Couldn&amp;rsquo;t resist figuring this out. You can run scripts over ssh with Shortcuts and iOS:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-RhLtbpt/0/NT4NdwNxRK5HFVQB6ZWTfq9CQkJKqqDw3FR25BbJv/XL/i-RhLtbpt-XL.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;The script on the receiving end:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/opt/homebrew/bin/bash
url=${1)
/opt/homebrew/bin/nb ${1}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://tailscale.com/&#34;&gt;Tailscale&lt;/a&gt; makes this kind of thing easier. (And yes, use an ssh key.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bolting a CLI interface onto imgup for SmugMug uploading and blogging</title>
      <link>/posts/2025-04-27-bolting-a-cli-interface-onto-imgup-for-smugmug-uploading-and-blogging/</link>
      <pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-27-bolting-a-cli-interface-onto-imgup-for-smugmug-uploading-and-blogging/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/pdxmph/imgup&#34;&gt;imgup&lt;/a&gt; is a project I worked on a few years ago to solve the problem of where to put photos for my blogs after experiencing a few weird things with different services: The image files being renamed into something illegible, or suffering from crappy compression. Since I have been using SmugMug for years and keep everything there, I decided to create a non-browseable album I could upload images to, then share from there.&lt;/p&gt;</description>
    </item>
    <item>
      <title>All along the watchtower</title>
      <link>/posts/2025-04-26-all-along-the-watchtower/</link>
      <pubDate>Sat, 26 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-26-all-along-the-watchtower/</guid>
      <description>&lt;p&gt;I used to have a chief engineer on my team whom I loved dearly, because when I&amp;rsquo;d be in the throes of my worst managerial contortions, he&amp;rsquo;d quietly ask, &amp;ldquo;Mike, what problem are you trying to solve?&amp;rdquo; He was very good at winding things back and resetting.&lt;/p&gt;
&lt;p&gt;At the beginning of our relationship I would feel attacked, because it&amp;rsquo;s so easy to get so far out to sea that you lose sight of that initial thing that started the process of piling up fixes and solutions and almost feel like you didn&amp;rsquo;t even know what problem you were trying to solve, you just sort of got caught up in all that change-agent energy and felt like doing something.&lt;/p&gt;</description>
    </item>
    <item>
      <title>cielagonote is what I woke up yesterday morning wanting to find</title>
      <link>/posts/2025-04-25-cielagonote-is-what-i-woke-up-yesterday-morning-wanting-to-find/</link>
      <pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-25-cielagonote-is-what-i-woke-up-yesterday-morning-wanting-to-find/</guid>
      <description>&lt;p&gt;My &lt;a href=&#34;https://puddingtime.org/lmno-blog-captureel-and-the-whole-lightweight-text-thing&#34;&gt;kick&lt;/a&gt; has reached some kind of logical conclusion in the form of &lt;a href=&#34;https://github.com/pdxmph/cielagonote&#34;&gt;cielagonote&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://puddingtime.org/nuhtizhunal-veblocitrix&#34;&gt;This morning&lt;/a&gt; I started off with a zsh wrapper around fzf and nb for finding and editing notes. nb is fine and all, but I really like the sort of speedy narrowing you get from something like &lt;a href=&#34;https://github.com/jrblevin/deft&#34;&gt;deft&lt;/a&gt; or other members of the Notational Velocity family tree.&lt;/p&gt;
&lt;p&gt;So I was looking for something to wrap around nb to keep taking advantage of its git syncing and a few other features, but also warily eyeing too much dependence on it. If the Giant nb-Eating Space Goat were to pull into orbit tomorrow, I would want to simply watch it magestically devour nb, then have a quick way to write a note about my impressions of the experience without accidentally naming that note the same as another about a similar experience.&lt;/p&gt;</description>
    </item>
    <item>
      <title>cielagonote v0.2.0 - WMD Edition</title>
      <link>/posts/2025-04-25-cielagonote-v020-wmd-edition/</link>
      <pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-25-cielagonote-v020-wmd-edition/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/pdxmph/cielagonote/releases/tag/v0.2.0&#34;&gt;cielagonote 0.2.0&lt;/a&gt; adds some basic file management and a convenience feature for daily notes.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-VmRPJDC/0/MTkthHNsmB3FZKp4s8WhM62nKCxjDgLHgLq6sGxRd/XL/i-VmRPJDC-XL.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;There are two things that I would love to polish up but probably never will:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Since I am a heavy emacsclient user, I run into some interactions between it and &lt;a href=&#34;https://sw.kovidgoyal.net/kitty/&#34;&gt;kitty&lt;/a&gt; that leave the terminal in a disordered state. I&amp;rsquo;ve solved that with a reset after exiting an edit operation. It adds a small bit of latency to an otherwise zippy interaction.&lt;/li&gt;
&lt;li&gt;The rename and delete operations drop you back into the command line for a second. It&amp;rsquo;d be a lot spiffier if that were handled more nicely.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;On the other hand, this is 233 lines of Ruby and an off-the-shelf cast of supporting characters. It was pretty delightful to use it in anger a few times with my topic logs this morning, and it did what I wanted by feeling way less in the way and less &amp;ldquo;now I am entering into some other place and descending down into a corner of it and doing a thing and coming back up out of it.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emacs keybindings for micro</title>
      <link>/posts/2025-04-25-emacs-keybindings-for-micro/</link>
      <pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-25-emacs-keybindings-for-micro/</guid>
      <description>&lt;p&gt;The biggest problem I&amp;rsquo;ve had with &lt;a href=&#34;https://micro-editor.github.io/&#34;&gt;micro&lt;/a&gt; has been getting used to its very CUA-like sensibility. Sticking these in &lt;code&gt;~/.config/micro/bindings.json&lt;/code&gt; looks like it is relieving the worst of it, leaving me with a just-fine zippy little editor that doesn&amp;rsquo;t need Emacs infrastructure to operate.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
    &amp;quot;\u001b\u003c&amp;quot;: &amp;quot;CursorStart&amp;quot;,
    &amp;quot;\u001b\u003e&amp;quot;: &amp;quot;CursorEnd&amp;quot;,
    &amp;quot;\u003cCtrl-x\u003e\u003c0\u003e&amp;quot;: &amp;quot;Unsplit&amp;quot;,
    &amp;quot;\u003cCtrl-x\u003e\u003c2\u003e&amp;quot;: &amp;quot;HSplit&amp;quot;,
    &amp;quot;\u003cCtrl-x\u003e\u003c3\u003e&amp;quot;: &amp;quot;VSplit&amp;quot;,
    &amp;quot;\u003cCtrl-x\u003e\u003cCtrl-c\u003e&amp;quot;: &amp;quot;Quit&amp;quot;,
    &amp;quot;\u003cCtrl-x\u003e\u003cCtrl-f\u003e&amp;quot;: &amp;quot;OpenFile&amp;quot;,
    &amp;quot;\u003cCtrl-x\u003e\u003cCtrl-s\u003e&amp;quot;: &amp;quot;Save&amp;quot;,
    &amp;quot;\u003cCtrl-x\u003e\u003ch\u003e&amp;quot;: &amp;quot;SelectAll&amp;quot;,
    &amp;quot;\u003cCtrl-x\u003e\u003co\u003e&amp;quot;: &amp;quot;command:fzf&amp;quot;,
    &amp;quot;Alt-/&amp;quot;: &amp;quot;lua:comment.comment&amp;quot;,
    &amp;quot;Alt-a&amp;quot;: &amp;quot;lua:snippets.Accept&amp;quot;,
    &amp;quot;Alt-b&amp;quot;: &amp;quot;WordLeft&amp;quot;,
    &amp;quot;Alt-d&amp;quot;: &amp;quot;lua:snippets.Cancel&amp;quot;,
    &amp;quot;Alt-f&amp;quot;: &amp;quot;WordRight&amp;quot;,
    &amp;quot;Alt-s&amp;quot;: &amp;quot;lua:snippets.Insert&amp;quot;,
    &amp;quot;Alt-v&amp;quot;: &amp;quot;CursorPageUp&amp;quot;,
    &amp;quot;Alt-w&amp;quot;: &amp;quot;Copy&amp;quot;,
    &amp;quot;Alt-x&amp;quot;: &amp;quot;CommandMode&amp;quot;,
    &amp;quot;Ctrl-a&amp;quot;: &amp;quot;StartOfLine&amp;quot;,
    &amp;quot;Ctrl-e&amp;quot;: &amp;quot;EndOfLine&amp;quot;,
    &amp;quot;Ctrl-g&amp;quot;: &amp;quot;Escape&amp;quot;,
    &amp;quot;Ctrl-k&amp;quot;: &amp;quot;CutLine&amp;quot;,
    &amp;quot;Ctrl-r&amp;quot;: &amp;quot;FindPrevious&amp;quot;,
    &amp;quot;Ctrl-s&amp;quot;: &amp;quot;Find&amp;quot;,
    &amp;quot;Ctrl-v&amp;quot;: &amp;quot;CursorPageDown&amp;quot;,
    &amp;quot;Ctrl-y&amp;quot;: &amp;quot;Paste&amp;quot;,
    &amp;quot;Ctrl-z&amp;quot;: &amp;quot;Undo&amp;quot;,
    &amp;quot;CtrlP&amp;quot;: &amp;quot;command:palettero&amp;quot;,
    &amp;quot;CtrlSpace&amp;quot;: &amp;quot;command:palettero&amp;quot;,
    &amp;quot;CtrlUnderscore&amp;quot;: &amp;quot;Undo&amp;quot;,
    &amp;quot;F1&amp;quot;: &amp;quot;command:cheat&amp;quot;,
    &amp;quot;F12&amp;quot;: &amp;quot;command:makeup&amp;quot;,
    &amp;quot;F4&amp;quot;: &amp;quot;command:jumptag&amp;quot;,
    &amp;quot;F5&amp;quot;: &amp;quot;command:runit&amp;quot;,
    &amp;quot;F9&amp;quot;: &amp;quot;command:makeupbg&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I used to use &lt;a href=&#34;https://www.jedsoft.org/jed/&#34;&gt;jed&lt;/a&gt; for this, until something went wrong with it for a while. It seems to be operating correctly again to judge from my latest pull down from Homebrew, but I just went to this trouble with micro …&lt;/p&gt;</description>
    </item>
    <item>
      <title>lol</title>
      <link>/posts/2025-04-25-lol/</link>
      <pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-25-lol/</guid>
      <description>&lt;p&gt;Just &lt;code&gt;nb install fzf.nb-plugin&lt;/code&gt; and &lt;code&gt;nb fzf&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;alias nbf&lt;/code&gt;&amp;ldquo;nb fzf&amp;rdquo;= if you&amp;rsquo;re feeling frisky.&lt;/p&gt;
&lt;p&gt;Done.&lt;/p&gt;
&lt;p&gt;I mean, not really, because &lt;a href=&#34;https://github.com/pdxmph/cielagonote&#34;&gt;cielagonote&lt;/a&gt; does the whole &amp;ldquo;make it if it doesn&amp;rsquo;t exist&amp;rdquo; thing, and it&amp;rsquo;s doing full-text search. But if the thing you don&amp;rsquo;t like about nb is &amp;ldquo;list, get a number, enter a number&amp;rdquo; to operate on your file, this does the job.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env bash
###############################################################################
# fzf.nb-plugin
#
# FZF Plugin for nb
#
###############################################################################

# Add the new subcommand name with `_subcommands add &amp;lt;name&amp;gt;`.
_subcommands add &amp;quot;fzf&amp;quot;

# Define help and usage text with `_subcommands describe &amp;lt;subcommand&amp;gt; &amp;lt;usage&amp;gt;`.
_subcommands describe &amp;quot;fzf&amp;quot; &amp;lt;&amp;lt;HEREDOC
Usage:
  nb fzf
  Description:
    Search through current notebook using fzf and then edit sepected item.
HEREDOC

_fzf() {
  local note=$(_ls -t note --filename -a --no-footer --no-header --no-indicator --tree | fzf --ansi --header &amp;quot;$(_notebook current --name)&amp;quot; --preview &amp;quot;echo {} | sed &#39;&amp;quot;&#39;s/\x1b\[[0-9;]*m//g&#39;&amp;quot;&#39; | awk -F&#39;[][]&#39; &#39;&amp;quot;&#39;{print $2}&#39;&amp;quot;&#39; | xargs -n 1 nb show -p | ${NB_MARKDOWN_TOOL:-bat} -&amp;quot; | awk -F&#39;[][]&#39; &#39;{print $2}&#39;)

  if ! [[ -z &amp;quot;$note&amp;quot; ]]; then
    command nb edit &amp;quot;$note&amp;quot;
  fi
}
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>nuhtizhunal veblocitrix</title>
      <link>/posts/2025-04-25-nuhtizhunal-veblocitrix/</link>
      <pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-25-nuhtizhunal-veblocitrix/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/junegunn/fzf&#34;&gt;fzf&lt;/a&gt; is a command line fuzzy finding TUI thing that gives you really fast progressive narrowing on a directory full of stuff then invokes whatever on the target. This morning&amp;rsquo;s science experiment is wrapping it in a zsh function for my nb that pops up a fuzzy finder with incremental search, or offers to start a new note in nb. If you take the &lt;code&gt;New Note&lt;/code&gt; option, you get a prompt for the title and can start typing. The whole thing is wrapped around &lt;code&gt;nb&lt;/code&gt; so I get the benefits of its autosync infrastructure, just with a search interface that is way faster for finding things.&lt;/p&gt;</description>
    </item>
    <item>
      <title>log2file.el for quick logging into md or org (pencils down, back to work)</title>
      <link>/posts/2025-04-23-log2fileel-for-quick-logging-into-md-or-org-pencils-down-back-to-work/</link>
      <pubDate>Wed, 23 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-23-log2fileel-for-quick-logging-into-md-or-org-pencils-down-back-to-work/</guid>
      <description>&lt;p&gt;In the process of diddling around with a bunch of different kinds of logs and formats, I realized I had two things that did the same thing, more or less, for org files and Markdown files. The &lt;a href=&#34;https://github.com/pdxmph/org-topic-log&#34;&gt;org version&lt;/a&gt; bothered me because I went down the wrong track and ended up using &lt;code&gt;org-agenda-files&lt;/code&gt; with a given filetag to populate the list of potential targets and get out of some stuff I couldn&amp;rsquo;t get right. The &lt;a href=&#34;https://github.com/pdxmph/md-capture&#34;&gt;Markdown version&lt;/a&gt; was better, but didn&amp;rsquo;t have a non-fiddle-with-your-config-file way to get new files added.&lt;/p&gt;</description>
    </item>
    <item>
      <title>lmno-blog-capture.el and the whole lightweight text thing</title>
      <link>/posts/2025-04-22-lmno-blog-captureel-and-the-whole-lightweight-text-thing/</link>
      <pubDate>Tue, 22 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-22-lmno-blog-captureel-and-the-whole-lightweight-text-thing/</guid>
      <description>&lt;p&gt;Yesterday I made a little thing to quickly capture &lt;a href=&#34;https://lmno.lol&#34;&gt;lmno.lol&lt;/a&gt; blog posts from a little window in Emacs. I&amp;rsquo;m kind of having fun package-izing these things, so today I bundled it up into &lt;a href=&#34;https://github.com/pdxmph/lmno-blog-capture&#34;&gt;pdxmph/lmno-blog-capture&lt;/a&gt;, with a customization group (with one option).&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been on a small tear with these things lately, and whenever I go on a small tear I think &amp;ldquo;this is happening for a reason,&amp;rdquo; and the reason is usually &amp;ldquo;because there&amp;rsquo;s something you don&amp;rsquo;t want to go do,&amp;rdquo; and that is true here. But I &lt;em&gt;like&lt;/em&gt; times like this, because they exercise part of me that doesn&amp;rsquo;t get exercised much: I spend a lot of my day thinking &amp;ldquo;will this scale,&amp;rdquo; and &amp;ldquo;but do we really need to do this,&amp;rdquo; and &amp;ldquo;what is security engineering going to do when they find out this happened,&amp;rdquo; and &amp;ldquo;did I make Compliance angry.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Okay. We made a snippet. ✂️</title>
      <link>/posts/2025-04-21-okay-we-made-a-snippet/</link>
      <pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-21-okay-we-made-a-snippet/</guid>
      <description>&lt;p&gt;This may be my consolation prize for &lt;a href=&#34;https://ox-hugo.scripter.co/&#34;&gt;ox-hugo&lt;/a&gt; going south on me.&lt;/p&gt;
&lt;h1 id=&#34;blog-text-art-banner&#34;&gt;blog-text-art-banner&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt; _____  _____  _  _____  ______  _   _ ______ ______  _____  _   _  _____  _____  _____ ___  ___ _____  _
|_   _||_   _|( )/  ___| | ___ \| | | ||  _  \|  _  \|_   _|| \ | ||  __ \|_   _||_   _||  \/  ||  ___|| |
  | |    | |  |/ \ `--.  | |_/ /| | | || | | || | | |  | |  |  \| || |  \/  | |    | |  | .  . || |__  | |
  | |    | |      `--. \ |  __/ | | | || | | || | | |  | |  | . ` || | __   | |    | |  | |\/| ||  __| | |
 _| |_   | |     /\__/ / | |    | |_| || |/ / | |/ /  _| |_ | |\  || |_\ \  | |   _| |_ | |  | || |___ |_|
 \___/   \_/     \____/  \_|     \___/ |___/  |___/   \___/ \_| \_/ \____/  \_/   \___/ \_|  |_/\____/ (_) 🔥🤘🏻🔥
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;blog-about&#34;&gt;blog-about&lt;/h1&gt;
&lt;p&gt;Hello 👋 I&amp;rsquo;m Mike. Regularly blogging at &lt;a href=&#34;https://mike.puddingtime.org&#34;&gt;mike.puddingtime.org&lt;/a&gt;, tooting &lt;a href=&#34;https://social.lol/@mph&#34;&gt;@mph@social.lol&lt;/a&gt; and wandering around in Portland, OR.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Saw X in Portland</title>
      <link>/posts/2025-04-21-saw-x-in-portland/</link>
      <pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025-04-21-saw-x-in-portland/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://photos.smugmug.com/photos/i-dqVSw2P/0/M3J4knxn8vpw37R7HNNwW5s4X42TtKvkVXMHvp4xT/XL/i-dqVSw2P-XL.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;This was an opportunity to try out my Smugmug/upload/image snippet app &lt;a href=&#34;https://github.com/pdxmph/imgup&#34;&gt;imgup&lt;/a&gt; (which it turns out is an amazingly common name for things that make images go up to somewhere else.)&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
