From 97befafa6bbd4f408daaf16126e05482b6feb4e1 Mon Sep 17 00:00:00 2001 From: rgo Date: Fri, 3 Nov 2023 07:36:13 +0100 Subject: [PATCH 1/2] Schedule and workshop layout Moved speakers below --- .../pages/schedule/schedule/schedule.jsx | 45 +-- .../pages/workshops/schedule/workshops.jsx | 257 +++++++++--------- 2 files changed, 162 insertions(+), 140 deletions(-) diff --git a/src/components/pages/schedule/schedule/schedule.jsx b/src/components/pages/schedule/schedule/schedule.jsx index 1bbed7a..c1c4428 100644 --- a/src/components/pages/schedule/schedule/schedule.jsx +++ b/src/components/pages/schedule/schedule/schedule.jsx @@ -558,16 +558,9 @@ const Schedule = ({ location }) => {
- - {duration} - - {talkLocation && ( - - {talkLocation} - - )} + {speakers && speakers.length > 0 && ( -
+ +
+ + {duration} + + {talkLocation && ( + + {talkLocation} + + )} +
{coincidedEvent && (
{
- - {coincidedEvent.duration} - - {coincidedEvent.talkLocation && ( - - {coincidedEvent.talkLocation} - - )} - {coincidedEvent.speakers && coincidedEvent.speakers.length > 0 && ( -
    + {coincidedEvent.speakers && coincidedEvent.speakers.length > 0 && ( +
      {coincidedEvent.speakers.map(({ name, photo }, index) => (
    • @@ -652,6 +648,17 @@ const Schedule = ({ location }) => {
    )}
+
+ + {coincidedEvent.duration} + + {coincidedEvent.talkLocation && ( + + {coincidedEvent.talkLocation} + + )} + +
)} diff --git a/src/components/pages/workshops/schedule/workshops.jsx b/src/components/pages/workshops/schedule/workshops.jsx index 3ca75d4..9d97b84 100644 --- a/src/components/pages/workshops/schedule/workshops.jsx +++ b/src/components/pages/workshops/schedule/workshops.jsx @@ -27,7 +27,7 @@ const ITEMS = [ }, ], presentation: - 'Software templates in Backstage are vital for bootstrapping new projects, effectively reducing startup time and masking complexities. When provisioning infrastructure, questions arise on modeling both day-1 and day-2 operations and ensuring compliance with security and company policies.

In this interactive workshop, I will lead participants through these essential concepts. We\'ll explore how to integrate infrastructure provisioning into software templates and provide a detailed walkthrough of a reference implementation, including day-2 operations.

By the end, attendees will:' + + "Software templates in Backstage are vital for bootstrapping new projects, effectively reducing startup time and masking complexities. When provisioning infrastructure, questions arise on modeling both day-1 and day-2 operations and ensuring compliance with security and company policies.

In this interactive workshop, I will lead participants through these essential concepts. We'll explore how to integrate infrastructure provisioning into software templates and provide a detailed walkthrough of a reference implementation, including day-2 operations.

By the end, attendees will:" + '
- Understand the benefits of provisioning with Backstage' + '
- Identify challenges in provisioning infrastructure in templates' + '
- Apply best practices through Backstage' + @@ -54,19 +54,20 @@ const ITEMS = [ { id: '52', time: '13:40', - title: 'Mastering Cluster API and GitOps: Deep Dive into Extensible Components for Building Production-Ready Kubernetes Clusters', + title: + 'Mastering Cluster API and GitOps: Deep Dive into Extensible Components for Building Production-Ready Kubernetes Clusters', duration: '90 min', talkLocation: 'Room 1', speakers: [ - { - id: '22', - name: 'Nic Vermande', - photo: NicVermande - } + { + id: '22', + name: 'Nic Vermande', + photo: NicVermande, + }, ], presentation: - 'There are many different ways you can bootstrap Kubernetes clusters, with various degrees of complexity. Modern Kubernetes installers automate manual tasks but generally, the more they abstract away complexity, the more opinionated they are — and that restricts your choice. Cluster API is different. It is one of the most flexible and efficient tools for managing the Kubernetes lifecycle, whether used for deployments, upgrades or scaling operations. While Cluster API is a powerful tool for provisioning Kubernetes clusters, it doesn\'t cover everything. Essential add-on components and software, such as node auto-scalers, CNI, ingress controllers, and other key infrastructure elements, are not included.
In this workshop, you will delve into how to supercharge Cluster API by integrating it with various solutions to build production-ready clusters, with GitOps as the automation master.', + "There are many different ways you can bootstrap Kubernetes clusters, with various degrees of complexity. Modern Kubernetes installers automate manual tasks but generally, the more they abstract away complexity, the more opinionated they are — and that restricts your choice. Cluster API is different. It is one of the most flexible and efficient tools for managing the Kubernetes lifecycle, whether used for deployments, upgrades or scaling operations. While Cluster API is a powerful tool for provisioning Kubernetes clusters, it doesn't cover everything. Essential add-on components and software, such as node auto-scalers, CNI, ingress controllers, and other key infrastructure elements, are not included.
In this workshop, you will delve into how to supercharge Cluster API by integrating it with various solutions to build production-ready clusters, with GitOps as the automation master.", coincidedEvent: { id: '53', time: '13:40', @@ -87,7 +88,7 @@ const ITEMS = [ }, ], presentation: - "The adoption of containers and orchestration systems, such as Kubernetes, has skyrocketed over the last few years. The popularity of these platforms makes them common targets for cyber criminals. Kubernetes combats this risk with built in controls but what if you want to observe the behavior of your pods at runtime to detect intrusions? In this entry-level tutorial, the instructors will dive into cloud threat detection and explain how to detect unexpected behavior and intrusion.
This tutorial offers a hands-on introduction to Falco, an open source CNCF incubation project. Every participant will use a web browser to access their own lab environment, in which they will use Falco to identify and notify of suspicious behaviors and intrusions. This session targets security practitioners that are new to cloud native and want to expand their knowledge of runtime security and Falco.", + 'The adoption of containers and orchestration systems, such as Kubernetes, has skyrocketed over the last few years. The popularity of these platforms makes them common targets for cyber criminals. Kubernetes combats this risk with built in controls but what if you want to observe the behavior of your pods at runtime to detect intrusions? In this entry-level tutorial, the instructors will dive into cloud threat detection and explain how to detect unexpected behavior and intrusion.
This tutorial offers a hands-on introduction to Falco, an open source CNCF incubation project. Every participant will use a web browser to access their own lab environment, in which they will use Falco to identify and notify of suspicious behaviors and intrusions. This session targets security practitioners that are new to cloud native and want to expand their knowledge of runtime security and Falco.', }, }, ]; @@ -127,137 +128,72 @@ const Workshops = ({ location }) => { return (
Date: Fri, 3 Nov 2023 07:39:23 +0100 Subject: [PATCH 2/2] Updated modal with talkLocation --- src/components/shared/modal/modal.jsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/shared/modal/modal.jsx b/src/components/shared/modal/modal.jsx index af0e331..04df11a 100644 --- a/src/components/shared/modal/modal.jsx +++ b/src/components/shared/modal/modal.jsx @@ -49,6 +49,7 @@ const Modal = ({ isVisible, modalData, onModalHide, isPresentationShow }) => { speakers = [], isCoincidedEvent = false, isWorkshop = false, + talkLocation = '', } = modalData; const shouldReduceMotion = useReducedMotion(); const headingId = useId(); @@ -90,6 +91,9 @@ const Modal = ({ isVisible, modalData, onModalHide, isPresentationShow }) => { {duration} + + {talkLocation} + {speakers.length > 0 && speakers.map(({ id: speakerId, name, photo }, index) => (