joshua.seigler.net - softwarePersonal homepage of Joshua Seigler2025-07-04T00:00:00Zhttps://joshua.seigler.net/Tools of the trade2025-05-15T00:00:00Zhttps://joshua.seigler.net/posts/tools-of-the-trade/<p>Everyone has different tools that they find especially effective. Here are some I have found with a few words about why I like them.</p>
<blockquote>
<p>Update: I made a <a href="https://joshua.seigler.net/uses">/uses</a> page that lists these tools and many others I like.</p>
</blockquote>
<h3 id="mise-en-place" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/tools-of-the-trade/#mise-en-place" aria-hidden="true"></a> <a href="https://mise.jdx.dev/" target="_blank" rel="noopener">mise-en-place</a></h3>
<p>Universal dev tool version manager. Specify tool versions in a config file and this tool can ensure that they are installed and active when entering the project directory. Amazing for getting a new dev environment set up in seconds. Replaces <code>asdf</code>, <code>nvm</code>, <code>pyenv</code>, <code>venv</code>, <code>rbenv</code>, and many other tool-specific version managers. Supports an incredible number of tools thanks to compatibility with <code>asdf</code>.</p>
<p>It also supports installing specific global tools, like <code>angular-cli</code> from <code>npm</code>, or <code>stack-pr</code> from <code>pipx</code>.</p>
<h3 id="stack-pr" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/tools-of-the-trade/#stack-pr" aria-hidden="true"></a> <a href="https://github.com/modular/stack-pr" target="_blank" rel="noopener">stack-pr</a></h3>
<p>Open source tool for <a href="https://www.stacking.dev/" target="_blank" rel="noopener">stacking PRs</a>.</p>
<p>PR stacks are, as far as I can tell, the best way to manage large features in git. I first heard about this practice in a series of blog posts from Graphite, a company offering free PR-stacking software and related paid services. But you don’t need a custom CI flow or managed service for stacking to work - this CLI tool or one of the others at <a href="https://www.stacking.dev/" target="_blank" rel="noopener">stacking.dev</a> can take care of this.</p>
<p>If you start using PR stacks your whole company will start copying you.</p>
<h3 id="xc" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/tools-of-the-trade/#xc" aria-hidden="true"></a> <a href="https://xcfile.dev/" target="_blank" rel="noopener">xc</a></h3>
<p>Markdown based task runner.</p>
<p>Define tasks in code blocks in markdown, and call them from the CLI. Serves as both task definition and documentation.</p>
<h3 id="pd2slack" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/tools-of-the-trade/#pd2slack" aria-hidden="true"></a> <a href="https://github.com/sidpremkumar/pd2slack" target="_blank" rel="noopener">pd2slack</a></h3>
<p>Simple python script to update the members of a Slack group such as <code>@oncall</code> to match the active member(s) of a PagerDuty schedule. This replaces several expensive SAAS services.</p>
<h3 id="syncthing" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/tools-of-the-trade/#syncthing" aria-hidden="true"></a> <a href="https://syncthing.net/" target="_blank" rel="noopener">SyncThing</a></h3>
<p>P2P alternative to Dropbox, supports mobile and desktop. Synchronize folders of content across all my devices.</p>
<h3 id="obsidian" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/tools-of-the-trade/#obsidian" aria-hidden="true"></a> <a href="https://obsidian.md/" target="_blank" rel="noopener">Obsidian</a></h3>
<p>For notes and reference. Sync across devices with <code>syncthing</code>.</p>
<h3 id="keepassxc" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/tools-of-the-trade/#keepassxc" aria-hidden="true"></a> <a href="https://keepassxc.org/" target="_blank" rel="noopener">KeePassXC</a></h3>
<p>For passwords. Sync across devices with <code>syncthing</code>.</p>