<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0"><channel>
      <title>Tim Kapitein's blog</title>
      <description>A front-end developer's notes on building things, trying out new tech, and occasionally getting lost in proof of concepts. Expect snippets, solutions, and stories from the world of web development.</description>
      <link>http://timkapitein.nl/rss.xml</link>
    <item>
            <title>Parsing Discriminated Unions with Zod</title>
            <link>http://timkapitein.nl/blog/parsing-discriminated-unions-with-zod</link>
            <description>Found a nice way to validate discriminated unions with Zod. Here's how it works and why it's useful.</description>
            <pubDate>Fri, 13 Dec 2024 00:00:00 GMT</pubDate>
            <guid>http://timkapitein.nl/blog/parsing-discriminated-unions-with-zod</guid>
           </item><item>
            <title>From Neovim to Cursor</title>
            <link>http://timkapitein.nl/blog/from-neovim-to-cursor</link>
            <description>My switch from Neovim to Cursor for my daily coding workflow, with a complete Vim keybindings setup.</description>
            <pubDate>Thu, 12 Dec 2024 00:00:00 GMT</pubDate>
            <guid>http://timkapitein.nl/blog/from-neovim-to-cursor</guid>
           </item><item>
            <title>Self-Hosted Analytics - Using Umami for my Blog</title>
            <link>http://timkapitein.nl/blog/self-hosted-analytics-using-umami-for-my-blog</link>
            <description>My experience with Umami analytics, self-hosted, clean data, and open source. No complex dashboards, just the numbers that matter.</description>
            <pubDate>Wed, 11 Dec 2024 00:00:00 GMT</pubDate>
            <guid>http://timkapitein.nl/blog/self-hosted-analytics-using-umami-for-my-blog</guid>
           </item><item>
            <title>The Stack Behind This Blog - A Story of Procrastination</title>
            <link>http://timkapitein.nl/blog/the-stack-behind-this-blog-a-story-of-procrastination</link>
            <description>How I rebuilt my blog's architecture when I should have been writing articles. A journey through React Router 7, MDX, Redis caching, and finding excuses to tinker with tech.</description>
            <pubDate>Sat, 07 Dec 2024 00:00:00 GMT</pubDate>
            <guid>http://timkapitein.nl/blog/the-stack-behind-this-blog-a-story-of-procrastination</guid>
           </item><item>
            <title>Making Text Look Nicer with text-wrap</title>
            <link>http://timkapitein.nl/blog/making-text-look-nicer-with-text-wrap</link>
            <description>Ever noticed how sometimes text just doesn't look quite right? Maybe a headline breaks awkwardly on mobile, or you get that annoying single word hanging at the end of a paragraph. The CSS text-wrap property helps solve these issues with two values that each handle different scenarios.</description>
            <pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate>
            <guid>http://timkapitein.nl/blog/making-text-look-nicer-with-text-wrap</guid>
           </item><item>
            <title>Hello world</title>
            <link>http://timkapitein.nl/blog/hello-world</link>
            <description>Hey! I'm Tim, a front-end developer from the Netherlands, and this is my blog.</description>
            <pubDate>Tue, 19 Nov 2024 00:00:00 GMT</pubDate>
            <guid>http://timkapitein.nl/blog/hello-world</guid>
           </item></channel></rss>