joshua.seigler.net - software Personal homepage of Joshua Seigler 2025-06-28T00:00:00Z https://joshua.seigler.net/ Tools of the trade 2025-05-15T00:00:00Z https://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>