<?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.us-east-2.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>I built a Docker Image Factory From Scratch in Go</title>
      <dc:creator>Cheikh Seck</dc:creator>
      <pubDate>Thu, 30 Jul 2026 15:21:11 +0000</pubDate>
      <link>https://dev.to/cheikh_seck_01/i-built-a-docker-image-factory-from-scratch-in-go-301e</link>
      <guid>https://dev.to/cheikh_seck_01/i-built-a-docker-image-factory-from-scratch-in-go-301e</guid>
      <description>&lt;p&gt;Most teams treat container images as something a build tool produces on their behalf. You write a Dockerfile, hand it to BuildKit, and a few hundred megabytes later you have an image. The build process itself is a black box — a daemon, a cache, a base image you didn’t author, and a format you rarely inspect.&lt;/p&gt;

&lt;p&gt;This post takes the opposite stance: an image builder is just a program. Given a tarball and a few JSON blobs, any code that can compute a SHA-256 and write files can manufacture a valid OCI image. So instead of reaching for Docker, we’ll build an image factory — a small Go program that ingests layer tarballs, content-addresses them, assembles a manifest, and emits a spec-compliant OCI layout. The same factory can push to a registry and pull images back.&lt;/p&gt;

&lt;p&gt;The result is a reusable tool, not a one-off trick. As a bonus, the images it produces are tiny — around 8MB for a Go server — because the factory adds nothing you didn’t ask for. But the real value is ownership: you understand and control every byte of the image format.&lt;/p&gt;

&lt;p&gt;Read the rest here: &lt;a href="https://cheikhhseck.medium.com/building-a-docker-image-factory-from-scratch-in-go-e3c2e7127106?sk=42cbfc6c5981a5acc6ac1e617bf932be" rel="noopener noreferrer"&gt;https://cheikhhseck.medium.com/building-a-docker-image-factory-from-scratch-in-go-e3c2e7127106?sk=42cbfc6c5981a5acc6ac1e617bf932be&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>containers</category>
      <category>go</category>
    </item>
    <item>
      <title>eBPF vs Traditional Observability: Why Kernel-Level Debugging Wins for AI Services</title>
      <dc:creator>Cheikh Seck</dc:creator>
      <pubDate>Fri, 26 Jun 2026 09:13:01 +0000</pubDate>
      <link>https://dev.to/cheikh_seck_01/ebpf-vs-traditional-observability-why-kernel-level-debugging-wins-for-ai-services-3kaj</link>
      <guid>https://dev.to/cheikh_seck_01/ebpf-vs-traditional-observability-why-kernel-level-debugging-wins-for-ai-services-3kaj</guid>
      <description>&lt;h2&gt;
  
  
  eBPF vs Traditional Observability: Why Kernel-Level Debugging Wins for AI Services
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Originally published on Medium: &lt;a href="https://cheikhhseck.medium.com/ebpf-in-go-observability-for-ai-generated-services-9aae7573b823" rel="noopener noreferrer"&gt;https://cheikhhseck.medium.com/ebpf-in-go-observability-for-ai-generated-services-9aae7573b823&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Your AI-generated service is running in production. Latency spikes from 40ms to 4 seconds. Your application logs show nothing unusual. Traditional observability tools (APM, logs, metrics) are blind to what's happening.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; eBPF gives you kernel-level visibility without modifying your code or restarting services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why eBPF Matters for AI-Generated Code
&lt;/h3&gt;

&lt;p&gt;AI-generated services often lack context about kernel interactions. When things go wrong at the system level, you need observability that goes beyond application-level metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world scenario:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;P95 latency jumped from 40ms to 4s&lt;/li&gt;
&lt;li&gt;No errors in application logs&lt;/li&gt;
&lt;li&gt;Traditional tools showed nothing&lt;/li&gt;
&lt;li&gt;eBPF revealed the root cause: syscall overhead from AI-generated file operations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Takeaways from the Original Article
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Installation &amp;amp; Setup&lt;/strong&gt; - Getting started with Cilium's eBPF library in Go&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing eBPF Programs&lt;/strong&gt; - Using C for kernel-level tracing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loading from Go&lt;/strong&gt; - Practical patterns for loading and attaching programs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tracing syscalls, network events, and file I/O&lt;/strong&gt; - Real examples you can run&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compilation tips&lt;/strong&gt; - Making it work in production environments&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Code Example
&lt;/h3&gt;

&lt;p&gt;The original article includes a working example you can run in 10 minutes. It demonstrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Attaching kprobes to kernel functions&lt;/li&gt;
&lt;li&gt;Using perf-event ringbuffers for efficient data collection&lt;/li&gt;
&lt;li&gt;Tracing file I/O and network events from Go&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://cheikhhseck.medium.com/ebpf-in-go-observability-for-ai-generated-services-9aae7573b823" rel="noopener noreferrer"&gt;Link to the full tutorial with code&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This Matters Now
&lt;/h3&gt;

&lt;p&gt;As AI-generated code becomes more prevalent, we need observability tools that can debug at the system level. eBPF provides that capability without requiring changes to existing applications.&lt;/p&gt;

</description>
      <category>go</category>
      <category>ai</category>
      <category>observability</category>
    </item>
    <item>
      <title>Godex: AI assistance in the terminal</title>
      <dc:creator>Cheikh Seck</dc:creator>
      <pubDate>Fri, 01 May 2026 10:35:55 +0000</pubDate>
      <link>https://dev.to/cheikh_seck_01/godex-ai-assistance-in-the-terminal-ihj</link>
      <guid>https://dev.to/cheikh_seck_01/godex-ai-assistance-in-the-terminal-ihj</guid>
      <description>&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%2Fjgpqsdswxq3p90tcqlau.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%2Fjgpqsdswxq3p90tcqlau.png" alt=" " width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hi folks,&lt;/p&gt;

&lt;p&gt;I recently wrote an article I feel has some insight in how LLMs work and the best way to apply it to your day-2-day work. "AI will not take your job, but somebody using it will"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/dev-genius/godex-ai-assisted-coding-in-the-terminal-1d5182edecde?sk=b850044334e8b97720277dfdf458a17f" rel="noopener noreferrer"&gt;https://medium.com/dev-genius/godex-ai-assisted-coding-in-the-terminal-1d5182edecde?sk=b850044334e8b97720277dfdf458a17f&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cli</category>
      <category>agents</category>
      <category>llm</category>
    </item>
    <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=" " 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>
