<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="csrf-token" content="GQ4bLiIaRldhICsoMQ4dECxOKQNDQXwHcvmFWXrcUgYLcOWcs-xg4pK6">
    <meta name="description" content="Jakub Skałecki - Software Engineer specializing in Elixir, AI, and high-impact engineering. Building tools that matter.">
    <meta name="author" content="Jakub Skałecki">
    <title data-default="Jakub Skałecki" data-suffix=" | skalecki.dev">Jakub Skałecki | skalecki.dev</title>

    <link rel="canonical" href="https://skalecki.dev/sitemap.xml">

    <meta property="og:type" content="website">
    <meta property="og:url" content="https://skalecki.dev/sitemap.xml">
    <meta property="og:title" content="Jakub Skałecki | skalecki.dev">
    <meta property="og:description" content="Jakub Skałecki - Software Engineer specializing in Elixir, AI, and high-impact engineering. Building tools that matter.">
    <meta property="og:image" content="https://skalecki.dev/images/og-image.png">
    <meta property="og:site_name" content="skalecki.dev">
    <meta property="og:locale" content="en_US">

    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:site" content="@jskalc">
    <meta name="twitter:creator" content="@jskalc">
    <meta name="twitter:title" content="Jakub Skałecki | skalecki.dev">
    <meta name="twitter:description" content="Jakub Skałecki - Software Engineer specializing in Elixir, AI, and high-impact engineering. Building tools that matter.">
    <meta name="twitter:image" content="https://skalecki.dev/images/og-image.png">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    

<script phx-track-static type="module" src="https://skalecki.dev/assets/app-BkbAnwX_.js?vsn=d">
</script>




<link phx-track-static rel="stylesheet" href="https://skalecki.dev/assets/app-5b3FCStt.css?vsn=d">

    <script>
      (() => {
        const setTheme = (theme) => {
          if (theme === "system") {
            localStorage.removeItem("phx:theme");
            document.documentElement.removeAttribute("data-theme");
          } else {
            localStorage.setItem("phx:theme", theme);
            document.documentElement.setAttribute("data-theme", theme);
          }
        };
        if (!document.documentElement.hasAttribute("data-theme")) {
          setTheme(localStorage.getItem("phx:theme") || "system");
        }
        window.addEventListener("storage", (e) => e.key === "phx:theme" && setTheme(e.newValue || "system"));

        window.addEventListener("phx:set-theme", (e) => setTheme(e.target.dataset.phxTheme));
      })();
    </script>
  </head>
  <body>
    &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;urlset xmlns=&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;&gt;
  &lt;url&gt;
    &lt;loc&gt;https://skalecki.dev/&lt;/loc&gt;
    &lt;changefreq&gt;weekly&lt;/changefreq&gt;
    &lt;priority&gt;1.0&lt;/priority&gt;
  &lt;/url&gt;
  &lt;url&gt;
    &lt;loc&gt;https://skalecki.dev/blog&lt;/loc&gt;
    &lt;changefreq&gt;weekly&lt;/changefreq&gt;
    &lt;priority&gt;0.8&lt;/priority&gt;
  &lt;/url&gt;
  
  &lt;url&gt;
    &lt;loc&gt;https://skalecki.dev/blog/story-of-live-vue&lt;/loc&gt;
    &lt;lastmod&gt;2026-01-06&lt;/lastmod&gt;
    &lt;changefreq&gt;monthly&lt;/changefreq&gt;
    &lt;priority&gt;0.7&lt;/priority&gt;
  &lt;/url&gt;
  
  &lt;url&gt;
    &lt;loc&gt;https://skalecki.dev/blog/building-elixir-blog-nimble-publisher&lt;/loc&gt;
    &lt;lastmod&gt;2024-12-23&lt;/lastmod&gt;
    &lt;changefreq&gt;monthly&lt;/changefreq&gt;
    &lt;priority&gt;0.7&lt;/priority&gt;
  &lt;/url&gt;
  
&lt;/urlset&gt;

  </body>
</html>