fixed site

This commit is contained in:
2026-03-29 17:20:43 +02:00
parent c9e3d971c4
commit d433869348
153 changed files with 6766 additions and 1653 deletions
+495 -275
View File
@@ -1,218 +1,325 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Introduction | PyteDev Blog</title>
<meta name="keywords" content="">
<meta name="description" content="Welcome to My Blog!
Im Demian, a Sysadmin, Email Infrastructure enthusiast, and a passionate Open Source contributor. This is where Ill be sharing what I know about system administration, managing email infrastructure, and contributing to open source projects.
What to Expect
On this blog, Ill be writing about:
Sysadmin tips and tools: Everything Ive learned managing servers, networks, and infrastructure.
Email Infrastructure: Best practices for setting up, securing, and managing email systems.
Open Source: How I contribute to open source projects, and tips for getting started if you want to do the same.
This blog is a space to share knowledge, troubleshoot common issues, and explore new tools and techniques. Whether youre just getting into system administration, looking for email setup guides, or interested in contributing to open source, youll find something useful here.">
<meta name="author" content="">
<link rel="canonical" href="https://pyte.dev/posts/my-first-post/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.f49d66caae9ea0fd43f21f29e71a8d3e284517ed770f2aa86fa012953ad3c9ef.css" integrity="sha256-9J1myq6eoP1D8h8p5xqNPihFF&#43;13Dyqob6ASlTrTye8=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://pyte.dev/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://pyte.dev/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://pyte.dev/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://pyte.dev/apple-touch-icon.png">
<link rel="mask-icon" href="https://pyte.dev/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://pyte.dev/posts/my-first-post/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:url" content="https://pyte.dev/posts/my-first-post/">
<meta property="og:site_name" content="PyteDev Blog">
<meta property="og:title" content="Introduction">
<meta property="og:description" content="Welcome to My Blog! Im Demian, a Sysadmin, Email Infrastructure enthusiast, and a passionate Open Source contributor. This is where Ill be sharing what I know about system administration, managing email infrastructure, and contributing to open source projects.
What to Expect On this blog, Ill be writing about:
Sysadmin tips and tools: Everything Ive learned managing servers, networks, and infrastructure. Email Infrastructure: Best practices for setting up, securing, and managing email systems. Open Source: How I contribute to open source projects, and tips for getting started if you want to do the same. This blog is a space to share knowledge, troubleshoot common issues, and explore new tools and techniques. Whether youre just getting into system administration, looking for email setup guides, or interested in contributing to open source, youll find something useful here.">
<meta property="og:locale" content="en-us">
<meta property="og:type" content="article">
<meta property="article:section" content="posts">
<meta property="article:published_time" content="2025-05-11T20:13:49+02:00">
<meta property="article:modified_time" content="2025-05-11T20:13:49+02:00">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Introduction">
<meta name="twitter:description" content="Welcome to My Blog!
Im Demian, a Sysadmin, Email Infrastructure enthusiast, and a passionate Open Source contributor. This is where Ill be sharing what I know about system administration, managing email infrastructure, and contributing to open source projects.
What to Expect
On this blog, Ill be writing about:
Sysadmin tips and tools: Everything Ive learned managing servers, networks, and infrastructure.
Email Infrastructure: Best practices for setting up, securing, and managing email systems.
Open Source: How I contribute to open source projects, and tips for getting started if you want to do the same.
This blog is a space to share knowledge, troubleshoot common issues, and explore new tools and techniques. Whether youre just getting into system administration, looking for email setup guides, or interested in contributing to open source, youll find something useful here.">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://pyte.dev/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Introduction",
"item": "https://pyte.dev/posts/my-first-post/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Introduction",
"name": "Introduction",
"description": "Welcome to My Blog! Im Demian, a Sysadmin, Email Infrastructure enthusiast, and a passionate Open Source contributor. This is where Ill be sharing what I know about system administration, managing email infrastructure, and contributing to open source projects.\nWhat to Expect On this blog, Ill be writing about:\nSysadmin tips and tools: Everything Ive learned managing servers, networks, and infrastructure. Email Infrastructure: Best practices for setting up, securing, and managing email systems. Open Source: How I contribute to open source projects, and tips for getting started if you want to do the same. This blog is a space to share knowledge, troubleshoot common issues, and explore new tools and techniques. Whether youre just getting into system administration, looking for email setup guides, or interested in contributing to open source, youll find something useful here.\n",
"keywords": [
],
"articleBody": "Welcome to My Blog! Im Demian, a Sysadmin, Email Infrastructure enthusiast, and a passionate Open Source contributor. This is where Ill be sharing what I know about system administration, managing email infrastructure, and contributing to open source projects.\nWhat to Expect On this blog, Ill be writing about:\nSysadmin tips and tools: Everything Ive learned managing servers, networks, and infrastructure. Email Infrastructure: Best practices for setting up, securing, and managing email systems. Open Source: How I contribute to open source projects, and tips for getting started if you want to do the same. This blog is a space to share knowledge, troubleshoot common issues, and explore new tools and techniques. Whether youre just getting into system administration, looking for email setup guides, or interested in contributing to open source, youll find something useful here.\nWhy Im Here Ive been working in IT for a while now, and Ive learned a lot by trial and error. Writing about my experiences helps me remember the lessons Ive learned and hopefully helps others along the way. I believe in learning by doing, and this blog is just a reflection of that approach.\nIm excited to share what Ive picked up, and I hope youll find these posts useful, whether youre a fellow sysadmin or just someone interested in these topics.\nLets Connect Feel free to reach out. Thanks for stopping by, and I look forward to sharing more soon!\n",
"wordCount" : "236",
"inLanguage": "en",
"datePublished": "2025-05-11T20:13:49+02:00",
"dateModified": "2025-05-11T20:13:49+02:00",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://pyte.dev/posts/my-first-post/"
},
"publisher": {
"@type": "Organization",
"name": "PyteDev Blog",
"logo": {
"@type": "ImageObject",
"url": "https://pyte.dev/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<!doctype html>
<html
lang="de-DE"
dir="ltr"
class="h-full">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="language" content="de-DE">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
(function () {
const storedTheme = localStorage.getItem("theme");
const systemPrefersLight = window.matchMedia("(prefers-color-scheme: light)").matches;
const theme = storedTheme || (systemPrefersLight ? "light" : "dark");
document.documentElement.setAttribute("data-theme", theme);
})();
</script>
<title>Introduction | Demians Blog</title>
<meta
name="description"
content="
Welcome to My Blog! Im Demian, a Sysadmin, Email Infrastructure enthusiast, and a passionate Open Source contributor. This is where Ill be sharing what I know …
">
<link rel="canonical" href="https://pyte.dev/posts/my-first-post/">
<meta name="robots" content="index, follow">
<meta property="og:type" content="article">
<meta property="og:title" content="Introduction | Demians Blog">
<meta property="og:description" content="Welcome to My Blog! Im Demian, a Sysadmin, Email Infrastructure enthusiast, and a passionate Open Source contributor. This is where Ill be sharing what I know …">
<meta property="og:url" content="https://pyte.dev/posts/my-first-post/">
<meta property="og:site_name" content="Demians Blog"><meta property="og:image" content="https://pyte.dev/assets/patrick.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630"><meta property="article:published_time" content="2025-05-11T20:13:49&#43;02:00">
<meta
property="article:modified_time"
content="2025-05-11T20:13:49&#43;02:00">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Introduction | Demians Blog">
<meta name="twitter:description" content="Welcome to My Blog! Im Demian, a Sysadmin, Email Infrastructure enthusiast, and a passionate Open Source contributor. This is where Ill be sharing what I know …"><meta name="twitter:image" content="https://pyte.dev/assets/patrick.png">
<script type="application/ld+json">
"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"author\":{\"@type\":\"Person\",\"email\":\"demian (at) pyte (dot) dev\",\"name\":\"Demians Blog\"},\"dateModified\":\"2025-05-11T20:13:49+02:00\",\"datePublished\":\"2025-05-11T20:13:49+02:00\",\"description\":\"Welcome to My Blog! Im Demian, a Sysadmin, Email Infrastructure enthusiast, and a passionate Open Source contributor. This is where Ill be sharing what I know …\",\"headline\":\"Introduction\",\"image\":\"https://pyte.dev/assets/patrick.png\",\"mainEntityOfPage\":{\"@id\":\"https://pyte.dev/posts/my-first-post/\",\"@type\":\"WebPage\"},\"publisher\":{\"@type\":\"Organization\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://pyte.dev/assets/patrick.png\"},\"name\":\"Demians Blog\"}}"</script>
<script type="application/ld+json">"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"item\":\"https://pyte.dev/\",\"name\":\"Demians Blog\",\"position\":1},{\"@type\":\"ListItem\",\"item\":\"https://pyte.dev/posts/\",\"name\":\"Posts\",\"position\":2},{\"@type\":\"ListItem\",\"item\":\"https://pyte.dev/posts/my-first-post/\",\"name\":\"Introduction\",\"position\":3}]}"</script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&family=Outfit:wght@400;500;600;700;800;900&family=Space+Grotesk:wght@400;500;600;700&display=swap"
rel="stylesheet">
<link
rel="stylesheet"
href="/css/theme.min.86a32b729f656fc6c119ed69193950db815a3ad9fdc967b32c76d602f11449a4.css"
integrity="sha256-hqMrcp9lb8bBGe1pGTlQ24FaOtn9yWezLHbWAvEUSaQ=">
<link
rel="stylesheet"
href="/css/syntax-dark.min.3e403a03e3af837b3829e9b6f01fc7792bda7cb7f5056f5e9786109545c6b2e1.css"
integrity="sha256-PkA6A&#43;Ovg3s4Kem28B/HeSvafLf1BW9el4YQlUXGsuE="
id="syntax-dark-theme"
class="syntax-theme"><link
rel="stylesheet"
href="/css/syntax-light.min.d0d33b879698595e6b2c0f75f0cea95a8517fb0150570cd0ee4dc42e25c8d147.css"
integrity="sha256-0NM7h5aYWV5rLA918M6pWoUX&#43;wFQVwzQ7k3ELiXI0Uc="
id="syntax-light-theme"
class="syntax-theme"
disabled><script>
(function () {
const storedTheme = localStorage.getItem("theme");
const systemPrefersLight = window.matchMedia("(prefers-color-scheme: light)").matches;
const theme = storedTheme || (systemPrefersLight ? "light" : "dark");
const syntaxDark = document.getElementById("syntax-dark-theme");
const syntaxLight = document.getElementById("syntax-light-theme");
if (theme === "light") {
if (syntaxDark) syntaxDark.disabled = true;
if (syntaxLight) syntaxLight.disabled = false;
} else {
if (syntaxDark) syntaxDark.disabled = false;
if (syntaxLight) syntaxLight.disabled = true;
}
const observer = new MutationObserver(() => {
const currentTheme = document.documentElement.getAttribute("data-theme");
if (currentTheme === "light") {
if (syntaxDark) syntaxDark.disabled = true;
if (syntaxLight) syntaxLight.disabled = false;
} else {
if (syntaxDark) syntaxDark.disabled = false;
if (syntaxLight) syntaxLight.disabled = true;
}
});
observer.observe(document.documentElement, {
attributes: true,
attributeFilter: ["data-theme"],
});
})();
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://pyte.dev/" accesskey="h" title="PyteDev Blog (Alt + H)">PyteDev Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="https://pyte.dev/" title="Home">
<span>Home</span>
</a>
</li>
<li>
<a href="https://pyte.dev/posts/" title="Blog">
<span>Blog</span>
</a>
</li>
<li>
<a href="https://pyte.dev/search/" title="Search">
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<link
rel="stylesheet"
href="/css/bundle.min.783a79746a859af9be598cbc33fba2a1087434b23768524277b07ef28336f113.css"
integrity="sha256-eDp5dGqFmvm&#43;WYy8M/uioQh0NLI3aFJCd7B&#43;8oM28RM=">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
<link rel="icon" type="image/png" href="/favicon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon/logo-transparent/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon/logo-transparent/favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="/favicon/logo-transparent/apple-touch-icon.png">
<link
rel="icon"
type="image/png"
sizes="192x192"
href="/favicon/logo-transparent/android-chrome-192x192.png">
<link
rel="icon"
type="image/png"
sizes="512x512"
href="/favicon/logo-transparent/android-chrome-512x512.png">
<link rel="manifest" href="/favicon/logo-transparent/site.webmanifest">
</head>
<body class="flex flex-col min-h-screen">
<a href="#main-content" class="skip-to-main" aria-label="Skip to main content"
>Skip to main content</a
>
<header class="sticky-header">
<div class="header-container">
<nav class="header-nav" role="navigation" aria-label="Main navigation">
<div class="header-content">
<div class="header-logo">
<a href="/" class="logo-link" aria-label="Home - Demians Blog">
Demians Blog
</a>
</div>
<div class="header-menu">
<ul class="menu-list">
<li class="menu-item">
<a
href="/"
class="menu-link ">
Home
</a>
</li>
<li class="menu-item">
<a
href="/posts/"
class="menu-link ">
Blog
</a>
</li>
</ul>
<button id="search-toggle" class="search-toggle" aria-label="Search" type="button">
<svg class="search-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
</svg>
</button>
<button id="theme-toggle" class="theme-toggle" aria-label="Toggle theme" type="button">
<svg class="icon-sun" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path>
</svg>
<svg class="icon-moon" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path>
</svg>
</button>
</div>
</div>
</nav>
</div>
</header>
<main id="main-content" class="flex-1" role="main">
<div class="single-post-wrapper">
<article class="single-post">
<header class="post-header">
<h1 class="post-title-main">Introduction</h1>
<div class="post-meta">
<div class="post-meta-info">
<time datetime="2025-05-11T20:13:49&#43;02:00" class="post-date">
<svg class="meta-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
</svg>
May 11, 2025
</time>
<span class="meta-separator"></span>
<span class="post-word-count">
<svg class="meta-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path>
</svg>
236 words
</span>
<h1 class="post-title entry-hint-parent">
Introduction
</h1>
<div class="post-meta"><span title='2025-05-11 20:13:49 +0200 CEST'>May 11, 2025</span>
<span class="meta-separator"></span>
<span class="post-reading-time">
<svg class="meta-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
2 min
</span>
</div>
</div>
</header>
<div class="post-content"><h1 id="welcome-to-my-blog">Welcome to My Blog!<a hidden class="anchor" aria-hidden="true" href="#welcome-to-my-blog">#</a></h1>
</header>
<div class="post-content-main">
<h1 id="welcome-to-my-blog">Welcome to My Blog!</h1>
<p>Im <strong>Demian</strong>, a <strong>Sysadmin</strong>, <strong>Email Infrastructure enthusiast</strong>, and a passionate <strong>Open Source contributor</strong>. This is where Ill be sharing what I know about system administration, managing email infrastructure, and contributing to open source projects.</p>
<h2 id="what-to-expect">What to Expect<a hidden class="anchor" aria-hidden="true" href="#what-to-expect">#</a></h2>
<h2 id="what-to-expect">What to Expect</h2>
<p>On this blog, Ill be writing about:</p>
<ul>
<li><strong>Sysadmin tips and tools</strong>: Everything Ive learned managing servers, networks, and infrastructure.</li>
@@ -220,92 +327,205 @@ This blog is a space to share knowledge, troubleshoot common issues, and explore
<li><strong>Open Source</strong>: How I contribute to open source projects, and tips for getting started if you want to do the same.</li>
</ul>
<p>This blog is a space to share knowledge, troubleshoot common issues, and explore new tools and techniques. Whether youre just getting into system administration, looking for email setup guides, or interested in contributing to open source, youll find something useful here.</p>
<h2 id="why-im-here">Why Im Here<a hidden class="anchor" aria-hidden="true" href="#why-im-here">#</a></h2>
<h2 id="why-im-here">Why Im Here</h2>
<p>Ive been working in IT for a while now, and Ive learned a lot by trial and error. Writing about my experiences helps me remember the lessons Ive learned and hopefully helps others along the way. I believe in <strong>learning by doing</strong>, and this blog is just a reflection of that approach.</p>
<p>Im excited to share what Ive picked up, and I hope youll find these posts useful, whether youre a fellow sysadmin or just someone interested in these topics.</p>
<hr>
<h2 id="lets-connect">Lets Connect<a hidden class="anchor" aria-hidden="true" href="#lets-connect">#</a></h2>
<h2 id="lets-connect">Lets Connect</h2>
<p>Feel free to reach out. Thanks for stopping by, and I look forward to sharing more soon!</p>
</div>
<nav class="post-navigation" aria-label="Post navigation">
<a
href="/posts/dovecot-index-cache-issues/"
class="nav-link nav-next"
aria-label="Next post: Dovecot Index Cache Issues">
<span class="nav-label">Next</span>
<span class="nav-title">Dovecot Index Cache Issues</span>
</a>
</nav>
</article>
<aside class="post-toc" id="post-toc" aria-label="Table of contents">
<button
class="toc-toggle"
id="toc-toggle"
aria-expanded="true"
aria-controls="toc-content"
aria-label="Toggle table of contents">
<svg
class="toc-burger-icon"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true">
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
<span class="toc-toggle-text">Table of Contents</span>
<svg
class="toc-chevron-icon"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true">
<polyline points="6 9 12 15 18 9"></polyline>
</svg>
</button>
<div class="toc-content" id="toc-content">
<nav class="toc-nav" aria-label="Table of contents">
<nav id="TableOfContents">
<ul>
<li><a href="#what-to-expect">What to Expect</a></li>
<li><a href="#why-im-here">Why Im Here</a></li>
<li><a href="#lets-connect">Lets Connect</a></li>
</ul>
</nav>
</nav>
</div>
</aside>
</div>
<footer class="post-footer">
<ul class="post-tags">
</ul>
</footer>
</article>
</main>
<footer>
<footer class="site-footer">
<div class="footer-content">
<p class="footer-text">
&copy;
2026
Demians Blog.
Built with Hugo and Mana ❤️
</p>
<footer class="footer">
<span>&copy; 2025 <a href="https://pyte.dev/">PyteDev Blog</a></span> ·
<div class="footer-social">
<div class="social-links">
<a
href="https://github.com/pyte1"
target="_blank"
rel="noopener noreferrer"
class="social-link"
aria-label="GitHub">
<svg fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path
fill-rule="evenodd"
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
clip-rule="evenodd"></path>
</svg>
</a>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
<a href="mailto:demian%20%28at%29%20pyte%20%28dot%29%20dev" class="social-link" aria-label="Email">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path>
</svg>
</a>
</div>
</div>
</div>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
</footer>
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
<div id="search-modal" class="search-modal" aria-hidden="true" role="dialog" aria-label="Search">
<div class="search-modal-backdrop" id="search-modal-backdrop"></div>
<div class="search-modal-container">
<div class="search-input-wrapper">
<svg class="search-input-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
</svg>
<input
type="search"
id="search-input"
class="search-input"
placeholder="Search..."
autocomplete="off"
aria-label="Search input">
<button class="search-input-clear" id="search-input-clear" aria-label="Clear search">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"></path>
</svg>
</button>
<button class="search-modal-close" id="search-modal-close" aria-label="Close search">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M6 18L18 6M6 6l12 12"></path>
</svg>
</button>
</div>
<div id="search-results" class="search-results"></div>
</div>
</div>
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
<button id="scroll-to-top" class="scroll-to-top" aria-label="Scroll to top" type="button">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M5 10l7-7m0 0l7 7m-7-7v18"></path>
</svg>
</button>
</script>
</body>
<script src="/js/main.min.e60ab79dca7b920b4dc5cf3163ad5ce8794839b60f27778db65782f087be3e27.js" defer></script>
</body>
</html>