<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>hi, it&#39;s mike</title>
    <link>https://mike.puddingtime.org/tags/things/</link>
    <description>Recent content on hi, it&#39;s mike</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>mike@puddingtime.org (mike)</managingEditor>
    <webMaster>mike@puddingtime.org (mike)</webMaster>
    <copyright>© 2026, mike</copyright>
    <lastBuildDate>Tue, 13 Jun 2023 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://mike.puddingtime.org/tags/things/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Daily Notes for 2023-06-13</title>
      <link>https://mike.puddingtime.org/posts/2023-06-13-daily-notes/</link>
      <pubDate>Tue, 13 Jun 2023 00:00:00 +0000</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-06-13-daily-notes/</guid>
      <description>Figuring out connection points between Denote and non-Emacs apps like Things with custom links and elbow grease. Automating org dblock rendering. Making org-export output more amenable to SimpleCSS. Text expansion with espanso.</description>
      <content:encoded><![CDATA[<h2 id="making-links-to-pages-in-my-denote-web-export">Making links to pages in my Denote web export</h2>
<p>I&rsquo;m back and forth on whether to stick to org-gtd or to start using Things again. I wanted to re-tag some actions on the fly this morning and it took some extra typing I didn&rsquo;t want to do.  So far, my org-gtd and Denote usage haven&rsquo;t intersected, and there is no way I can think of that any of the existing mobile tools could do anything for me at all if they did.  So as I think about my Emacs/Denote/org estate, and how to decompose it and remix different pieces, there&rsquo;s a pretty clean perforated line between written notes and tasks, provided I can find a way to bridge the two.</p>
<p>One thing I used to do when I was a regular Bear user was create a Things project for all the people I had regular 1:1s with. I set up section headings for each person in the project under which I dropped actions I owed or had delegated. At the top of that project, I had a list of links to my 1:1 notes with each person to make it easier to get to past notes during a meeting without looking them up in Bear &ndash; just save the URL to their 1:1 file,  click the link, Bear opens to where I need it. This felt like a clean way to let two tools do what they&rsquo;re best at: Things does have some basic Markdown editing, but I don&rsquo;t generally want to embed writing/thinking in actions.</p>
<p>Unlike Bear, Emacs has the disadvantage of not being everywhere I would use Things, but since I&rsquo;m exporting my Denote stuff to the web, my notes do have a permanent URL, and it&rsquo;s derived from the filename of a given note, so it&rsquo;s easy to convert the file path to the URL.</p>
<p>This function copies that URL to the clipboard when I&rsquo;m in a note. No error- or sanity-checking: The results will be nonsense if I invoke it outside my Denote hierarchy, but I bound it to my Denote menu in Doom Emacs so it&rsquo;ll only come up when it&rsquo;s contextually appropriate:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nb">defun</span> <span class="nv">mph/convert-to-skyhook-url</span> <span class="p">()</span>
</span></span><span class="line"><span class="cl">  <span class="s">&#34;Converts the current buffer&#39;s path to a URL for the Skyhook notes.&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="p">(</span><span class="nb">interactive</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="p">(</span><span class="nb">let*</span> <span class="p">((</span><span class="nv">buffer-path</span> <span class="p">(</span><span class="nf">buffer-file-name</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">notes-directory</span> <span class="s">&#34;/Users/mph/org/notes/&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">relative-path</span> <span class="p">(</span><span class="nv">file-relative-name</span> <span class="nv">buffer-path</span> <span class="nv">notes-directory</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">html-path</span> <span class="p">(</span><span class="nf">concat</span> <span class="p">(</span><span class="nv">file-name-sans-extension</span> <span class="nv">relative-path</span><span class="p">)</span> <span class="s">&#34;.html&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">url-prefix</span> <span class="s">&#34;http://skyhook:8888/&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">url</span> <span class="p">(</span><span class="nf">concat</span> <span class="nv">url-prefix</span> <span class="nv">html-path</span><span class="p">)))</span>
</span></span><span class="line"><span class="cl">    <span class="p">(</span><span class="nv">kill-new</span> <span class="nv">url</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">(</span><span class="nf">message</span> <span class="s">&#34;Skyhook URL: %s&#34;</span> <span class="nv">url</span><span class="p">)))</span></span></span></code></pre></div>
<p>Then it&rsquo;s just dropping it into a Things project page and wrapping it in Markdown link markup.</p>
<p>There&rsquo;s a converse linking relationship between todos and notes, and I made something to address that, too:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="c1">;; updated to de-hard-code the # symbol -- any symbol is sanitized for use in a URL now</span>
</span></span><span class="line"><span class="cl"><span class="p">(</span><span class="nv">after!</span> <span class="nv">org</span>
</span></span><span class="line"><span class="cl">  <span class="p">(</span><span class="nv">org-link-set-parameters</span> <span class="s">&#34;things&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">:follow</span> <span class="p">(</span><span class="nb">lambda</span> <span class="p">(</span><span class="nv">label</span><span class="p">)</span> <span class="p">(</span><span class="nv">browse-url</span> <span class="p">(</span><span class="nf">concat</span> <span class="s">&#34;things:///search?query=&#34;</span> <span class="p">(</span><span class="nv">url-hexify-string</span> <span class="nv">label</span><span class="p">))))</span>
</span></span><span class="line"><span class="cl">    <span class="nb">:export</span> <span class="p">(</span><span class="nb">lambda</span> <span class="p">(</span><span class="nv">path</span> <span class="nv">desc</span> <span class="nv">backend</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">              <span class="p">(</span><span class="nb">cond</span>
</span></span><span class="line"><span class="cl">               <span class="p">((</span><span class="nf">eq</span> <span class="ss">&#39;html</span> <span class="nv">backend</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                <span class="p">(</span><span class="nf">format</span> <span class="s">&#34;&lt;a href=\&#34;things:///search?query=%s\&#34;&gt;Things: %s&lt;/a&gt;&#34;</span>
</span></span><span class="line"><span class="cl">                        <span class="p">(</span><span class="nv">url-hexify-string</span> <span class="nv">path</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                        <span class="p">(</span><span class="nv">org-html-encode-plain-text</span> <span class="nv">path</span><span class="p">)))))))</span></span></span></code></pre></div>
<p>It&rsquo;s a custom org external link for Things. Enter a link of this format:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-org" data-lang="org"><span class="line"><span class="cl">[[<span class="na">things:#foo</span>]]</span></span></code></pre></div>
<p>&hellip; and it will link to a Things search for <code>#foo</code>.</p>
<p>The <code>:export</code> section insures that when I publish the site, the <code>things://</code> URL scheme survives. When org-mode comes across protocols it doesn&rsquo;t recognize it mangles them. This ensures that <code>things:</code> URLs show up in the rendered HTML.</p>
<p>So if I&rsquo;m sitting down to a 1:1 with &ldquo;Joe Grudd,&rdquo; I&rsquo;ve got a link to the web version of his metanote from Things on a computer or phone. If I&rsquo;m looking at Joe Grudd&rsquo;s metanote in Emacs or on the web, I&rsquo;ve got a link that shows a search for anything tagged <code>#joeg</code> in Things.</p>
<h2 id="automating-dblock-driven-metanote-updates">Automating dblock-driven metanote updates</h2>
<p>I have metanotes set up in my Denote hierarchy for frequent people and topic tags. The metanotes are semi-automated at this point using <a href="https://protesilaos.com/emacs/denote#h:8b542c50-dcc9-4bca-8037-a36599b22779">Denote&rsquo;s dynamic blocks</a>.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-org" data-lang="org"><span class="line"><span class="cl"><span class="c">#+BEGIN: </span><span class="cs">denote-links</span><span class="c"> :regexp &#34;_rfc&#34;
</span></span></span><span class="line"><span class="cl"><span class="c">#+END:</span></span></span></code></pre></div>
<p>Just <code>C-c C-c</code> in that block and it expands to something like:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-org" data-lang="org"><span class="line"><span class="cl"><span class="c">#+BEGIN: </span><span class="cs">denote-links</span><span class="c"> :regexp &#34;_rfc&#34;
</span></span></span><span class="line"><span class="cl">- [[<span class="na">denote:20230613T083549</span>][<span class="nt">RFC - Crosstraining</span>]]
</span></span><span class="line"><span class="cl">- [[<span class="na">denote:20230613T083700</span>][<span class="nt">RFC - IT Portfolio</span>]]
</span></span><span class="line"><span class="cl">- [[<span class="na">denote:20230613T083726</span>][<span class="nt">RFC - Status and progress</span>]]
</span></span><span class="line"><span class="cl"><span class="c">#+END:</span></span></span></code></pre></div>
<p>All those Denote links are translated by org-publish during conversion to HTML, so a link to a metanote on the web server gets me to the HTML version of all the linked notes.</p>
<p>If I&rsquo;m on a laptop, getting to the metanotes is pretty easy: They&rsquo;re all in a metanote at the top of my Denote hierarchy, so that&rsquo;s easy enough to get to in &ldquo;full computer&rdquo; contexts.</p>
<p>The biggest hole in this workflow is that that dynamic blocks have to be updated. I semi-automated it yesterday with a save hook in my Denote directory that updates any dblocks in a file before it saves, but you have to be in a metanote for that to happen.</p>
<p>Not sure if there&rsquo;s a more efficient way to do it, but this automates the update process:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nb">defun</span> <span class="nv">mph/update-meta-dblocks</span> <span class="p">(</span><span class="nv">directory</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="s">&#34;Update dynamic blocks, save, and publish HTML for files with &#39;_meta&#39; in the name in the given DIRECTORY.&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="p">(</span><span class="nb">interactive</span> <span class="s">&#34;DSelect directory: &#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="p">(</span><span class="nb">let</span> <span class="p">((</span><span class="nv">files</span> <span class="p">(</span><span class="nf">directory-files</span> <span class="nv">directory</span> <span class="no">nil</span> <span class="s">&#34;\\.org$&#34;</span><span class="p">)))</span>
</span></span><span class="line"><span class="cl">    <span class="p">(</span><span class="nb">dolist</span> <span class="p">(</span><span class="nv">file</span> <span class="nv">files</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">      <span class="p">(</span><span class="nb">when</span> <span class="p">(</span><span class="nv">string-match-p</span> <span class="s">&#34;_meta&#34;</span> <span class="nv">file</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="p">(</span><span class="nb">let</span> <span class="p">((</span><span class="nv">org-file</span> <span class="p">(</span><span class="nf">concat</span> <span class="nv">directory</span> <span class="s">&#34;/&#34;</span> <span class="nv">file</span><span class="p">)))</span>
</span></span><span class="line"><span class="cl">          <span class="p">(</span><span class="nb">with-current-buffer</span> <span class="p">(</span><span class="nv">find-file-noselect</span> <span class="nv">org-file</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            <span class="c1">;; Suspend hooks temporarily</span>
</span></span><span class="line"><span class="cl">            <span class="p">(</span><span class="nf">run-hooks</span> <span class="ss">&#39;no-hooks</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            <span class="p">(</span><span class="nv">org-update-all-dblocks</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            <span class="p">(</span><span class="nv">save-buffer</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            <span class="p">))))))</span></span></span></code></pre></div>
<p>(The <code>run-hooks 'no-hooks</code> business is there to keep my post-save publishing hooks from running with each touch, which I <em>think</em> will make this safe to use as a pre-processing hook.) I think I&rsquo;m going to just use it as I remember it for a few days until I can see how much time it chews up. Maybe it&rsquo;s better run as a scheduled batch thing now and then.</p>
<h2 id="cleaning-up-org-publishing-exports">Cleaning up org publishing exports</h2>
<p>I also took the time to clean up HTML publishing last night. Emacs documentation ftw: I used the <a href="https://orgmode.org/manual/Publishing-options.html">publishing options page</a> to run down settings/variables and what they do. In particular:</p>
<h3 id="org-html-divs">org-html-divs</h3>
<p>I use SimpleCSS to save a few steps. <code>org-html-divs</code> lets you set the preamble, content, and postamble element types and id&rsquo;s,  so:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nb">setq</span> <span class="nv">org-html-divs</span>
</span></span><span class="line"><span class="cl">    <span class="o">&#39;</span><span class="p">((</span><span class="nv">preamble</span> <span class="s">&#34;header&#34;</span> <span class="s">&#34;preamble&#34;</span><span class="p">)</span> <span class="c1">;; set the preamble div to a &lt;header&gt; element with an id of &#34;preamble&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">(</span><span class="nv">content</span> <span class="s">&#34;main&#34;</span> <span class="s">&#34;content&#34;</span><span class="p">)</span> <span class="c1">;; etc.</span>
</span></span><span class="line"><span class="cl">      <span class="p">(</span><span class="nv">postamble</span> <span class="s">&#34;footer&#34;</span> <span class="s">&#34;postamble&#34;</span><span class="p">)))</span>
</span></span><span class="line"><span class="cl"><span class="p">(</span><span class="nb">setq</span> <span class="nv">org-export-with-author</span> <span class="no">nil</span><span class="p">)</span></span></span></code></pre></div>
<p>I kept the id&rsquo;s so I could have a reference for debugging and keep sight of org&rsquo;s nomenclature.</p>
<h3 id="org-html-preamble">org-html-preamble</h3>
<p>To get a SimpleCSS nav into place, markup has to go into the export&rsquo;s preamble:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nb">setq</span> <span class="nv">org-html-preamble</span> <span class="s">&#34;&lt;nav&gt;&lt;ul&gt;
</span></span></span><span class="line"><span class="cl"><span class="s">                           &lt;li&gt;&lt;a href=\&#34;/\&#34; class=\&#34;home\&#34;&gt;Home&lt;/a&gt;
</span></span></span><span class="line"><span class="cl"><span class="s">                           &lt;li&gt;&lt;a href=\&#34;/sitemap.html\&#34;&gt;All Notes&lt;/a&gt;
</span></span></span><span class="line"><span class="cl"><span class="s">                           &lt;/ul&gt;
</span></span></span><span class="line"><span class="cl"><span class="s">                         &lt;/nav&gt;
</span></span></span><span class="line"><span class="cl"><span class="s">                         &#34;</span><span class="p">)</span></span></span></code></pre></div>
<h3 id="org-html-head">org-html-head</h3>
<p>To pull in SimpleCSS, FuseJS, and a local style sheet:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nb">setq</span>
</span></span><span class="line"><span class="cl">      <span class="nv">org-html-head</span> <span class="s">&#34;&lt;link rel=\&#34;stylesheet\&#34; href=\&#34;https://cdn.simplecss.org/simple.min.css\&#34; /&gt;
</span></span></span><span class="line"><span class="cl"><span class="s">                     &lt;link rel=\&#34;stylesheet\&#34; href=\&#34;/local.css\&#34; /&gt;
</span></span></span><span class="line"><span class="cl"><span class="s">                     &lt;script src=\&#34;https://cdn.jsdelivr.net/npm/fuse.js@6.6.2\&#34;&gt;&lt;/script&gt;&#34;</span><span class="p">)</span></span></span></code></pre></div>
<h2 id="espanso">espanso</h2>
<p>I don&rsquo;t know what on Earth happened to TextExpander but wow it isn&rsquo;t good.</p>
<p>Looking around for a text expansion tool of some kind I came across <a href="https://espanso.org">espanso</a>. It&rsquo;s a snippet tool. It behaves about like yasnippet or TextMate snippets: Start typing a trigger phrase and it expands it for you.</p>
<p>Most of these things are wrapped in a GUI. espanso is configurable with a YAML file. It also has some cool stuff for handling regexps that allow you to use variables to your snippets. For instance:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl">- <span class="nt">regex</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;:tml\\((?P&lt;tag&gt;.*)\\)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">replace</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;[Items tagged `{{tag}}` in Things](things:///search?query=%23{{tag}})&#34;</span></span></span></code></pre></div>
<p>If you type <code>:tml(foo)</code> it&rsquo;ll expand to a Markdown link using <code>foo</code>.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">[<span class="nt">Items tagged `foo` in Things</span>](<span class="na">things:///search?query=%23foo</span>)</span></span></code></pre></div>
<p>(I&rsquo;m not sure, btw, how to do that in yasnippet and need to figure that out.)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Daily Notes for 2023-05-12</title>
      <link>https://mike.puddingtime.org/posts/2023-05-12-daily-notes/</link>
      <pubDate>Fri, 12 May 2023 00:00:00 +0000</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-05-12-daily-notes/</guid>
      <description>Automation vs. Augmentation, ChatGPT and ideology, day one of the Things/org experiment.</description>
      <content:encoded><![CDATA[<h2 id="automation-vs-dot-augementation">Automation vs. Augementation</h2>
<p><a href="http://www.zephoria.org/thoughts/archives/2023/04/21/deskilling-on-the-job.html">This is a thoughtful piece by danah boyd</a> that gets to some things I&rsquo;ve been thinking about re: AI.</p>
<blockquote>
<p>Whether you are in Camp Augmentation or Camp Automation, it’s really important to look holistically about how skills and jobs fit into society. Even if you dream of automating away all of the jobs, consider what happens on the other side. How do you ensure a future with highly skilled people? This is a lesson that too many war-torn countries have learned the hard way. I’m not worried about the coming dawn of the Terminator, but I am worried that we will use AI to wage war on our own labor forces in pursuit of efficiency. As with all wars, it’s the unintended consequences that will matter most. Who is thinking about the ripple effects of those choices?</p>
</blockquote>
<p>There is a lot of commentary <a href="https://www.reddit.com/r/MetaFilterMeta/comments/13chd82/how_many_people_are_feeling_or_fearing_the_impact/">in this r/metafiltermeta thread about AI</a>, which was framed from a place of anxiety:</p>
<blockquote>
<p>I&rsquo;m reading about AI&rsquo;s impact on coding, graphic design, video, motion graphics, architecture and law. I hear proponents say that they think AI will change jobs, and that smart workers will learn how to use it as an assistant, but when I review Silicon Valley&rsquo;s contributions to labor in the U.S., mostly I see entire fields gutted, and folks moved over to poorly paying gig economy work.</p>
</blockquote>
<p>The more thoughtful responses pointed, I think correctly, to the eventual Gartner Hype Cycle state of equilibrium you get to once you get unrealistic expectations out of the way, trudge through the salty marshes of &ldquo;told you it was all bullshit,&rdquo; and get to &ldquo;how is this thing going to be used day-to-day?&rdquo;</p>
<p>The people at the Peak of Inflated Expectations do what they always do: Try to solve their problems in a manner ill suited to the tool in front of them, or in a manner that is not reflective of the limitations of the model. The chorus waiting for them down at the bottom of the Trough of Disillusionment has no single motivation: Some of it is wise realism, forward thinking, and experience; some of it is whistling past the graveyard or just missing that &ldquo;productivity gains,&rdquo; like many things in technology and business, are not a series of home runs and grand slams, but rather singles and the occasional double. Reframed more bleakly, grinding down labor&rsquo;s ability to resist induced precarity is a game of inches.</p>
<p>Which is the long way around to saying that if the people who are pointing to offshoring and content-farming mania of the naughts and tens are correct in saying they&rsquo;re the closest analogies we have, and if danah boyd is right that &ldquo;we tend to optimize towards more intense work schedules whenever we introduce new technologies while downgrading the status of the highly skilled person,&rdquo; then it&rsquo;s going to mean fewer people working in AI-effected systems that are biased toward always looking for one more headcount they can get away with removing. It&rsquo;ll look different from the &ldquo;prompt engineering&rdquo; everyone imagines today. It&rsquo;ll be software companies figuring out how to integrate existing &ldquo;dumb&rdquo; systems with generative AI systems acting as synthesizers, with a few humans acting as QA on top of that process, working from a weakened position.</p>
<h2 id="chatgpt-is-an-ideology-machine">&ldquo;ChatGPT Is an Ideology Machine&rdquo;</h2>
<p><a href="https://jacobin.com/2023/04/chatgpt-ai-language-models-ideology-media-production/">Jacobin last month</a>:</p>
<blockquote>
<p>A wide variety of Marxists have also seen ideology as a form of kitsch. First articulated by the Marxist art critic Clement Greenberg in 1937, the notion of kitsch is “pre-digested form.” Among all the things we might say or think, some pathways are better traveled than others. The form of those paths is given; we don’t need to forge them in the first place. The constant release of sequels now has this quality of kitsch — we know exactly where we are when we start watching a Marvel movie. For Greenberg, the avant-garde was the formal adventurer, creating new meaning by making new paths. Hegemony and kitsch are combined in the output of GPT systems’ semantic packages, which might miss aspects of “the world” but faithfully capture ideology.</p>
</blockquote>
<h2 id="my-things-link-to-org-stuff">My Things link to org stuff</h2>
<p>Today I started using the org-protocol stuff <a href="/posts/2023-05-11-daily-notes/#connecting-things-todos-to-org-headings">I talked about yesterday</a> with a set of regular todos I added to Things. For my daily writing and journaling todos, I captured links to the headings from the org documents and pasted them into the notes field of the Things todo before marking them done. Clicking on those links brings up a new Emacs frame that jumps straight to the heading in the correct file.</p>
<p>That pretty much recreates the workflow I had with Bear and Things for other kinds of task/notes combinations, and it shows me how to use org-protocol and org-capture to do similar kinds of workflows where Emacs participates in the rest of my tools ecosystem.</p>
<p>So, promising trial experience. I&rsquo;m a little becalmed on heavy-duty task/work tracking right now, so I&rsquo;m satisfied to just note that the idea works and that I&rsquo;ll keep using it to find out where the edge cases are: Something always comes up.</p>
<p>The idea that keeps popping up in my head is that a lot of my past &ldquo;emacsimalism&rdquo; &ndash; a recurring phase I&rsquo;ve experienced over several decades &ndash; was due to the fact that Emacs was pretty much a technology island. The Mac builds weren&rsquo;t always very good, and the ways in which it could speak to the system around it were sort of flaky. But things like org-protocol and a little bit of utility glue with osascript do a lot to make it easier to find your way into and out of Emacs. You don&rsquo;t <em>have</em> to make it your everything because it can work well <em>alongside</em> other things that might suit your individual style better. The idea I&rsquo;m sort of nibbling around right now is that I don&rsquo;t like org-mode for <em>organization of work and tasks</em> so much as I like it for <em>organization of text and ideas</em>. It&rsquo;s less &ldquo;a smarter Things, OmniFocus, or Reminders,&rdquo; and more &ldquo;what I wish Ulysses had been.&rdquo;</p>
<p>Maybe that&rsquo;s why assorted org syntax implementations in more modern text editors (e.g. BBEdit, Sublime, Atom, VSCode) are always disappointing: They&rsquo;re usually just syntax highlighting and no smarts. Might as well just be doing Markdown at that point, because the <em>smarts</em> of org-mode pretty much live in Emacs and lisp. Without that, you&rsquo;re just quibbling over whether a backslash or an asterisk is better <code>emph</code> notation.</p>
<p>Anyhow, we&rsquo;ll leave it at that until there&rsquo;s something new to say. I think I&rsquo;ve visited this topic plenty.</p>
<h2 id="twitter">Twitter</h2>
<p>I disabled my Twitter account late last month, so I think I have a bit under two weeks for it to fully deactivate. I think I will thread the needle between making an <em>announcement</em> and merely noting that I have embarked on the process of closing my account by making it the last heading of today&rsquo;s post, unmentioned in the summary.</p>
<p>There&rsquo;s a needle to thread because my strong preference would be for people to give up on Twitter. So if you&rsquo;re someone with whom I might have some influence, I&rsquo;m happy for you to read this and do the primate thing &ndash; &ldquo;Hm, Mike is a thoughtful, ethical person whose ideas I tend to take under advisement, and he sees Twitter as, on balance, negative and harmful, so I will take that idea under advisement, as well.&rdquo;</p>
<p>That&rsquo;s all.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Daily Notes for 2023-05-11</title>
      <link>https://mike.puddingtime.org/posts/2023-05-11-daily-notes/</link>
      <pubDate>Thu, 11 May 2023 00:00:00 +0000</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-05-11-daily-notes/</guid>
      <description>BBEdit turns 30, Emacs update, Things, OmniFocus, etc.</description>
      <content:encoded><![CDATA[<h2 id="bbedit-turns-30">BBEdit turns 30</h2>
<p>Just after <a href="https://mike.puddingtime.org/posts/2023-05-10-daily-notes/">I was remembering it yesterday</a>, there&rsquo;s a <a href="https://news.ycombinator.com/item?id=35904320">nice appreciation of BBEdit going on over at HackerNews.</a> One comment captured my opinion pretty well:</p>
<blockquote>
<p>I read about BBEdit on HN a few months ago and realized it has one use-case where it excels: text transformation and regex search/replace across files. When it comes to this, no other editor I know can hold water: neither Sublime, nor VS Code, nor Vim. And forget about Emacs, as regexes need to be awkwardly double or triple backslashed.</p>
<p>Text transformations can be done via regex, predefined functions, or any scripting language, where the scripts will be listed in the menu.
Regex search/replace has a history of used patterns, so you can reuse them.</p>
<p>All in all, it is a very lightweight editor with excellent text transformation features that no other editor can offer.</p>
</blockquote>
<p>It is definitely my go-to for that kind of thing. I used to feel sort of guilty that I wasn&rsquo;t trying to get heavy-duty text transforms done from the shell, then I wised up: BBEdit makes it fast, reversible, repeatable, and visually discoverable. And it will plow through large files like nothing else. I keep a license around just for scenarios like &ldquo;need to do something to 2,000 Markdown files&rdquo; or what have you.</p>
<p>Also, my interactions with BareBones for support have been so amazingly helpful and cordial.</p>
<p>Thirty years old and still an evolving, high quality product that I reach for when &ldquo;I just need to get this task done.&rdquo;</p>
<h2 id="emacs-update">Emacs update</h2>
<p>The last few days I&rsquo;ve started getting reminders of a fundamental truth of Emacs life, which is that you will eventually push it a little too far with the new stuff and it starts getting punchy and stops feeling trustworthy.</p>
<p>I got a little excited about some tweaks, and I&rsquo;m glad I was applying them one at a time and seeing what happened, because when one of them hard-locked Emacs it was simple to just go back into my <code>config.org</code> file,  <code>:tangle no</code> the offending config, and comment out the problematic package in <code>packages.el</code>.</p>
<p>This is a part of Emacs life, though, that Doom Emacs has made better: It makes configuration simple. I love being able to organize config blocks under headings I can manage with org-mode structure editing, and I appreciate the simplicity of package management. There are a few more steps to get some things done, but they&rsquo;re simpler steps than how I used to manage Emacs.</p>
<p>When I hard-locked it yesterday it was a small bummer but it was also easy to undo the change and get back up and running. I&rsquo;ve felt the difference in how I feel when I sit down to use Emacs over the past while: It has gone from &ldquo;well, I wonder what sort of fatal self-own I&rsquo;m going to suffer from today&rdquo; to &ldquo;this is a stable tool I like using and don&rsquo;t worry about much.&rdquo;</p>
<p>It&rsquo;s such an open ecosystem, and extending it involves so much complexity, that the bits like &ldquo;oh, added that package and it crashed trying to open a file&rdquo; are just going to be part of it. But you deal with that by following a &ldquo;no new toys with an unsaved buffer of something that matters to you&rdquo; rule and making incremental changes.</p>
<h2 id="organizing-work-todo-apps">Organizing work &ndash; todo apps</h2>
<p>I spent a little time watching reviews and comparisons of Things and OmniFocus 3 today. Last night I started putting together a 90-day plan in org-mode and was enjoying the &ldquo;actions/prose&rdquo; hybrid of org-mode, but also thinking &ldquo;this is getting complex and these lists are pretty sequential and interdependent &hellip; I wonder if I want to put this weight on org-mode.&rdquo;</p>
<p>So I watched the videos, downloaded OmniFocus 3 again (I&rsquo;ve had a license for a few years), and took a stab at entering a few small chunks of work to see how it felt.</p>
<p>Not great.</p>
<p>I don&rsquo;t spend a lot of time worrying too much about how apps look, but OF is just sort of unappealing in that regard.</p>
<p>When I look at Things, there&rsquo;s a lot of visual appeal. You can&rsquo;t do much to control it, but you don&rsquo;t need to. The color scheme and roominess of the interface really work for me. When I look at an org-mode buffer, it is a very different aesthetic. I recently stopped doing mixed-mode and just live in good old Fira Code in a single size. But I&rsquo;ve got good light and dark themes and once I figured out how to control line-spacing it opened things up a little and made it feel less like a &hellip; like smelly ASCII cave. Looking over at MailMate, I can also exercise a little bit of control, so even though it is a visually simple app, the bit of decoration it does have is clean and I can pick my typefaces.</p>
<p>OmniFocus has some customization options, but I&rsquo;ve always struggled with its font sizes, sort of resenting the iOS-style &ldquo;small/medium/large/larger/very larger&rdquo; restriction on my choices, especially because there&rsquo;s a wide range of text size going on within the UI. It is also cramped. The UI is packed tight and even lists of project headings feel claustrophobic and closed in.</p>
<p>Things 3, one might respond, has next to no customization, either. Fewer choices than OF3, even. But it&rsquo;s just better done out of the box. It reminds me of something the UX designers at Puppet would have come up with in that it feels light and open.</p>
<p>That&rsquo;s a lot of time on looks, but if you have to look at the thing all day, they start mattering.</p>
<p>I think mostly I just managed to remind myself that I really loved the <em>idea</em> of OmniFocus years and years ago, but in practice it never stuck for long.</p>
<p>Things is harder to discard. It&rsquo;s just pleasant to work with, it&rsquo;s logically organized, the mobile apps are very good, and I really like the way you can organize a project with headings that are loose enough to have whatever meaning you care to give them: Milestones, themes, phases, or whatever. There&rsquo;s light Markdown sprinkled into the text areas, too. If you were not hung up on ultimate portability, the typography is clean and legible enough that you could manage prose notes in Things.</p>
<p>Back in the day, when I was using <a href="https://bear.app">Bear</a> a lot for note-taking in conjunction with Things as my task manager, I would just include a link to a Bear note in the notes field in Things. So, for instance, the Things project I had set up for my team had a heading for each member of the team where followup items went, and a link to the individual team member&rsquo;s note in Bear for prose. It worked pretty well.</p>
<h3 id="connecting-things-todos-to-org-headings">Connecting Things todos to org headings</h3>
<p>I wondered if I could do that with Emacs and an org-mode heading, and yes, I can.</p>
<p><a href="https://emacs.stackexchange.com/questions/47986/jump-to-org-mode-heading-from-external-application">This StackOverflow post</a> provided two bits of code to add navigation to a given org-mode heading using <code>org-protocol</code> and to yank the link from a given heading. It points to <a href="https://github.com/xuchunyang/setup-org-protocol-on-mac">this page</a> on how to make a simple little AppleScript app that registers <code>org-protocol</code> as a valid URL handler in macOS. I bound the link-grabbing function to <code>SPC n L</code> in Doom, and gave it a try by pasting the link into a Things note &hellip; yup &hellip; worked: Dropped me into a new Emacs GUI window with the point on the org-heading.</p>
<figure><img src="/img/things_emacs.jpg"
    alt="Screenshot of a Things todo with a link to a heading in an org-mode buffer"><figcaption>
      <h4>Things with an org-protocol link pointing to an org-mode blog post heading</h4>
    </figcaption>
</figure>

<p>Will I use it?</p>
<p>I don&rsquo;t know!</p>
<p>I remember my Things/Bear workflow being a very nice harmonization of two different kinds of work that lived in single-function apps. org-mode blurs those lines all on its own. I <a href="/posts/2023-05-02-daily-notes/#my-org-contacts-file-and-things">wrote a little about this several days ago</a> in relationship to my plaintext PRM.</p>
<p>I really like how clean Things is for capturing stuff from all sorts of places on my phone and computer. I like its seamless integration with existing macOS and iOS calendars and Reminders. I can do that stuff in org-mode and Emacs, but it takes a little extra work and feels more brittle. There are mobile apps for org-mode, like beorg, but they do feel a little clunkier than Things.</p>
<p>So I guess I&rsquo;ll take that small chunk of planning I was working on in Things, expand it to more stuff,  and see how it feels when I can link in to org-mode documents as easily as I can now.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Daily Notes for 2023-05-02</title>
      <link>https://mike.puddingtime.org/posts/2023-05-02-daily-notes/</link>
      <pubDate>Tue, 02 May 2023 00:00:00 -0700</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-05-02-daily-notes/</guid>
      <description>A Mackup/Dropbox glitch, integrating org-contacts and Things, conversations not interviews.</description>
      <content:encoded><![CDATA[<h2 id="mackup-and-dropbox">Mackup and Dropbox</h2>
<p>I recently recommended <a href="https://github.com/lra/mackup">Mackup</a>, a Mac config syncronization tool, but I&rsquo;m having a few issues with it now. In general, it does a pretty good job with most apps, but I ran into a weird bug with Mailmate where it kept forgetting all my settings. After a few go-rounds I opened up the Console and searched for Mailmate messages and found it wasn&rsquo;t able to write to its prefs file. I put Mailmate in Mackup&rsquo;s skip list, removed the symlinks and let it write its files again and all was well. Searching Mackup&rsquo;s issues, <a href="https://github.com/lra/mackup/issues/1891">I found someone experiencing a similar issue with Xcode</a> and learned it seems to be a thing with Dropbox and iCloud and certain apps. In the case of Dropbox, it has come with that app&rsquo;s move to the <code>CloudStorage</code> folder.</p>
<p>I&rsquo;m not sure this is enough to get me quit using it. It works quite well with my Emacs config, gpg, ssh, zsh, and other stuff. I also like using it for syncing my <code>~/bin</code>.  It doesn&rsquo;t work so well with Terminal.app, and gets a little weird now and then with a few other things.</p>
<p>Just &hellip; proceed with caution, I guess is the advice.  For now I&rsquo;ve got Mailmate, Terminal.app, karabiner, and Bartender on the skip list. That&rsquo;s fine for most of them: They&rsquo;re generally best configured a little different between laptop and desktop anyhow.</p>
<h2 id="my-org-contacts-file-and-things">My  org-contacts file and Things</h2>
<p>I stopped using mu4e. I was uncomfortable with the interplay between several different clients (both automated and user-facing) and my Maildir and IMAP. That left a a small hole in the functionality I&rsquo;d built into my org-mode PRM: being able to quickly mail a contact from a Doom Emacs menu. So I made a quick function that just turns the email address in the org-contacts record into a <code>mailto:</code> link and <code>open</code> call to the system that invokes my preferred mail client (Mailmate at this point). So if the point is over an org-contacts heading I can <code>SPC C m</code> (&ldquo;leader - CRM - mail&rdquo;)  and get a new message.</p>
<p>I&rsquo;m on the record somewhere about not liking the emphasis on URL schemes for Mac automation. I don&rsquo;t like the ins and outs of encoding values and cramming data into that format. At the same time, it <em>does</em> seem to have kept the idea of Mac end-user automation from fading away. So as I sat there looking at my new mailto function, I wondered about how all the contact data I&rsquo;m keeping could interact with the wider Mac ecosystem in a sort of &ldquo;if needed&rdquo; manner, hence this little thing.</p>
<p>It just provides an interactive menu for selecting a contact activity (ping, call, write, etc.) and an interactive date picker, then makes a Thing todo that includes the tags for the contact, with a &ldquo;start date.&rdquo; I can get at it with <code>SPC C g</code> (&ldquo;leader CRM thinGs&rdquo;).  I don&rsquo;t mean to use it? I was just curious. I&rsquo;m not sure.</p>
<p>What I am learning as I use org-mode day-to-day again is that there are things that come naturally to it and that do not come naturally to it. I&rsquo;ve got working integrations with my calendar, for instance, but calendar syncing is another one of those things that eats the one thread you have to work with when it runs, and sometimes it does mysterious things if you mess with a plaintext representation of a more complex data structure that was never written with direct human interaction in mind.</p>
<p>That&rsquo;s always the struggle with Emacs: What <em>can</em> it do, and what <em>should</em> it do?</p>
<p>The temptation is to crawl into a uni-environment and torture everything into some kind of alignment, but that&rsquo;s brittle. It might <em>feel</em> good if your temperament or proclivities lead you to feeling comfortable with that particular shape, but there are tradeoffs whether you acknowledge them or not. In this particular case, the line I am sensing is the line between &ldquo;getting things done&rdquo; in a very mixed, tactical, &ldquo;chores, obligations, and interrupts&rdquo; kind of way, and getting things done in a very &ldquo;life is an information problem&rdquo; kind of way.</p>
<p>I love org-mode as a way of organizing information and thoughts. In particular, I am very fond of all the refiling capabilities it offers, because ideas and information can be shuffled around between different contexts inside the broader org-mode context without lifting a hand from the keyboard. As a day-to-day &ldquo;chores and household projects&rdquo; tool, I&rsquo;m a little less certain about it, mainly because of the mobile piece. <a href="https://beorgapp.com">beorg</a> is great, but it is also a little bit of work to use, and its syncing model is borrowed, so it&rsquo;s not as good as a purpose-built solution. Further, it is not consistent with my desktop org-mode environments when it comes to things like the agenda views.</p>
<p>So, you know, the interesting thing to me becomes &ldquo;how can this sophisticated text manipulation environment fit into a broader toolkit?&rdquo; How can all these things interconnect and complement each other? What are the kinds of work that makes sense living in a purpose-built tool because their typical context favors less thinking and less complexity, vs. the kinds of work that are broadly the same thing (&ldquo;a thing I need to do&rdquo;) that benefit from more thinking and more complexity? What kinds of tasks can be &ldquo;dead&rdquo; and in a little purpose-built silo, and what kinds of tasks benefit from a little bit of added complexity to exist in a better context? How could a thing move from one environment to the other?</p>
<p>Interesting to me, anyhow, because my tendency, at rest &ndash; my unconscious tendency &ndash; is to want everything in one tool, but I continue to learn over time that the one-tool outlook breeds its own kinds of complexity.</p>
<p>Anyhow, here&rsquo;s that function. It works okay so far. The one glitch is that the Things URL scheme won&rsquo;t make a tag if it doesn&rsquo;t exist, so I had to go in and tag an existing todo with all my contact types (friend, network, recruiter, etc.) to get the function to properly tag a contact todo.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span class="line"><span class="cl"><span class="p">(</span><span class="nb">defun</span> <span class="nv">mph/org-contacts-to-things</span> <span class="p">(</span><span class="nv">contact-kind</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="s">&#34;Create a Things to-do item based on the current Org Contacts record.
</span></span></span><span class="line"><span class="cl"><span class="s">   CONTACT-KIND is a string that specifies the kind of contact (&#39;ping&#39;, &#39;call&#39;, &#39;write&#39;, &#39;schedule&#39;, or &#39;follow up&#39;).&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="p">(</span><span class="nb">interactive</span>
</span></span><span class="line"><span class="cl">   <span class="p">(</span><span class="nf">list</span>
</span></span><span class="line"><span class="cl">    <span class="p">(</span><span class="nf">completing-read</span> <span class="s">&#34;Contact Kind: &#34;</span> <span class="o">&#39;</span><span class="p">(</span><span class="s">&#34;ping&#34;</span> <span class="s">&#34;call&#34;</span> <span class="s">&#34;write&#34;</span> <span class="s">&#34;schedule&#34;</span> <span class="s">&#34;follow up&#34;</span><span class="p">))))</span>
</span></span><span class="line"><span class="cl">  <span class="p">(</span><span class="nb">let*</span> <span class="p">((</span><span class="nv">name</span> <span class="p">(</span><span class="nv">org-entry-get</span> <span class="no">nil</span> <span class="s">&#34;Name&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">email</span> <span class="p">(</span><span class="nv">org-entry-get</span> <span class="no">nil</span> <span class="s">&#34;Email&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">phone</span> <span class="p">(</span><span class="nv">org-entry-get</span> <span class="no">nil</span> <span class="s">&#34;Phone&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">note</span> <span class="p">(</span><span class="nf">read-string</span> <span class="s">&#34;Note: &#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">notes</span> <span class="p">(</span><span class="nf">format</span> <span class="s">&#34;Email: %s\nPhone: %s\nNote: %s&#34;</span> <span class="nv">email</span> <span class="nv">phone</span> <span class="nv">note</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">start-date</span> <span class="p">(</span><span class="nv">org-read-date</span> <span class="no">nil</span> <span class="no">nil</span> <span class="no">nil</span> <span class="s">&#34;Start Date: &#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">start-date-string</span> <span class="p">(</span><span class="nf">format-time-string</span> <span class="s">&#34;%Y-%m-%d&#34;</span> <span class="p">(</span><span class="nv">org-time-string-to-time</span> <span class="nv">start-date</span><span class="p">)))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">tags</span> <span class="p">(</span><span class="nv">org-get-tags</span> <span class="no">nil</span> <span class="no">t</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">tag-string</span> <span class="p">(</span><span class="nb">if</span> <span class="nv">tags</span> <span class="p">(</span><span class="nf">mapconcat</span> <span class="ss">&#39;identity</span> <span class="nv">tags</span> <span class="s">&#34;,&#34;</span><span class="p">)</span> <span class="s">&#34;&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">title</span> <span class="p">(</span><span class="nf">format</span> <span class="s">&#34;%s: %s&#34;</span> <span class="nv">contact-kind</span> <span class="nv">name</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">         <span class="p">(</span><span class="nv">url</span> <span class="p">(</span><span class="nf">format</span> <span class="s">&#34;things:///add?title=%s&amp;notes=%s&amp;when=%s&amp;tags=%s&#34;</span>
</span></span><span class="line"><span class="cl">                      <span class="p">(</span><span class="nv">url-encode-url</span> <span class="nv">title</span><span class="p">)</span> <span class="p">(</span><span class="nv">url-encode-url</span> <span class="nv">notes</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                      <span class="p">(</span><span class="nv">url-encode-url</span> <span class="nv">start-date-string</span><span class="p">)</span> <span class="p">(</span><span class="nv">url-encode-url</span> <span class="nv">tag-string</span><span class="p">))))</span>
</span></span><span class="line"><span class="cl">    <span class="p">(</span><span class="nv">start-process-shell-command</span> <span class="s">&#34;open&#34;</span> <span class="no">nil</span> <span class="p">(</span><span class="nf">format</span> <span class="s">&#34;open \&#34;%s\&#34;&#34;</span> <span class="nv">url</span><span class="p">))))</span></span></span></code></pre></div>
<h2 id="conversations-not-interviews">Conversations, not interviews</h2>
<p>Refreshing interview closer of the month:</p>
<p>&ldquo;We have a few minutes left, any questions of me?&rdquo;</p>
<p>&ldquo;No. I came into this thinking you&rsquo;d either say &lsquo;did you even read the job description? Now good day while I go fire the recruiter,&rsquo; or you&rsquo;d see something that would lead you to want a conversation, which I hope we&rsquo;ll continue so I can learn more.&rdquo;</p>
<p>And there we were, having a conversation.</p>
<p>I&rsquo;ve been very lucky to have had several <em>conversations</em> recently. It&rsquo;s reminding me of the times I had <em>interviews</em> and how those things went wrong down the road. It&rsquo;s great to end a conversation hearing the person you were conversing with say &ldquo;wow, the time flew by &hellip; but this felt so organic.&rdquo; You can enter a conversation with curiosity, and with a good conversational partner you can see where things go, make connections to your experience in the moment, change course or call up other experiences when they say &ldquo;well, that&rsquo;s not quite what we&rsquo;re dealing with here.&rdquo; That&rsquo;s much better than  pre-thinking a bunch of answers and poring over &ldquo;ten most common questions&rdquo; or (if Nigel or Chris are reading) &ldquo;you&rsquo;re trapped in a 20&rsquo; blender&rdquo; scenarios.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
