<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Talk on webratz.de</title><link>https://www.webratz.de/tags/talk/</link><description>Recent content in Talk on webratz.de</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 19 Sep 2023 20:04:52 +0200</lastBuildDate><atom:link href="https://www.webratz.de/tags/talk/index.xml" rel="self" type="application/rss+xml"/><item><title>Deep dive on CDK: Tradeoffs when developing constructs &amp; libraries</title><link>https://www.webratz.de/article/aws-community-day-2023/</link><pubDate>Tue, 19 Sep 2023 20:04:52 +0200</pubDate><guid>https://www.webratz.de/article/aws-community-day-2023/</guid><description>&lt;p&gt;Last week I gave a talk at the &lt;a href="https://www.aws-community-day.de/"&gt;AWS Community Day DACH 2023&lt;/a&gt; in Munich.
During the presentation I showed the Code live on screen, but I have added the shown examples to the slides as there is no recording of the talk.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When developing CDK constructs or libraries there is often several ways to achieve similar outcomes. This talk will dive deep on some of these decisions, compare the options and with that give the audience information to pick the best option for themselfes.&lt;/p&gt;</description></item><item><title>Meetup: Infrastructure as Code for a fast growing Engineering Organization</title><link>https://www.webratz.de/article/platform-pizzas-meetup-feb-2023/</link><pubDate>Wed, 01 Mar 2023 20:55:47 +0200</pubDate><guid>https://www.webratz.de/article/platform-pizzas-meetup-feb-2023/</guid><description>&lt;p&gt;Personio hosted its first &lt;a href="https://www.meetup.com/de-DE/personios-platform-and-pizzas-munich/events/291533500/"&gt;&amp;ldquo;Platform &amp;amp; Pizzas&amp;rdquo; Meetup&lt;/a&gt; recently, where I presented my talk &amp;ldquo;Enabling teams in a fast-growing company to manage their own infrastructure - How we work with CDK in Personio&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;In the presentation I explain why we are using CDK at Personio, why its the right choice for us and what modifications we made to it, for it to be useful in our context.&lt;/p&gt;
&lt;script type="text/javascript" src= '/js/pdf-js/build/pdf.js'&gt;&lt;/script&gt;

&lt;style&gt;
 #embed-pdf-container {
 position: relative;
 width: 100%;
 height: auto;
 min-height: 20vh;
 
 }
 
 .pdf-canvas {
 border: 1px solid black;
 direction: ltr;
 width: 100%;
 height: auto;
 display: none;
 }
 
 #the-canvas {
 border: 1px solid black;
 direction: ltr;
 width: 100%;
 height: auto;
 display: none;
 }
 
 
 .pdf-loadingWrapper {
 display: none;
 justify-content: center;
 align-items: center;
 width: 100%;
 height: 350px;
 }
 
 .pdf-loading {
 display: inline-block;
 width: 50px;
 height: 50px;
 border: 3px solid #d2d0d0;;
 border-radius: 50%;
 border-top-color: #383838;
 animation: spin 1s ease-in-out infinite;
 -webkit-animation: spin 1s ease-in-out infinite;
 }
 
 
 
 
 
 #overlayText {
 word-wrap: break-word;
 display: grid;
 justify-content: end;
 }
 
 #overlayText a {
 position: relative;
 top: 10px;
 right: 4px;
 color: #000;
 margin: auto;
 background-color: #eeeeee;
 padding: 0.3em 1em;
 border: solid 2px;
 border-radius: 12px;
 border-color: #00000030;
 text-decoration: none;
 }
 
 #overlayText svg {
 height: clamp(1em, 2vw, 1.4em);
 width: clamp(1em, 2vw, 1.4em);
 }
 
 
 
 @keyframes spin {
 to { -webkit-transform: rotate(360deg); }
 }
 @-webkit-keyframes spin {
 to { -webkit-transform: rotate(360deg); }
 }
 &lt;/style&gt;&lt;div class="embed-pdf-container" id="embed-pdf-container-f8ce3751"&gt;
 &lt;div class="pdf-loadingWrapper" id="pdf-loadingWrapper-f8ce3751"&gt;
 &lt;div class="pdf-loading" id="pdf-loading-f8ce3751"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div id="overlayText"&gt;
 &lt;a href="https://www.webratz.de/upload/cdk_platform_pizzas.pdf" aria-label="Download" download&gt;
 &lt;svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"&gt;
 &lt;path d="M9 13c.3 0 .5-.1.7-.3L15.4 7 14 5.6l-4 4V1H8v8.6l-4-4L2.6 7l5.7 5.7c.2.2.4.3.7.3zm-7 2h14v2H2z" /&gt;
 &lt;/svg&gt;
 &lt;/a&gt;
 &lt;/div&gt;
 &lt;canvas class="pdf-canvas" id="pdf-canvas-f8ce3751"&gt;&lt;/canvas&gt;
&lt;/div&gt;

&lt;div class="pdf-paginator" id="pdf-paginator-f8ce3751"&gt;
 &lt;button id="pdf-prev-f8ce3751"&gt;Previous&lt;/button&gt;
 &lt;button id="pdf-next-f8ce3751"&gt;Next&lt;/button&gt; &amp;nbsp; &amp;nbsp;
 &lt;span&gt;
 &lt;span class="pdf-pagenum" id="pdf-pagenum-f8ce3751"&gt;&lt;/span&gt; / &lt;span class="pdf-pagecount" id="pdf-pagecount-f8ce3751"&gt;&lt;/span&gt;
 &lt;/span&gt;
 &lt;a class="pdf-source" id="pdf-source-f8ce3751" href="https://www.webratz.de/upload/cdk_platform_pizzas.pdf"&gt;[pdf]&lt;/a&gt;
&lt;/div&gt;

&lt;noscript&gt;
View the PDF file &lt;a class="pdf-source" id="pdf-source-noscript-f8ce3751" href="https://www.webratz.de/upload/cdk_platform_pizzas.pdf"&gt;here&lt;/a&gt;.
&lt;/noscript&gt;

&lt;script type="text/javascript"&gt;
 (function(){
 var url = '\/upload\/cdk_platform_pizzas.pdf';

 var hidePaginator = "" === "true";
 var hideLoader = "" === "true";
 var selectedPageNum = parseInt("") || 1;

 
 var pdfjsLib = window['pdfjs-dist/build/pdf'];

 
 if (pdfjsLib.GlobalWorkerOptions.workerSrc == '')
 pdfjsLib.GlobalWorkerOptions.workerSrc = "https:\/\/www.webratz.de\/" + 'js/pdf-js/build/pdf.worker.js';

 
 var pdfDoc = null,
 pageNum = selectedPageNum,
 pageRendering = false,
 pageNumPending = null,
 scale = 3,
 canvas = document.getElementById('pdf-canvas-f8ce3751'),
 ctx = canvas.getContext('2d'),
 paginator = document.getElementById("pdf-paginator-f8ce3751"),
 loadingWrapper = document.getElementById('pdf-loadingWrapper-f8ce3751');


 
 showPaginator();
 showLoader();

 

 function renderPage(num) {
 pageRendering = true;
 
 pdfDoc.getPage(num).then(function(page) {
 var viewport = page.getViewport({scale: scale});
 canvas.height = viewport.height;
 canvas.width = viewport.width;

 
 var renderContext = {
 canvasContext: ctx,
 viewport: viewport
 };
 var renderTask = page.render(renderContext);

 
 renderTask.promise.then(function() {
 pageRendering = false;
 showContent();

 if (pageNumPending !== null) {
 
 renderPage(pageNumPending);
 pageNumPending = null;
 }
 });
 });

 
 document.getElementById('pdf-pagenum-f8ce3751').textContent = num;
 }

 

 function showContent() {
 loadingWrapper.style.display = 'none';
 canvas.style.display = 'block';
 }

 

 function showLoader() {
 if(hideLoader) return
 loadingWrapper.style.display = 'flex';
 canvas.style.display = 'none';
 }

 

 function showPaginator() {
 if(hidePaginator) return
 paginator.style.display = 'block';
 }

 

 function queueRenderPage(num) {
 if (pageRendering) {
 pageNumPending = num;
 } else {
 renderPage(num);
 }
 }

 

 function onPrevPage() {
 if (pageNum &lt;= 1) {
 return;
 }
 pageNum--;
 queueRenderPage(pageNum);
 }
 document.getElementById('pdf-prev-f8ce3751').addEventListener('click', onPrevPage);

 

 function onNextPage() {
 if (pageNum &gt;= pdfDoc.numPages) {
 return;
 }
 pageNum++;
 queueRenderPage(pageNum);
 }
 document.getElementById('pdf-next-f8ce3751').addEventListener('click', onNextPage);

 

 pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
 pdfDoc = pdfDoc_;
 var numPages = pdfDoc.numPages;
 document.getElementById('pdf-pagecount-f8ce3751').textContent = numPages;

 
 if(pageNum &gt; numPages) {
 pageNum = numPages
 }

 
 renderPage(pageNum);
 });
 })();
&lt;/script&gt;</description></item><item><title>Privilege Escalation in Build Pipelines</title><link>https://www.webratz.de/article/privilege-escalation-build-pipelines/</link><pubDate>Sun, 24 Nov 2019 10:52:52 +0200</pubDate><guid>https://www.webratz.de/article/privilege-escalation-build-pipelines/</guid><description>&lt;p&gt;I recently gave a talk at &lt;a href="https://conferences.oreilly.com/velocity/vl-eu"&gt;O&amp;rsquo;Reilly Velocity Conference&lt;/a&gt; in Berlin.
My initial plan was to create a blog version of it also, but I didn&amp;rsquo;t have enough time.
Luckily there is a recording and the slides are available! Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;CI/CD systems are usually tightly coupled, and inherit for the CD part a lot of administrative privileges combined with network access to production systems. We tend to believe that we only execute trusted software within those systems, but it quickly becomes clear that code from a huge variety of sources is loaded and executed in that system that isn’t under your control.&lt;/p&gt;</description></item><item><title>AWS multi account infrastructure</title><link>https://www.webratz.de/article/aws-multiaccount-talk/</link><pubDate>Thu, 02 Mar 2017 09:12:57 +0200</pubDate><guid>https://www.webratz.de/article/aws-multiaccount-talk/</guid><description>&lt;p&gt;Back in October 2016 I held a talk in the Munich AWS User Group about managing AWS Multi account infrastructure at glomex. This post is summarizing the talk and appeared initially on the &lt;a href="https://techblog.glomex.com/post/this-is-how-to-manage-an-aws-multi-account-infrastructure.html"&gt;glomex techblog&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>