<?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: Cheikh Seck</title>
    <description>The latest articles on DEV Community by Cheikh Seck (@cheikh_seck_01).</description>
    <link>https://dev.to/cheikh_seck_01</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%2F2625724%2F231e80f8-3459-455a-b23a-781596328434.png</url>
      <title>DEV Community: Cheikh Seck</title>
      <link>https://dev.to/cheikh_seck_01</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cheikh_seck_01"/>
    <language>en</language>
    <item>
      <title>Don't pay for an AI sandbox — build one locally with Docker</title>
      <dc:creator>Cheikh Seck</dc:creator>
      <pubDate>Thu, 26 Mar 2026 11:32:21 +0000</pubDate>
      <link>https://dev.to/cheikh_seck_01/dont-pay-for-an-ai-sandbox-build-one-locally-with-docker-3840</link>
      <guid>https://dev.to/cheikh_seck_01/dont-pay-for-an-ai-sandbox-build-one-locally-with-docker-3840</guid>
      <description>&lt;p&gt;Don't pay for an AI sandbox. Build one locally that's secure with Docker.&lt;/p&gt;

&lt;p&gt;Here's a practical guide that spins up a locked-down environment with a TUI, a persistent config volume, and a proxy to your local Ollama:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cheikh2shift/godex/tree/main#running-securely-with-docker" rel="noopener noreferrer"&gt;https://github.com/cheikh2shift/godex/tree/main#running-securely-with-docker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this setup?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs locally (no vendor lock-in)&lt;/li&gt;
&lt;li&gt;Sandboxed tools (bash, filesystem, webscraper)&lt;/li&gt;
&lt;li&gt;Config persisted in a Docker volume&lt;/li&gt;
&lt;li&gt;Works from any project directory via &lt;code&gt;WORKSPACE_DIR&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quick start&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;UID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;GID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;WORKSPACE_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PWD&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/godex/docker-compose.yml up &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; docker attach godex &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/godex/docker-compose.yml down
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ollama note&lt;/strong&gt;&lt;br&gt;
If you're using a host Ollama instance via the nginx proxy, make sure Ollama listens on &lt;code&gt;0.0.0.0:11434&lt;/code&gt; (not just &lt;code&gt;127.0.0.1&lt;/code&gt;).&lt;/p&gt;

&lt;h1&gt;
  
  
  security #docker #opensource
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>docker</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Go 1.23’s Iter package</title>
      <dc:creator>Cheikh Seck</dc:creator>
      <pubDate>Sat, 28 Dec 2024 13:48:00 +0000</pubDate>
      <link>https://dev.to/cheikh_seck_01/go-123s-iter-package-24kc</link>
      <guid>https://dev.to/cheikh_seck_01/go-123s-iter-package-24kc</guid>
      <description>&lt;p&gt;A post about writing a custom iterator that returns a map’s values in a constant order.&lt;/p&gt;

&lt;p&gt;Maps are notoriously known for changing their iteration order during each range loop. “When iterating over a map with a range loop, the iteration order is not specified and is not guaranteed to be the same from one iteration to the next.” The solution proposed by the Go team was to define a separate data structure that explicitly specifies the order of iteration; this may be a slice or array with the keys in the desired order.&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%2Fdnyb45hjsxrim05ncpff.png" 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%2Fdnyb45hjsxrim05ncpff.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this post, we’ll look at a recent approach to solving the iteration order problem; as well as understand how to define a really basic iterator with the iter package.&lt;/p&gt;

&lt;p&gt;You can read the rest here: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://cheikhhseck.medium.com/go-1-23s-iter-package-f6b44dfb9b7b?source=friends_link&amp;amp;sk=1cbef6905c4acaa7b816e661068f967a" rel="noopener noreferrer"&gt;https://cheikhhseck.medium.com/go-1-23s-iter-package-f6b44dfb9b7b?source=friends_link&amp;amp;sk=1cbef6905c4acaa7b816e661068f967a&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>go</category>
    </item>
  </channel>
</rss>
