<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[DevOps Bulletin]]></title><description><![CDATA[Weekly newsletter with the most original stories, podcasts, and open-source devtools in the DevOps, FinOps, and Security space!]]></description><link>https://www.devopsbulletin.com</link><image><url>https://substackcdn.com/image/fetch/$s_!WEyW!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c73a12d-9a65-4693-aa0a-3c71b07211fd_1024x1024.png</url><title>DevOps Bulletin</title><link>https://www.devopsbulletin.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 13 Apr 2026 11:04:24 GMT</lastBuildDate><atom:link href="https://www.devopsbulletin.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Mohamed Labouardy]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[devopsbulletin@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[devopsbulletin@substack.com]]></itunes:email><itunes:name><![CDATA[Mohamed Labouardy]]></itunes:name></itunes:owner><itunes:author><![CDATA[Mohamed Labouardy]]></itunes:author><googleplay:owner><![CDATA[devopsbulletin@substack.com]]></googleplay:owner><googleplay:email><![CDATA[devopsbulletin@substack.com]]></googleplay:email><googleplay:author><![CDATA[Mohamed Labouardy]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Digest #209: OpenAI Codex Command Injection, Live Kubernetes Migration and SRE Agents]]></title><description><![CDATA[From Claude Code's source code being exposed through npm source maps, to a command injection flaw in OpenAI Codex leaking GitHub tokens.]]></description><link>https://www.devopsbulletin.com/p/digest-209-openai-codex-command-injection</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-209-openai-codex-command-injection</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 10 Apr 2026 14:02:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/S7sJA51CxIo" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://noros.ai/?utm_source=sponsorship&amp;utm_medium=tldrdevops&amp;utm_campaign=nmrk-tldrdevops-awareness-devops-us-noros2&amp;utm_content=lp_north" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sRnV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png 424w, https://substackcdn.com/image/fetch/$s_!sRnV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png 848w, https://substackcdn.com/image/fetch/$s_!sRnV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png 1272w, https://substackcdn.com/image/fetch/$s_!sRnV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sRnV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png" width="268" height="71" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:71,&quot;width&quot;:268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9154,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://noros.ai/?utm_source=sponsorship&amp;utm_medium=tldrdevops&amp;utm_campaign=nmrk-tldrdevops-awareness-devops-us-noros2&amp;utm_content=lp_north&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/193781366?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sRnV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png 424w, https://substackcdn.com/image/fetch/$s_!sRnV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png 848w, https://substackcdn.com/image/fetch/$s_!sRnV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png 1272w, https://substackcdn.com/image/fetch/$s_!sRnV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb90984c-fac6-468b-98f5-e653d7b5f0fe_268x71.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Noros connects to your AWS, GCP, and Azure accounts in 5 minutes and answers questions like &#8220;why did my spend spike this month?&#8221; in seconds. DevOps Bulletin readers get a <a href="https://noros.ai/?utm_source=sponsorship&amp;utm_medium=tldrdevops&amp;utm_campaign=nmrk-tldrdevops-awareness-devops-us-noros2&amp;utm_content=lp_north">free month</a> at launch.</p><p>This week, BeyondTrust uncovered a command injection flaw in OpenAI Codex that exposed GitHub tokens, and Claude Code&#8217;s source code was leaked through npm source maps. Giant Swarm detailed how they live-migrated hundreds of Kubernetes clusters to the Cluster API with zero downtime.</p><p>On the tutorial side: AWS launched S3 Files to let you mount buckets as file systems; Ingress NGINX hit EOL, and Datadog walks through migrating to Kubernetes Gateway API; SpecterOps shows how Claude Code raises the bar for secure code reviews in pentesting engagements. Plus: why you should never let AI near your production database, how Slack replaced custom network tooling with Prometheus for HTTP/3 readiness, a complete Terraform setup for EKS Auto Mode, and the Git commands worth running before touching any unfamiliar codebase.</p><p>This week&#8217;s open source picks include PentAGI, a fully autonomous AI pentest agent in Go with 14.7k stars; Gardener, which manages Kubernetes clusters at scale across any infrastructure using hosted control planes; keeper, a Go cryptographic secret store; and skrun, which deploys agent skills defined in SKILL.md files as callable REST APIs.</p><h4>What if you could ask your cloud bill anything?</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://noros.ai/?utm_source=sponsorship&amp;utm_medium=tldrdevops&amp;utm_campaign=nmrk-tldrdevops-awareness-devops-us-noros2&amp;utm_content=lp_north" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SqeB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!SqeB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!SqeB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!SqeB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SqeB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png" width="1200" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:186555,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://noros.ai/?utm_source=sponsorship&amp;utm_medium=tldrdevops&amp;utm_campaign=nmrk-tldrdevops-awareness-devops-us-noros2&amp;utm_content=lp_north&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/193781366?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SqeB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!SqeB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!SqeB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!SqeB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb348c902-1910-4ef5-a4c1-73a3ee2e3096_1200x640.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Why is my spend 5% higher this month?&#8221; Noros is the AI agent that answers in seconds. Ask about anomalies, overprovisioned instances, cost spikes, and more across AWS, GCP, and Azure. DevOps Bulletin readers get a <a href="https://noros.ai/?utm_source=sponsorship&amp;utm_medium=tldrdevops&amp;utm_campaign=nmrk-tldrdevops-awareness-devops-us-noros2&amp;utm_content=lp_north">free month</a> at launch.</p><p><a href="https://noros.ai/?utm_source=sponsorship&amp;utm_medium=tldrdevops&amp;utm_campaign=nmrk-tldrdevops-awareness-devops-us-noros2&amp;utm_content=lp_north">Join the waitlist.</a></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://astral.sh/blog/open-source-security-at-astral">Open source security at Astral</a></strong></p></li><li><p><strong><a href="https://www.giantswarm.io/blog/live-migrating-hundreds-of-kubernetes-clusters-to-cluster-api">Live migrating hundreds of Kubernetes clusters to Cluster API</a></strong></p></li><li><p><strong><a href="https://www.beyondtrust.com/blog/entry/openai-codex-command-injection-vulnerability-github-token">OpenAI Codex command injection vulnerability exposes GitHub tokens</a></strong></p></li><li><p><strong><a href="https://devops-daily.com/posts/claude-code-source-leak-what-devops-engineers-should-learn">Claude Code source leaked via npm source maps: lessons for every DevOps team</a></strong></p></li><li><p><strong><a href="https://codecraftdiary.com/2026/04/04/trunk-based-development-why-most-teams-think-they-use-it-but-dont">Trunk-based development: why most teams think they use it (but don&#8217;t)</a></strong></p></li><li><p><strong><a href="https://www.datadoghq.com/blog/engineering/bits-ai-eval-platform">How we built a real-world evaluation platform for autonomous SRE agents at scale</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://sonraisecurity.com/enforcing-ai-governance-across-aws-orgs">Enforcing AI governance across AWS organizations</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/aws/launching-s3-files-making-s3-buckets-accessible-as-file-systems">Launching S3 Files, making S3 buckets accessible as file systems</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://aws.amazon.com/blogs/aws/launching-s3-files-making-s3-buckets-accessible-as-file-systems/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!09Lo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png 424w, https://substackcdn.com/image/fetch/$s_!09Lo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png 848w, https://substackcdn.com/image/fetch/$s_!09Lo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png 1272w, https://substackcdn.com/image/fetch/$s_!09Lo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!09Lo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png" width="1024" height="542" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:542,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82166,&quot;alt&quot;:&quot;S3 Files demo architecture&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://aws.amazon.com/blogs/aws/launching-s3-files-making-s3-buckets-accessible-as-file-systems/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="S3 Files demo architecture" title="S3 Files demo architecture" srcset="https://substackcdn.com/image/fetch/$s_!09Lo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png 424w, https://substackcdn.com/image/fetch/$s_!09Lo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png 848w, https://substackcdn.com/image/fetch/$s_!09Lo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png 1272w, https://substackcdn.com/image/fetch/$s_!09Lo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78b3f81-fbd8-45db-99b2-4dc507f6f8b5_1024x542.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://boringsql.com/posts/dont-let-ai-to-prod/">Don&#8217;t let AI touch your production database</a></strong></p></li><li><p><strong><a href="https://www.xda-developers.com/i-replaced-portainer-grafana-and-prometheus-with-this-stack">I replaced Portainer, Grafana, and Prometheus with this stack</a></strong></p></li><li><p><strong><a href="https://specterops.io/blog/2026/03/26/leveling-up-secure-code-reviews-with-claude-code">Leveling up secure code reviews with Claude Code</a></strong></p></li><li><p><strong><a href="https://piechowski.io/post/git-commands-before-reading-code/">The Git commands I run before reading any code</a></strong></p></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://blog.logrocket.com/claude-pr-review-caught-vs-missed">I let Claude review my PRs: what it caught and missed</a></strong></p></li><li><p><strong><a href="https://www.datadoghq.com/blog/migrate-to-gateway-api">A practical guide for migrating to Kubernetes Gateway API</a></strong></p></li><li><p><strong><a href="https://darryl-ruggles.cloud/a-complete-terraform-setup-for-eks-auto-mode-is-it-right-for-you">A complete Terraform setup for EKS Auto Mode: is it right for you?</a></strong></p></li><li><p><strong><a href="https://slack.engineering/from-custom-to-open-scalable-network-probing-and-http-3-readiness-with-prometheus">Scalable network probing and HTTP/3 readiness with Prometheus</a></strong></p></li><li><p><strong><a href="https://www.josephspurrier.com/google-cloud-run-deployment">Deploying Go apps to Google Cloud Run</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-S7sJA51CxIo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;S7sJA51CxIo&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/S7sJA51CxIo?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/agberohq/keeper">keeper</a></strong> is a Go cryptographic secret store that encrypts payloads at rest.</p></li><li><p><strong><a href="https://github.com/lirantal/npm-security-best-practices">npm-security-best-practices</a></strong> is a list of security best practices across supply chain attack mitigation, dependency resolution, and vulnerability scanning.</p></li><li><p><strong><a href="https://github.com/vxcontrol/pentagi">PentAGI</a></strong> is a fully autonomous AI agent system for penetration testing, packing 20+ built-in security tools.</p></li><li><p><strong><a href="https://github.com/onesuper/tui-use">tui-use</a></strong> is a tool that lets AI agents control interactive terminal programs (REPLs, debuggers, TUI apps) that normally require a human at the keyboard.</p></li><li><p><strong><a href="https://github.com/drifthoundhq/drifthound">DriftHound</a></strong> is an app that receives Terraform drift reports via API and provides a centralized dashboard for tracking infrastructure drift across projects.</p></li><li><p><strong><a href="https://github.com/gardener/gardener">Gardener</a></strong> is a Go platform for managing homogeneous Kubernetes clusters at scale across any infrastructure using hosted control planes.</p></li><li><p><strong><a href="https://github.com/skrun-dev/skrun">skrun</a></strong> is a framework that deploys agent skills defined in SKILL.md files as callable REST APIs.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vrb4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vrb4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png 424w, https://substackcdn.com/image/fetch/$s_!Vrb4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png 848w, https://substackcdn.com/image/fetch/$s_!Vrb4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png 1272w, https://substackcdn.com/image/fetch/$s_!Vrb4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vrb4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png" width="432" height="438.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30d91fdc-3167-4466-803e-f913a5c74757_864x877.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:864,&quot;resizeWidth&quot;:432,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Average Windows Experience&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Average Windows Experience" title="Average Windows Experience" srcset="https://substackcdn.com/image/fetch/$s_!Vrb4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png 424w, https://substackcdn.com/image/fetch/$s_!Vrb4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png 848w, https://substackcdn.com/image/fetch/$s_!Vrb4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png 1272w, https://substackcdn.com/image/fetch/$s_!Vrb4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d91fdc-3167-4466-803e-f913a5c74757_864x877.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #208: Axios Supply Chain Attack, Agentic Incident Response, LLMs on Kubernetes and VSCode Malwares]]></title><description><![CDATA[A critical axios npm compromise affecting millions of downloads, while teams began automating incident response with AI agents.]]></description><link>https://www.devopsbulletin.com/p/digest-208-axios-supply-chain-attack</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-208-axios-supply-chain-attack</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 03 Apr 2026 18:40:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ycLG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png" width="268" height="83" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:83,&quot;width&quot;:268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>The Axios npm library was compromised through a targeted attack on the maintainer&#8217;s computer, exposing how vulnerable open-source projects can be. At the same time, developers are switching from traditional SSH keys to certificates for better security, and attackers are using fake VS Code alerts on GitHub to trick developers into clicking malicious links.</p><p>On the practical side, teams are using AI agents to automatically respond to incidents, securing LLM running on Kubernetes against injection attacks and model tampering, and learning how to use AWS KMS to mitigate ransomware attacks. Plus guides on running Terraform generation locally with open source tools, using Atlantis and GitHub Actions together for infrastructure changes, and securing Kubernetes clusters for payment compliance.</p><p>This week&#8217;s open source picks include SQLite with built-in JSON and search features; rpg, a Postgres client with AI built in; zerobox, a tool to safely run untrusted code; and argo-rollouts for smoother Kubernetes deployments. Plus coasts for running isolated development environments, databend for analytics and AI, and nushell for a better shell. </p><p>All this and more in this week&#8217;s DevOps Bulletin, don&#8217;t miss out!</p><h4>Is your infrastructure keeping pace with AI?</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ehu0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!ehu0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!ehu0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!ehu0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ehu0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png" width="1200" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:331164,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/193080591?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ehu0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!ehu0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!ehu0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!ehu0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab585d0-6651-4e43-b238-08f68f29f3b2_1200x640.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>IaCConf 2026 is the annual virtual event for all things infrastructure-as-code. This year's theme: keeping pace. Hear real stories from practitioners, demos of what platform teams are building, and discussions from those leading IaC initiatives.</p><p><a href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter">Register for free today</a></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://jpmens.net/2026/04/03/ssh-certificates-the-better-ssh-experience/">SSH certificates: the better SSH experience</a></strong></p></li><li><p><strong><a href="https://slicker.me/sqlite/features.htm">Modern SQLite features you didn&#8217;t know it had</a></strong></p></li><li><p><strong><a href="https://www.reddit.com/r/aws/comments/1s4yrtn/devops_ai_where_are_we_headed_need_honest/">DevOps AI: Where are we headed? </a></strong></p></li><li><p><strong><a href="https://github.com/axios/axios/issues/10636">Post Mortem: axios npm supply chain compromise</a></strong></p></li><li><p><strong><a href="https://engineering.salesforce.com/how-automated-release-approvals-slashed-deployment-latency-to-seconds-across-800-releases/">How automated release approvals reduced deployment latency to seconds</a></strong></p></li><li><p><strong><a href="https://socket.dev/blog/widespread-github-campaign-uses-fake-vs-code-security-alerts-to-deliver-malware">Widespread GitHub campaign uses fake VSCode security alerts</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://aws.amazon.com/blogs/devops/leverage-agentic-ai-for-autonomous-incident-response-with-aws-devops-agent/">Leverage agentic AI for autonomous incident response with AWS DevOps agent</a></strong></p></li><li><p><strong><a href="https://heilancoos.github.io/research/2025/09/02/aws-kms-ransomware.html">Simulating ransomware with AWS KMS</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://heilancoos.github.io/research/2025/09/02/aws-kms-ransomware.html" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oW5s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png 424w, https://substackcdn.com/image/fetch/$s_!oW5s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png 848w, https://substackcdn.com/image/fetch/$s_!oW5s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png 1272w, https://substackcdn.com/image/fetch/$s_!oW5s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oW5s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png" width="1920" height="617" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:617,&quot;width&quot;:1920,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:182866,&quot;alt&quot;:&quot;image01&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://heilancoos.github.io/research/2025/09/02/aws-kms-ransomware.html&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="image01" title="image01" srcset="https://substackcdn.com/image/fetch/$s_!oW5s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png 424w, https://substackcdn.com/image/fetch/$s_!oW5s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png 848w, https://substackcdn.com/image/fetch/$s_!oW5s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png 1272w, https://substackcdn.com/image/fetch/$s_!oW5s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e0938d-b9f1-4f0e-84fc-1ba753c0764c_1920x617.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://www.cncf.io/blog/2026/03/30/llms-on-kubernetes-part-1-understanding-the-threat-model">LLMs on Kubernetes</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/architecture/6000-aws-accounts-three-people-one-platform-lessons-learned/">6,000 AWS accounts, three people, one platform</a></strong></p></li><li><p><strong><a href="https://dev.to/joatmon08/using-ai-for-terraform-running-a-locally-with-langflow-opensearch-ollama-5co6">Using AI for Terraform</a></strong></p></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://spacelift.io/blog/atlantis-github-actions">How to use Atlantis with GitHub Actions for Terraform</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/containers/building-pci-dss-compliant-architectures-on-amazon-eks/">Building PCI DSS-compliant architectures on Amazon EKS</a></strong></p></li><li><p><strong><a href="https://www.reddit.com/r/aws/comments/1samam0/best_way_to_upload_2530_tb_data_from_a_hdd_to_s3/">Best way to upload 25-30 TB data from a HDD to S3</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-odZ4WclCX5s" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;odZ4WclCX5s&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/odZ4WclCX5s?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-l14vedMOLwQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;l14vedMOLwQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/l14vedMOLwQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/NikolayS/rpg">rpg</a></strong> is a PostgreSQL terminal client written in Rust that brings AI diagnostics and schema-aware completion to psql, with 15+ DBA tools built in.</p></li><li><p><strong><a href="https://github.com/afshinm/zerobox">zerobox</a></strong> is a cross-platform process sandbox in Rust that restricts file, network, and credential access for safely running AI-generated code.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/afshinm/zerobox" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TAQP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png 424w, https://substackcdn.com/image/fetch/$s_!TAQP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png 848w, https://substackcdn.com/image/fetch/$s_!TAQP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png 1272w, https://substackcdn.com/image/fetch/$s_!TAQP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TAQP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png" width="744" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:744,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44934,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/afshinm/zerobox&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/193080591?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TAQP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png 424w, https://substackcdn.com/image/fetch/$s_!TAQP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png 848w, https://substackcdn.com/image/fetch/$s_!TAQP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png 1272w, https://substackcdn.com/image/fetch/$s_!TAQP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108e7f41-f7b4-4253-bba0-5bdcc73ec3f0_744x457.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://github.com/argoproj/argo-rollouts">argo-rollouts</a></strong> is a Kubernetes controller enabling blue-green, canary, and progressive delivery strategies with automated metric-driven promotion.</p></li><li><p><strong><a href="https://github.com/alejandrobailo/agents-anywhere">agents-anywhere</a></strong> syncs AI agent configs, skills, and instructions across 10+ tools (Claude Code, Cursor, Windsurf, Gemini) from a single git repo.</p></li><li><p><strong><a href="https://github.com/coast-guard/coasts">coasts</a></strong> runs isolated development environments in containerized worktrees on a single machine with a local observability UI, integrating with existing Docker Compose setups.</p></li><li><p><strong><a href="https://github.com/nushell/nushell">nushell</a></strong> is a shell written in Rust that treats data as structured objects instead of text streams, enabling more powerful pipelines and type-aware operations.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ycLG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ycLG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png 424w, https://substackcdn.com/image/fetch/$s_!ycLG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png 848w, https://substackcdn.com/image/fetch/$s_!ycLG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png 1272w, https://substackcdn.com/image/fetch/$s_!ycLG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ycLG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png" width="466" height="428.30882352941177" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:544,&quot;resizeWidth&quot;:466,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;There's A Mastermind Or A Dumbass Behind This Drama&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="There's A Mastermind Or A Dumbass Behind This Drama" title="There's A Mastermind Or A Dumbass Behind This Drama" srcset="https://substackcdn.com/image/fetch/$s_!ycLG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png 424w, https://substackcdn.com/image/fetch/$s_!ycLG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png 848w, https://substackcdn.com/image/fetch/$s_!ycLG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png 1272w, https://substackcdn.com/image/fetch/$s_!ycLG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce7b762-e00a-441c-a96f-464632aa2bfd_544x500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #207: LiteLLM Malware Attack, Dropbox 87GB monorepo, Cursor's Security Agents and K8s One-Line Fix]]></title><description><![CDATA[The LiteLLM supply chain attack, Dropbox monorepo optimization, Postgres WAL debugging, Kubernetes performance fixes, and open source tools for LLM security.]]></description><link>https://www.devopsbulletin.com/p/digest-207-litellm-malware-attack</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-207-litellm-malware-attack</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 27 Mar 2026 16:41:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/wfeiCZK0mNs" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png" width="268" height="83" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:83,&quot;width&quot;:268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>Malware hit PyPI through a poisoned LiteLLM package last week, and the full minute-by-minute response took just 72 minutes from discovery to public disclosure. Dropbox shrank its server monorepo from 87 GB to 20 GB. BeyondTrust got a full DNS reverse shell running inside AWS AgentCore&#8217;s supposedly isolated sandbox. And Cursor now has autonomous security agents reviewing over 3,000 PRs a week. Also, <a href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter">IaCConf</a> is back for year two on May 14. If you work with IaC at any level, this is where the real conversations happen.</p><p>Tutorials this week cover a one-line Kubernetes fix that saved Cloudflare 600 hours a year, a Postgres upsert that silently quadrupled WAL syncs on every no-op write, simplifying containers with Cloudflare Sandboxes, Terraform drift detection with GitHub Actions, pentesting AWS&#8217;s own Security Agent and a practical guide to Go naming conventions.</p><p>Open source picks include Augustus, a Go-based LLM vulnerability scanner with 210+ adversarial probes; OpenSandbox from Alibaba for isolated AI agent workloads; TerraVision for automatically generating architecture diagrams from Terraform; LayerLeak for scanning Docker images for leaked secrets; and CISO Assistant, which covers 100+ compliance frameworks in one platform. </p><p>All this and more in this week&#8217;s DevOps Bulletin, don&#8217;t miss out!</p><h4>IaCConf is the only conference built entirely around infrastructure as code</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZMEB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!ZMEB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!ZMEB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!ZMEB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZMEB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png" width="1200" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:332490,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/192308970?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZMEB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!ZMEB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!ZMEB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!ZMEB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe4583cf-13b4-4b26-b107-d6f4fb28cb94_1200x640.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Year two is here. Come meet your peers who are doing this work at the highest level. Learn what&#8217;s actually working and join these real conversations that don't happen at other virtual DevOps events. <a href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter">Don&#8217;t miss out. Register now.</a></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://futuresearch.ai/blog/litellm-attack-transcript/">My minute-by-minute response to the LiteLLM malware attack</a></strong></p></li><li><p><strong><a href="https://aws.plainenglish.io/stop-enabling-every-aws-security-service-fb171635a25c">Stop enabling every AWS security service</a></strong></p></li><li><p><strong><a href="https://dropbox.tech/infrastructure/reducing-our-monorepo-size-to-improve-developer-velocity">Reducing our monorepo size to improve developer velocity</a></strong></p></li><li><p><strong><a href="https://cursor.com/blog/security-agents">Securing our codebase with autonomous agents</a></strong></p></li><li><p><strong><a href="https://www.beyondtrust.com/blog/entry/pwning-aws-agentcore-code-interpreter">Pwning AWS AgentCore code interpreter</a></strong></p></li><li><p><strong><a href="https://stealthymcstealth.com/#/">The incident challenge</a></strong></p></li><li><p><strong><a href="https://www.datadoghq.com/blog/engineering/debugging-postgres-performance">Debugging Postgres performance</a></strong></p></li><li><p><strong><a href="https://www.anthropic.com/engineering/harness-design-long-running-apps">Harness design for long-running application development</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://kentcdodds.com/blog/simplifying-containers-with-cloudflare-sandboxes">Simplifying containers with Cloudflare Sandboxes</a></strong></p></li><li><p><strong><a href="https://rosesecurity.dev/2025/12/11/terraform-drift-detection-with-github-actions.html">Terraform drift detection with GitHub Actions</a></strong></p></li><li><p><strong><a href="https://blog.cloudflare.com/one-line-kubernetes-fix-saved-600-hours-a-year">A one-line Kubernetes fix that saved 600 hours a year</a></strong></p></li><li><p><strong><a href="https://spacelift.io/missionguide/audit-ready-infrastructure">Audit-ready infrastructure</a></strong></p></li><li><p><strong><a href="https://infosecwriteups.com/insecure-output-handling-sql-injection-through-llm-output-part-2-1cb4f931c31a">SQL injection through LLM output</a></strong></p></li><li><p><strong><a href="https://blog.richardfan.xyz/2026/03/14/pentesting-a-pentest-agent-heres-what-ive-found-in-aws-security-agent.html">Pentesting a pentest agent: here&#8217;s what I&#8217;ve found in AWS Security Agent</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://blog.richardfan.xyz/2026/03/14/pentesting-a-pentest-agent-heres-what-ive-found-in-aws-security-agent.html" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HyFC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png 424w, https://substackcdn.com/image/fetch/$s_!HyFC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png 848w, https://substackcdn.com/image/fetch/$s_!HyFC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png 1272w, https://substackcdn.com/image/fetch/$s_!HyFC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HyFC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png" width="1456" height="684" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:684,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:593438,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://blog.richardfan.xyz/2026/03/14/pentesting-a-pentest-agent-heres-what-ive-found-in-aws-security-agent.html&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/192308970?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HyFC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png 424w, https://substackcdn.com/image/fetch/$s_!HyFC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png 848w, https://substackcdn.com/image/fetch/$s_!HyFC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png 1272w, https://substackcdn.com/image/fetch/$s_!HyFC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4feba1-2c5b-4f46-84f4-cad310ab69ce_2885x1355.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://itnext.io/kubernetes-strategic-merge-patch-4bdd19b48789">Kubernetes strategic merge patch</a></strong></p></li><li><p><strong><a href="https://drew.silcock.dev/blog/artisanal-git/">Artisanal handcrafted Git repositories</a></strong></p></li><li><p><strong><a href="https://techcommunity.microsoft.com/blog/azureinfrastructureblog/building-reusable-custom-images-for-azure-confidential-vms-using-azure-compute-g/4500880">Building reusable custom images for Azure VMs</a></strong></p></li><li><p><strong><a href="https://www.alexedwards.net/blog/go-naming-conventions">Go naming conventions</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-1D2bLTh3oyE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;1D2bLTh3oyE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/1D2bLTh3oyE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-wfeiCZK0mNs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;wfeiCZK0mNs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/wfeiCZK0mNs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/patrickchugh/terravision">TerraVision</a></strong> converts Terraform code into professional cloud architecture diagrams using official AWS, GCP, and Azure icons. </p></li><li><p><strong><a href="https://github.com/jonwiggins/optio">Optio</a></strong> is a workflow orchestration platform for AI coding agents that takes tasks from GitHub Issues or Linear tickets and drives them through to merged PRs, automatically handling CI failures and code review feedback.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/jonwiggins/optio" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C3eG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png 424w, https://substackcdn.com/image/fetch/$s_!C3eG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png 848w, https://substackcdn.com/image/fetch/$s_!C3eG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png 1272w, https://substackcdn.com/image/fetch/$s_!C3eG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C3eG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png" width="1456" height="807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:807,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Optio dashboard showing 10 running tasks, 19 completed, with Claude Max usage, active pods, and recent task activity&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/jonwiggins/optio&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Optio dashboard showing 10 running tasks, 19 completed, with Claude Max usage, active pods, and recent task activity" title="Optio dashboard showing 10 running tasks, 19 completed, with Claude Max usage, active pods, and recent task activity" srcset="https://substackcdn.com/image/fetch/$s_!C3eG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png 424w, https://substackcdn.com/image/fetch/$s_!C3eG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png 848w, https://substackcdn.com/image/fetch/$s_!C3eG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png 1272w, https://substackcdn.com/image/fetch/$s_!C3eG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf33bfe-b776-4ced-ae21-a276ba36aad1_3024x1676.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://github.com/millionco/expect">Expect</a></strong> lets AI agents test your code in a real browser. It scans git diffs, generates a test plan, and executes it via Playwright with recorded sessions for replay.</p></li><li><p><strong><a href="https://github.com/elastic/agent-skills">Elastic Agent Skills</a></strong> is the official skills library that teaches AI coding agents how to work correctly with Elasticsearch, Kibana, and Elastic&#8217;s observability and security APIs.</p></li><li><p><strong><a href="https://github.com/intuitem/ciso-assistant-community">CISO Assistant</a></strong> is an open-source GRC platform covering risk assessments, compliance tracking across 100+ frameworks, and third-party risk management in a single interface.</p></li><li><p><strong><a href="https://github.com/Brumbelow/layerleak">LayerLeak</a></strong> is a Docker Hub and OCI image secret scanner written in Go that analyzes image layers, config metadata, and build history without requiring a local Docker daemon.</p></li><li><p><strong><a href="https://github.com/praetorian-inc/augustus">Augustus</a></strong> is a Go-based LLM vulnerability scanner that runs 210+ adversarial probes across 47 attack categories, including jailbreaks, prompt injection, and data extraction.</p></li><li><p><strong><a href="https://github.com/alibaba/OpenSandbox">OpenSandbox</a></strong> is Alibaba&#8217;s sandbox platform for AI agent workloads, providing isolated code execution with gVisor, Kata Containers, and Firecracker microVMs. </p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XEjg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XEjg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XEjg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XEjg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XEjg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XEjg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg" width="514" height="271.19476744186045" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:363,&quot;width&quot;:688,&quot;resizeWidth&quot;:514,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Every project maintainer after the LiteLLM pwn : r/programminghumor&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Every project maintainer after the LiteLLM pwn : r/programminghumor" title="Every project maintainer after the LiteLLM pwn : r/programminghumor" srcset="https://substackcdn.com/image/fetch/$s_!XEjg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XEjg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XEjg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XEjg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a28dd1-84c3-4f59-b9a3-cbd2b0b0a87f_688x363.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #206: S3 Bucketsquatting Dead, AI Agents Writing Go, Reddit Kafka Migration and CI/CD Security]]></title><description><![CDATA[AWS S3 namespace protection, Reddit's petabyte Kafka migration to Kubernetes, AI agents writing Go, CI/CD pipeline security scanning, and AWS phishing campaigns.]]></description><link>https://www.devopsbulletin.com/p/digest-206-s3-bucketsquatting-dead</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-206-s3-bucketsquatting-dead</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Mon, 23 Mar 2026 09:11:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7cWE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>From S3 bucketsquatting finally being dead after a decade of exploitation, to Reddit migrating petabyte-scale Kafka from EC2 to Kubernetes with zero downtime, and an active phishing campaign targeting AWS console credentials using adversary-in-the-middle proxies.</p><p>On the tutorial side, we look at how AI agents write Go, vibe coding&#8217;s attribution problem, why git blame matters more than ever, and how Datadog caught an AI-powered bot trying to inject malicious code into their open-source repos. Plus a $7 Lightsail setup that replaces your local AI agent, and a deep dive into when Kubernetes actually restarts your pod.</p><p>This week&#8217;s open source picks feature Serie, a Rust-based terminal tool for clean Git commit graphs, Bromure, a macOS app that runs each browser session inside a disposable Linux virtual machine, and Trajan, a scanner that detects vulnerabilities across platforms like GitHub Actions, GitLab CI, Azure DevOps, Jenkins, and JFrog.</p><p>All this and more in this week&#8217;s DevOps Bulletin, don&#8217;t miss out!</p><h4>Building an IDP from Scratch - Live Workshop</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.com/e/building-an-internal-developer-platform-from-scratch-tickets-1978960034736?aff=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tFJy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tFJy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tFJy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tFJy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tFJy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg" width="940" height="470" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:470,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.com/e/building-an-internal-developer-platform-from-scratch-tickets-1978960034736?aff=devopsbulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tFJy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tFJy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tFJy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tFJy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5e56a30-e4ec-462c-8759-89bb46004923_940x470.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Design and build an <a href="https://www.eventbrite.com/e/building-an-internal-developer-platform-from-scratch-tickets-1978960034736?aff=devopsbulletin">Internal Developer Platform</a> that scales and gets adopted. This hands-on, 2-day workshop covers platform-as-a-product thinking, cloud-native architecture, IaC, automation patterns, and production readiness. Ideal for platform engineers, DevOps teams, and engineering leaders building IDPs. Exclusive 40% discount code: <strong><a href="https://www.eventbrite.com/e/building-an-internal-developer-platform-from-scratch-tickets-1978960034736?aff=devopsbulletin">DEVOPSBULLETIN</a></strong></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://onecloudplease.com/blog/bucketsquatting-is-finally-dead">S3 bucketsquatting is finally dead</a></strong></p></li><li><p><strong><a href="https://github.blog/ai-and-ml/generative-ai/under-the-hood-security-architecture-of-github-agentic-workflows/">Security architecture of GitHub agentic workflows</a></strong></p></li><li><p><strong><a href="https://blog.bytebytego.com/p/how-reddit-migrated-petabyte-scale">How Reddit migrated Petabyte-scale Kafka from EC2 to Kubernetes</a></strong></p></li><li><p><strong><a href="https://devblogs.microsoft.com/devops/azure-devops-remote-mcp-server-public-preview/">Azure DevOps remote MCP server</a></strong></p></li><li><p><strong><a href="https://oseifert.ch/blog/building-pgit">What if your Git history were a SQL database?</a></strong></p></li><li><p><strong><a href="https://securitylabs.datadoghq.com/articles/behind-the-console-aws-aitm-phishing-campaign/">Active phishing campaign targeting AWS console credentials</a></strong></p></li><li><p><strong><a href="https://viggy28.dev/article/postgres-gateway-drug/">Postgres is the Gateway drug</a></strong></p></li><li><p><strong><a href="https://reactdevelopment.substack.com/p/when-to-use-bff-and-should-it-replace">When should you use BFF, and should it replace API Gateway?</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://awsfundamentals.com/blog/lightsail-openclaw">The $7 AWS setup that replaced my local OpenClaw</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://awsfundamentals.com/blog/lightsail-openclaw" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7cWE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7cWE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7cWE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7cWE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7cWE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg" width="1456" height="746" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:746,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Running OpenClaw on AWS Lightsail&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://awsfundamentals.com/blog/lightsail-openclaw&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Running OpenClaw on AWS Lightsail" title="Running OpenClaw on AWS Lightsail" srcset="https://substackcdn.com/image/fetch/$s_!7cWE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7cWE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7cWE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7cWE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d2fc5f-351f-4707-a8a1-39d9eded7427_2972x1522.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://www.datadoghq.com/blog/engineering/stopping-hackerbot-claw-with-bewaire/">Catching malicious contributions in Datadog&#8217;s open source repos</a></strong></p></li><li><p><strong><a href="https://quesma.com/blog/vibe-code-git-blame/">Vibe coding needs git blame</a></strong></p></li><li><p><strong><a href="https://github.com/ehlesp/smallab-k8s-pve-guide">Building a virtualized Kubernetes homelab</a></strong></p></li><li><p><strong><a href="https://encore.dev/blog/golang-ai">How AI agents want to write Go</a></strong></p></li><li><p><strong><a href="https://www.cncf.io/blog/2026/03/17/when-kubernetes-restarts-your-pod-and-when-it-doesnt/">When Kubernetes restarts your pod</a></strong></p></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://itnext.io/hosting-and-scaling-eks-hybrid-nodes-with-kubevirt-and-kube-ovn-cni-a9305d1290f8">Hosting and scaling EKS hybrid nodes</a></strong></p></li><li><p><strong><a href="https://darryl-ruggles.cloud/elastic-container-service-ecs-my-default-choice-for-containers-on-aws">Complete guide to AWS ECS</a></strong></p></li><li><p><strong><a href="https://immrbhattarai.medium.com/mastering-gke-multi-tenancy-the-power-of-namespaces-rbac-and-quotas-0a01d69dca87">Mastering GKE multi-tenancy</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-oVvuHhm0WYU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;oVvuHhm0WYU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/oVvuHhm0WYU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-uHNOqKdqQas" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;uHNOqKdqQas&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/uHNOqKdqQas?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/lusingander/serie">Serie</a></strong> is a TUI application that renders Git commit graphs with rich visuals using the terminal&#8217;s image display protocol.</p></li><li><p><strong><a href="https://www.gitquest.dev/">Git Quest</a></strong> is a web-based RPG game that converts your GitHub commit history into character progression and in-game resources.</p></li><li><p><strong><a href="https://github.com/rupert648/pertmux">Pertmux</a></strong> is a terminal dashboard that unifies merge requests, git worktrees, tmux sessions, and AI coding agents into a single real-time monitoring interface.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/rupert648/pertmux" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZH-Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif 424w, https://substackcdn.com/image/fetch/$s_!ZH-Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif 848w, https://substackcdn.com/image/fetch/$s_!ZH-Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif 1272w, https://substackcdn.com/image/fetch/$s_!ZH-Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZH-Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif" width="800" height="499" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:499,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:935800,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:&quot;https://github.com/rupert648/pertmux&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/191461432?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZH-Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif 424w, https://substackcdn.com/image/fetch/$s_!ZH-Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif 848w, https://substackcdn.com/image/fetch/$s_!ZH-Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif 1272w, https://substackcdn.com/image/fetch/$s_!ZH-Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78466fb8-a581-4236-9726-6a81cdd26b6d_800x499.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://github.com/synacktiv/nord-stream">Nord Stream</a></strong> is a security testing tool that extracts secrets from CI/CD environments by deploying malicious pipelines across Azure DevOps, GitHub, and GitLab.</p></li><li><p><strong><a href="https://github.com/praetorian-inc/trajan">Trajan</a></strong> is a security scanner that identifies vulnerabilities in CI/CD pipeline configurations across GitHub Actions, GitLab CI, Azure DevOps, Jenkins, and JFrog.</p></li><li><p><strong><a href="https://github.com/rderaison/bromure">Bromure</a></strong> is a native macOS app that runs every browser session inside a lightweight, disposable Linux virtual machine for full isolation.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yOby!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yOby!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png 424w, https://substackcdn.com/image/fetch/$s_!yOby!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png 848w, https://substackcdn.com/image/fetch/$s_!yOby!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png 1272w, https://substackcdn.com/image/fetch/$s_!yOby!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yOby!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png" width="342" height="480.76785714285717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1417,&quot;width&quot;:1008,&quot;resizeWidth&quot;:342,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;When Life Imitates Memes&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="When Life Imitates Memes" title="When Life Imitates Memes" srcset="https://substackcdn.com/image/fetch/$s_!yOby!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png 424w, https://substackcdn.com/image/fetch/$s_!yOby!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png 848w, https://substackcdn.com/image/fetch/$s_!yOby!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png 1272w, https://substackcdn.com/image/fetch/$s_!yOby!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74335fdf-9eee-42da-9db1-4ea7905431bd_1008x1417.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #205: GitHub Actions Exploitation, Terraform Internals, Passkeys Warning and Go Runtime]]></title><description><![CDATA[A bot exploiting GitHub Actions across Microsoft and CNCF projects, Terraform internals deep-dive, npm token theft via CI, and Go runtime scheduler explained.]]></description><link>https://www.devopsbulletin.com/p/digest-205-github-actions-exploitation</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-205-github-actions-exploitation</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 13 Mar 2026 19:04:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iZ1J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>An autonomous bot spent 7 days exploiting GitHub Actions across Microsoft, DataDog, Aqua Security, and CNCF projects &#8212; exfiltrating tokens with write permissions from awesome-go (140K stars) and fully compromising Trivy&#8217;s releases. Meanwhile, new research shows that roughly half of SWE-bench-passing AI PRs would be rejected by actual maintainers, and Uber shares how it replaced thousands of individual Kafka policies with a single CEL-based access control rule.</p><p>On the tutorial side, a HashiCorp Core team engineer breaks down Terraform internals from addressing to expansion logic, while a researcher shows how opening a GitHub issue let them steal npm publish tokens from Cline&#8217;s CI &#8212; poisoning 4,000 machines before detection. Plus: why you should turn Dependabot off, how a Rust rewrite cut batch jobs from 30 minutes to under 5, and how ParadeDB optimized top-K queries from 37 seconds to 300ms.</p><p>This week&#8217;s open source picks include Terrapod &#8212; an open-source Terraform Enterprise replacement with built-in governance, PipeStep &#8212; a debugger that lets you step through GitHub Actions workflows locally in Docker, and Aegis &#8212; an EDR tool that monitors AI agent behavior in real time. </p><p>All this and more in this week&#8217;s DevOps Bulletin, don&#8217;t miss out!</p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://muratbuffalo.blogspot.com/2026/03/building-database-on-s3.html">Building a database on S3</a></strong></p></li><li><p><strong><a href="https://www.stepsecurity.io/blog/hackerbot-claw-github-actions-exploitation">A bot actively exploiting GitHub Actions - Microsoft, DataDog, and CNCF projects</a></strong></p></li><li><p><strong><a href="https://devops-daily.com/posts/when-kubernetes-is-wrong-default">When Kubernetes is the wrong default</a></strong></p></li><li><p><strong><a href="https://metr.org/notes/2026-03-10-many-swe-bench-passing-prs-would-not-be-merged-into-main/">Many SWE-bench-passing PRs would not be merged into main</a></strong></p></li><li><p><strong><a href="https://www.praetorian.com/blog/how-ai-agents-automate-cve-vulnerability-research">How AI agents automate CVE vulnerability research</a></strong></p></li><li><p><strong><a href="https://blog.timcappalli.me/p/passkeys-prf-warning/">Please, please, please stop using passkeys for encrypting user data</a></strong></p></li><li><p><strong><a href="https://alexeyondata.substack.com/p/how-i-dropped-our-production-database">How I dropped our production database and now pay 10% more for AWS</a></strong></p></li><li><p><strong><a href="https://blog.bytebytego.com/p/how-uber-reinvented-access-control">How Uber reinvented access control for microservices</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://argos-ci.com/blog/heroku-to-aws-migration">Migrating from Heroku to AWS</a></strong></p></li><li><p><strong><a href="https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work">How I use LLMs for security work</a></strong></p></li><li><p><strong><a href="https://www.docker.com/blog/building-ai-teams-docker-sandboxes-agent/">Building AI teams with Docker sandboxes</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.docker.com/blog/building-ai-teams-docker-sandboxes-agent/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iZ1J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png 424w, https://substackcdn.com/image/fetch/$s_!iZ1J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png 848w, https://substackcdn.com/image/fetch/$s_!iZ1J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png 1272w, https://substackcdn.com/image/fetch/$s_!iZ1J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iZ1J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png" width="484" height="264.27197802197804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1456,&quot;resizeWidth&quot;:484,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;image1&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.docker.com/blog/building-ai-teams-docker-sandboxes-agent/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="image1" title="image1" srcset="https://substackcdn.com/image/fetch/$s_!iZ1J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png 424w, https://substackcdn.com/image/fetch/$s_!iZ1J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png 848w, https://substackcdn.com/image/fetch/$s_!iZ1J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png 1272w, https://substackcdn.com/image/fetch/$s_!iZ1J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46c67a81-a47a-42af-9c05-a761173e7711_1999x1091.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://danielmschmidt.de/posts/2025-11-21-inside-terraform/">A series about the internals of Terraform</a></strong></p></li><li><p><strong><a href="https://neciudan.dev/cline-ci-got-compromised-here-is-how">How to steal npm publish tokens by opening GitHub issues</a></strong></p></li><li><p><strong><a href="https://words.filippo.io/dependabot/">Turn Dependabot off</a></strong></p></li><li><p><strong><a href="https://kerkour.com/rust-postgres-everything">Using Rust and Postgres for everything</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/security/inside-aws-security-agent-a-multi-agent-architecture-for-automated-penetration-testing/">A multi-agent architecture for automated penetration testing</a></strong></p></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://internals-for-interns.com/posts/go-runtime-scheduler/">Understanding the Go runtime</a></strong></p></li><li><p><strong><a href="https://devops-daily.com/posts/introduction-to-argocd">Getting started with GitOps</a></strong></p></li><li><p><strong><a href="https://www.paradedb.com/blog/optimizing-top-k">How we optimized top K in Postgres</a></strong></p></li><li><p><strong><a href="https://growingswe.com/blog/ldap">How LDAP works</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-sTnB8w2xnDY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;sTnB8w2xnDY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/sTnB8w2xnDY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-_XTT6xMbwtc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_XTT6xMbwtc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/_XTT6xMbwtc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/gotempsh/temps">Temps</a></strong> is a self-hosted deployment platform that combines app hosting, monitoring, and infra management in a single binary.</p></li><li><p><strong><a href="https://github.com/m1k1o/neko">Neko</a></strong> is a self-hosted, Dockerized virtual browser that uses WebRTC for multi-user collaborative browsing.</p></li><li><p><strong><a href="https://github.com/mattrobinsonsre/terrapod">Terrapod</a></strong> is an open-source Terraform Enterprise replacement with built-in collaboration, governance, and state management.</p></li><li><p><strong><a href="https://github.com/Photobombastic/pipestep">PipeStep</a></strong> is a debugger for GitHub Actions that lets you step through CI workflows locally in Docker.</p></li><li><p><strong><a href="https://github.com/onecli/onecli">OneCLI</a></strong> is a credential gateway that transparently injects API keys into AI agent requests so agents never touch secrets.</p></li><li><p><strong><a href="https://github.com/doctly/switchboard">Switchboard</a></strong> is a desktop app that lets you manage all your Claude Code sessions from a single, unified interface.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/doctly/switchboard" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jvl1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png 424w, https://substackcdn.com/image/fetch/$s_!Jvl1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png 848w, https://substackcdn.com/image/fetch/$s_!Jvl1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png 1272w, https://substackcdn.com/image/fetch/$s_!Jvl1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jvl1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png" width="1240" height="509" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:509,&quot;width&quot;:1240,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:262314,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/doctly/switchboard&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/190825036?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jvl1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png 424w, https://substackcdn.com/image/fetch/$s_!Jvl1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png 848w, https://substackcdn.com/image/fetch/$s_!Jvl1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png 1272w, https://substackcdn.com/image/fetch/$s_!Jvl1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b0a2c7-3ea5-405c-9d62-4fdcb11f590f_1240x509.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://github.com/1Password/load-secrets-action">load-secrets-action</a></strong> is a GitHub Action to load 1Password secrets into workflow environment variables.</p></li><li><p><strong><a href="https://github.com/antropos17/Aegis">Aegis</a></strong> is an EDR tool that monitors AI agent behavior, tracking processes, file access, and network activity in real time.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Nns!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Nns!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png 424w, https://substackcdn.com/image/fetch/$s_!9Nns!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png 848w, https://substackcdn.com/image/fetch/$s_!9Nns!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png 1272w, https://substackcdn.com/image/fetch/$s_!9Nns!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Nns!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png" width="380" height="551.0756972111553" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1004,&quot;resizeWidth&quot;:380,&quot;bytes&quot;:713319,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/190825036?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9Nns!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png 424w, https://substackcdn.com/image/fetch/$s_!9Nns!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png 848w, https://substackcdn.com/image/fetch/$s_!9Nns!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png 1272w, https://substackcdn.com/image/fetch/$s_!9Nns!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844d2eca-bc94-4893-8e5e-26cdaaf637f5_1004x1456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #204: AWS Data Centers Hit, Kubernetes Full Course, LLM Caching and AI Pentesting]]></title><description><![CDATA[AWS data centers struck by drones in UAE, 2,863 Google API keys exposed to Gemini, LLM caching architectures, Terraform feature flags, and AI pentesting tools.]]></description><link>https://www.devopsbulletin.com/p/digest-204-aws-data-centers-hit-kubernetes</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-204-aws-data-centers-hit-kubernetes</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 06 Mar 2026 19:21:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/V-lI7AmusGs" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://events.spacelift.io/multiplayer-iac-solving-state-people-and-system-level-iac-challenge?refid=DevOps-Bulletin&amp;utm_campaign=37789623-FY26%20-%20Webinar%20-%20Multiplayer%20IaC&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png" width="268" height="83" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:83,&quot;width&quot;:268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7558,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://events.spacelift.io/multiplayer-iac-solving-state-people-and-system-level-iac-challenge?refid=DevOps-Bulletin&amp;utm_campaign=37789623-FY26%20-%20Webinar%20-%20Multiplayer%20IaC&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/190122742?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>From Iranian drone strikes taking down AWS data centers in the UAE and Bahrain, to Truffle Security finding 2,863 live Google API keys on the public internet that now silently authenticate to Gemini.</p><p>On the tutorial side, we get into designing caching architectures that cut LLM costs by 30% through semantic deduplication, building AI agents for infrastructure teams with proper safety guardrails, and a hands-on guide to <em>pg_semantic_cache</em> in Postgres that achieves 60-80% cache hit rates. Plus: debugging Go memory leaks with pprof, secure error-handling patterns in Go, and AWS cost optimization with up to 72% savings.</p><p>This week&#8217;s open-source picks include Shannon - an autonomous AI pentesting framework that validates vulnerabilities using real exploits, Titus - a high-performance secrets scanner with 487 detection rules, and safe-chain &#8212; a local proxy that blocks malicious npm and PyPI packages before installation.</p><p>All this and more in this week&#8217;s DevOps Bulletin, don&#8217;t miss out!</p><h4>Your Terraform Plan passed. Your app just broke. Here's why.</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://events.spacelift.io/multiplayer-iac-solving-state-people-and-system-level-iac-challenge?refid=DevOps-Bulletin&amp;utm_campaign=37789623-FY26%20-%20Webinar%20-%20Multiplayer%20IaC&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HyEn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png 424w, https://substackcdn.com/image/fetch/$s_!HyEn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png 848w, https://substackcdn.com/image/fetch/$s_!HyEn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!HyEn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HyEn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b798510-649e-4429-b397-5d4599a24395_2072x1036.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1724779,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://events.spacelift.io/multiplayer-iac-solving-state-people-and-system-level-iac-challenge?refid=DevOps-Bulletin&amp;utm_campaign=37789623-FY26%20-%20Webinar%20-%20Multiplayer%20IaC&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/190122742?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HyEn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png 424w, https://substackcdn.com/image/fetch/$s_!HyEn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png 848w, https://substackcdn.com/image/fetch/$s_!HyEn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!HyEn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b798510-649e-4429-b397-5d4599a24395_2072x1036.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Clean plan. Successful apply. App down two hours later. Sound familiar? Learn how platform teams scale IaC without the chaos.</p><p><a href="https://events.spacelift.io/multiplayer-iac-solving-state-people-and-system-level-iac-challenge?refid=DevOps-Bulletin&amp;utm_campaign=37789623-FY26%20-%20Webinar%20-%20Multiplayer%20IaC&amp;utm_source=DevOps-Bulletin&amp;utm_medium=paid_newsletter">Free virtual event, March 12 at 12 PM ET. Register now.</a></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://pybit.es/articles/how-even-senior-developers-mess-up-their-git-workflow/">How even senior developers mess up their Git workflow</a></strong></p></li><li><p><strong><a href="https://www.businessinsider.com/amazon-web-services-data-center-fire-objects-middle-east-strikes-2026-3">Amazon says it could take at least a day to restore data centers hit by &#8216;objects&#8217; in the UAE</a></strong></p></li><li><p><strong><a href="https://ninad.pundaliks.in/blog/2026/02/terraform-and-feature-flags/">Terraform, feature flags, and configurability</a></strong></p></li><li><p><strong><a href="https://towardsdatascience.com/zero-waste-agentic-rag-designing-caching-architectures-to-minimize-latency-and-llm-costs-at-scale/">Designing caching architectures to minimize latency and LLM costs at scale</a></strong></p></li><li><p><strong><a href="https://trufflesecurity.com/blog/google-api-keys-werent-secrets-but-then-gemini-changed-the-rules">Google API keys weren&#8217;t secrets. But then Gemini changed the rules</a></strong></p></li><li><p><strong><a href="https://bigdataboutique.com/blog/kfc-architecture-blueprint-kafka-flink-and-clickhouse">The KFC architecture blueprint: Kafka, Flink, and ClickHouse</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://github.com/Cloudgeni-ai/infrastructure-agents-guide">How to design, build, and operate AI agents for infrastructure teams</a></strong></p></li><li><p><strong><a href="https://thomasthornton.cloud/draw-io-mcp-for-diagram-generation-why-its-worth-using/">Draw.io MCP for DevOps diagrams generation</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://thomasthornton.cloud/draw-io-mcp-for-diagram-generation-why-its-worth-using/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zrnV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png 424w, https://substackcdn.com/image/fetch/$s_!zrnV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png 848w, https://substackcdn.com/image/fetch/$s_!zrnV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png 1272w, https://substackcdn.com/image/fetch/$s_!zrnV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zrnV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png" width="825" height="466" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:466,&quot;width&quot;:825,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image showing creation using draw.io and github copilot custom skill for image creation&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://thomasthornton.cloud/draw-io-mcp-for-diagram-generation-why-its-worth-using/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image showing creation using draw.io and github copilot custom skill for image creation" title="Image showing creation using draw.io and github copilot custom skill for image creation" srcset="https://substackcdn.com/image/fetch/$s_!zrnV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png 424w, https://substackcdn.com/image/fetch/$s_!zrnV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png 848w, https://substackcdn.com/image/fetch/$s_!zrnV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png 1272w, https://substackcdn.com/image/fetch/$s_!zrnV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2feda8ee-fd92-479f-9d45-cfdd8ee6d771_825x466.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://www.freecodecamp.org/news/master-kubernetes-through-production-ready-practice/">Master Kubernetes through production-ready practice</a></strong></p></li><li><p><strong><a href="https://www.microsoft.com/en-us/security/blog/2026/02/19/running-openclaw-safely-identity-isolation-runtime-risk/">Running OpenClaw safely</a></strong></p></li><li><p><strong><a href="https://www.tsukie.com/en/technologies/use-cli-like-a-modern-tech-bro/">Use CLI like a modern tech bro</a></strong></p></li><li><p><strong><a href="https://productsecurity.ghost.io/semgrep-ai-for-infrastructure-as-code-targeted-iac-security-without-the-noise/">Semgrep + AI for Infrastructure as Code</a></strong></p></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://medium.com/trendyol-tech/debugging-a-go-memory-leak-from-oom-to-stable-with-pprof-7b3808d76890">Debugging a Go memory leak</a></strong></p></li><li><p><strong><a href="https://towardsthecloud.com/blog/aws-cost-optimization-best-practices">AWS cost optimization best practices</a></strong></p></li><li><p><strong><a href="https://www.pgedge.com/blog/semantic-caching-in-postgresql-a-hands-on-guide-to-pg_semantic_cache">A hands-on guide to Postgres caching</a></strong></p></li><li><p><strong><a href="https://blog.jetbrains.com/go/2026/03/02/secure-go-error-handling-best-practices/">Best practices for secure error handling in Go</a></strong></p></li></ul><h4>Videos of the week</h4><iframe class="spotify-wrap podcast" data-attrs="{&quot;image&quot;:&quot;https://i.scdn.co/image/ab6765630000ba8aafa182733bb2332aae8c75aa&quot;,&quot;title&quot;:&quot;The AI Broke Production But Please Don't Tell Anyone&quot;,&quot;subtitle&quot;:&quot;Corey Quinn&quot;,&quot;description&quot;:&quot;Episode&quot;,&quot;url&quot;:&quot;https://open.spotify.com/episode/6LzOYWpBghb4V0Vk0vBFK7&quot;,&quot;belowTheFold&quot;:true,&quot;noScroll&quot;:false}" src="https://open.spotify.com/embed/episode/6LzOYWpBghb4V0Vk0vBFK7" frameborder="0" gesture="media" allowfullscreen="true" allow="encrypted-media" loading="lazy" data-component-name="Spotify2ToDOM"></iframe><div id="youtube2-V-lI7AmusGs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;V-lI7AmusGs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/V-lI7AmusGs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/coder/coder">Self-hosted platform</a></strong> for provisioning secure cloud development environments and workspaces defined with Terraform and accessed through remote IDEs.</p></li><li><p><strong><a href="https://github.com/KeygraphHQ/shannon">Autonomous AI pentesting framework </a></strong>that analyzes source code, discovers attack paths, and executes real exploits to validate web app vulnerabilities.</p></li><li><p><strong><a href="https://github.com/AikidoSec/safe-chain">Local proxy </a></strong>that protects developers and CI pipelines by scanning npm and PyPI packages for malware and blocking risky or newly published dependencies before installation.</p></li><li><p><strong><a href="https://github.com/awslabs/threat-designer">AI-powered threat modeling tool</a></strong>&nbsp;that analyzes system architectures and generates security threat models using LLM agents.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/awslabs/threat-designer" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uNR-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png 424w, https://substackcdn.com/image/fetch/$s_!uNR-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png 848w, https://substackcdn.com/image/fetch/$s_!uNR-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png 1272w, https://substackcdn.com/image/fetch/$s_!uNR-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uNR-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png" width="1456" height="829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:829,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:997293,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/awslabs/threat-designer&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/190122742?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uNR-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png 424w, https://substackcdn.com/image/fetch/$s_!uNR-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png 848w, https://substackcdn.com/image/fetch/$s_!uNR-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png 1272w, https://substackcdn.com/image/fetch/$s_!uNR-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64fe81e0-0035-40b3-aa6f-4db54e8e16d9_3024x1722.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://github.com/ray-project/kuberay">A Kubernetes operator&nbsp;</a></strong>that deploys, autoscales, and manages Ray clusters and workloads for distributed AI and machine learning on Kubernetes.</p></li><li><p><strong><a href="https://github.com/k1LoW/runn">YAML-driven CLI</a></strong> for scenario-based testing, API automation, and load testing across HTTP, gRPC, databases, browsers, SSH, and local commands</p></li><li><p><strong><a href="https://github.com/praetorian-inc/titus">High-performance secrets scanner </a></strong>that detects and validates API keys, tokens, and credentials across source code, git history, binaries, and web traffic</p></li><li><p><strong><a href="https://github.com/volcano-sh/volcano">Kubernetes native batch scheduler</a></strong> designed for AI, ML, big data, and HPC workloads with advanced resource scheduling and queue management</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jVjQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jVjQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png 424w, https://substackcdn.com/image/fetch/$s_!jVjQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png 848w, https://substackcdn.com/image/fetch/$s_!jVjQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png 1272w, https://substackcdn.com/image/fetch/$s_!jVjQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jVjQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png" width="515" height="429.0314960629921" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:529,&quot;width&quot;:635,&quot;resizeWidth&quot;:515,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Vibe Debugging Be Like&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Vibe Debugging Be Like" title="Vibe Debugging Be Like" srcset="https://substackcdn.com/image/fetch/$s_!jVjQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png 424w, https://substackcdn.com/image/fetch/$s_!jVjQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png 848w, https://substackcdn.com/image/fetch/$s_!jVjQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png 1272w, https://substackcdn.com/image/fetch/$s_!jVjQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20ca3b3-faa4-489a-8af7-b0bc47a76841_635x529.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #203: AWS 100K Credits, Scaling GitOps, Git inside Postgres and OpenClaw Security]]></title><description><![CDATA[Reducing Go agent binaries by 77% and saving 70% on S3 at petabyte scale, to automating RDS to Aurora migrations and scaling GitOps in the enterprise. Also, MCP server security and scaling GitOps.]]></description><link>https://www.devopsbulletin.com/p/digest-203-aws-100k-credits-scaling</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-203-aws-100k-credits-scaling</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 27 Feb 2026 16:37:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/GQ6piqfwr5c" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://hubs.li/Q044vwL-0" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e7pv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png 424w, https://substackcdn.com/image/fetch/$s_!e7pv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png 848w, https://substackcdn.com/image/fetch/$s_!e7pv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png 1272w, https://substackcdn.com/image/fetch/$s_!e7pv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e7pv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png" width="228" height="65.50746268656717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:77,&quot;width&quot;:268,&quot;resizeWidth&quot;:228,&quot;bytes&quot;:9407,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://hubs.li/Q044vwL-0&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/189230465?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!e7pv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png 424w, https://substackcdn.com/image/fetch/$s_!e7pv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png 848w, https://substackcdn.com/image/fetch/$s_!e7pv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png 1272w, https://substackcdn.com/image/fetch/$s_!e7pv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcecb7aea-d306-4ac3-98b1-f33ec3c0cb99_268x77.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>Big news this week includes an exclusive offer for DevOps Bulletin subscribers: up to <a href="https://hubs.li/Q044vwL-0">$100k in free credits</a> for building or scaling your stack on AWS. Our curated stories share how Datadog reduced its Go agent binaries by 77%, Netflix&#8217;s journey migrating RDS Postgres workloads to Aurora, enterprise strategies for scaling GitOps, rendering 100 million pixels per second over SSH, FinOps tips to reduce 70% of S3 cost, running Git inside Postgres, and why securing OpenClaw may be the wrong problem to solve.</p><p>Tutorials this week go deep into Postgres fundamentals, Docker BuildKit, and hard lessons from real-world SQL queries, as well as building Terraform review agents with Gemini, designing secure agent skills and MCP servers, and deploying a production-ready, scalable code modernization platform. </p><p>The open source picks include an autonomous Claude powered multi agent system that turns Linear issues into reviewed pull requests, a PostgreSQL proxy with connection pooling and sharding, a terminal dashboard for managing cron jobs over SSH, a VSCode extension that visualizes SQL lineage and dependencies, a local first AI agent task manager, and an S3 native Kafka compatible event streaming server built as a single Rust binary.</p><p>All this and more in this week&#8217;s DevOps Bulletin, don&#8217;t miss out!</p><h4>Get up to $100k in FREE AWS credits</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://hubs.li/Q044vwL-0" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H1jZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png 424w, https://substackcdn.com/image/fetch/$s_!H1jZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png 848w, https://substackcdn.com/image/fetch/$s_!H1jZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!H1jZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H1jZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1109338,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://hubs.li/Q044vwL-0&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/189230465?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!H1jZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png 424w, https://substackcdn.com/image/fetch/$s_!H1jZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png 848w, https://substackcdn.com/image/fetch/$s_!H1jZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!H1jZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc754b3b9-5bae-4e4e-82a3-0368aaf0825e_2560x1280.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>How to reduce your AWS expenses without compromising your product's potential? <strong><a href="https://hubs.li/Q044vwL-0">Spendbase</a></strong>, in partnership with AWS, offers up to $100k in free AWS credits for DevOps Bulletin subscribers. The application process is simple: new &amp; existing AWS users are eligible (even if you've received credits before). Everything you need is a startup under 10 years old with a corporate website.</p><p><strong><a href="https://hubs.li/Q044vwL-0">Claim your credits now!</a></strong></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://www.datadoghq.com/blog/engineering/agent-go-binaries/">How we reduced the size of our Agent Go binaries by up to 77%</a></strong></p></li><li><p><strong><a href="https://netflixtechblog.com/automating-rds-postgres-to-aurora-postgres-migration-261ca045447f">Automating RDS Postgres to Aurora Postgres migration</a></strong></p></li><li><p><strong><a href="https://platformengineering.org/blog/how-to-scale-gitops-in-the-enterprise">How to scale GitOps in the enterprise</a></strong></p></li><li><p><strong><a href="https://eieio.games/blog/secure-massively-multiplayer-snake/">Rendering 100M pixels a second over SSH</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/aws-cloud-financial-management/petabyte-scale-cost-optimization-how-a-video-hosting-platform-saved-70-on-s3/">How a video hosting platform saved 70% on S3</a></strong></p></li><li><p><strong><a href="https://nesbitt.io/2026/02/26/git-in-postgres.html">Git in Postgres</a></strong></p></li><li><p><strong><a href="https://www.aikido.dev/blog/why-trying-to-secure-openclaw-is-ridiculous">Why is trying to secure OpenClaw ridiculous</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://youjustneedpostgres.com/">You just need Postgres</a></strong></p></li><li><p><strong><a href="https://github.com/vercel-labs/just-bash">Bash for agents</a></strong></p></li><li><p><strong><a href="https://medium.com/@m0ps/beyond-the-fix-building-an-in-house-terraform-review-agent-with-gemini-cli-2632f2bcaf73">Building an in-house Terraform review agent with Gemini CLI</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/devops/building-a-scalable-code-modernization-solution-with-aws-transform-custom/">Building a scalable code modernization solution with AWS Transform custom</a></strong></p></li><li><p><strong><a href="https://tuananh.net/2026/02/25/buildkit-docker-hidden-gem/">Docker&#8217;s hidden gem that can build almost anything</a></strong></p></li><li><p><strong><a href="https://medium.com/@syedmuhammad1422/from-ctes-to-collation-hard-lessons-from-a-real-sql-query-10a00cc91d1d">Hard lessons from a real SQL query</a></strong></p></li><li><p><strong><a href="https://www.praetorian.com/blog/mcp-server-security-the-hidden-ai-attack-surface">MCP server security</a></strong></p></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://engineering.block.xyz/blog/3-principles-for-designing-agent-skills">3 principles for designing agent skills</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/containers/migrate-amazon-ec2-to-ecs-express-mode-using-kiro-cli-and-mcp-servers/">Migrate Amazon EC2 to ECS Express Mode using Kiro CLI and MCP servers</a></strong></p></li><li><p><strong><a href="https://www.cncf.io/blog/2026/02/24/making-harbor-production-ready-essential-considerations-for-deployment/">Making Harbor production-ready</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-GQ6piqfwr5c" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;GQ6piqfwr5c&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/GQ6piqfwr5c?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-vtWMgVCMsx8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;vtWMgVCMsx8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/vtWMgVCMsx8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p>An autonomous <strong><a href="https://github.com/Intrect-io/OpenSwarm">Claude-powered multi-agent</a></strong> system that turns Linear issues into reviewed, tested, and merged pull requests.</p></li><li><p><strong><a href="https://github.com/antoniorodr/cronboard">Terminal dashboard</a></strong> for managing and scheduling local and remote cron jobs over SSH with validation and autocompletion.</p></li><li><p><strong><a href="https://github.com/buva7687/sql-crack">VSCode extension</a></strong> that turns SQL queries and whole workspaces into interactive execution flow, lineage, and dependency diagrams.</p></li><li><p><strong><a href="https://github.com/pgdogdev/pgdog">PostgreSQL proxy</a></strong> that provides connection pooling, query-aware load balancing, health checks, and built-in database sharding.</p></li><li><p>Local first AI agent <strong><a href="https://github.com/MeisnerDan/mission-control">task manager</a></strong> that organizes, prioritizes, and orchestrates multiple coding agents with a dashboard.</p></li><li><p>S3 native Kafka-compatible <strong><a href="https://github.com/gbram1/streamhouse">event streaming server</a></strong> that stores data directly in object storage with a single Rust binary and no broker fleet.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Get7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Get7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png 424w, https://substackcdn.com/image/fetch/$s_!Get7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png 848w, https://substackcdn.com/image/fetch/$s_!Get7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png 1272w, https://substackcdn.com/image/fetch/$s_!Get7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Get7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png" width="400" height="628.1459419210722" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2109,&quot;width&quot;:1343,&quot;resizeWidth&quot;:400,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Every Startup Right Now&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Every Startup Right Now" title="Every Startup Right Now" srcset="https://substackcdn.com/image/fetch/$s_!Get7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png 424w, https://substackcdn.com/image/fetch/$s_!Get7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png 848w, https://substackcdn.com/image/fetch/$s_!Get7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png 1272w, https://substackcdn.com/image/fetch/$s_!Get7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b747667-4e54-4d54-a872-144795864ec0_1343x2109.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #202: Terraform Claude Skills, FinOps FOCUS 1.2, AI Fatigue for Cloud Engineers, and MCP for Web Data Extraction]]></title><description><![CDATA[Gaps in FOCUS 1.2 billing data, the truth about AI fatigue for cloud engineers, and the three AI skills that matter most. Plus, latest DevOps, FinOps, cloud security, Postgres, Docker, and projects.]]></description><link>https://www.devopsbulletin.com/p/digest-202-terraform-claude-skills</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-202-terraform-claude-skills</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 20 Feb 2026 16:28:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/yP8ELodU0zs" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://brightdata.com/ai/mcp-server?utm_source=brand&amp;utm_campaign=brnd-mkt_newsletter_devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Udo0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png 424w, https://substackcdn.com/image/fetch/$s_!Udo0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png 848w, https://substackcdn.com/image/fetch/$s_!Udo0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png 1272w, https://substackcdn.com/image/fetch/$s_!Udo0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Udo0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png" width="268" height="85" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:85,&quot;width&quot;:268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10218,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://brightdata.com/ai/mcp-server?utm_source=brand&amp;utm_campaign=brnd-mkt_newsletter_devopsbulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/188620508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Udo0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png 424w, https://substackcdn.com/image/fetch/$s_!Udo0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png 848w, https://substackcdn.com/image/fetch/$s_!Udo0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png 1272w, https://substackcdn.com/image/fetch/$s_!Udo0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd08ee2c2-6f1c-4d62-93e0-236cd2673cc1_268x85.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>In this week&#8217;s news, we unpack the hidden friction inside FOCUS 1.2 and what happens when a clean FinOps specification collides with messy real billing data. We also cover why Docker sandboxes deserve more attention, how Netflix scales LLM post-training, a Firebase misconfiguration that exposed 300 million messages, and a reflective farewell to Rust.</p><p>This week&#8217;s tutorials include an interactive tour of Go 1.26, an OpenClaw security engineer&#8217;s cheat sheet, the one Claude skill every DevOps engineer should master, how to detect read efficiency issues in Postgres queries, Docker log rotation basics, and a living PostgreSQL sample database you can run locally. We also explore a FinOps guide to updated spend-based CUDs, deploying a production-ready FastAPI app with Terraform on AWS, and encrypting files with passkeys and age.</p><p>Our video of the week breaks down AI fatigue and why cloud engineers feel overwhelmed by nonstop AI hype. We also spotlight <a href="https://brightdata.com/ai/mcp-server?utm_source=brand&amp;utm_campaign=brnd-mkt_newsletter_devopsbulletin">Bright Data MCP</a>, a single entry point for searching, crawling, and extracting real-time web data without dealing with CAPTCHA, JavaScript rendering, or geo restrictions.</p><p>The open source picks include a macOS helper that plays Warcraft style sounds when Claude Code finishes tasks, a continuously updated IPv4 blocklist for firewall and WAF protection, a production ready Go based LLM vulnerability scanner that tests models against more than 210 adversarial attacks, a lightweight command runner for project specific tasks, a SQL driven dashboard platform powered by DuckDB, and a Claude Code plugin marketplace focused on security auditing and malware analysis skills.</p><p>All this and more in this week&#8217;s DevOps Bulletin, don&#8217;t miss out!</p><h4>One MCP to access the Web</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://brightdata.com/ai/mcp-server?utm_source=brand&amp;utm_campaign=brnd-mkt_newsletter_devopsbulletin&amp;promo=entail" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m407!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png 424w, https://substackcdn.com/image/fetch/$s_!m407!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png 848w, https://substackcdn.com/image/fetch/$s_!m407!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png 1272w, https://substackcdn.com/image/fetch/$s_!m407!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m407!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png" width="582" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:582,&quot;bytes&quot;:4042884,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://brightdata.com/ai/mcp-server?utm_source=brand&amp;utm_campaign=brnd-mkt_newsletter_devopsbulletin&amp;promo=entail&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/188620508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!m407!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png 424w, https://substackcdn.com/image/fetch/$s_!m407!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png 848w, https://substackcdn.com/image/fetch/$s_!m407!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png 1272w, https://substackcdn.com/image/fetch/$s_!m407!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F684bdb04-15df-4c76-9209-fc6eb90bf6b7_3009x3009.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://brightdata.com/ai/mcp-server?utm_source=brand&amp;utm_campaign=brnd-mkt_newsletter_devopsbulletin&amp;promo=entail">Bright Data MCP</a> gives you a single entry point to search, crawl, and extract real-time web data. It automatically selects the right tool for each site and handles CAPTCHA, JavaScript rendering, and geo restrictions out of the box.<br><br>If you are building RAG pipelines or autonomous agents with LangChain, CrewAI, or LlamaIndex and are tired of stale data or broken scrapers, MCP removes the data plumbing so you can focus on the logic.</p><p><strong><a href="https://brightdata.com/ai/mcp-server?utm_source=brand&amp;utm_campaign=brnd-mkt_newsletter_devopsbulletin&amp;promo=entail">Start building.</a></strong></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://finopszerotohero.substack.com/p/the-focus-problem-nobody-talks-about">The FOCUS problem nobody talks about</a></strong></p></li><li><p><strong><a href="https://blog.grant.place/2026/01/30/docker-sandboxes-are-great.html">Docker sandboxes are great</a></strong></p></li><li><p><strong><a href="https://developers.redhat.com/articles/2026/02/17/uncomfortable-truth-about-vibe-coding#where_it_falls_apart">The uncomfortable truth about vibe coding</a></strong></p></li><li><p><strong><a href="https://netflixtechblog.com/scaling-llm-post-training-at-netflix-0046f8790194">Scaling LLM post-training at Netflix</a></strong></p></li><li><p><strong><a href="https://hackread.com/firebase-misconfiguration-chat-ask-ai-users-expose/">Firebase misconfiguration exposes 300M messages</a></strong></p></li><li><p><strong><a href="https://www.bitsight.com/blog/chinese-vulnerability-database-analysis-cnvd-cnnvd">Examining Chinese national vulnerability databases</a></strong></p></li><li><p><strong><a href="https://theredbeard.io/blog/i-intercepted-3177-api-calls-across-4-ai-coding-tools/">I intercepted 3,177 API calls across 4 AI coding tools</a></strong></p></li><li><p><strong><a href="https://yieldcode.blog/post/farewell-rust/">Farewell, Rust</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://antonz.org/go-1-26/">Go 1.26 interactive tour</a></strong></p></li><li><p><strong><a href="https://semgrep.dev/blog/2026/openclaw-security-engineers-cheat-sheet/">OpenClaw security engineer&#8217;s cheat sheet</a></strong></p></li><li><p><strong><a href="https://awsfundamentals.com/blog/terraform-claude-skill-guide">The only Claude skill every DevOps engineer needs</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://awsfundamentals.com/blog/terraform-claude-skill-guide" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nXE8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nXE8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nXE8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nXE8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nXE8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg" width="1456" height="485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:485,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Terraform Skill Mindmap Overview&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://awsfundamentals.com/blog/terraform-claude-skill-guide&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Terraform Skill Mindmap Overview" title="Terraform Skill Mindmap Overview" srcset="https://substackcdn.com/image/fetch/$s_!nXE8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nXE8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nXE8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nXE8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea2df214-699f-4aa6-9c89-e83eea2841ef_3840x1278.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://www.pgmustard.com/blog/read-efficiency-issues-in-postgres-queries">Read efficiency issues in Postgres queries</a></strong></p></li><li><p><strong><a href="https://www.pulumi.com/blog/top-8-claude-skills-devops-2026/">The Claude skills I actually use for DevOps</a></strong></p></li><li><p><strong><a href="https://www.ntietz.com/blog/til-docker-log-rotation/">TIL: Docker log rotation</a></strong></p></li><li><p><strong><a href="https://www.softwareandbooz.com/introducing-bluebox-docker-a-living-postgresql-sample-database/">A living PostgreSQL sample database</a></strong></p></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://cloud.google.com/blog/topics/cost-management/a-finops-professionals-guide-to-updated-spend-based-cuds">A FinOps guide to updated spend-based CUDs</a></strong></p></li><li><p><strong><a href="https://blog.stackademic.com/from-zero-to-production-deploying-fastapi-applications-with-terraform-on-aws-749141eb4672">Deploying a production-ready FastAPI app with Terraform</a></strong></p></li><li><p><strong><a href="https://techcommunity.microsoft.com/blog/appsonazureblog/chat-with-your-app-service-logs-using-github-copilot/4491573">Chat with your App Service logs using GitHub Copilot</a></strong></p></li><li><p><strong><a href="https://words.filippo.io/passkey-encryption/">Encrypting files with Passkeys and age</a></strong></p></li></ul><h4>Videos of the week</h4><iframe class="spotify-wrap podcast" data-attrs="{&quot;image&quot;:&quot;https://i.scdn.co/image/ab6765630000ba8aafa182733bb2332aae8c75aa&quot;,&quot;title&quot;:&quot;Bedrock Throttling Guide: AWS Publishes Its Own Roast&quot;,&quot;subtitle&quot;:&quot;Corey Quinn&quot;,&quot;description&quot;:&quot;Episode&quot;,&quot;url&quot;:&quot;https://open.spotify.com/episode/3znlKajmzkwBoB8jHUey1K&quot;,&quot;belowTheFold&quot;:true,&quot;noScroll&quot;:false}" src="https://open.spotify.com/embed/episode/3znlKajmzkwBoB8jHUey1K" frameborder="0" gesture="media" allowfullscreen="true" allow="encrypted-media" loading="lazy" data-component-name="Spotify2ToDOM"></iframe><div id="youtube2-yP8ELodU0zs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;yP8ELodU0zs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/yP8ELodU0zs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p>A <strong><a href="https://peon-ping.vercel.app/">macOS helper</a></strong> that plays Warcraft-style sound notifications when Claude Code finishes or needs input, so you never miss terminal events</p></li><li><p>A continuously updated, community-maintained IPv4 <strong><a href="https://github.com/duggytuxy/Data-Shield_IPv4_Blocklist">blocklist</a></strong> of malicious IPs for firewall and WAF protection.</p></li><li><p>A production-ready Go-based <strong><a href="https://github.com/praetorian-inc/augustus">LLM vulnerability scanner</a></strong> that tests models against +210 adversarial attacks, including prompt injection and jailbreaks</p></li><li><p><strong><a href="https://github.com/casey/just">Just</a></strong> is a handy way to save and run project-specific commands.</p></li><li><p>A SQL-driven <strong><a href="https://github.com/taleshape-com/shaper">dashboard platform</a></strong> powered by DuckDB that lets you build and share analytics with pure SQL queries</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/taleshape-com/shaper" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nWUb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp 424w, https://substackcdn.com/image/fetch/$s_!nWUb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp 848w, https://substackcdn.com/image/fetch/$s_!nWUb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp 1272w, https://substackcdn.com/image/fetch/$s_!nWUb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nWUb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp" width="1456" height="725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:725,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76592,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://github.com/taleshape-com/shaper&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/188620508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nWUb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp 424w, https://substackcdn.com/image/fetch/$s_!nWUb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp 848w, https://substackcdn.com/image/fetch/$s_!nWUb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp 1272w, https://substackcdn.com/image/fetch/$s_!nWUb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ef1c8-b237-41bc-87ac-145ef088d91a_1920x956.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p>A Claude Code plugin marketplace providing <strong><a href="https://github.com/trailofbits/skills">security-focused skills</a></strong> for auditing, testing, malware analysis, and secure development workflows</p></li></ul><h4>Meme of the week</h4><div id="youtube2-40SnEd1RWUU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;40SnEd1RWUU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/40SnEd1RWUU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #201: Heroku Shutdown, GitLab at Scale, DDoS with Golang, and AI Agents Security]]></title><description><![CDATA[Heroku&#8217;s effective shutdown, how GitLab deploys at massive scale, why Postgres postmaster doesn&#8217;t scale, scaling Kubernetes from zero, AWS Cost Categories, Terraform PR reviews and AI agents security.]]></description><link>https://www.devopsbulletin.com/p/digest-201-heroku-shutdown-gitlab</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-201-heroku-shutdown-gitlab</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 13 Feb 2026 17:13:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0d439215-a74e-4062-8e85-16417b0ad191_697x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>In this week&#8217;s news, we look at what Heroku&#8217;s &#8220;sustaining engineering&#8221; announcement really means for teams still running production workloads there, how GitLab deploys the largest GitLab instance in the world 12x a day, and why Postgres&#8217; postmaster model becomes a scaling bottleneck under extreme concurrency. We also cover ChatGPT Containers now running bash and installing packages, a developer accidentally DDoS-ing their own laptop while learning Go concurrency, and fresh data from the 2025 State of Cloud Security report.</p><p>This week&#8217;s tutorials go deep into orchestrating specialized AI agent teams, implementing hierarchical AWS Cost Categories for better financial visibility, reducing Kubernetes cold-start latency when scaling nodes from zero, testing whether LLMs can detect hidden backdoors in binaries, building a fully serverless CI/CD pipeline with GitHub Actions and Terraform, understanding Postgres locks visually and conceptually, simplifying Control Tower governance with enhanced CloudFormation Hooks, building a local-first Obsidian RAG with DuckDB and MotherDuck, and generating readable Terraform plan reports for pull request reviews.</p><p>The open-source picks include a Kubernetes-native database provisioning platform, a lightweight real-time Docker log viewer, a modern JavaScript-based load testing tool, a GitHub-style diff pager for your terminal, and a security scanner that analyzes AI agent skills for prompt injection and data exfiltration risks.</p><p>All this and more in this week&#8217;s DevOps Bulletin, don&#8217;t miss out!</p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://wsvincent.com/heroku-is-finally-dead/">Heroku is officially dead</a></strong></p></li><li><p><strong><a href="https://about.gitlab.com/blog/continuously-deploying-the-largest-gitlab-instance/">How we deploy the largest GitLab instance 12 times daily</a></strong></p></li><li><p><strong><a href="https://simonwillison.net/2026/Jan/26/chatgpt-containers/">ChatGPT Containers can now run bash, pip/npm install packages, and download files</a></strong></p></li><li><p><strong><a href="https://medium.com/@sulavstha007/from-naive-go-to-thread-pools-a-tiny-cli-that-taught-me-concurrency-f69310cf0198">DDOS'd my own laptop learning Go</a></strong></p></li><li><p><strong><a href="https://www.datadoghq.com/resources/state-of-cloud-security-2025/">State of cloud security</a></strong></p></li><li><p><strong><a href="https://www.recall.ai/blog/postgres-postmaster-does-not-scale">Postgres Postmaster does not scale</a></strong></p></li><li><p><strong><a href="https://nesbitt.io/2026/02/12/the-many-flavors-of-ignore-files.html">The many flavors of .ignore files</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://www.vincirufus.com/posts/antfarm-patterns-orchestrating-specialized-agent-teams/">Orchestrating specialized agent teams for compound engineering</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/aws-cloud-financial-management/improve-cost-visibility-and-observability-with-aws-cost-categories-part-2-hierarchical-structures-and-programmatic-implementation/">Improve cost visibility and observability with AWS cost categories</a></strong></p></li><li><p><strong><a href="https://lablabs.io/blog/scaling-nodes-from-zero-the-bottleneck">Scaling Kubernetes nodes from zero</a></strong></p></li><li><p><strong><a href="https://quesma.com/blog/introducing-binaryaudit/">We hid backdoors in binaries &#8212; Opus 4.6 found 49% of them</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://quesma.com/blog/introducing-binaryaudit/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DNoO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png 424w, https://substackcdn.com/image/fetch/$s_!DNoO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png 848w, https://substackcdn.com/image/fetch/$s_!DNoO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png 1272w, https://substackcdn.com/image/fetch/$s_!DNoO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DNoO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png" width="689" height="177" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:177,&quot;width&quot;:689,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27753,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://quesma.com/blog/introducing-binaryaudit/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/187862223?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DNoO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png 424w, https://substackcdn.com/image/fetch/$s_!DNoO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png 848w, https://substackcdn.com/image/fetch/$s_!DNoO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png 1272w, https://substackcdn.com/image/fetch/$s_!DNoO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7238dc6e-e5e9-4fa4-a8c8-93ccad8f667e_689x177.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p><strong><a href="https://medium.com/@davidiriondopalacios/building-a-serverless-ci-cd-pipeline-on-aws-with-github-actions-and-terraform-dae596f1d2e0">Building a Serverless CI/CD pipeline on AWS with GitHub Actions and Terraform</a></strong></p></li><li><p><strong><a href="https://postgreslocksexplained.com/">Postgres locks explained</a></strong></p></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://aws.amazon.com/blogs/mt/simplify-aws-control-tower-governance-with-enhanced-aws-cloudformation-hooks/">Simplify AWS Control Tower governance with enhanced AWS CloudFormation Hooks</a></strong></p></li><li><p><strong><a href="https://motherduck.com/blog/obsidian-rag-duckdb-motherduck/">Building an Obsidian RAG with DuckDB and MotherDuck</a></strong></p></li><li><p><strong><a href="https://levelup.gitconnected.com/create-readable-terraform-plans-for-pull-request-reviews-with-tfplan2md-ea646e00e59b">Create readable Terraform plans for pull request reviews with tfplan2md</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-jFUfcvYvnEQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;jFUfcvYvnEQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/jFUfcvYvnEQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p>A <strong><a href="https://github.com/openeverest/openeverest">platform</a></strong> to provision, manage, scale, and back up databases such as MySQL, PostgreSQL, and MongoDB using Helm or a CLI.</p></li><li><p>Lightweight <strong><a href="https://github.com/amir20/dozzle">web UI</a></strong> to stream and search Docker container logs in real time across single or multiple hosts.</p></li><li><p>A developer-focused <strong><a href="https://github.com/grafana/k6">load testing tool</a></strong> that lets you write performance tests in JavaScript and run them locally, in CI, or at scale.</p></li><li><p>A <strong><a href="https://github.com/dlvhdr/diffnav">git diff pager</a></strong> based on delta but with a file tree, &#224; la GitHub.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/dlvhdr/diffnav" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4d4x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png 424w, https://substackcdn.com/image/fetch/$s_!4d4x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png 848w, https://substackcdn.com/image/fetch/$s_!4d4x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!4d4x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4d4x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png" width="1456" height="783" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:783,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1905364,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/dlvhdr/diffnav&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/187862223?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4d4x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png 424w, https://substackcdn.com/image/fetch/$s_!4d4x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png 848w, https://substackcdn.com/image/fetch/$s_!4d4x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!4d4x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0800cd2-fcb6-4146-893c-ccbd042c1df4_1935x1040.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://github.com/cisco-ai-defense/skill-scanner">Security scanner</a></strong> that analyzes AI agent skills for prompt injection, data exfiltration, and malicious code using static rules, dataflow analysis, and optional LLM review.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ENAS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ENAS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ENAS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ENAS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ENAS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ENAS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg" width="445" height="604.9764521193092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:637,&quot;resizeWidth&quot;:445,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;No alternative text description for this image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="No alternative text description for this image" title="No alternative text description for this image" srcset="https://substackcdn.com/image/fetch/$s_!ENAS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ENAS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ENAS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ENAS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01421807-d0b6-4054-93c2-9c7f2a64db27_637x866.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #200: Kubernetes in Container, Git Shitstorm, $5M Data Centers and SDLC Threat Framework]]></title><description><![CDATA[Why GitHub Actions is slowing teams down, what it really takes to run a $5M private data center. We also break down a new SDLC threat framework, why AI-driven SRE needs system topology, real-world Terraform practices at Preply, and deep technical guides on Kubernetes, PostgreSQL, supply-chain security, and production reliability.]]></description><link>https://www.devopsbulletin.com/p/digest-200-kubernetes-in-container</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-200-kubernetes-in-container</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 06 Feb 2026 16:18:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/041b1c16-3f2c-461c-bd45-b85f63ea03aa_675x499.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>In this week&#8217;s news, we look at why GitHub Actions is becoming a serious productivity bottleneck for many teams, what it actually takes to own a $5M data center instead of paying a $25M cloud bill, and a new SDLC threat framework designed to map real supply-chain risks across CI, registries, and production. We also cover why AI-powered SRE breaks down without system topology, how Preply structures Terraform with minimal modules and policy guardrails, how Salesforce can roll back 1.5 trillion requests in under ten minutes, and how Pinterest built a compute platform capable of billions of async task executions.</p><p>This week&#8217;s tutorials go deep into running Kubernetes inside a container, partitioning a 17TB PostgreSQL table, closing container supply-chain gaps with admission control, designing effective SLOs, runbooks, and post-mortems, implementing correct readiness checks for Spring Boot, automating Route 53 updates with Terraform, building a minimal Kubernetes cluster on NixOS, and understanding how MFA downgrade attacks and Kubernetes RBAC misconfigurations lead to real-world compromises.</p><p>The open-source picks include a VS Code and Cursor extension that detects malicious IDE behavior in real time, a collection of Falco rules for Kubernetes attack detection, a single-binary Kubernetes dashboard with built-in AI, a near-zero-downtime MySQL migration library from Shopify, an idempotent SQL schema management tool, and a high-performance job queue for Bun that replaces Redis with SQLite.</p><p>All this and more in this week&#8217;s DevOps Bulletin, don&#8217;t miss out!</p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://www.iankduncan.com/engineering/2026-02-05-github-actions-killing-your-team">GitHub Actions is slowly killing your engineering team</a></strong></p></li><li><p><strong><a href="https://blog.comma.ai/datacenter/">Owning a $5M data center</a></strong></p></li><li><p><strong><a href="https://www.wiz.io/blog/sitf-sdlc-threat-framework">The first threat framework dedicated to SDLC infrastructure</a></strong></p></li><li><p><strong><a href="https://www.einenlum.com/articles/git-shitstorm">Git shitstorm</a></strong></p></li><li><p><strong><a href="https://www.anyshift.io/blog/why-ai-sre-needs-topology-not-just-telemetry">Why AI-SRE needs topology, not just telemetry</a></strong></p></li><li><p><strong><a href="https://medium.com/preply-engineering/how-do-we-use-terraform-at-preply-a760bedd1838">How do we use Terraform at Preply</a></strong></p></li><li><p><strong><a href="https://engineering.salesforce.com/inside-salesforce-edge-automating-global-rollback-for-1-5-trillion-requests-in-10-minutes/">Automating global rollback for 1.5 trillion requests in 10min</a></strong></p></li><li><p><strong><a href="https://blog.bytebytego.com/p/how-pinterest-built-an-async-compute">How Pinterest built a compute platform for billions of task executions</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://github.com/T0MASD/kinc">Kubernetes in a container</a></strong></p></li><li><p><strong><a href="https://www.tines.com/blog/futureproofing-tines-partitioning-a-17tb-table-in-postgresql">Partitioning a 17TB table in PostgreSQL</a></strong></p></li><li><p><strong><a href="https://github.com/FuzzingLabs/mcp-security-hub">Offensive security MCP servers</a></strong></p></li><li><p><strong><a href="https://engineering.block.xyz/blog/kube-policies-binauthz-closing-the-supply-chain-gap-in-kubernetes">Closing the supply chain gap in Kubernetes</a></strong></p></li><li><p><strong><a href="https://fatihkoc.net/posts/sre-observability-slo-runbooks/">SLOs, Runbooks and Post-Mortems</a></strong></p></li><li><p><strong><a href="https://medium.com/@AlexanderObregon/container-readiness-checks-for-spring-boot-deployments-535ab60ca32a">Container readiness checks for Spring Boot deployments</a></strong></p></li><li><p><strong><a href="https://medium.com/@akashsdas_dev/database-indexing-e10362624ed3">Database indexing</a></strong></p></li></ul><div class="pullquote"><p><strong>Enjoying the Bulletin?</strong> Consider supporting it with a <a href="https://www.devopsbulletin.com/subscribe">paid subscription</a>. You&#8217;ll keep the free Friday issues <em>and</em> get extras like bonus deep-dives, templates, and the full archive.</p></div><ul><li><p><strong><a href="https://medium.com/@nsalexamy/automating-route-53-dns-updates-with-terraform-when-albs-are-reprovisioned-a9b1830324a4">Automating Route 53 DNS updates with Terraform</a></strong></p></li><li><p><strong><a href="https://stephank.nl/p/2025-11-17-a-small-vanilla-kubernetes-install-on-nixos.html">A &#8216;small&#8217; vanilla Kubernetes install on NixOS</a></strong></p></li><li><p><strong><a href="https://www.ioactive.com/authentication-downgrade-attacks-deep-dive-into-mfa-bypass/">Deep dive into MFA bypass</a></strong></p></li><li><p><strong><a href="https://grahamhelton.com/blog/nodes-proxy-rce">Kubernetes remote code execution via Nodes/Proxy GET permission</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-EcKSdZ_ENeg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;EcKSdZ_ENeg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/EcKSdZ_ENeg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-LFQpuZb_r6s" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;LFQpuZb_r6s&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/LFQpuZb_r6s?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p>A VSCode and Cursor <strong><a href="https://github.com/DataDog/IDE-Shepherd-extension">extension</a></strong> that provides real-time security monitoring to detect malicious extensions and supply chain attacks inside the IDE.</p></li><li><p>A collection of custom <strong><a href="https://github.com/heilancoos/k8s-custom-detections">Falco rules</a></strong> and test cases to detect real-world Kubernetes attack techniques.</p></li><li><p>A single binary <strong><a href="https://github.com/kubewall/kubewall">Kubernetes dashboard </a></strong>for multi-cluster management with built-in AI assistance.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/kubewall/kubewall" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fef3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png 424w, https://substackcdn.com/image/fetch/$s_!Fef3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png 848w, https://substackcdn.com/image/fetch/$s_!Fef3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png 1272w, https://substackcdn.com/image/fetch/$s_!Fef3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fef3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png" width="644" height="388.6355140186916" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:749,&quot;resizeWidth&quot;:644,&quot;bytes&quot;:194213,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/kubewall/kubewall&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/186966286?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Fef3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png 424w, https://substackcdn.com/image/fetch/$s_!Fef3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png 848w, https://substackcdn.com/image/fetch/$s_!Fef3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png 1272w, https://substackcdn.com/image/fetch/$s_!Fef3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6f164-43d3-453a-8e5d-28dadc0b7b37_749x452.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p>A live MySQL <strong><a href="https://github.com/Shopify/ghostferry">data migration library </a></strong>that copies selected data between databases with near zero downtime.</p></li><li><p>Idempotent <strong><a href="https://github.com/sqldef/sqldef">schema management</a></strong> for MySQL, PostgreSQL, SQLite, and SQL Server.</p></li><li><p>A high-performance <strong><a href="https://github.com/egeominotti/bunqueue">job queue</a></strong> for Bun that uses SQLite for persistence and runs without any external services.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p4-5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p4-5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p4-5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p4-5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p4-5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p4-5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg" width="406" height="451.675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1335,&quot;width&quot;:1200,&quot;resizeWidth&quot;:406,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Confidential Information&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Confidential Information" title="Confidential Information" srcset="https://substackcdn.com/image/fetch/$s_!p4-5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p4-5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p4-5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p4-5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe99eda57-a6dc-409b-a82f-5a5f190d9477_1200x1335.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #199: Claude Skill for Terraform, Google SRE with Gemini, Postgres Tips and Moltbot Security]]></title><description><![CDATA[Why SRE may be replacing traditional software engineering, and how teams are improving Docker, Kubernetes, and cloud cost efficiency in production. We also cover Postgres best practices for AI agents.]]></description><link>https://www.devopsbulletin.com/p/digest-199-claude-skill-for-terraform</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-199-claude-skill-for-terraform</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 30 Jan 2026 20:12:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/kSno1-xOjwI" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://events.cyberhaven.com/winter-2026-launch/?utm_campaign=wbn-2026-02-03-product-launch-winter-2026&amp;utm_source=passionfroot&amp;utm_medium=paid-influencers&amp;utm_content=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ag2e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png 424w, https://substackcdn.com/image/fetch/$s_!Ag2e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png 848w, https://substackcdn.com/image/fetch/$s_!Ag2e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png 1272w, https://substackcdn.com/image/fetch/$s_!Ag2e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ag2e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png" width="268" height="87" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:87,&quot;width&quot;:268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8764,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://events.cyberhaven.com/winter-2026-launch/?utm_campaign=wbn-2026-02-03-product-launch-winter-2026&amp;utm_source=passionfroot&amp;utm_medium=paid-influencers&amp;utm_content=devopsbulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/186314049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ag2e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png 424w, https://substackcdn.com/image/fetch/$s_!Ag2e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png 848w, https://substackcdn.com/image/fetch/$s_!Ag2e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png 1272w, https://substackcdn.com/image/fetch/$s_!Ag2e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0198cdc-2b06-4a9c-8a44-322cb3f843dd_268x87.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>We open with a growing problem security teams are quietly struggling with. AI tools are <a href="https://events.cyberhaven.com/winter-2026-launch/?utm_campaign=wbn-2026-02-03-product-launch-winter-2026&amp;utm_source=passionfroot&amp;utm_medium=paid-influencers&amp;utm_content=devopsbulletin">moving sensitive data</a> across SaaS and internal systems in&#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-199-claude-skill-for-terraform">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Digest #198: Kubernetes Security, Scaling Postgres at OpenAI and AI in Infra-as-Code]]></title><description><![CDATA[Scaling PostgreSQL to millions of users, new attack paths via GitHub Actions runners, Docker&#8217;s shifting role, and why some teams are ditching Redis for Postgres. Open-source tools worth trying.]]></description><link>https://www.devopsbulletin.com/p/digest-198-kubernetes-security-scaling</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-198-kubernetes-security-scaling</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 23 Jan 2026 15:27:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/odP153inZUo" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://events.iacconf.com/spotlight-ai-iac-january-2026/?refid=DevOps+Bulletin&amp;utm_campaign=27865146-FY25+-+WW+-+Virtual+Event+-+IaCConf+Spotlight+AI+January+2026&amp;utm_source=devopsbulletin&amp;utm_medium=paid_newsletter&amp;utm_content=IaCConf+Spotlight+AI+in+IaC" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PnLK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 424w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 848w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1272w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PnLK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png" width="210" height="83.05970149253731" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:106,&quot;width&quot;:268,&quot;resizeWidth&quot;:210,&quot;bytes&quot;:8760,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://events.iacconf.com/spotlight-ai-iac-january-2026/?refid=DevOps+Bulletin&amp;utm_campaign=27865146-FY25+-+WW+-+Virtual+Event+-+IaCConf+Spotlight+AI+January+2026&amp;utm_source=devopsbulletin&amp;utm_medium=paid_newsletter&amp;utm_content=IaCConf+Spotlight+AI+in+IaC&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/183902896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PnLK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 424w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 848w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1272w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>We&#8217;re kicking off with AI and Infrastructure-as-Code. <a href="https://events.iacconf.com/spotlight-ai-iac-january-2026/?refid=DevOps+Bulletin&amp;utm_campaign=27865146-FY25+-+WW+-+Virtual+Event+-+IaCConf+Spotlight+AI+January+2026&amp;utm_source=devopsbulletin&amp;utm_medium=paid_newsletter&amp;utm_content=IaCConf+Spotlight+AI+in+IaC">IaCConf Spotlight on January 28</a> brings engineers together to share how they&#8217;re using AI in &#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-198-kubernetes-security-scaling">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Digest #197: AI in DevOps, AWS Security Vulnerabilities and Terraform Reviewer Agent]]></title><description><![CDATA[How AI is changing DevOps work, where AWS is headed in 2026, and the security risks exposed by recent n8n and CodeBuild vulnerabilities. AI SRE observability, and open-source tools for security.]]></description><link>https://www.devopsbulletin.com/p/digest-197-ai-in-devops-aws-security</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-197-ai-in-devops-aws-security</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 16 Jan 2026 15:15:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tcAS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F070d121d-a1b7-4002-a218-b456c28ceb5c_1999x1125.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://events.iacconf.com/spotlight-ai-iac-january-2026/?refid=DevOps+Bulletin&amp;utm_campaign=27865146-FY25+-+WW+-+Virtual+Event+-+IaCConf+Spotlight+AI+January+2026&amp;utm_source=devopsbulletin&amp;utm_medium=paid_newsletter&amp;utm_content=AI+isn%E2%80%99t+replacing+your+team,+It%E2%80%99s+changing+how+they+work" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PnLK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 424w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 848w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1272w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PnLK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png" width="210" height="83.05970149253731" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:106,&quot;width&quot;:268,&quot;resizeWidth&quot;:210,&quot;bytes&quot;:8760,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://events.iacconf.com/spotlight-ai-iac-january-2026/?refid=DevOps+Bulletin&amp;utm_campaign=27865146-FY25+-+WW+-+Virtual+Event+-+IaCConf+Spotlight+AI+January+2026&amp;utm_source=devopsbulletin&amp;utm_medium=paid_newsletter&amp;utm_content=AI+isn%E2%80%99t+replacing+your+team,+It%E2%80%99s+changing+how+they+work&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/183902896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PnLK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 424w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 848w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1272w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>AI isn&#8217;t replacing DevOps teams, it&#8217;s changing how they work. Learn how by joining the <a href="https://events.iacconf.com/spotlight-ai-iac-january-2026/?refid=DevOps+Bulletin&amp;utm_campaign=27865146-FY25+-+WW+-+Virtual+Event+-+IaCConf+Spotlight+AI+January+2026&amp;utm_source=devopsbulletin&amp;utm_medium=paid_newsletter&amp;utm_content=AI+isn%E2%80%99t+replacing+your+team,+It%E2%80%99s+changing+how+they+work">IaCConf Spotlight</a> on January 28. In the news, AWS&#8217;s direct&#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-197-ai-in-devops-aws-security">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Digest #196: AI + IaC, AWS Security Pitfalls and DevOps Roadmap for 2026]]></title><description><![CDATA[How teams are applying AI to Infrastructure as Code, hard truths about Kubernetes and staging environments, a $1M BigQuery query fix, GitHub&#8217;s new guidance for npm maintainers, and open-source tools.]]></description><link>https://www.devopsbulletin.com/p/digest-196-ai-iac-aws-security-pitfalls</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-196-ai-iac-aws-security-pitfalls</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 09 Jan 2026 15:17:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/znRUfIaY5i4" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://events.iacconf.com/spotlight-ai-iac-january-2026/?utm_campaign=27865146-FY25+-+WW+-+Virtual+Event+-+IaCConf+Spotlight+AI+January+2026&amp;utm_source=devopsbulletin&amp;utm_medium=paid_newsletter&amp;utm_content=Building+at+the+Intersection+of+AI+and+IaC" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PnLK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 424w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 848w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1272w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PnLK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png" width="210" height="83.05970149253731" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:106,&quot;width&quot;:268,&quot;resizeWidth&quot;:210,&quot;bytes&quot;:8760,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://events.iacconf.com/spotlight-ai-iac-january-2026/?utm_campaign=27865146-FY25+-+WW+-+Virtual+Event+-+IaCConf+Spotlight+AI+January+2026&amp;utm_source=devopsbulletin&amp;utm_medium=paid_newsletter&amp;utm_content=Building+at+the+Intersection+of+AI+and+IaC&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/183902896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PnLK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 424w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 848w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1272w, https://substackcdn.com/image/fetch/$s_!PnLK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff0333a-2cd3-4d6a-80d0-b3b31198bbbc_268x106.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin.</p><p>We&#8217;re kicking off with AI and Infrastructure as Code: a <a href="https://events.iacconf.com/spotlight-ai-iac-january-2026/?utm_campaign=27865146-FY25+-+WW+-+Virtual+Event+-+IaCConf+Spotlight+AI+January+2026&amp;utm_source=devopsbulletin&amp;utm_medium=paid_newsletter&amp;utm_content=Building+at+the+Intersection+of+AI+and+IaC">spotlight event</a> on January 28 will show how platform and DevOps teams are using AI for re&#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-196-ai-iac-aws-security-pitfalls">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Digest #195: Tech in 2026, SRE Agent with Claude and Kubernetes, CI/CD for Monorepo and Free DevOps Certificates]]></title><description><![CDATA[2026 tech predictions & autonomous monitoring with Claude and Kubernetes, CI/CD for monorepos, AWS cost allocation, Go memory internals, and centralized alerting at scale.]]></description><link>https://www.devopsbulletin.com/p/digest-195-tech-in-2026-sre-agent</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-195-tech-in-2026-sre-agent</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 02 Jan 2026 14:55:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/rCEf7p3FRTM" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s edition of the DevOps Bulletin and happy New Year 2026 &#127881;</p><p>This week: AWS&#8217;s CTO share his predictions for 2026 and beyond, why developers are gaming GitHub profiles (and why star&#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-195-tech-in-2026-sre-agent">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Digest #194: What’s Broken in Kubernetes, CI/CD Attacks, FinOps Dashboard and Self-Hosting PostgreSQL.]]></title><description><![CDATA[Kubernetes optimization, CI/CD security, GitHub Actions, Cloudflare Workers, PostgreSQL 18, OpenTelemetry observability, FinOps dashboards, and open-source DevOps tools.]]></description><link>https://www.devopsbulletin.com/p/digest-194-whats-broken-in-kubernetes</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-194-whats-broken-in-kubernetes</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 26 Dec 2025 14:30:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/QjGduiCFHY4" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s edition of the DevOps Bulletin!</p><p>Why Kubernetes clusters are massively underutilized in production, how Cloudflare is eliminating cold starts with &#8220;shard and conquer,&#8221; and what h&#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-194-whats-broken-in-kubernetes">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Digest #193: Zombie GitHub Actions, Supply-Chain Attacks, Kubernetes Optimization & Docker Hardening]]></title><description><![CDATA[Infrastructure as Code at scale, GitHub Actions failures, container security, Kubernetes optimization, AWS IAM security, Terraform best practices, FinOps data pipelines, and modern DevOps tooling.]]></description><link>https://www.devopsbulletin.com/p/digest-193-zombie-github-actions</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-193-zombie-github-actions</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 19 Dec 2025 17:04:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KzZX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c0495f3-a557-449d-b34b-3cc56861fb67_956x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://depot.dev/blog/troubleshooting-github-actions-unexpected-behaviors?utm_source=fnf&amp;utm_medium=newsletter&amp;utm_campaign=depot-december&amp;utm_term=dev-ops-bulletin&amp;utm_content=troubleshooting" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!15SU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png 424w, https://substackcdn.com/image/fetch/$s_!15SU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png 848w, https://substackcdn.com/image/fetch/$s_!15SU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png 1272w, https://substackcdn.com/image/fetch/$s_!15SU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!15SU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png" width="208" height="98.56716417910448" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:127,&quot;width&quot;:268,&quot;resizeWidth&quot;:208,&quot;bytes&quot;:8543,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://depot.dev/blog/troubleshooting-github-actions-unexpected-behaviors?utm_source=fnf&amp;utm_medium=newsletter&amp;utm_campaign=depot-december&amp;utm_term=dev-ops-bulletin&amp;utm_content=troubleshooting&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/181917152?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!15SU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png 424w, https://substackcdn.com/image/fetch/$s_!15SU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png 848w, https://substackcdn.com/image/fetch/$s_!15SU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png 1272w, https://substackcdn.com/image/fetch/$s_!15SU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d23e32-0980-4fdb-a293-b540aa637acb_268x127.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Welcome to this week&#8217;s edition of the DevOps Bulletin!</p><p>Cloudflare shared how they run Cloudflare at enterprise scale with IaC, SonarSource dropped a GitHub Actions &#8220;zombie workflows&#8221; horror story, and&#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-193-zombie-github-actions">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Digest #192: Kubernetes at Scale, 1B-Row Migrations, Go Optimization, Terraform Governance and Podman vs Docker]]></title><description><![CDATA[Database migrations without downtime, Go optimization, Reddit architecture, AI agents for security operations, Terraform with OPA, ArgoCD at scale, Kubernetes troubleshooting and DevOps tooling.]]></description><link>https://www.devopsbulletin.com/p/digest-192-kubernetes-at-scale-1b</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-192-kubernetes-at-scale-1b</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 12 Dec 2025 16:59:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/IpY0_72bUTI" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s edition of the DevOps Bulletin!</p><p>Teams shared how they migrated 1B records without downtime, saved 70% CPU and 60% memory by optimizing Go services, and how Reddit moved its comm&#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-192-kubernetes-at-scale-1b">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Digest #191: React Vulnerability, Massive npm Attack, Git 2.52, Lambda Arm Benchmarks and FinOps Dashboard]]></title><description><![CDATA[Serverless limits, leaked passwords, Git 2.52 upgrades, and Hotstar&#8217;s 60M-user infrastructure. A widespread npm backdoor campaign, critical React RCE, SQLite at 100k TPS, and Lambda Arm64 beating x86.]]></description><link>https://www.devopsbulletin.com/p/digest-191-react-vulnerability-massive</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-191-react-vulnerability-massive</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 05 Dec 2025 14:10:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/tF_4baiIUiQ" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s edition of the DevOps Bulletin!</p><p>One team explained why they&#8217;re leaving serverless behind after hitting scaling and performance limits, security researchers warned users to stop &#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-191-react-vulnerability-massive">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Digest #190: GitLab Secrets Leak, Terraform Workflows, npm Attack & 40% AWS Cloud Savings]]></title><description><![CDATA[GitLab secrets leak, AWS NAT cost fixes, npm supply-chain attack, Spotify&#8217;s data platform, Airbnb&#8217;s KV store, Grafana issues, Postgres async tasks, AWS CLI persistence, LLM security tips, and tools.]]></description><link>https://www.devopsbulletin.com/p/digest-190-gitlab-secrets-leak-terraform</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-190-gitlab-secrets-leak-terraform</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 28 Nov 2025 17:32:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/D-0IKyVG91M" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s edition of the DevOps Bulletin!</p><p>Researchers scanned 5.6 million GitLab repositories and uncovered thousands of live secrets, AWS finally added a way to spot idle NAT Gateways, a&#8230;</p>
      <p>
          <a href="https://www.devopsbulletin.com/p/digest-190-gitlab-secrets-leak-terraform">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>