<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Dev on Post-Candide</title>
    <link>https://blog.postcandide.151e.org/categories/dev/</link>
    <description>Recent content in Dev on Post-Candide</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <copyright>@2025 Post Candide blog powered by Hugo</copyright>
    <lastBuildDate>Tue, 07 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.postcandide.151e.org/categories/dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Preventing spurious yas-snippet expanding</title>
      <link>https://blog.postcandide.151e.org/posts/preventing-spurious-yas-snippet-expanding/</link>
      <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.postcandide.151e.org/posts/preventing-spurious-yas-snippet-expanding/</guid>
      <description>&lt;code&gt;yasnippet-snippets&lt;/code&gt; short keys can expand unexpectedly when completing identifiers with separators. A single &lt;code&gt;yas-buffer-local-condition&lt;/code&gt; check fixes it globally.</description>
    </item>
    <item>
      <title>Pre-launching tmux on macOS: a TCC rabbit hole</title>
      <link>https://blog.postcandide.151e.org/posts/prelauching-tmux-macos/</link>
      <pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.postcandide.151e.org/posts/prelauching-tmux-macos/</guid>
      <description>&lt;p&gt;I wanted something simple: a tmux server running at login, with a pre-configured session ready the moment I open iTerm2: just attach and go.&lt;/p&gt;&#xA;&lt;p&gt;Simple. Right. Right?&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-setup&#34;&gt;&#xA;The setup&#xA;&lt;a href=&#34;#the-setup&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The initial idea is rather clean: two launchd agents:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;com.user.tmux&lt;/code&gt; starts the tmux server at login via &lt;code&gt;exec tmux start-server&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;com.user.tmux-session-setup&lt;/code&gt; runs a bash script that creates a &lt;code&gt;login&lt;/code&gt; session with the windows and panes I want — a general shell, a services pane, a monitor window with &lt;code&gt;btop&lt;/code&gt; and SSH connections to my servers.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Both plists use &lt;code&gt;LimitLoadToSessionType = Aqua&lt;/code&gt; so they run in the GUI session, giving them (in theory) access to the user environment.&#xA;The session setup script polls for the tmux server to come up, then builds the session.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Locate npm packages</title>
      <link>https://blog.postcandide.151e.org/posts/locate-npm-packages/</link>
      <pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.postcandide.151e.org/posts/locate-npm-packages/</guid>
      <description>&lt;p&gt;As supply chain attacks are now a weekly &lt;a href=&#34;https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan&#34;&gt;occurrence&lt;/a&gt; on widely distributed packages, and we can have these installed as transitive dependencies of tools we use but not develop, here&amp;rsquo;s a quick fish function for OS X systems to scan for a given package (depends on &lt;a href=&#34;https://github.com/sharkdp/fd&#34;&gt;fd&lt;/a&gt;):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;npm_find&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;test&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$argv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;-lt&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Usage: npm_find &amp;lt;package&amp;gt; [directory]&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$argv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;test&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$argv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;-ge&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dirs&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$argv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dirs&lt;/span&gt; /Users /opt /usr /Applications&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;fd&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;node_modules/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$package&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/package\.json\$&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$dirs&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;--full-path&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&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;se&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;na&#34;&gt;-x&lt;/span&gt; jq &lt;span class=&#34;na&#34;&gt;-r&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;\(input_filename): \(.version)&amp;#34;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Also:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reloading a package under dev with straight</title>
      <link>https://blog.postcandide.151e.org/posts/reloading-dev-package-straight/</link>
      <pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.postcandide.151e.org/posts/reloading-dev-package-straight/</guid>
      <description>&lt;p&gt;While developing an emacs package, I do that from within the &lt;code&gt;straight/repos&lt;/code&gt; folder.&lt;/p&gt;&#xA;&lt;p&gt;If the changes only concern one file, it&amp;rsquo;s easy to just &lt;code&gt;eval-buffer&lt;/code&gt; to check things out.&lt;/p&gt;&#xA;&lt;p&gt;If the changes impact several files and/or it includes non-elisp files that needs to be copied to the &lt;code&gt;straight/build&lt;/code&gt; folder, it&amp;rsquo;s a pain in the neck: I need to &lt;code&gt;eval-buffer&lt;/code&gt; each file and call &lt;code&gt;straight-rebuild-package&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The following is a small function that will, interactively if you want, rebuild the package, handle the &lt;code&gt;autoloads&lt;/code&gt; and &lt;code&gt;eval-buffer&lt;/code&gt; the other files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make Backspace Work in emacs-eat</title>
      <link>https://blog.postcandide.151e.org/posts/backspace-in-emacs-eat/</link>
      <pubDate>Sun, 25 May 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.postcandide.151e.org/posts/backspace-in-emacs-eat/</guid>
      <description>&lt;p&gt;This post details my troubleshooting process for a specific issue I encountered while setting &lt;a href=&#34;https://codeberg.org/akib/emacs-eat/&#34;&gt;emacs-eat&lt;/a&gt;. For those unfamiliar, &lt;code&gt;emacs-eat&lt;/code&gt; is a(nother) terminal emulator designed to run directly within Emacs. Even though it was functional for the most part after following the installation instructions, there was one major hurdle: the &lt;code&gt;backspace&lt;/code&gt; key wasn&amp;rsquo;t working.&lt;/p&gt;&#xA;&lt;p&gt;Now, I&amp;rsquo;m genuinely confused about terminal emulators and the machinery behind it, so take the following as just a hint of where to look. I have no explanations why the setup wasn&amp;rsquo;t correct in the first place and why my seemingly incomplete solution works.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
