<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Santiago Botto</title>
    <description>The latest articles on DEV Community by Santiago Botto (@sbotto).</description>
    <link>https://dev.to/sbotto</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3428224%2F232d5d5c-0f03-403e-8e5b-5faa36f20bc8.png</url>
      <title>DEV Community: Santiago Botto</title>
      <link>https://dev.to/sbotto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sbotto"/>
    <language>en</language>
    <item>
      <title>The day I became a Programmer: tales of a DevOps Engineer with Impostor Syndrome</title>
      <dc:creator>Santiago Botto</dc:creator>
      <pubDate>Wed, 03 Dec 2025 17:49:33 +0000</pubDate>
      <link>https://dev.to/sbotto/the-day-i-became-a-programmer-tales-of-a-devops-engineer-with-impostor-syndrome-55a0</link>
      <guid>https://dev.to/sbotto/the-day-i-became-a-programmer-tales-of-a-devops-engineer-with-impostor-syndrome-55a0</guid>
      <description>&lt;p&gt;&lt;em&gt;At some point along the way, without even realizing it, I essentially became a programmer.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Once upon a time...
&lt;/h2&gt;

&lt;p&gt;I was working with servers, installing and reinstalling OSs, dealing with package managers that were always causing issues when having to work with dependencies that were either too old or too new, manually setting up backups at the FS level, fighting with some servers providers because they were too slow to deploy new hardware, and a long etcetera...&lt;/p&gt;

&lt;p&gt;I was a Linux sysadmin, then Windows sysadmin as well, and then a Cloud Architect because everyone wanted to migrate to THE CLOUD and have their own EC2 instance because AWS was the current buzzword.&lt;/p&gt;

&lt;p&gt;Some time after that, I became a DevOps engineer, started managing infra as code, but it wasn't really programming, it was simply writing HCL and sometimes some bash scripts.&lt;/p&gt;

&lt;p&gt;And then, at some point, everything started being either a YAML file for Kubernetes deployments, a JS script for APIs or proxies, or a Lambda function written in Python for some backend stuff.&lt;/p&gt;




&lt;h2&gt;
  
  
  This proposed a paradigm shift...
&lt;/h2&gt;

&lt;p&gt;Why would you need a server when everything is &lt;em&gt;serverless&lt;/em&gt;? Why would you even need a backup when you simply have a file that you host on GitHub and deploy to either a k8s cluster or a platform like Cloudflare Workers?&lt;/p&gt;

&lt;p&gt;Has something failed? Has someone manually updated something and broke everything? Just redeploy! Is the platform having issues? Just redeploy somewhere else! You can now move on with your day like nothing happened.&lt;/p&gt;

&lt;p&gt;Sometimes I even feel like there's no longer a need for "the infra guy"; there's always a platform to do whatever it is that the dev needs, so what's the point? But then, the issues appear and you need someone who knows DNS, for example, and you're glad you have someone that was were there at the beginning of times (aka "the hosting provider era").&lt;/p&gt;

&lt;p&gt;​&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhsuua8igtd1mx26b6yt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhsuua8igtd1mx26b6yt.jpg" alt="Lord Elrond saying " width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;​&lt;/p&gt;

&lt;p&gt;Back then, we lacked several safety nets that we have today, and had no self-service platforms like Cloudflare to package everything nicely into a single thing. We were essentially full stack devs but for the Internet as a whole: DNS, Email, HTTP, DB, backups, and so forth; we handled it all with nothing but bash scripts and a prayer. The closest thing to Cloudflare I had when I started was a DNS cluster built with cPanel in DNS-only mode, and docker was just a person employed in a port to load and unload ships.&lt;/p&gt;

&lt;p&gt;The times, they are a-changing...&lt;/p&gt;




&lt;h2&gt;
  
  
  I still don't fully feel like a programmer, though...
&lt;/h2&gt;

&lt;p&gt;I usually feel stuck in a limbo of not knowing exactly where I fit in, or what's my place in this "new" Internet.&lt;/p&gt;

&lt;p&gt;I'm writing Python when I work on &lt;a href="https://keeperhub.com/" rel="noopener noreferrer"&gt;KeeperHub&lt;/a&gt;, and Go for my RPC proxy (&lt;a href="https://github.com/project-aethermesh/aetherlay" rel="noopener noreferrer"&gt;aetherlay&lt;/a&gt;) and some other tools I'm building, but still feels a bit off-brand for me, as if this wasn't where I belong and I'm just posing &lt;em&gt;(which I think would be considered as "Impostor Syndrome")&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It seems that everything has turned into code, slowly but surely, and I guess I'm here simply due to the fact that I don't fight the current... If the IT trends go in one direction and that direction makes sense, I flow with it. Be water, my friend, as Bruce Lee used to say.&lt;/p&gt;

</description>
      <category>career</category>
      <category>careerdevelopment</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How Time Machine saved my life*</title>
      <dc:creator>Santiago Botto</dc:creator>
      <pubDate>Mon, 01 Dec 2025 16:00:06 +0000</pubDate>
      <link>https://dev.to/sbotto/how-time-machine-saved-my-life-1p34</link>
      <guid>https://dev.to/sbotto/how-time-machine-saved-my-life-1p34</guid>
      <description>&lt;p&gt;&lt;em&gt;*not really, but it's a nice title&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I have been postponing setting up Time Machine for a while, even though I had already bought a 2TB external SSD specifically for this... For some reason, I thought that wasn't gonna be a good solution and was waiting to get a NAS set up at home.&lt;/p&gt;

&lt;p&gt;Time went by and I just completely forgot about the NAS, and my SSD was just sitting idle at the back of a drawer. A few days ago, I was given a file with several security recommendations and general best practices for my daily life as an IT nerd, it was an initiative from one of the projects on which I'm involved since they wanted to make sure everyone working in it was as careful as possible with their digital assets.&lt;/p&gt;

&lt;p&gt;I was already doing most of what they were suggesting, but two things really stand out for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using tools by &lt;a href="https://objective-see.org/tools.html" rel="noopener noreferrer"&gt;Objective-See&lt;/a&gt;, which are Open Source versions of some of my go-to tools for securing my PCs.&lt;/li&gt;
&lt;li&gt;Setting up Time Machine backups.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As soon as I saw "Time Machine" in there, I immediately felt drawn to that forgotten 2TB SSD and got straight to setting it up. I configured a secure password for it (it's a SanDisk Extreme Pro, so it comes with hardware-level encryption), and then followed the very simple steps that my OS was showing me for setting up daily backups to this drive.&lt;/p&gt;

&lt;p&gt;From now on, I simply have to connect the SSD once a day and let Time Machine do its thing.&lt;/p&gt;




&lt;p&gt;Fast forward to 3 days after the initial set up and I found myself missing several files from my local &lt;a href="https://github.com/project-aethermesh/aetherlay" rel="noopener noreferrer"&gt;aetherlay&lt;/a&gt; repo. Turns out that, while doing some cleanup, I decided to delete my local repo and clone it from GitHub to avoid pushing some changes that ended up being a bit trash (I messed my local git history). In doing so, I deleted several files that I had excluded from being tracked, files where I write stuff like pending features, guidelines to some AI agents that I sometimes use and such. &lt;em&gt;Yes, for said feature list I should've been using a project-management tool, like Jira or even Notion, but I can't do that for the AI agent guidelines.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Time Machine to the rescue! In a couple of minutes, I had already recovered all my files thanks to an extremely convenient UI. No hassle of any kind at any time.&lt;/p&gt;




&lt;p&gt;If you have some extra storage lying around, I urge you to put it to good use and set up Time Machine with it; your future self will thank you 🙏&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>security</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Automated invoicing for remote workers</title>
      <dc:creator>Santiago Botto</dc:creator>
      <pubDate>Sat, 16 Aug 2025 23:41:17 +0000</pubDate>
      <link>https://dev.to/sbotto/automated-invoicing-for-remote-workers-11f4</link>
      <guid>https://dev.to/sbotto/automated-invoicing-for-remote-workers-11f4</guid>
      <description>&lt;p&gt;Ever since 2020, remote workers have become more common, and we usually work as contractors, which involves invoicing our "customers" on a monthly basis. Every month, we send the exact same invoices to the exact same people, over and over...&lt;/p&gt;

&lt;p&gt;A few days ago, my boss said something like &lt;em&gt;"please remember to send your invoices, and if you haven't automated it yet, why haven't you?"&lt;/em&gt; and I was like &lt;em&gt;"yeah, why haven't I?"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So I did:&lt;/strong&gt; &lt;a href="https://github.com/sanbotto/auto-invoice" rel="noopener noreferrer"&gt;https://github.com/sanbotto/auto-invoice&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've set up an automated way to send my invoices on a monthly basis while paying &lt;strong&gt;$0&lt;/strong&gt;. No charges for hosting nor email API, thanks to these services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Workers&lt;/strong&gt; for the automated script.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MailPace&lt;/strong&gt; for the email API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyone who knows me knows that I love Cloudflare Workers and it's mainly because of this, because they have a more-than-generous free tier for you to set up anything you can think of, without having to worry about high bills.&lt;/p&gt;

&lt;p&gt;When it came to picking an email provider, I did a bit of research trying to find privacy-focused email providers that also had a free tier. I didn't wanna just hook up to any email provider that was gonna start selling my data to 3rd parties or anything like that as soon as I signed up... I noticed several people talking about &lt;a href="https://mailpace.com/" rel="noopener noreferrer"&gt;MailPace&lt;/a&gt;, so I reached out to them to ask for access to their free tier and they were kind enough to give it to me (they might do that for everyone who asks, but still).&lt;/p&gt;

&lt;p&gt;I hope this simple tool can help out someone else stay on top of their invoicing.&lt;/p&gt;

&lt;p&gt;Catch you on the flippity flip 🏀&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>tooling</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Running Claude Code inside your dev containers</title>
      <dc:creator>Santiago Botto</dc:creator>
      <pubDate>Thu, 14 Aug 2025 22:58:25 +0000</pubDate>
      <link>https://dev.to/sbotto/running-claude-code-inside-your-dev-containers-36e7</link>
      <guid>https://dev.to/sbotto/running-claude-code-inside-your-dev-containers-36e7</guid>
      <description>&lt;p&gt;Following up on &lt;a href="https://dev.to/sbotto/sanboxed-claude-code-4ab1"&gt;this other post&lt;/a&gt;, I recently started running &lt;strong&gt;Claude Code&lt;/strong&gt; inside my dev containers as well. Turns out I sometimes need a &lt;em&gt;bit&lt;/em&gt; more from my dev environment than what my sandbox can provide.&lt;/p&gt;

&lt;p&gt;As a non-root user inside an ephemeral container, running &lt;strong&gt;heavy&lt;/strong&gt; tests that require a whole bunch of dependencies is not too convenient... Sure, I &lt;em&gt;could&lt;/em&gt; give that user more permissions, but reinstalling dependencies every single time I spin up a container can get annoying &lt;strong&gt;quite quickly&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I decided to handle each distinct use differently:&lt;br&gt;
  • &lt;strong&gt;Quick, disposable tests?&lt;/strong&gt; Sandbox with ephemeral containers.&lt;br&gt;
  • &lt;strong&gt;Longer sessions working on complex projects?&lt;/strong&gt; Dev containers, a persistent setup.&lt;/p&gt;

&lt;p&gt;A common long-lived session for me is working on &lt;a href="https://github.com/project-aethermesh/aetherlay" rel="noopener noreferrer"&gt;aetherlay&lt;/a&gt;, where I prefer using a dev container because it also lets me manage service dependencies like Redis, which I have to run in a "companion" container.&lt;/p&gt;

&lt;p&gt;But enough talk, let's get to the code...&lt;/p&gt;

&lt;p&gt;Here's a minimal &lt;code&gt;devcontainer.json&lt;/code&gt; to mount your local &lt;code&gt;.claude&lt;/code&gt; folder into your dev container so that Claude can keep and reuse its memory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Dev Container"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"service"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"workspaceFolder"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/workspace"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"remoteUser"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"root"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mounts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"source=~/.claude,target=/root/.claude,type=bind,consistency=cached"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the corresponding &lt;code&gt;Dockerfile&lt;/code&gt;, you can do something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="c"&gt;# Use whatever base image you want&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; alpine:latest&lt;/span&gt;

&lt;span class="c"&gt;# Install Node.js and npm (required by Claude Code)&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;apk update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apk add &lt;span class="nt"&gt;--no-cache&lt;/span&gt; nodejs npm

&lt;span class="c"&gt;# Install Claude Code&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @anthropic-ai/claude-code

&lt;span class="c"&gt;# Match the workspaceFolder set in devcontainer.json&lt;/span&gt;
&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /workspace&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Place these two files in a &lt;code&gt;.devcontainer&lt;/code&gt; folder at your project root in order to have them automatically picked up by VS Code or compatible forks like Cursor.&lt;/p&gt;

&lt;p&gt;For a more complete example, check out the config I have for &lt;a href="https://github.com/project-aethermesh/aetherlay/tree/main/.devcontainer" rel="noopener noreferrer"&gt;aetherlay&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There's a lot of ways to do this, this one is simply meant as a starting point.&lt;/p&gt;

&lt;p&gt;Happy coding 🖖&lt;/p&gt;

</description>
      <category>docker</category>
      <category>ai</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Replacing dshackle</title>
      <dc:creator>Santiago Botto</dc:creator>
      <pubDate>Tue, 12 Aug 2025 14:26:47 +0000</pubDate>
      <link>https://dev.to/sbotto/replacing-dshackle-cli</link>
      <guid>https://dev.to/sbotto/replacing-dshackle-cli</guid>
      <description>&lt;p&gt;I wasn’t happy with how &lt;a href="https://github.com/drpcorg/dshackle" rel="noopener noreferrer"&gt;dshackle&lt;/a&gt; handles RPC endpoint health checks, so I built my own proxy/load balancer:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/project-aethermesh/aetherlay" rel="noopener noreferrer"&gt;https://github.com/project-aethermesh/aetherlay&lt;/a&gt; 🚀&lt;/p&gt;

&lt;p&gt;No more wasted credits 💸 on chains where you're still using Alchemy, Infura, or any other third-party provider. With aetherlay, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure multiple chains and providers&lt;/li&gt;
&lt;li&gt;Set your own health check intervals&lt;/li&gt;
&lt;li&gt;Avoid code-level workarounds when an endpoint fails&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cherry on top of the cake: Want to save even more on your monthly bill? You can disable continuous checks entirely, aetherlay will only run on-demand health checks when needed. Full details in the docs 🧐&lt;/p&gt;

&lt;p&gt;Lots of improvements are already in the pipeline, so star the repo ⭐ and watch for updates 👀&lt;/p&gt;

</description>
      <category>go</category>
      <category>web3</category>
      <category>opensource</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Sanboxed Claude Code</title>
      <dc:creator>Santiago Botto</dc:creator>
      <pubDate>Mon, 11 Aug 2025 22:56:07 +0000</pubDate>
      <link>https://dev.to/sbotto/sanboxed-claude-code-4ab1</link>
      <guid>https://dev.to/sbotto/sanboxed-claude-code-4ab1</guid>
      <description>&lt;p&gt;In case anyone cares about it, you can run Claude inside a container if you want to make sure to only give it the context of the codebase on which you're currently working, not your whole OS.&lt;/p&gt;

&lt;p&gt;This isn't news, nothing that I'll post here is gonna be blowing anyone's mind, I simply want to share my take on specific topics.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create your own sandbox image. &lt;code&gt;Dockerfile&lt;/code&gt; shown here for reference, but can be whatever suits you as long as it has &lt;code&gt;npm&lt;/code&gt; for installing Claude:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;    FROM node:24-alpine

&lt;span class="c"&gt;# Create a non-root user to run the code&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;adduser &lt;span class="nt"&gt;-D&lt;/span&gt; claude

&lt;span class="c"&gt;# Install Node.js, npm, and bash (as root)&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;apk update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    apk add bash nodejs npm &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; /var/cache/apk/&lt;span class="k"&gt;*&lt;/span&gt;

&lt;span class="c"&gt;# Install claude-code globally (as root)&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @anthropic-ai/claude-code

&lt;span class="c"&gt;# Set the working directory&lt;/span&gt;
&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /workspace&lt;/span&gt;

&lt;span class="c"&gt;# Give the non-root user ownership of the workspace directory&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;chown&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; claude:claude /workspace

&lt;span class="c"&gt;# Switch to the non-root user&lt;/span&gt;
&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="s"&gt; claude&lt;/span&gt;

&lt;span class="c"&gt;# Set bash as the default shell&lt;/span&gt;
&lt;span class="k"&gt;ENV&lt;/span&gt;&lt;span class="s"&gt; SHELL=/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Add custom aliases for the claude user&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"alias ll='ls -lah'"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; ~/.profile &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"source ~/.profile"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; ~/.bashrc

&lt;span class="c"&gt;# Default command to run when the container starts&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["/bin/bash"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run an &lt;strong&gt;ephemeral&lt;/strong&gt; container that has access to your current workdir + shared global settings for Claude:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;:/workspace &lt;span class="nt"&gt;-v&lt;/span&gt; ~/.claude:/home/claude/.claude claude-sandbox
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Here, &lt;code&gt;/workspace&lt;/code&gt; matches what you defined as &lt;code&gt;WORKDIR&lt;/code&gt; in the &lt;code&gt;Dockerfile&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(Optional) Create an alias by adding this to your &lt;code&gt;.bashrc&lt;/code&gt; or &lt;code&gt;.zshrc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;claude-sandbox&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'docker run -it --rm -v $(pwd):/workspace -v ~/.claude:/home/claude/.claude claude-sandbox'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. You're not gonna have to worry about AI going rogue and messing up your whole system just because you got too deep into "vibe coding" and told Claude to do anything it wanted as long as your weekend project ended up working fine.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS: Claude Code requires either getting a paid subscription through &lt;a href="https://claude.ai/" rel="noopener noreferrer"&gt;Claude's dedicated dashboard&lt;/a&gt;, or purchasing credits via &lt;a href="https://console.anthropic.com/settings/billing" rel="noopener noreferrer"&gt;Anthropic's dashboard&lt;/a&gt;. I didn't wanna spend 20 bucks for the monthly subscription so I decided to add money into my Anthropic's account as I tested and ended up spending &lt;strong&gt;$15 in 30 minutes&lt;/strong&gt;. Don't be like me, just pay $20 upfront for the monthly subscription if you wanna try it out. Worst-case scenario, you don't like it but can still get a lot more value out of those 20 dollars.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
