{"id":38,"date":"2025-10-16T10:10:52","date_gmt":"2025-10-16T15:10:52","guid":{"rendered":"https:\/\/jcshort.net\/?p=38"},"modified":"2025-10-16T10:10:53","modified_gmt":"2025-10-16T15:10:53","slug":"mise-en-place-a-better-asdf-vm","status":"publish","type":"post","link":"https:\/\/jcshort.net\/?p=38","title":{"rendered":"Mise-en-place: a better asdf-vm"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In a <a href=\"\/?p=19\">previous post<\/a>, I recommended <a href=\"https:\/\/asdf-vm.com\">asdf-vm <\/a>as a general tool manager.  Since then, asdf has undergone a <a href=\"https:\/\/asdf-vm.com\/guide\/upgrading-to-v0-16.html\" data-type=\"link\" data-id=\"https:\/\/asdf-vm.com\/guide\/upgrading-to-v0-16.html\">rewrite from bash to go,<\/a> and broken its plugin ecosystem as a consequence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enter <a href=\"https:\/\/mise.jdx.dev\">mise-en-place<\/a>, a competing tool manager that mostly just works for most tools without plugins, and has gone the extra step of providing binary builds for historical versions of tools like Terraform that were not originally published for alternative architectures like ARM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s an example direnv integration:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php \">$ <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'use mise'<\/span> &gt; .direnv\n$ <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'layout python'<\/span> &gt;&gt; .direnv\n$ mise <span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">python<\/span>@3.13\n$ <span class=\"hljs-title\">direnv<\/span> <span class=\"hljs-title\">allow<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Mise&#8217;s default config file is <code>mise.toml<\/code>, but it can read .tool-versions if desired.  This can be disabled by setting <code>MISE_OVERRIDE_TOOL_VERSIONS_FILENAMES=none<\/code> in your environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In a previous post, I recommended asdf-vm as a general tool manager. Since then, asdf has undergone a rewrite from bash to go, and broken its plugin ecosystem as a consequence. Enter mise-en-place, a competing tool manager that mostly just works for most tools without plugins, and has gone the extra step of providing binary [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-38","post","type-post","status-publish","format-standard","category-tech","entry"],"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":"jshort","author_link":"https:\/\/jcshort.net\/?author=2"},"_links":{"self":[{"href":"https:\/\/jcshort.net\/index.php?rest_route=\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jcshort.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jcshort.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jcshort.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jcshort.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=38"}],"version-history":[{"count":0,"href":"https:\/\/jcshort.net\/index.php?rest_route=\/wp\/v2\/posts\/38\/revisions"}],"wp:attachment":[{"href":"https:\/\/jcshort.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jcshort.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jcshort.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}