<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>sdorra.dev</title>
        <link>https://sdorra.dev</link>
        <description>A site about software development by Sebastian Sdorra</description>
        <lastBuildDate>Fri, 12 Dec 2025 07:45:26 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>All rights reserved 2023, Sebastian Sdorra</copyright>
        <item>
            <title><![CDATA[From card layout to table layout]]></title>
            <link>https://sdorra.dev/posts/2024-03-23-from-card-to-table?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2024-03-23-from-card-to-table</guid>
            <pubDate>Sat, 23 Mar 2024 13:00:00 GMT</pubDate>
            <description><![CDATA[From a mobile card layout to a table layout on larger devices]]></description>
            <content:encoded><![CDATA[
<img src="https://sdorra.dev/posts/2024-03-23-from-card-to-table/assets/cover.png" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>From a mobile card layout to a table layout on larger devices</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2024-03-23-from-card-to-table?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>css</category>
            <category>tailwind</category>
            <category>grid</category>
            <category>subgrid</category>
            <enclosure url="https://sdorra.dev/posts/2024-03-23-from-card-to-table/assets/cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Using temporary files with vitest]]></title>
            <link>https://sdorra.dev/posts/2024-02-12-vitest-tmpdir?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2024-02-12-vitest-tmpdir</guid>
            <pubDate>Mon, 12 Feb 2024 13:00:00 GMT</pubDate>
            <description><![CDATA[Extend the vitest context with a temporary directory]]></description>
            <content:encoded><![CDATA[
<img src="https://sdorra.dev/posts/2024-02-12-vitest-tmpdir/assets/cover.png" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Extend the vitest context with a temporary directory</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2024-02-12-vitest-tmpdir?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>vitest</category>
            <category>fs</category>
            <category>temp</category>
            <category>typescript</category>
            <enclosure url="https://sdorra.dev/posts/2024-02-12-vitest-tmpdir/assets/cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Content Collections]]></title>
            <link>https://sdorra.dev/posts/2024-01-15-content-collections?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2024-01-15-content-collections</guid>
            <pubDate>Mon, 15 Jan 2024 13:00:00 GMT</pubDate>
            <description><![CDATA[An alternative to contentlayer]]></description>
            <content:encoded><![CDATA[
<img src="https://github.com/sdorra/content-collections/blob/main/website/assets/logo.png?raw=true" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>An alternative to contentlayer</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2024-01-15-content-collections?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>contentlayer</category>
            <category>markdown</category>
            <category>mdx</category>
            <category>typescript</category>
            <enclosure url="https://github.com/sdorra/content-collections/blob/main/website/assets/logo.png?raw=true" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Simple loading spinners with Tailwind]]></title>
            <link>https://sdorra.dev/posts/2023-12-29-tailwind-spinners?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-12-29-tailwind-spinners</guid>
            <pubDate>Fri, 29 Dec 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Creating nice loading spinner without using external libraries and even without JavaScript.]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1571291341382-f5493569cf73?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Creating nice loading spinner without using external libraries and even without JavaScript.</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-12-29-tailwind-spinners?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>tailwind</category>
            <category>spinner</category>
            <category>loading</category>
            <enclosure url="https://images.unsplash.com/photo-1571291341382-f5493569cf73?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1571291341382-f5493569cf73"/>
        </item>
        <item>
            <title><![CDATA[Type-safe environment with TypeScript and Zod]]></title>
            <link>https://sdorra.dev/posts/2023-08-22-type-safe-environment?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-08-22-type-safe-environment</guid>
            <pubDate>Tue, 22 Aug 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Let's build a type-safe version of process.env with TypeScript and Zod]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1582489853490-cd3a53eb4530?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Let's build a type-safe version of process.env with TypeScript and Zod</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-08-22-type-safe-environment?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>typescript</category>
            <category>zod</category>
            <category>environment</category>
            <enclosure url="https://images.unsplash.com/photo-1582489853490-cd3a53eb4530?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1582489853490-cd3a53eb4530"/>
        </item>
        <item>
            <title><![CDATA[Speeding up a serverless function]]></title>
            <link>https://sdorra.dev/posts/2023-08-13-speedup-serverless-function?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-08-13-speedup-serverless-function</guid>
            <pubDate>Sun, 13 Aug 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[In this article we will speed up a serverless function which fetches data from a google spreadsheet]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1498084393753-b411b2d26b34?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>In this article we will speed up a serverless function which fetches data from a google spreadsheet</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-08-13-speedup-serverless-function?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>serverless</category>
            <category>google</category>
            <category>spreadsheet</category>
            <category>edge</category>
            <enclosure url="https://images.unsplash.com/photo-1498084393753-b411b2d26b34?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1498084393753-b411b2d26b34"/>
        </item>
        <item>
            <title><![CDATA[Create an ansible module]]></title>
            <link>https://sdorra.dev/posts/2023-08-09-ansible-porkbun-module?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-08-09-ansible-porkbun-module</guid>
            <pubDate>Wed, 09 Aug 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[In this article we will see how to create an ansible module to manage porkbun]]></description>
            <content:encoded><![CDATA[
<img src="https://sdorra.dev/posts/2023-08-09-ansible-porkbun-module/assets/cover.png" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>In this article we will see how to create an ansible module to manage porkbun</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-08-09-ansible-porkbun-module?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>ansible</category>
            <category>porkbun</category>
            <category>module</category>
            <enclosure url="https://sdorra.dev/posts/2023-08-09-ansible-porkbun-module/assets/cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[New DNS registrar]]></title>
            <link>https://sdorra.dev/posts/2023-08-07-new-dns-registrar?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-08-07-new-dns-registrar</guid>
            <pubDate>Mon, 07 Aug 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Why i now use Porkbun for all my domain names]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1593318978060-6532dc118580?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Why i now use Porkbun for all my domain names</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-08-07-new-dns-registrar?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>dns</category>
            <category>node</category>
            <category>ansible</category>
            <category>lets-encrypt</category>
            <enclosure url="https://images.unsplash.com/photo-1593318978060-6532dc118580?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1593318978060-6532dc118580"/>
        </item>
        <item>
            <title><![CDATA[Refetch on window focus]]></title>
            <link>https://sdorra.dev/posts/2023-08-04-refetch-on-window-focus?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-08-04-refetch-on-window-focus</guid>
            <pubDate>Fri, 04 Aug 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Automatically refresh data when the tab or browser window is focused]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1487622750296-6360190669a1?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Automatically refresh data when the tab or browser window is focused</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-08-04-refetch-on-window-focus?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>react</category>
            <category>focus</category>
            <category>web</category>
            <enclosure url="https://images.unsplash.com/photo-1487622750296-6360190669a1?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1487622750296-6360190669a1"/>
        </item>
        <item>
            <title><![CDATA[Google authentication on the edge]]></title>
            <link>https://sdorra.dev/posts/2023-08-03-google-auth-on-the-edge?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-08-03-google-auth-on-the-edge</guid>
            <pubDate>Thu, 03 Aug 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Authenticate a google service account within an edge function]]></description>
            <content:encoded><![CDATA[
<img src="https://sdorra.dev/posts/2023-08-03-google-auth-on-the-edge/assets/cover.png" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Authenticate a google service account within an edge function</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-08-03-google-auth-on-the-edge?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>google</category>
            <category>authentication</category>
            <category>edge</category>
            <category>fetch</category>
            <enclosure url="https://sdorra.dev/posts/2023-08-03-google-auth-on-the-edge/assets/cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Animated burger menu button with TailwindCSS]]></title>
            <link>https://sdorra.dev/posts/2023-03-23-animated-burger-menu-button?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-03-23-animated-burger-menu-button</guid>
            <pubDate>Thu, 23 Mar 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Lets create an animated and accessible burger menu button with React and TailwindCSS]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1550547660-d9450f859349?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Lets create an animated and accessible burger menu button with React and TailwindCSS</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-03-23-animated-burger-menu-button?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>tailwindcss</category>
            <category>react</category>
            <category>css</category>
            <enclosure url="https://images.unsplash.com/photo-1550547660-d9450f859349?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1550547660-d9450f859349"/>
        </item>
        <item>
            <title><![CDATA[TypeScript undefined to null]]></title>
            <link>https://sdorra.dev/posts/2023-03-20-typescript-undefined-to-null?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-03-20-typescript-undefined-to-null</guid>
            <pubDate>Mon, 20 Mar 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Learn how to create a type helper which converts undefined to null]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1551012895-1df56864aabe?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Learn how to create a type helper which converts undefined to null</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-03-20-typescript-undefined-to-null?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>typescript</category>
            <category>nextjs</category>
            <enclosure url="https://images.unsplash.com/photo-1551012895-1df56864aabe?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1551012895-1df56864aabe"/>
        </item>
        <item>
            <title><![CDATA[Responsive components with grid and TailwindCSS]]></title>
            <link>https://sdorra.dev/posts/2023-02-10-responsive-components-with-grid?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-02-10-responsive-components-with-grid</guid>
            <pubDate>Fri, 10 Feb 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Develop responsive components by changing structure with grid and TailwindCSS]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1518893714388-8ed554f8471b?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Develop responsive components by changing structure with grid and TailwindCSS</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-02-10-responsive-components-with-grid?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>tailwindcss</category>
            <category>grid</category>
            <category>flexbox</category>
            <category>css</category>
            <enclosure url="https://images.unsplash.com/photo-1518893714388-8ed554f8471b?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1518893714388-8ed554f8471b"/>
        </item>
        <item>
            <title><![CDATA[Dark mode with Ladle and TailwindCSS]]></title>
            <link>https://sdorra.dev/posts/2023-01-19-ladle-tailwind-dark-mode?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-01-19-ladle-tailwind-dark-mode</guid>
            <pubDate>Thu, 19 Jan 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Leverage the dark mode switch of Ladle for components using TailwindCSS]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1504764060-099d0ed17a20?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Leverage the dark mode switch of Ladle for components using TailwindCSS</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-01-19-ladle-tailwind-dark-mode?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>ladle</category>
            <category>tailwindcss</category>
            <category>react</category>
            <enclosure url="https://images.unsplash.com/photo-1504764060-099d0ed17a20?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1504764060-099d0ed17a20"/>
        </item>
        <item>
            <title><![CDATA[Component development with ladle and next/image]]></title>
            <link>https://sdorra.dev/posts/2023-01-18-ladle-next-image?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-01-18-ladle-next-image</guid>
            <pubDate>Wed, 18 Jan 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[Learn how to develop react components which are using next/image with ladle]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1586969593928-1c87c1f9c2ef?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Learn how to develop react components which are using next/image with ladle</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-01-18-ladle-next-image?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>ladle</category>
            <category>nextjs</category>
            <category>react</category>
            <category>typescript</category>
            <enclosure url="https://images.unsplash.com/photo-1586969593928-1c87c1f9c2ef?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1586969593928-1c87c1f9c2ef"/>
        </item>
        <item>
            <title><![CDATA[Dark mode with Shiki and Code Hike]]></title>
            <link>https://sdorra.dev/posts/2023-01-12-ch-dark-mode?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-01-12-ch-dark-mode</guid>
            <pubDate>Thu, 12 Jan 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[How to implement beautiful syntax highlighting including dark mode with Shiki and Code Hike using css variables]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1502725205173-5e6e47cdf175?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>How to implement beautiful syntax highlighting including dark mode with Shiki and Code Hike using css variables</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-01-12-ch-dark-mode?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>shiki</category>
            <category>codehike</category>
            <category>tailwindcss</category>
            <category>react</category>
            <enclosure url="https://images.unsplash.com/photo-1502725205173-5e6e47cdf175?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1502725205173-5e6e47cdf175"/>
        </item>
        <item>
            <title><![CDATA[Implementing a share button]]></title>
            <link>https://sdorra.dev/posts/2023-01-05-share-button?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2023-01-05-share-button</guid>
            <pubDate>Thu, 05 Jan 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[In this article we will implement a button to share our articles on mobile devices and in the browser]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1501281668745-f7f57925c3b4?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>In this article we will implement a button to share our articles on mobile devices and in the browser</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2023-01-05-share-button?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>react</category>
            <category>tailwindcss</category>
            <category>headlessui</category>
            <enclosure url="https://images.unsplash.com/photo-1501281668745-f7f57925c3b4?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1501281668745-f7f57925c3b4"/>
        </item>
        <item>
            <title><![CDATA[Contentlayer with next/image]]></title>
            <link>https://sdorra.dev/posts/2022-12-11-contentlayer-next-image?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-12-11-contentlayer-next-image</guid>
            <pubDate>Sun, 11 Dec 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[How to use static markdown images with contentlayer and next/image]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1584018344977-1785e2aab7fe?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>How to use static markdown images with contentlayer and next/image</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-12-11-contentlayer-next-image?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>markdown</category>
            <category>contentlayer</category>
            <category>nextjs</category>
            <category>react</category>
            <enclosure url="https://images.unsplash.com/photo-1584018344977-1785e2aab7fe?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1584018344977-1785e2aab7fe"/>
        </item>
        <item>
            <title><![CDATA[MDX autolink headings]]></title>
            <link>https://sdorra.dev/posts/2022-12-07-mdx-autolink-headings?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-12-07-mdx-autolink-headings</guid>
            <pubDate>Wed, 07 Dec 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[Learn to configure MDX so that headings get anchor links to themselves]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1425326452142-67c31f601d2f?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Learn to configure MDX so that headings get anchor links to themselves</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-12-07-mdx-autolink-headings?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>mdx</category>
            <category>react</category>
            <category>contentlayer</category>
            <category>tailwindcss</category>
            <enclosure url="https://images.unsplash.com/photo-1425326452142-67c31f601d2f?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1425326452142-67c31f601d2f"/>
        </item>
        <item>
            <title><![CDATA[RSS Feed with Next.js]]></title>
            <link>https://sdorra.dev/posts/2022-12-06-next-rss-feed?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-12-06-next-rss-feed</guid>
            <pubDate>Tue, 06 Dec 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[A good blog needs an RSS feed, even if hardly anyone seems to use an RSS reader anymore]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1498644035638-2c3357894b10?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>A good blog needs an RSS feed, even if hardly anyone seems to use an RSS reader anymore</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-12-06-next-rss-feed?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>nextjs</category>
            <category>rss</category>
            <category>feed</category>
            <category>contentlayer</category>
            <enclosure url="https://images.unsplash.com/photo-1498644035638-2c3357894b10?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1498644035638-2c3357894b10"/>
        </item>
        <item>
            <title><![CDATA[Social Media Cards with @vercel/og]]></title>
            <link>https://sdorra.dev/posts/2022-11-27-social-media-cards?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-11-27-social-media-cards</guid>
            <pubDate>Sun, 27 Nov 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[Creating social media cards for sdorra.dev with the @vercel/og package]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1611162617213-7d7a39e9b1d7?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Creating social media cards for sdorra.dev with the @vercel/og package</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-11-27-social-media-cards?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>vercel</category>
            <category>edge</category>
            <category>ogp</category>
            <enclosure url="https://images.unsplash.com/photo-1611162617213-7d7a39e9b1d7?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1611162617213-7d7a39e9b1d7"/>
        </item>
        <item>
            <title><![CDATA[Contentlayer, MDX and the vercel edge function size limit]]></title>
            <link>https://sdorra.dev/posts/2022-11-24-contentlayer-mdx-edge?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-11-24-contentlayer-mdx-edge</guid>
            <pubDate>Thu, 24 Nov 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[The 1mb size limit of vercel edge functions is quickly reached with Contentlayer and MDX]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1647666561879-b0a970912037?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>The 1mb size limit of vercel edge functions is quickly reached with Contentlayer and MDX</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-11-24-contentlayer-mdx-edge?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>vercel</category>
            <category>edge</category>
            <category>mdx</category>
            <category>contentlayer</category>
            <enclosure url="https://images.unsplash.com/photo-1647666561879-b0a970912037?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1647666561879-b0a970912037"/>
        </item>
        <item>
            <title><![CDATA[Use dark mode with TailwindCSS and Next.js]]></title>
            <link>https://sdorra.dev/posts/2022-11-17-dark-mode-with-next?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-11-17-dark-mode-with-next</guid>
            <pubDate>Thu, 17 Nov 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[How to use dark mode on Next.js 13, the app directory and TailwindCSS]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1492112007959-c35ae067c37b?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>How to use dark mode on Next.js 13, the app directory and TailwindCSS</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-11-17-dark-mode-with-next?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>nextjs</category>
            <category>tailwindcss</category>
            <category>css</category>
            <category>react</category>
            <enclosure url="https://images.unsplash.com/photo-1492112007959-c35ae067c37b?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1492112007959-c35ae067c37b"/>
        </item>
        <item>
            <title><![CDATA[How to create a sitemap with Next.js app directory]]></title>
            <link>https://sdorra.dev/posts/2022-11-15-sitemaps-with-appdir?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-11-15-sitemaps-with-appdir</guid>
            <pubDate>Tue, 15 Nov 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[This article shows the basics of creating a sitemap with Next.js and enabled app directory]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1452421822248-d4c2b47f0c81?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>This article shows the basics of creating a sitemap with Next.js and enabled app directory</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-11-15-sitemaps-with-appdir?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>nextjs</category>
            <category>sitemap</category>
            <category>contentlayer</category>
            <enclosure url="https://images.unsplash.com/photo-1452421822248-d4c2b47f0c81?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1452421822248-d4c2b47f0c81"/>
        </item>
        <item>
            <title><![CDATA[Next.js app directory and 100% height]]></title>
            <link>https://sdorra.dev/posts/2022-11-14-layout-divs?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-11-14-layout-divs</guid>
            <pubDate>Mon, 14 Nov 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[Layouts of Next.js app directory are creating div wrappers, which could break designs]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1498889444388-e67ea62c464b?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>Layouts of Next.js app directory are creating div wrappers, which could break designs</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-11-14-layout-divs?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>nextjs</category>
            <category>css</category>
            <enclosure url="https://images.unsplash.com/photo-1498889444388-e67ea62c464b?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1498889444388-e67ea62c464b"/>
        </item>
        <item>
            <title><![CDATA[Using Code Hike within the Next.js app directory]]></title>
            <link>https://sdorra.dev/posts/2022-11-13-codehike-appdir?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-11-13-codehike-appdir</guid>
            <pubDate>Sun, 13 Nov 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[How to use Code Hike with the new app directory of Next.js 13]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1498050108023-c5249f4df085?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>How to use Code Hike with the new app directory of Next.js 13</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-11-13-codehike-appdir?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>nextjs</category>
            <category>mdx</category>
            <category>contentlayer</category>
            <enclosure url="https://images.unsplash.com/photo-1498050108023-c5249f4df085?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1498050108023-c5249f4df085"/>
        </item>
        <item>
            <title><![CDATA[Analytics with Next.js 13]]></title>
            <link>https://sdorra.dev/posts/2022-11-11-next-with-fathom?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-11-11-next-with-fathom</guid>
            <pubDate>Fri, 11 Nov 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[This article explains how to use analytics with Next.js 13, using the example of fathom]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1551288049-bebda4e38f71?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>This article explains how to use analytics with Next.js 13, using the example of fathom</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-11-11-next-with-fathom?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>nextjs</category>
            <category>analytics</category>
            <category>fathom</category>
            <category>react</category>
            <enclosure url="https://images.unsplash.com/photo-1551288049-bebda4e38f71?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1551288049-bebda4e38f71"/>
        </item>
        <item>
            <title><![CDATA[Next.js 13 Fonts with Tailwind]]></title>
            <link>https://sdorra.dev/posts/2022-11-10-next-fonts-tailwind?utm_campaign=feed&amp;utm_source=rss2</link>
            <guid>https://sdorra.dev/posts/2022-11-10-next-fonts-tailwind</guid>
            <pubDate>Thu, 10 Nov 2022 13:00:00 GMT</pubDate>
            <description><![CDATA[How to use Next.js font optimization with tailwind]]></description>
            <content:encoded><![CDATA[
<img src="https://images.unsplash.com/photo-1461958508236-9a742665a0d5?fit=crop&w=1000&h=420" width="1000" height="420" vspace="3" hspace="8" align="center">
<p>How to use Next.js font optimization with tailwind</p>
<p>Read the full article on <a href="https://sdorra.dev/posts/2022-11-10-next-fonts-tailwind?utm_campaign=feed&utm_source=rss2">sdorra.dev</a></p>]]></content:encoded>
            <author>s.sdorra@gmail.com (Sebastian Sdorra)</author>
            <category>nextjs</category>
            <category>fonts</category>
            <category>tailwindcss</category>
            <category>react</category>
            <enclosure url="https://images.unsplash.com/photo-1461958508236-9a742665a0d5?fit=crop&amp;w=256&amp;h=256" length="0" type="image//photo-1461958508236-9a742665a0d5"/>
        </item>
    </channel>
</rss>