<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The Home Page on Sebastian Döll | Engineer with decades of experience</title><link>https://katallaxie.dev/</link><description>Recent content in The Home Page on Sebastian Döll | Engineer with decades of experience</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 01 Nov 2023 00:00:00 +0100</lastBuildDate><atom:link href="https://katallaxie.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Domain Architect</title><link>https://katallaxie.dev/experience/zeiss/</link><pubDate>Wed, 01 Nov 2023 00:00:00 +0100</pubDate><guid>https://katallaxie.dev/experience/zeiss/</guid><description>Moved back to Jena, joined an 175 year old technology leader 🦄.</description></item><item><title>Head of Internal Services</title><link>https://katallaxie.dev/experience/ionos/</link><pubDate>Mon, 01 Aug 2022 00:00:00 +0100</pubDate><guid>https://katallaxie.dev/experience/ionos/</guid><description>Leading the internal services team, building and maintaining the internal tools and services for the company.</description></item><item><title>Senior Software Engineer</title><link>https://katallaxie.dev/experience/microsoft/</link><pubDate>Thu, 01 Apr 2021 00:00:00 +0100</pubDate><guid>https://katallaxie.dev/experience/microsoft/</guid><description>Made the life more then 150 million devlopers easier by building tools and services for them.</description></item><item><title>Module Resolution in Large Projects with TypeScript</title><link>https://katallaxie.dev/posts/module-resolution-in-large-projects-with-typescript/</link><pubDate>Fri, 26 Mar 2021 00:00:00 +0000</pubDate><guid>https://katallaxie.dev/posts/module-resolution-in-large-projects-with-typescript/</guid><description>This post explains how to use custom paths for efficient Module Resolution in large TypeScript projects.</description></item><item><title>Composition in Next.js Static Properties</title><link>https://katallaxie.dev/posts/composition-in-nextjs-static-properties/</link><pubDate>Wed, 24 Mar 2021 00:00:00 +0000</pubDate><guid>https://katallaxie.dev/posts/composition-in-nextjs-static-properties/</guid><description>&lt;p&gt;Composition is a method to write re-usable segments of code. This is achieved by constructing objects of full behavior by using objects with particular behavior.&lt;/p&gt;
&lt;blockquote&gt;
 &lt;p&gt;It seems like “composition over inheritance” is the new motto. Everyone’s talking about it, and that’s not strange since composition gives you more flexibility by composing functionality to create a new object, while inheritance forces you to extend entities in an inheritance tree.&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;In the case of &lt;code&gt;getStaticProps&lt;/code&gt; the full behavior is the complete object of &lt;code&gt;props&lt;/code&gt; a page needs to be rendered. The particular object is the behavior that fetches a particular property in in the &lt;code&gt;props&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>The State of Go Plugins</title><link>https://katallaxie.dev/posts/the-state-of-go-plugins/</link><pubDate>Wed, 24 Mar 2021 00:00:00 +0000</pubDate><guid>https://katallaxie.dev/posts/the-state-of-go-plugins/</guid><description>Learn about the different approaches to pluggable interfaces in Go.</description></item><item><title>Deploy AWS CloudFormation stacks with GitHub Actions + React Example</title><link>https://katallaxie.dev/posts/deploy-aws-cloudformation-stacks/</link><pubDate>Sun, 21 Mar 2021 00:00:00 +0000</pubDate><guid>https://katallaxie.dev/posts/deploy-aws-cloudformation-stacks/</guid><description>&lt;p&gt;You want to deploy your infrastructure with GitHub Actions?&lt;/p&gt;
&lt;p&gt;I have published &lt;a href="https://github.com/aws-actions/aws-cloudformation-github-deploy"&gt;AWS CloudFormation Action for GitHub Actions&lt;/a&gt; and walk you through the example of a React app in &lt;a href="https://aws.amazon.com/blogs/opensource/deploy-aws-cloudformation-stacks-with-github-actions/"&gt;an article on the AWS Open Source Blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also use the &lt;a href="https://github.com/katallaxie/cra-template-amplify-typescript"&gt;Create React App Template for AWS Amplify&lt;/a&gt; to shortcut the process to connect the app to the AWS Amplify Console with AWS CloudFormation.&lt;/p&gt;
&lt;p&gt;👇&lt;/p&gt;

&lt;div class="mockup-code w-full bg-neutral bash my-4"&gt;
 &lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx create-react-app my-app --template amplify-typescript&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Go build!&lt;/p&gt;</description></item><item><title>The Power of TypeScript for GraphQL Union Type</title><link>https://katallaxie.dev/posts/the-power-of-typescript-for-graphql-union-type/</link><pubDate>Mon, 15 Mar 2021 00:00:00 +0000</pubDate><guid>https://katallaxie.dev/posts/the-power-of-typescript-for-graphql-union-type/</guid><description>&lt;p&gt;&lt;a href="https://graphql.org/"&gt;GraphQL&lt;/a&gt; is great. Code generating types for &lt;a href="https://www.typescriptlang.org/"&gt;TypeScript&lt;/a&gt; is easy. GraphQL supports &lt;a href="https://graphql.org/learn/introspection/"&gt;introspection&lt;/a&gt;. This means a GraphQL API provides information about the described schema.&lt;/p&gt;
&lt;p&gt;Using the &lt;a href="https://github.com/Urigo/graphql-cli"&gt;GraphQL CLI&lt;/a&gt; and the &lt;a href="https://graphql-code-generator.com/"&gt;GraphQL Code Generator&lt;/a&gt; generating types for a &lt;a href="https://graphcms.com/"&gt;graphcms&lt;/a&gt; is really handy.&lt;/p&gt;

&lt;div class="mockup-code w-full bg-neutral yaml my-4"&gt;
 &lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# GraphCMS API&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;https://api-eu-central-1.graphcms.com/v2/xxxxx/master&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;overwrite&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./src/graphql/**/*.graphql&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Format files&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;codegen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;afterAllFileWrite&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;eslint --fix&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;generates&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;./schema.graphql&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;schema-ast&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;src/generated-types.tsx&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;typescript&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;typescript-operations&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;typescript-react-apollo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;withHOC&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;withComponent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;withHooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;When you add to it the capability to create types for your queries, this is really powerful. A powerful feature of GraphQL are &lt;a href="https://graphql.org/learn/schema/#union-types"&gt;union type&lt;/a&gt;. A field can contain different types. For example a &lt;code&gt;Page&lt;/code&gt; or &lt;code&gt;Post&lt;/code&gt; can can be returned a reference for another page.&lt;/p&gt;</description></item><item><title>Solutions Architect</title><link>https://katallaxie.dev/experience/amazon/</link><pubDate>Fri, 01 Nov 2019 00:00:00 +0100</pubDate><guid>https://katallaxie.dev/experience/amazon/</guid><description>Helped builders to use AWS services to create new products and services.</description></item><item><title>Senior Software Engineer</title><link>https://katallaxie.dev/experience/digitalocean/</link><pubDate>Mon, 01 Oct 2018 00:00:00 +0100</pubDate><guid>https://katallaxie.dev/experience/digitalocean/</guid><description>Building network products in the cloud ☁️ for developers and startups.</description></item><item><title>Lead Engineer</title><link>https://katallaxie.dev/experience/axelspringer/</link><pubDate>Thu, 01 Sep 2016 00:00:00 +0100</pubDate><guid>https://katallaxie.dev/experience/axelspringer/</guid><description>Lead engineering of a product platform.</description></item><item><title>Technical Lead</title><link>https://katallaxie.dev/experience/accenture/</link><pubDate>Wed, 01 Apr 2015 00:00:00 +0100</pubDate><guid>https://katallaxie.dev/experience/accenture/</guid><description>&lt;h3 id="moved-back-to-jena-joined-an-175-year-old-technology-leader-" class="text-xl font-bold py-4"&gt;
 Moved back to Jena, joined an 175 year old technology leader 🦄
 &lt;a href="#moved-back-to-jena-joined-an-175-year-old-technology-leader-" class="link link-accent"&gt;#&lt;/a&gt;
&lt;/h3&gt;</description></item><item><title>Research Fellow</title><link>https://katallaxie.dev/experience/fsu/</link><pubDate>Mon, 01 Nov 2010 00:00:00 +0100</pubDate><guid>https://katallaxie.dev/experience/fsu/</guid><description>Doing research in economic theory.</description></item><item><title>About</title><link>https://katallaxie.dev/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://katallaxie.dev/about/</guid><description>&lt;h1 id="-heyyyy-yo" class="text-4xl font-bold py-4"&gt;
 👋 Heyyyy-yo!
 &lt;a href="#-heyyyy-yo" class="link link-accent"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Sebastian here, I&amp;rsquo;m an engineer with decades of experience in software development, cloud computing, and digital transformation 🦄 from Germany 🇩🇪.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m happiest when I&amp;rsquo;m creating, learning, exploring and thinking about how to make things better.&lt;/p&gt;



&lt;h2 id="-fun-facts-about-me" class="text-2xl font-bold py-4"&gt;
 🥳 Fun facts about me
 &lt;a href="#-fun-facts-about-me" class="link link-accent"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;There are a few things that I love to do in my free time. Here are some fun facts about me:&lt;/p&gt;</description></item></channel></rss>