diff --git a/.gitignore b/.gitignore index 2db834684..0fb488029 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ _site # Generated files .docusaurus .cache-loader +docs/agentic # Misc .env.local diff --git a/docs/community/Risk-First-Podcast.md b/docs/community/Risk-First-Podcast.md index 8ebe6e60d..6cbfd89c1 100644 --- a/docs/community/Risk-First-Podcast.md +++ b/docs/community/Risk-First-Podcast.md @@ -1,5 +1,5 @@ --- -title: "Risk-First Podcast Series" +title: "Risk-First: Stars of Software" description: Coming soon — a podcast exploring risk-first thinking in software development featured: class: bg2 @@ -9,8 +9,32 @@ tags: sidebar_position: 6 --- -## Coming Soon +import PodcastEpisode from '@site/src/components/PodcastEpisode'; + +Risk-First is about understanding how to manage risk in software development. + +But technology is far bigger than coding, testing, and releasing. There are countless roles across the industry—each shaped by uncertainty, trade-offs, and decisions that matter. + +How does risk inform those roles? And could it be that being good at any job in technology ultimately means being good at risk management? Is all work, in some sense… risk management? + +In Risk-First: Stars of Software, Rob Moffat sits down with leaders, builders, and thinkers from across the software world to explore what they do, the risks they navigate every day, and the lessons they’ve learned along the way. + +Because behind every successful system, career, and company, there is someone making thoughtful, informed decisions about risk. + +If you want to excel in your chosen field, you need to understand how to manage risk well. So who better to learn from than the stars of software? + + + + -A dedicated podcast series exploring Risk-First thinking in software development is in the works. -Stay tuned for conversations with practitioners, deep dives into specific risks, and practical guidance on applying the Risk-First framework to your projects. diff --git a/docs/methods/SAFe.md b/docs/methods/SAFe.md index 52ca33f2b..ab71e4b5f 100644 --- a/docs/methods/SAFe.md +++ b/docs/methods/SAFe.md @@ -4,7 +4,7 @@ description: A set of organization and workflow patterns for scaling lean and ag tags: - Risk Frameworks - Agile - - SAFe + - Scaled Agile Framework (SAFe) featured: class: c element: 'SAFe' diff --git a/docs/tags.yml b/docs/tags.yml index ce1e11f72..b2c6a1d8d 100644 --- a/docs/tags.yml +++ b/docs/tags.yml @@ -5,6 +5,12 @@ AI Risk: AI Risks: label: AI Risks permalink: AI-Risks +AI As Judge: + label: AI As Judge + permalink: AI-As-Judge +AI Practices: + label: AI Practices + permalink: AI-Practices About: label: About permalink: About @@ -56,6 +62,9 @@ Bet: Bets: label: Bets permalink: Bets +Capability: + label: Capability + permalink: Capability Book-Option: label: Book-Option permalink: Book-Option @@ -356,6 +365,9 @@ Risks: Runtime Adoption: label: Runtime Adoption permalink: Runtime-Adoption +Scaled Agile Framework (SAFe): + label: Scaled Agile Framework (SAFe) + permalink: Scaled-Agile-Framework-SAFe Sales: label: Sales permalink: Sales @@ -401,6 +413,9 @@ Terms Of Reference: Testing Quality Assurance: label: Testing Quality Assurance permalink: Testing-Quality-Assurance +Threat: + label: Threat + permalink: Threat Thinking Risk First: label: Thinking Risk First permalink: Thinking-Risk-First @@ -428,6 +443,9 @@ Upside Risk: User Acceptance Testing: label: User Acceptance Testing permalink: User-Acceptance-Testing +Verification: + label: Verification + permalink: Verification Version Control: label: Version Control permalink: Version-Control diff --git a/src/components/PodcastEpisode/index.js b/src/components/PodcastEpisode/index.js new file mode 100644 index 000000000..ee5737616 --- /dev/null +++ b/src/components/PodcastEpisode/index.js @@ -0,0 +1,69 @@ +import React from 'react'; +import styles from './styles.module.css'; + +// Hard-coded podcast links +const PODCAST_LINKS = { + image: '/img/community/podcast.png', + spotify: 'https://open.spotify.com/show/5EU52uoqQw3PtesoHojK9j', + apple: 'https://podcasts.apple.com/us/podcast/risk-first-stars-of-software/id1877357373', + youtube: 'https://www.youtube.com/@risk-first-podcast', +}; + +/** + * PodcastEpisode component for displaying podcast episodes with links to various platforms. + * + * @param {Object} props + * @param {string} props.title - Episode title + * @param {number} props.season - Season number + * @param {number} props.episode - Episode number + * @param {string} props.description - Episode description + */ +export default function PodcastEpisode({ + title, + season, + episode, + description +}) { + const { image, spotify, apple, youtube } = PODCAST_LINKS; + return ( +
+
+ {image && {title}} +
+
+
+ {season && Season {season}} + {episode && Episode {episode}} +
+

{title}

+

{description}

+
+ {spotify && ( + + + + + Spotify + + )} + {apple && ( + + + + + Apple Podcasts + + )} + {youtube && ( + + + + + YouTube + + )} +
+
+
+ ); +} diff --git a/src/components/PodcastEpisode/styles.module.css b/src/components/PodcastEpisode/styles.module.css new file mode 100644 index 000000000..8fbd9724e --- /dev/null +++ b/src/components/PodcastEpisode/styles.module.css @@ -0,0 +1,147 @@ +.episode { + display: flex; + gap: 1.5rem; + padding: 1.5rem 0; + margin-bottom: 1.5rem; +} + +.artwork { + flex-shrink: 0; + width: 140px; + height: 140px; + border-radius: 8px; + overflow: hidden; + background: linear-gradient(135deg, #6366f1 0%, #a855f7 100%); +} + +.artwork img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.content { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; + min-width: 0; +} + +.meta { + display: flex; + gap: 0.75rem; + margin-bottom: 0.5rem; +} + +.season, +.episodeNum { + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; + padding: 0.25rem 0.5rem; + border-radius: 4px; + background: rgba(99, 102, 241, 0.15); + color: #6366f1; +} + +html[data-theme='dark'] .season, +html[data-theme='dark'] .episodeNum { + background: rgba(99, 102, 241, 0.25); + color: #a5b4fc; +} + +.title { + margin: 0 0 0.5rem 0; + font-size: 1.25rem; + font-weight: 700; + line-height: 1.3; + color: var(--ifm-heading-color); +} + +.description { + margin: 0 0 1rem 0; + font-size: 0.95rem; + line-height: 1.5; + color: var(--ifm-color-emphasis-700); + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; +} + +.links { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; +} + +.link { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 1rem; + font-size: 0.875rem; + font-weight: 500; + text-decoration: none; + color: #fff; + background: #1db954; + border-radius: 20px; + transition: transform 0.15s ease, background 0.15s ease; +} + +.link:hover { + transform: scale(1.05); + text-decoration: none; + color: #fff; +} + +/* Spotify */ +.link:nth-child(1) { + background: #1db954; +} + +.link:nth-child(1):hover { + background: #1ed760; +} + +/* Apple Podcasts - black with white text */ +.appleLink { + background: #000 !important; +} + +.appleLink:hover { + background: #333 !important; +} + +/* YouTube */ +.link:nth-child(3) { + background: #ff0000; +} + +.link:nth-child(3):hover { + background: #ff3333; +} + +/* Responsive */ +@media (max-width: 600px) { + .episode { + flex-direction: column; + align-items: center; + text-align: center; + } + + .artwork { + width: 200px; + height: 200px; + } + + .meta { + justify-content: center; + } + + .links { + justify-content: center; + } +} diff --git a/static/img/community/podcast.png b/static/img/community/podcast.png new file mode 100644 index 000000000..ecb60a941 Binary files /dev/null and b/static/img/community/podcast.png differ