<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Back to Basics on Alexis Couvreur</title><link>https://www.alexiscouvreur.fr/series/back-to-basics/</link><description>Recent content in Back to Basics on Alexis Couvreur</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 21 Oct 2026 00:00:00 -0400</lastBuildDate><atom:link href="https://www.alexiscouvreur.fr/series/back-to-basics/index.xml" rel="self" type="application/rss+xml"/><item><title>.tool-versions: Same Versions in Dev and CI</title><link>https://www.alexiscouvreur.fr/blog/tool-versions/</link><pubDate>Wed, 21 Oct 2026 00:00:00 -0400</pubDate><guid>https://www.alexiscouvreur.fr/blog/tool-versions/</guid><description>&lt;p&gt;Work on a few projects and you start collecting version managers.
&lt;a href="https://github.com/nvm-sh/nvm"&gt;nvm&lt;/a&gt; for Node, &lt;a href="https://sdkman.io"&gt;SDKMAN&lt;/a&gt; for Java,
&lt;a href="https://github.com/pyenv/pyenv"&gt;pyenv&lt;/a&gt; for Python, &lt;a href="https://github.com/tfutils/tfenv"&gt;tfenv&lt;/a&gt;
for Terraform. Each one has its own install, its own setup in your shell, and its own
file: &lt;code&gt;.nvmrc&lt;/code&gt;, &lt;code&gt;.sdkmanrc&lt;/code&gt;, &lt;code&gt;.python-version&lt;/code&gt;, &lt;code&gt;.terraform-version&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="one-manager-per-language-doesnt-scale"&gt;One manager per language doesn&amp;rsquo;t scale&lt;/h2&gt;
&lt;p&gt;They do their job. Node has had &lt;code&gt;.nvmrc&lt;/code&gt; for years, so pinning a version isn&amp;rsquo;t the hard
part. Keeping all those managers around is. Every new project can mean one more on
every laptop, and CI has to be told the same versions again, in its own way.&lt;/p&gt;</description></item><item><title>direnv: Onboarding in One cd</title><link>https://www.alexiscouvreur.fr/blog/direnv/</link><pubDate>Tue, 20 Oct 2026 10:00:00 -0400</pubDate><guid>https://www.alexiscouvreur.fr/blog/direnv/</guid><description>&lt;p&gt;Most of what I read these days is about something new. A new model, a new agent, a
new way to not write code. Fine. This post goes back to basics: a small tool that has
been around for years and quietly removed a whole category of onboarding problems at
work.&lt;/p&gt;
&lt;p&gt;The tool is &lt;a href="https://direnv.net"&gt;direnv&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="the-problem"&gt;The problem&lt;/h2&gt;
&lt;p&gt;Every project needs an environment to run. Default config, like which Vault to talk to
or the log level. And secrets, like a database password. Before, everyone kept a local
&lt;code&gt;.env&lt;/code&gt; with all of that copied in by hand. It worked on day one. Then a password was
rotated or a default changed, and your copy was quietly out of date. And since that
file was full of real values, it was always one &lt;code&gt;.gitignore&lt;/code&gt; slip away from a commit.&lt;/p&gt;</description></item></channel></rss>