<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Learning Labs on</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/tags/learning-labs/</link><description>Recent content in Learning Labs on</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Copyright (c) 2023 Chainguard</copyright><lastBuildDate>Thu, 28 May 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/tags/learning-labs/index.xml" rel="self" type="application/rss+xml"/><item><title>Build Safely with AI</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202605/</link><pubDate>Thu, 28 May 2026 12:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202605/</guid><description>&lt;p&gt;The May 2026 Learning Lab with Erika Heidi explores AI-native threat models and how to mitigate risks involved with AI-assisted coding, leveraging Cursor and Chainguard for a secure AI SLDC.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/EDbPhANkMsU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU"&gt;0:00&lt;/a&gt; Introduction and agenda&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=215s"&gt;3:35&lt;/a&gt; &amp;ldquo;This Changes Everything&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=259s"&gt;4:19&lt;/a&gt; How the threat model changed with AI&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=497s"&gt;8:17&lt;/a&gt; Your local dev environment at risk&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=589s"&gt;9:49&lt;/a&gt; AI-native attack vectors&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=750s"&gt;12:30&lt;/a&gt; Closing the trust gap&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=854s"&gt;14:14&lt;/a&gt; Two principles for a safe SLDC with AI assistance&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=1386s"&gt;23:06&lt;/a&gt; Vibecoding with trusted sources&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=1646s"&gt;27:26&lt;/a&gt; The Chainguard plugin for Cursor&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=1743s"&gt;29:03&lt;/a&gt; Demo - building an SBOM visualizer&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=1887s"&gt;31:27&lt;/a&gt; The initial prompt&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=2030s"&gt;33:50&lt;/a&gt; The resulting vibecoded app&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=2060s"&gt;34:20&lt;/a&gt; Migrating to Chainguard Libraries&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=2203s"&gt;36:43&lt;/a&gt; Verifying coverage&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=2306s"&gt;38:26&lt;/a&gt; Recap of what we neutralized&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=2415s"&gt;40:15&lt;/a&gt; Other Chainguard skills to try out on Cursor&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EDbPhANkMsU&amp;amp;t=2925s"&gt;48:45&lt;/a&gt; Wrapping Up&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Resources&lt;/span&gt;
&lt;a href="#resources" class="anchor" aria-label="Link to Resources" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/downloads/learning-lab-202605.pdf"&gt;Slide deck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cursor.com/marketplace/chainguard"&gt;Chainguard Plugin for Cursor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/overview/"&gt;Chainguard Containers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/libraries/overview/"&gt;Chainguard Libraries&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Securing CI/CD with Chainguard</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202604/</link><pubDate>Thu, 30 Apr 2026 12:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202604/</guid><description>&lt;p&gt;The April 2026 Learning Lab with Erika Heidi goes through how attackers exploit vulnerable GitHub Actions workflows, and how Chainguard can protect your CI/CD pipelines from these threats.
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/D9tORVR4H9g?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g"&gt;0:00&lt;/a&gt; Introduction and agenda&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=331s"&gt;5:31&lt;/a&gt; Timeline of CI/CD software supply chain incidents&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=685s"&gt;11:25&lt;/a&gt; Open Source and CI/CD as the new target&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=767s"&gt;12:47&lt;/a&gt; 2026: the year of AI-assisted attacks&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=916s"&gt;15:16&lt;/a&gt; Unpacking the Trivy Compromise&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=1197s"&gt;19:57&lt;/a&gt; Secret exfiltration live demo&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=2177s"&gt;36:17&lt;/a&gt; What could unfold from here&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=2344s"&gt;39:04&lt;/a&gt; Strategies to mitigate risks&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=2364s"&gt;39:24&lt;/a&gt; Repository inspection for insecure defaults&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=2643s"&gt;44:03&lt;/a&gt; Minimize attack surface&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=2928s"&gt;48:48&lt;/a&gt; Pull from trusted sources&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=3141s"&gt;52:21&lt;/a&gt; Pin by digest&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=3268s"&gt;54:28&lt;/a&gt; Use short lived tokens (ban PATs)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=3332s"&gt;55:32&lt;/a&gt; Use Chainguard Actions&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=D9tORVR4H9g&amp;amp;t=3535s"&gt;58:55&lt;/a&gt; Closing notes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Resources&lt;/span&gt;
&lt;a href="#resources" class="anchor" aria-label="Link to Resources" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/downloads/learning-lab-securing-cicd-202604.pdf"&gt;Slide deck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/overview/"&gt;Chainguard Containers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/libraries/overview/"&gt;Chainguard Libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chainguard.dev/actions"&gt;Chainguard Actions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/marketplace/actions/update-the-image-digest"&gt;Digestabot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/apps/octo-sts"&gt;Octo-STS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Software supply chain attacks and Chainguard Libraries</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202603/</link><pubDate>Mon, 30 Mar 2026 12:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202603/</guid><description>&lt;p&gt;The March 2026 Learning Lab with Manfred Moser focuses on the history, trends,
and future developments around software supply chain attacks. Manfred talks
about the role libraries for application developers and demonstrates numerous
new features and use cases for Chainguard Libraries.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/MPKP8YSoheE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE"&gt;0:00&lt;/a&gt; Introduction and agenda&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=105s"&gt;1:45&lt;/a&gt; Software supply chain overview&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=445s"&gt;7:25&lt;/a&gt; History of attacks and overview of different methods&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=1079s"&gt;17:59&lt;/a&gt; Future threads and trends&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=1297s"&gt;21:37&lt;/a&gt; Statistics about intensifying attacks&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=1374s"&gt;22:54&lt;/a&gt; Incidents and fire drills&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=1505s"&gt;25:05&lt;/a&gt; Impact from Minecraft and log4j on Maven Central&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=1602s"&gt;26:42&lt;/a&gt; Chainguard Libraries overview&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=1941s"&gt;32:21&lt;/a&gt; Chainguard Libraries for Python, Java, and JavaScript&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=2117s"&gt;35:17&lt;/a&gt; Demo - Browsing libraries in the console UI&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=2438s"&gt;40:38&lt;/a&gt; Demo - Pull token creation in console UI and with chainctl&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=2533s"&gt;42:13&lt;/a&gt; Demo - Browsing Python simple index&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=2750s"&gt;45:50&lt;/a&gt; Demo - Browsing Java repository&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=2965s"&gt;49:25&lt;/a&gt; Demo - Example projects for JavaScript and Python&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=3395s"&gt;56:35&lt;/a&gt; Demo - Verification with chainctl&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=3527s"&gt;58:47&lt;/a&gt; Chainguard Repository&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MPKP8YSoheE&amp;amp;t=3676s"&gt;1:01:16&lt;/a&gt; Upcoming events&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Resources&lt;/span&gt;
&lt;a href="#resources" class="anchor" aria-label="Link to Resources" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/downloads/learning-lab-chainguard-libraries-202603.pdf"&gt;Slide deck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/libraries/overview/"&gt;Chainguard Libraries documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Shipping Safer Container Runtimes in 2026</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202512/</link><pubDate>Wed, 17 Dec 2025 17:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202512/</guid><description>&lt;p&gt;The December 2025 Learning Lab with Erika Heidi focuses on strategies to improve the security of your software supply chain and ship safer container runtimes in 2026.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/z5SNwBC4T-Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q"&gt;00:00&lt;/a&gt; Intro&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=172s"&gt;02:52&lt;/a&gt; Why Devs need to care&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=288s"&gt;04:48&lt;/a&gt; XZ Utils incident&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=583s"&gt;09:43&lt;/a&gt; tj-actions/changed-files incident&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=762s"&gt;12:42&lt;/a&gt; Sha1-Hulud Second Coming&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=1031s"&gt;17:11&lt;/a&gt; Trending threat models&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=1962s"&gt;32:42&lt;/a&gt; Mitigating risks&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=2702s"&gt;45:02&lt;/a&gt; Concrete Dev actions this sprint&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=3047s"&gt;50:47&lt;/a&gt; Chainguard Containers: CVE Comparisons&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Resources&lt;/span&gt;
&lt;a href="#resources" class="anchor" aria-label="Link to Resources" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/downloads/learning-lab-202512.pdf"&gt;Slide deck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/overview/"&gt;Chainguard Containers Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/libraries/overview/"&gt;Chainguard Libraries Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/migration/migrations-overview/"&gt;Migrating to Chainguard Containers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/how-to-use/container-image-digests/"&gt;How to Use Container Image Digests to Improve Reproducibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/staying-secure/updating-images/digestabot/"&gt;Keep your Chainguard Containers Up to Date with digestabot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/staying-secure/updating-images/renovate/"&gt;Using Renovate with Chainguard Containers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://images.chainguard.dev/"&gt;Images Directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Chainguard OS on Raspberry Pi</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202511/</link><pubDate>Fri, 21 Nov 2025 17:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202511/</guid><description>&lt;p&gt;The November 2025 Learning Lab with Erika Heidi covers the &lt;a href="https://www.chainguard.dev/unchained/a-gift-for-the-open-source-community-chainguards-cve-free-raspberry-pi-images-beta"&gt;release of Chainguard OS for the Raspberry Pi&lt;/a&gt;, showing how Chainguard OS has evolved to power new environments.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/SvUU2n2mQ7M?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=46s"&gt;0:46&lt;/a&gt; Presentation Starts&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=175s"&gt;2:55&lt;/a&gt; How We Got Here: Wolfi and Chainguard OS&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=347s"&gt;5:47&lt;/a&gt; Presenting Chainguard OS for the Raspberry Pi&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=522s"&gt;8:42&lt;/a&gt; How to Set Up your Raspberry Pi with Chainguard OS&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=683s"&gt;11:23&lt;/a&gt; Grype scan on the Raspberry images&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=887s"&gt;14:47&lt;/a&gt; Demo Overview: Guardcraft Pi&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=1090s"&gt;18:10&lt;/a&gt; Grype scan on the Guardcraft image&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=1259s"&gt;20:59&lt;/a&gt; Live Demo: Minecraft server on the Raspberry Pi&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=1454s"&gt;24:14&lt;/a&gt; Demo Overview: Open Source LLM server&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=1851s"&gt;30:51&lt;/a&gt; Grype scan on the wolfi-llama image&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=1955s"&gt;32:35&lt;/a&gt; Live Demo: Open Source Llama.cpp Server&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=2103s"&gt;35:03&lt;/a&gt; Live image description with Qwen3-VL and Llama.cpp&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=2358s"&gt;39:18&lt;/a&gt; Live Demo: ALT description CLI tool using Llama.cpp server API&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=2484s"&gt;41:24&lt;/a&gt; What&amp;rsquo;s Next&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=2542s"&gt;42:22&lt;/a&gt; New Compliance Features for Chainguard VMs&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=2660s"&gt;44:20&lt;/a&gt; Chainguard VMs Roadmap&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SvUU2n2mQ7M&amp;amp;t=2740s"&gt;45:40&lt;/a&gt; Announcing the next Learning Labs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="quickstart" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Quickstart&lt;/span&gt;
&lt;a href="#quickstart" class="anchor" aria-label="Link to Quickstart" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To get started with Chainguard OS on the Raspberry Pi, and to be able to run the demos in this presentation, you&amp;rsquo;ll need:&lt;/p&gt;</description></item><item><title>Chainguard Libraries for JavaScript and CVE remediation for Python libraries</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202510/</link><pubDate>Thu, 30 Oct 2025 12:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202510/</guid><description>&lt;p&gt;The October 2025 Learning Lab with Manfred Moser covers Chainguard Libraries for
JavaScript and CVE remediation with Chainguard Libraries for Python. It starts
with an overview about libraries and the JavaScript ecosystem and moves on to a
demo with npm and pnpm. In the second section Manfred explains the approach for
CVE remediation and shows an example project with remediation and scanning with
grype.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/6V7IHtYekwM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM"&gt;0:00&lt;/a&gt; Introduction&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=115s"&gt;1:55&lt;/a&gt; Agenda&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=174s"&gt;2:54&lt;/a&gt; Secure container and the role of libraries&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=320s"&gt;5:20&lt;/a&gt; Software supply chain for libraries and security&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=411s"&gt;6:51&lt;/a&gt; Chainguard Libraries and the JavaScript ecosystem&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=873s"&gt;14:33&lt;/a&gt; Malware in the npm ecosystem&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=1119s"&gt;18:39&lt;/a&gt; Chainguard Libraries for JavaScript&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=1557s"&gt;25:57&lt;/a&gt; Demoes with npm and pnpm&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=2030s"&gt;33:50&lt;/a&gt; Troubleshooting results and additional demos&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=2494s"&gt;41:34&lt;/a&gt; Chainguard Libraries for Python&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=2619s"&gt;43:39&lt;/a&gt; CVE remediation process and examples&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=3123s"&gt;52:03&lt;/a&gt; Demoes with uv and grype&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=3385s"&gt;56:25&lt;/a&gt; Further resources&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=3455s"&gt;57:35&lt;/a&gt; Next up&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=3498s"&gt;58:18&lt;/a&gt; Questions&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6V7IHtYekwM&amp;amp;t=3960s"&gt;1:06:00&lt;/a&gt; Wrapping up&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="javascript-demo" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;JavaScript demo&lt;/span&gt;
&lt;a href="#javascript-demo" class="anchor" aria-label="Link to JavaScript demo" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The demonstration of Chainguard Libraries for JavaScript walks through the
&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/libraries/javascript/build-configuration/#pnpm-minimal"&gt;minimal example for
pnpm&lt;/a&gt; with
direct access to the registry and with access to a local repository manager, and
shows an equivalent project with npm as well.&lt;/p&gt;</description></item><item><title>Static Chainguard Container Images</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202509/</link><pubDate>Sun, 28 Sep 2025 21:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202509/</guid><description>&lt;p&gt;The September 2025 Learning Lab, led by Adrian Moat, focuses on minimizing the
attack surface of container images by adopting Chainguard&amp;rsquo;s static and minimal
images, which boast zero known CVEs. Adrian demonstrated a container build for a
Go-based application and explains more complex use cases.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/4Cjy_iBNr3I?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;"&gt;00:01&lt;/a&gt; Welcome and introductions&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=214"&gt;03:34&lt;/a&gt; Talk outline and prerequisites&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=274"&gt;04:34&lt;/a&gt; Understanding CVEs&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=454"&gt;07:34&lt;/a&gt; Introducing Chainguard Containers&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=538"&gt;08:58&lt;/a&gt; Vulnerability and size comparison&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=614"&gt;10:14&lt;/a&gt; Why Chainguard images are more secure&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=706"&gt;11:46&lt;/a&gt; Practical demo: Migrating a Go container image&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=901"&gt;15:01&lt;/a&gt; Initial build&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1079"&gt;17:59&lt;/a&gt; Migration to Chainguard base image&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1245"&gt;20:45&lt;/a&gt; Multi-stage build and static image optimization&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1659"&gt;27:39&lt;/a&gt; Static vs. dynamic binaries&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1816"&gt;30:16&lt;/a&gt; Chainguard Container variants&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1954"&gt;32:34&lt;/a&gt; Distroless Containers and dev images&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=2010"&gt;33:30&lt;/a&gt; Debugging Distroless containers demonstration&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=2697"&gt;44:57&lt;/a&gt; Key takeaways and wrap-up&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=2804"&gt;46:44&lt;/a&gt; Next Learning Lab announcement&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=2870"&gt;47:50&lt;/a&gt; Resources for further learning&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Resources&lt;/span&gt;
&lt;a href="#resources" class="anchor" aria-label="Link to Resources" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/downloads/learning-lab-static-images-202509.pdf"&gt;Slide deck&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Getting Started with Chainguard's Dockerfile Converter</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202508/</link><pubDate>Thu, 28 Aug 2025 17:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202508/</guid><description>&lt;p&gt;The August 2025 Learning Lab with Erika Heidi covers &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/dockerfile-conversion/"&gt;DFC&lt;/a&gt;, or Dockerfile Converter, an open source tool created by the Chainguard team to facilitate migration to Chainguard Containers. In this session, learn how to install and use DFC to effectively convert your Dockerfiles to use minimal container images from Chainguard. Erika demonstrates how to use various flags to customize DFC&amp;rsquo;s output and also how to connect the DFC MCP server to your AI assistant to have DFC functionality integrated within your current AI workflow.&lt;/p&gt;</description></item><item><title>AI with Hardened Container Images</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202507/</link><pubDate>Thu, 24 Jul 2025 17:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202507/</guid><description>&lt;p&gt;The July 2025 Learning Lab with Patrick Smyth covers AI with Hardened Container Images. In this session, learn how to secure AI workloads by reducing vulnerabilities in container images by over 90%. Patrick demonstrates hands-on techniques for training an animal detection model using PyTorch with hardened container images, creating minimal and secure deployments, and running AI frameworks with zero CVEs.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/JGSc6BwjbRI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI"&gt;0:00&lt;/a&gt; Introduction and updates&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=122s"&gt;2:02&lt;/a&gt; Preparation: Docker pull instructions for demo&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=219s"&gt;3:39&lt;/a&gt; Chainguard! Who are we?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=274s"&gt;4:34&lt;/a&gt; CVE system fundamentals&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=408s"&gt;6:48&lt;/a&gt; &amp;ldquo;Boss assigned me to fix Ubuntu&amp;rdquo; problem&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=461s"&gt;7:41&lt;/a&gt; Introduction to Chainguard Containers&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=534s"&gt;8:54&lt;/a&gt; Zero CVE containers: Real results and comparisons&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=670s"&gt;11:10&lt;/a&gt; How we achieve zero CVEs: Minimal, Fresh, Advisory, Patch&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=804s"&gt;13:24&lt;/a&gt; AI container challenges: Size and complexity&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=899s"&gt;14:59&lt;/a&gt; PyTorch container analysis: CVEs, packages, and executables&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=981s"&gt;16:21&lt;/a&gt; Demo introduction: Image classification with PyTorch&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1079s"&gt;17:59&lt;/a&gt; Demo walkthrough and repository overview&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1168s"&gt;19:28&lt;/a&gt; Demo: Running the training command&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1321s"&gt;22:01&lt;/a&gt; Demo: Downloading test image and running inference&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1400s"&gt;23:20&lt;/a&gt; Recent developments in Chainguard AI containers&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1509s"&gt;25:09&lt;/a&gt; Other AI containers: TensorFlow, KServe, Triton backends&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1606s"&gt;26:46&lt;/a&gt; Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=2118s"&gt;35:18&lt;/a&gt; Chainguard AI course and additional resources&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="demo" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Demo&lt;/span&gt;
&lt;a href="#demo" class="anchor" aria-label="Link to Demo" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;In the demo, Patrick trains and runs inference on an image classification model using PyTorch and Chainguard&amp;rsquo;s hardened container image. The model classifies images of octopuses, whales, and penguins, demonstrating how to work with AI workloads securely.&lt;/p&gt;</description></item><item><title>Chainguard Libraries for Python</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202506/</link><pubDate>Sun, 22 Jun 2025 17:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202506/</guid><description>&lt;p&gt;The June 2025 Learning Lab with Patrick Smyth covers Chainguard Libraries for
Python. Open source libraries help you move fast, but pulling in external
dependencies can introduce supply chain risk. This session covers fundamental
concepts of Chainguard Libraries, package managers and dependencies, PyPI and
build tools, configuring repository managers, and running example application builds.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/h_nzhPY_vDA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA"&gt;0:00&lt;/a&gt; Introduction and welcome&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=54s"&gt;0:54&lt;/a&gt; Patrick Smyth introduction and background&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=107s"&gt;1:47&lt;/a&gt; Chainguard! Who are we?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=167s"&gt;2:47&lt;/a&gt; Chainguard Containers and the &amp;ldquo;boss assigned me to fix Ubuntu&amp;rdquo; problem&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=252s"&gt;4:12&lt;/a&gt; Introduction to Chainguard Libraries for Python&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=304s"&gt;5:04&lt;/a&gt; Python libraries fundamentals - modules, packages, and libraries&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=394s"&gt;6:34&lt;/a&gt; The dependency graph problem and modern ecosystem challenges&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=537s"&gt;8:57&lt;/a&gt; PyPI (Python Package Index) overview and infrastructure&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=653s"&gt;10:53&lt;/a&gt; Supply chain attacks on the rise and threats to the Python ecosystem&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=699s"&gt;11:39&lt;/a&gt; Supply chain meme calendar - an attack every month this year&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=834s"&gt;13:54&lt;/a&gt; Anatomy of supply chain attacks and attack vectors&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=1063s"&gt;17:43&lt;/a&gt; Chainguard Libraries!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=1174s"&gt;19:34&lt;/a&gt; Chainguard Factory overview and operational security&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=1293s"&gt;21:33&lt;/a&gt; Case study: Ultralytics YOLO December 2024 attack&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=1402s"&gt;23:22&lt;/a&gt; Technical caveats and requirements for Chainguard Libraries&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=1506s"&gt;25:06&lt;/a&gt; Demo introduction and Flask project overview&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=1668s"&gt;27:48&lt;/a&gt; Accessing demo materials on Chainguard Academy&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=1740s"&gt;29:00&lt;/a&gt; Demo: Cloning and setting up the Flask project&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=1877s"&gt;31:17&lt;/a&gt; Demo: Creating virtual environment and installing from PyPI&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=1986s"&gt;33:06&lt;/a&gt; Demo: Running Flask application and testing with libCheck tool&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2068s"&gt;34:28&lt;/a&gt; Demo: Configuring pip for Chainguard Libraries via repository manager&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2179s"&gt;36:19&lt;/a&gt; Demo: Installing dependencies from Chainguard Libraries&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2222s"&gt;37:02&lt;/a&gt; Demo: Verification with libCheck&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2302s"&gt;38:22&lt;/a&gt; Demo: Containerizing the demo application&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2425s"&gt;40:25&lt;/a&gt; Demo: Building and running containerized Flask application&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2501s"&gt;41:41&lt;/a&gt; Additional configuration options and documentation resources&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2539s"&gt;42:19&lt;/a&gt; Q&amp;amp;A: Repository manager setup and configuration&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2606s"&gt;43:26&lt;/a&gt; Q&amp;amp;A: Architecture support and glibc requirements&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2674s"&gt;44:34&lt;/a&gt; Q&amp;amp;A: libCheck tool open source plans and detailed output&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h_nzhPY_vDA&amp;amp;t=2765s"&gt;46:05&lt;/a&gt; Q&amp;amp;A: CVE scanning with Grype and vulnerability management&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="demo" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Demo&lt;/span&gt;
&lt;a href="#demo" class="anchor" aria-label="Link to Demo" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;In the demo, Patrick switches a Flask application to use Chainguard Libraries for Python, sourcing dependencies from a repository manager (Artifactory) set up to pull first from the Chainguard Libraries for Python index with a fallback to the Python Package Index (PyPI).&lt;/p&gt;</description></item><item><title>Chainguard Libraries for Java</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202505/</link><pubDate>Wed, 18 Jun 2025 21:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202505/</guid><description>&lt;p&gt;The May 2025 Learning Lab with Manfred Moser covers Chainguard Libraries for
Java. It starts with an overview about libraries and the Java ecosystem and
progresses to a demo with Apache Maven and Sonatype Nexus.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/z42b2_lePNI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI"&gt;0:00&lt;/a&gt; Introduction and agenda&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=158s"&gt;2:38&lt;/a&gt; Chainguard and containers&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=227s"&gt;3:47&lt;/a&gt; Chainguard Factory&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=297s"&gt;4:57&lt;/a&gt; Concepts - from containers to libraries&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=540s"&gt;9:00&lt;/a&gt; Java and Java libraries&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=765s"&gt;12:45&lt;/a&gt; Software supply chain of libraries and attacks&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=1167s"&gt;19:27&lt;/a&gt; Dependency supply in Java&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=1230s"&gt;20:30&lt;/a&gt; Repository concept and Maven Central&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=1472s"&gt;24:32&lt;/a&gt; Chainguard Libraries for Java and repository manager intro&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=1697s"&gt;28:17&lt;/a&gt; Developer tools&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=1761s"&gt;29:21&lt;/a&gt; Demo start and setup with chainctl&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=1975s"&gt;32:55&lt;/a&gt; Sonatype Nexus configuration&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=2250s"&gt;37:30&lt;/a&gt; Maven configuration&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=2441s"&gt;40:41&lt;/a&gt; Example project setup, build, and results&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=2697s"&gt;44:57&lt;/a&gt; Dependency list and tree&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=2820s"&gt;47:00&lt;/a&gt; Results and verification&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=2977s"&gt;49:37&lt;/a&gt; Summary&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=3043s"&gt;50:43&lt;/a&gt; Up next&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z42b2_lePNI&amp;amp;t=3175s"&gt;52:55&lt;/a&gt; Questions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="demo" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Demo&lt;/span&gt;
&lt;a href="#demo" class="anchor" aria-label="Link to Demo" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Following are some of the commands used in the demo. More information can be
found in the slide deck, the linked resources, and the video.&lt;/p&gt;</description></item><item><title>Learning Labs</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/</link><pubDate>Wed, 18 Jun 2025 21:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/</guid><description>&lt;p&gt;Learning Labs are &lt;a href="https://www.chainguard.dev/events"&gt;regularly run, virtual events from
Chainguard&lt;/a&gt; that provide educational and
training material about Chainguard products, software supply chain security, and
related topics.&lt;/p&gt;
&lt;h2 id="lab-notes" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Lab Notes&lt;/span&gt;
&lt;a href="#lab-notes" class="anchor" aria-label="Link to Lab Notes" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The lab notes often include demo projects, a slide presentation, sample
commands, links to specific sections in the video, and pointers to more
resources:&lt;/p&gt;</description></item></channel></rss>