<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[Maxime Heckel's Blog]]></title>
        <description><![CDATA[Hi I'm Maxime, and this is my blog. Here, I share through my writing my experience as a frontend engineer and everything I'm learning about on React, Typescript, SwiftUI, Serverless, and testing.]]></description>
        <link>https://blog.maximeheckel.com</link>
        <image>
            <url>https://blog.maximeheckel.com/static/og/main-og-image.png</url>
            <title>Maxime Heckel&apos;s Blog</title>
            <link>https://blog.maximeheckel.com</link>
        </image>
        <generator>RSS for Node</generator>
        <lastBuildDate>Thu, 28 May 2026 23:43:39 GMT</lastBuildDate>
        <atom:link href="https://blog.maximeheckel.com/rss.xml" rel="self" type="application/rss+xml"/>
        <language><![CDATA[en]]></language>
        <item>
            <title><![CDATA[On Rendering the Sky, Sunsets, and Planets]]></title>
            <description><![CDATA[This article explores how to render realistic skies and atmospheres in real time in the browser with shaders, from simple sky domes, to entire planets using shaders, raymarching, Rayleigh and Mie scattering, and ozone absorption.]]></description>
            <link>https://blog.maximeheckel.com/posts/on-rendering-the-sky-sunsets-and-planets</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/on-rendering-the-sky-sunsets-and-planets</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 12 May 2026 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Shades of Halftone]]></title>
            <description><![CDATA[An interactive deep dive into building halftone shaders in GLSL, covering everything from classic dot patterns and CMYK color separation to Moiré interference, gooey effects, and animated displacement.]]></description>
            <link>https://blog.maximeheckel.com/posts/shades-of-halftone</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/shades-of-halftone</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 10 Feb 2026 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Field Guide to TSL and WebGPU]]></title>
            <description><![CDATA[A comprehensive guide to building 3D web experiences with TSL and WebGPU, covering shader development, compute shader applications, and practical examples for particle systems and post-processing effects.]]></description>
            <link>https://blog.maximeheckel.com/posts/field-guide-to-tsl-and-webgpu</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/field-guide-to-tsl-and-webgpu</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 14 Oct 2025 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[On Shaping Light]]></title>
            <description><![CDATA[A deep dive into Volumetric Lighting implemented via Post-Processing leveraging a custom shader with raymarching to create beautiful light and atmospheric effect for your React Three Fiber and Three.js scenes.]]></description>
            <link>https://blog.maximeheckel.com/posts/shaping-light-volumetric-lighting-with-post-processing-and-raymarching</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/shaping-light-volumetric-lighting-with-post-processing-and-raymarching</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 10 Jun 2025 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Speaking at Figma Config 2025]]></title>
            <description><![CDATA[An overview of the talk I had the chance to give the Figma Config, sharing my passion and learning journey around shaders and real-time 3D on the web.]]></description>
            <link>https://blog.maximeheckel.com/posts/config-2025</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/config-2025</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Thu, 08 May 2025 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Post-Processing Shaders as a Creative Medium]]></title>
            <description><![CDATA[A detailed compilation of my post-processing and custom stylized shader experiments — from pixel patterns and optical illusions to dynamic, animated effects.]]></description>
            <link>https://blog.maximeheckel.com/posts/post-processing-as-a-creative-medium</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/post-processing-as-a-creative-medium</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 04 Feb 2025 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[On Crafting Painterly Shaders]]></title>
            <description><![CDATA[A detailed essay on my research and process of building a shader to mimic paint, watercolor, and aquarelle by exploring various implementations of the Kuwahara image smoothing filter.]]></description>
            <link>https://blog.maximeheckel.com/posts/on-crafting-painterly-shaders</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/on-crafting-painterly-shaders</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 29 Oct 2024 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The Art of Dithering and Retro Shading for the Web]]></title>
            <description><![CDATA[A detailed walkthrough of the inner workings of dithering and other shading techniques to give a retro look and feel to your WebGL and React Three Fiber work.]]></description>
            <link>https://blog.maximeheckel.com/posts/the-art-of-dithering-and-retro-shading-web</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/the-art-of-dithering-and-retro-shading-web</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 06 Aug 2024 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Moebius-style post-processing and other stylized shaders]]></title>
            <description><![CDATA[A detailed essay on the process of building a post-processing stylized shader reproducing the style of legendary artist Jean Giraud a.k.a Moebius for your React Three Fiber projects. In it, I detail the process of drawing outlines with a Sobel Filter as well as custom shadow and lighting patterns to bring a unique style to your WebGL scene.]]></description>
            <link>https://blog.maximeheckel.com/posts/moebius-style-post-processing</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/moebius-style-post-processing</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 26 Mar 2024 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Shining a light on Caustics with Shaders and React Three Fiber]]></title>
            <description><![CDATA[A step-by-step guide on how to build a caustic light effect for your React Three Fiber project using shaders, render targets, normal maps, and custom materials.]]></description>
            <link>https://blog.maximeheckel.com/posts/caustics-in-webgl</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/caustics-in-webgl</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 23 Jan 2024 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Real-time dreamy Cloudscapes with Volumetric Raymarching]]></title>
            <description><![CDATA[This article is a deep dive into my experimentations with Volumetric rendering and how to leverage it to render beautiful raymarched cloudscapes in React Three Fiber and WebGL. In it, I walk you through everything from the basics of Volumetric Raymarching to the techniques used in video games to render physically accurate clouds.]]></description>
            <link>https://blog.maximeheckel.com/posts/real-time-cloudscapes-with-volumetric-raymarching</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/real-time-cloudscapes-with-volumetric-raymarching</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 31 Oct 2023 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Painting with Math: A Gentle Study of Raymarching]]></title>
            <description><![CDATA[A compilation of my Raymarching and Signed Distance Field learnings and work. In it, I teach you how to leverage those techniques along with lighting models, smoothmin, soft shadows, and some math to create beautiful 3D raymarched scenes ranging from abstract shapes to infinite realistic-looking landscapes.]]></description>
            <link>https://blog.maximeheckel.com/posts/painting-with-math-a-gentle-study-of-raymarching</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/painting-with-math-a-gentle-study-of-raymarching</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 12 Sep 2023 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Building a magical AI-powered semantic search from scratch]]></title>
            <description><![CDATA[An end-to-end walkthrough on how to build a semantic search from your own MDX or Markdown based content using Postgres vector similarity search and OpenAI's text embeddings and chat completion APIs.]]></description>
            <link>https://blog.maximeheckel.com/posts/building-magical-ai-powered-semantic-search</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/building-magical-ai-powered-semantic-search</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 06 Jun 2023 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Beautiful and mind-bending effects with WebGL Render Targets]]></title>
            <description><![CDATA[A deep dive into WebGL Render Targets and how to leverage their capabilities in combination with the render loop to create scenes with post-processing effects, transition, and many types of optical illusions to trick the viewer's eyes.]]></description>
            <link>https://blog.maximeheckel.com/posts/beautiful-and-mind-bending-effects-with-webgl-render-targets</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/beautiful-and-mind-bending-effects-with-webgl-render-targets</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 14 Mar 2023 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Refraction, dispersion, and other shader light effects]]></title>
            <description><![CDATA[A guide on how to reproduce a chromatic dispersion effect for your React Three Fiber and shader projects with FBO, refraction, chromatic aberration, specular, and other tricks through 9 interactive code playgrounds.]]></description>
            <link>https://blog.maximeheckel.com/posts/refraction-dispersion-and-other-shader-light-effects</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/refraction-dispersion-and-other-shader-light-effects</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 24 Jan 2023 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The magical world of Particles with React Three Fiber and Shaders]]></title>
            <description><![CDATA[An interactive introduction to Particles with React Three Fiber and Shaders where you'll learn anything going from attributes, buffer geometries, and more advanced techniques like Frame Buffer Object through 8 unique 3D scenes.]]></description>
            <link>https://blog.maximeheckel.com/posts/the-magical-world-of-particles-with-react-three-fiber-and-shaders</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/the-magical-world-of-particles-with-react-three-fiber-and-shaders</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 08 Nov 2022 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The Study of Shaders with React Three Fiber]]></title>
            <description><![CDATA[A complete guide on how to use shaders with React Three Fiber, work with uniforms and varyings, and build dynamic, interactive and composable materials with them through 8 unique 3D scenes.]]></description>
            <link>https://blog.maximeheckel.com/posts/the-study-of-shaders-with-react-three-fiber</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/the-study-of-shaders-with-react-three-fiber</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 26 Jul 2022 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Building a Design System from scratch]]></title>
            <description><![CDATA[A deep dive into my experience building my own design system that documents my process of defining tokens, creating efficient components, and shipping them as a package.]]></description>
            <link>https://blog.maximeheckel.com/posts/building-a-design-system-from-scratch</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/building-a-design-system-from-scratch</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 10 May 2022 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Everything about Framer Motion layout animations]]></title>
            <description><![CDATA[A complete guide to Framer Motion layout animations showcasing every concept, from the layout prop, shared layout animations and LayoutGroup, to complex drag-to-reorder interactions.]]></description>
            <link>https://blog.maximeheckel.com/posts/framer-motion-layout-animations</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/framer-motion-layout-animations</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 08 Mar 2022 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Building a Vaporwave scene with Three.js]]></title>
            <description><![CDATA[A step-by-step tutorial documenting my attempt at reverse-engineering the vaporwave WebGL scene from the Linear 2021 release page using solely fundamental concepts of Three.js like textures, lights, animations, and post-processing effects.]]></description>
            <link>https://blog.maximeheckel.com/posts/vaporwave-3d-scene-with-threejs</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/vaporwave-3d-scene-with-threejs</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 25 Jan 2022 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Cubic Bézier: from math to motion]]></title>
            <description><![CDATA[A deep dive into the math behind Bézier curves, from simple linear interpolations to Cubic Bézier and how they are used to describe motion. This article introduces the concepts underneath cubic-bezier and easing timing functions that are used in CSS and Framer Motion transitions through easy-to-understand interactive examples.]]></description>
            <link>https://blog.maximeheckel.com/posts/cubic-bezier-from-math-to-motion</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/cubic-bezier-from-math-to-motion</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 02 Nov 2021 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[First steps with GPT-3 for frontend developers]]></title>
            <description><![CDATA[A beginners guide to OpenAI's API that eases frontend developers into the world of GPT-3 and gives all the tools needed to start building AI-powered Next.js apps.]]></description>
            <link>https://blog.maximeheckel.com/posts/first-steps-with-gpt-3-and-beyond</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/first-steps-with-gpt-3-and-beyond</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 28 Sep 2021 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Building the perfect GitHub CI workflow for your frontend team]]></title>
            <description><![CDATA[A guide with some of the best Github CI tips I could find to the power best CI pipeline for your frontend team's needs.]]></description>
            <link>https://blog.maximeheckel.com/posts/building-perfect-github-action-frontend-teams</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/building-perfect-github-action-frontend-teams</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 03 Aug 2021 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Migrating to Next.js]]></title>
            <description><![CDATA[Some thoughts on my experience using Gatsby for my blog and migrating it to Next.js, and why this was the right call for me going forward.]]></description>
            <link>https://blog.maximeheckel.com/posts/migrating-to-nextjs</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/migrating-to-nextjs</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 29 Jun 2021 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Static Tweets with MDX and Next.js]]></title>
            <description><![CDATA[A solution to remove sluggish Twitter embed iframes and load the tweets in your blog posts at the speed of light.]]></description>
            <link>https://blog.maximeheckel.com/posts/static-tweets-with-mdx-nextjs</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/static-tweets-with-mdx-nextjs</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 01 Jun 2021 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Advanced animation patterns with Framer Motion]]></title>
            <description><![CDATA[A deep dive into Framer Motion's propagation, exit transitions and layout animation patterns through curated examples and interactive playgrounds.]]></description>
            <link>https://blog.maximeheckel.com/posts/advanced-animation-patterns-with-framer-motion</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/advanced-animation-patterns-with-framer-motion</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 20 Apr 2021 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Scrollspy demystified]]></title>
            <description><![CDATA[A deep dive into how the inner workings of a Scrollspy, Intersection Observers, and how to integrate it with Markdown-based static sites without the need of third party libraries.]]></description>
            <link>https://blog.maximeheckel.com/posts/scrollspy-demystified</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/scrollspy-demystified</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 09 Mar 2021 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The Power of Composition with CSS Variables]]></title>
            <description><![CDATA[How leveraging CSS variable composition and HSLA colors helped me build a more efficient way to theme my apps and rely less on CSS-in-JS.]]></description>
            <link>https://blog.maximeheckel.com/posts/the-power-of-composition-with-css-variables</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/the-power-of-composition-with-css-variables</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 02 Feb 2021 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[My first failed SwiftUI project]]></title>
            <description><![CDATA[A reflection on my experience building my first SwiftUI app, what I learned, the challenges I faced, and the reasons that made me not release it.]]></description>
            <link>https://blog.maximeheckel.com/posts/first-failed-swiftui-project</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/first-failed-swiftui-project</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 19 Jan 2021 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Guide to creating animations that spark joy with Framer Motion]]></title>
            <description><![CDATA[An interactive guide introducing everything I've learned about Framer Motion through fun examples and little case studies of animations I built.]]></description>
            <link>https://blog.maximeheckel.com/posts/guide-animations-spark-joy-framer-motion</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/guide-animations-spark-joy-framer-motion</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 15 Dec 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Using Shortcuts and serverless to build a personal Apple Health API]]></title>
            <description><![CDATA[Take ownership of your Apple Watch health data with a only few lines of code.]]></description>
            <link>https://blog.maximeheckel.com/posts/build-personal-health-api-shortcuts-serverless</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/build-personal-health-api-shortcuts-serverless</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Mon, 02 Nov 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[SEO mistakes I've made and how I fixed them]]></title>
            <description><![CDATA[A look back at what I learned fixing my terrible SEO mistakes on my Gatsby websites]]></description>
            <link>https://blog.maximeheckel.com/posts/seo-mistakes-i-have-made-and-how-i-fixed-them</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/seo-mistakes-i-have-made-and-how-i-fixed-them</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 13 Oct 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Going native: SwiftUI from the perspective of a React developer]]></title>
            <description><![CDATA[Approaching native iOS development with a React developer mindset]]></description>
            <link>https://blog.maximeheckel.com/posts/swiftui-as-react-developer</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/swiftui-as-react-developer</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Wed, 16 Sep 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Build your own preview deployment service]]></title>
            <description><![CDATA[Do you want to increase your team's development velocity and collaboration? Preview Deployments are one of the key pieces for that, and this post details how to implement your own serverless deployment service based on Google Cloud Run.]]></description>
            <link>https://blog.maximeheckel.com/posts/build-serverless-preview-deployment</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/build-serverless-preview-deployment</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 25 Aug 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The little guide to CI/CD for frontend developers]]></title>
            <description><![CDATA[How to ship your app faster, more reliably and make your team unstoppable with good testing practices and automation.]]></description>
            <link>https://blog.maximeheckel.com/posts/guide-to-cicd-for-frontend-developers</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/guide-to-cicd-for-frontend-developers</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 28 Jul 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Immigrating to the US]]></title>
            <description><![CDATA[US immigration explained for American citizens by an immigrant.]]></description>
            <link>https://blog.maximeheckel.com/posts/immigrating-to-the-us-my-path</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/immigrating-to-the-us-my-path</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Fri, 26 Jun 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The physics behind spring animations]]></title>
            <description><![CDATA[A deep dive into the inner workings of spring animations in Framer Motion.]]></description>
            <link>https://blog.maximeheckel.com/posts/the-physics-behind-spring-animations</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/the-physics-behind-spring-animations</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 23 Jun 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Generate screenshots of your code with a serverless function]]></title>
            <description><![CDATA[Programmatic Carbon images generation from a simple API]]></description>
            <link>https://blog.maximeheckel.com/posts/creating-beautiful-screenshots-source-code-with-serverless-function</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/creating-beautiful-screenshots-source-code-with-serverless-function</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 09 Jun 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to use Framer Motion with Emotion styled-components]]></title>
            <description><![CDATA[Framer Motion x Emotion → animated styled-components]]></description>
            <link>https://blog.maximeheckel.com/posts/framer-motion-emotion</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/framer-motion-emotion</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 12 May 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Data Fetching with NextJS: What I learned]]></title>
            <description><![CDATA[GetServerSideProps vs GetStaticProps vs GetStaticPaths.]]></description>
            <link>https://blog.maximeheckel.com/posts/data-fetching-with-next-js</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/data-fetching-with-next-js</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 05 May 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Learning in public]]></title>
            <description><![CDATA[Here's an up to date list of what I'm currently learning and what I plan to learn.]]></description>
            <link>https://blog.maximeheckel.com/posts/learning-in-public</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/learning-in-public</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 21 Apr 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Fixing the dark mode flash issue on server rendered websites]]></title>
            <description><![CDATA[Bringing a proper solution to dark mode flashing without an ugly hack.]]></description>
            <link>https://blog.maximeheckel.com/posts/switching-off-the-lights-part-2-fixing-dark-mode-flashing-on-servered-rendered-website</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/switching-off-the-lights-part-2-fixing-dark-mode-flashing-on-servered-rendered-website</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Thu, 16 Apr 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to fix NPM link duplicate dependencies issues]]></title>
            <description><![CDATA[Dealing with dependencies when developing a package and using it through npm link.]]></description>
            <link>https://blog.maximeheckel.com/posts/duplicate-dependencies-npm-link</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/duplicate-dependencies-npm-link</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 31 Mar 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Running scheduled cross-browser end-to-end tests on Github CI]]></title>
            <description><![CDATA[Github actions + Cypress + cross-browser testing = 🚀]]></description>
            <link>https://blog.maximeheckel.com/posts/running-cross-browser-cypress-github-ci</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/running-cross-browser-cypress-github-ci</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 10 Mar 2020 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How I built my first custom ESLint rule]]></title>
            <description><![CDATA[A guide to get started with AST (Abstract Syntax Tree) and custom built ESLint plugins]]></description>
            <link>https://blog.maximeheckel.com/posts/how-to-build-first-eslint-rule</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/how-to-build-first-eslint-rule</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 19 Nov 2019 14:01:01 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[React Lazy: a take on preloading views]]></title>
            <description><![CDATA[How to add preloading to your route based code split apps]]></description>
            <link>https://blog.maximeheckel.com/posts/preloading-views-with-react</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/preloading-views-with-react</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 24 Sep 2019 14:01:01 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Automated UI accessibility testing with Cypress]]></title>
            <description><![CDATA[Make sure your UI projects follow accessibility standards before deploying to production]]></description>
            <link>https://blog.maximeheckel.com/posts/automated-ui-accessibility-testing-with-cypress-cc2e38231241</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/automated-ui-accessibility-testing-with-cypress-cc2e38231241</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 09 Jul 2019 14:01:01 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Building a GraphQL wrapper for the Docker API]]></title>
            <description><![CDATA[From REST calls to powerful queries]]></description>
            <link>https://blog.maximeheckel.com/posts/building-a-graphql-wrapper-for-the-docker-api-2109f2b9c202</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/building-a-graphql-wrapper-for-the-docker-api-2109f2b9c202</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 28 May 2019 14:17:39 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Switching off the lights - Adding dark mode to your React app]]></title>
            <description><![CDATA[In this post, I’m going to share with you how I built dark mode support for a sample React app with Emotion themes.]]></description>
            <link>https://blog.maximeheckel.com/posts/switching-off-the-lights-adding-dark-mode-to-your-react-app-with-context-and-hooks-f41da6e07269</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/switching-off-the-lights-adding-dark-mode-to-your-react-app-with-context-and-hooks-f41da6e07269</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 05 Mar 2019 16:31:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Getting started with Typescript on Gatsby]]></title>
            <description><![CDATA[A step by step guide to get Typescript, tslint and Prettier working on any existing Gatsby project.]]></description>
            <link>https://blog.maximeheckel.com/posts/getting-started-with-typescript-on-gatsby-8544b47c1d27</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/getting-started-with-typescript-on-gatsby-8544b47c1d27</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 05 Feb 2019 15:01:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Rebuilding Redux with Hooks and Context]]></title>
            <description><![CDATA[A simple global state management package based on React constructs]]></description>
            <link>https://blog.maximeheckel.com/posts/rebuilding-redux-with-hooks-and-context-e16b59faf51c</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/rebuilding-redux-with-hooks-and-context-e16b59faf51c</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 04 Dec 2018 16:31:51 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Asynchronous rendering with React]]></title>
            <description><![CDATA[How the new React Suspense API might reshape the way we build components]]></description>
            <link>https://blog.maximeheckel.com/posts/asynchronous-rendering-with-react-c323cda68f41</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/asynchronous-rendering-with-react-c323cda68f41</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 06 Nov 2018 16:52:30 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Using Flow generics to type generic React components]]></title>
            <description><![CDATA[How Flow generics help typing complex multi-purpose components]]></description>
            <link>https://blog.maximeheckel.com/posts/using-flow-generics-to-type-generic-react-components-22dd642634d8</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/using-flow-generics-to-type-generic-react-components-22dd642634d8</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 16 Oct 2018 16:07:39 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to efficiently type your styled-components with Flow]]></title>
            <description><![CDATA[Adding Flow on top of styled components to avoid misusages before they hit production, and make developers’ and designers’ life easier.]]></description>
            <link>https://blog.maximeheckel.com/posts/https-medium-com-maximeheckel-how-to-efficiently-type-your-styled-components-with-flow-f43930a0dd2b</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/https-medium-com-maximeheckel-how-to-efficiently-type-your-styled-components-with-flow-f43930a0dd2b</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 09 Oct 2018 15:57:18 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How I got started with Kubernetes on GKE]]></title>
            <description><![CDATA[How I deployed, published, scaled and setup SSL certificates for my personal projects]]></description>
            <link>https://blog.maximeheckel.com/posts/how-i-got-started-with-kubernetes-on-gke-5f829eca98bc</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/how-i-got-started-with-kubernetes-on-gke-5f829eca98bc</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 19 Jun 2018 17:33:16 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[React sub-components Part 3: Whitelisting sub-components with flow]]></title>
            <description><![CDATA[Adding more control to the sub-component pattern with Flow types]]></description>
            <link>https://blog.maximeheckel.com/posts/react-sub-components-part-3-whitelisting-sub-components-with-flow-b04f9bcf80c2</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/react-sub-components-part-3-whitelisting-sub-components-with-flow-b04f9bcf80c2</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Tue, 01 May 2018 16:17:42 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[React sub-components Part 2: Using the new Context API]]></title>
            <description><![CDATA[Further simplifying the sub-component pattern using contexts to make flexible, easily testable and reusable React components]]></description>
            <link>https://blog.maximeheckel.com/posts/react-sub-components-part-2-using-the-new-context-api-6f1c089acfe4</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/react-sub-components-part-2-using-the-new-context-api-6f1c089acfe4</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Mon, 16 Apr 2018 17:08:40 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[React sub-components]]></title>
            <description><![CDATA[Making flexible, easily testable and reusable views in React without ending in “markup hell”]]></description>
            <link>https://blog.maximeheckel.com/posts/react-sub-components-513f6679abed</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/react-sub-components-513f6679abed</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Mon, 26 Feb 2018 21:02:23 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Running Golang tests with Jest]]></title>
            <description><![CDATA[How to use the Jest platform to run Golang test]]></description>
            <link>https://blog.maximeheckel.com/posts/running-golang-tests-with-jest-b5d8f3d43a7</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/running-golang-tests-with-jest-b5d8f3d43a7</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Wed, 10 Jan 2018 17:00:17 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[No title]]></title>
            <link>https://blog.maximeheckel.com/posts/LICENSE</link>
            <guid isPermaLink="false">https://blog.maximeheckel.com/posts/LICENSE</guid>
            <dc:creator><![CDATA[Maxime heckel]]></dc:creator>
            <pubDate>Invalid Date</pubDate>
        </item>
    </channel>
</rss>