Compare commits

..

2 Commits

Author SHA1 Message Date
Grant
e75e7db2ca remove public folder 2025-03-16 12:50:49 -06:00
Grant
c3e6ab7859 add gitignore 2025-03-16 12:47:32 -06:00
35 changed files with 1 additions and 3259 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/public

View File

@ -1,359 +0,0 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>404 Page not found &middot; incngrnt</title>
<meta name="title" content="404 Page not found &middot; incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/404.html" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<meta property="og:url" content="http://localhost:1313/404.html">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="404 Page not found">
<meta property="og:description" content="A Hugo Theme">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="404 Page not found">
<meta name="twitter:description" content="A Hugo Theme">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant/incngrnt" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<h1>404 Not Found 🙁 </h1>
<p>It seems the page you're looking for has been moved or, in rare cases, removed.</p>
<p>
<a href="/">
Return to the home page?
</a>
</p>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

View File

@ -1,435 +0,0 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Grant Hunter &middot; incngrnt</title>
<meta name="title" content="Grant Hunter &middot; incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/behind-incngrnt/" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" type="application/rss+xml" href="/behind-incngrnt/index.xml" title="incngrnt" />
<meta property="og:url" content="http://localhost:1313/behind-incngrnt/">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="Grant Hunter">
<meta property="og:description" content="I am a software gardener who likes building things.
Currently I am building out this project in an attempt to de-google. This is also an opertunity to learn more about managing servers because “The Cloud” has spoiled me.
You can find me in very few places on the web. The limited selection is here, linkedIn and github .">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Grant Hunter">
<meta name="twitter:description" content="I am a software gardener who likes building things.
Currently I am building out this project in an attempt to de-google. This is also an opertunity to learn more about managing servers because “The Cloud” has spoiled me.
You can find me in very few places on the web. The limited selection is here, linkedIn and github .">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/behind-incngrnt/index.xml" title="incngrnt">
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant/incngrnt" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<h1 class="pg-title">
Grant Hunter
</h1>
<p style="width:20%;float:left; margin: 1em;">
<img loading="lazy"
src="/grant_hunter_profile.webp"
alt="" />
</p>
<p>I am a <a href="http://chrisaitchison.com/2011/05/03/you-are-not-a-software-engineer/" target="_blank">software gardener</a>
who likes building things.</p>
<p>Currently I am building out this project in an attempt to de-google. This is also an opertunity to learn more about managing servers because &ldquo;The Cloud&rdquo; has spoiled me.</p>
<p>You can find me in very few places on the web. The limited selection is here, <a href="https://www.linkedin.com/in/grant-hunter-6b955b72/" target="_blank">linkedIn</a>
and <a href="https://github.com/grantdhunter" target="_blank">github</a>
.</p>
<section class="lst-content">
<ul class="lst-card">
</ul>
</section>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Grant Hunter on incngrnt</title>
<link>http://localhost:1313/behind-incngrnt/</link>
<description>Recent content in Grant Hunter on incngrnt</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-ca</language>
<atom:link href="http://localhost:1313/behind-incngrnt/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-ca">
<head>
<title>http://localhost:1313/behind-incngrnt/</title>
<link rel="canonical" href="http://localhost:1313/behind-incngrnt/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/behind-incngrnt/">
</head>
</html>

View File

@ -1,365 +0,0 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Categories &middot; incngrnt</title>
<meta name="title" content="Categories &middot; incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/categories/" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" type="application/rss+xml" href="/categories/index.xml" title="incngrnt" />
<meta property="og:url" content="http://localhost:1313/categories/">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="Categories">
<meta property="og:description" content="A Hugo Theme">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Categories">
<meta name="twitter:description" content="A Hugo Theme">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/categories/index.xml" title="incngrnt">
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant/incngrnt" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<h2> Categories </h2>
<div class="taxny-card-container">
</div>
</ul>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Categories on incngrnt</title>
<link>http://localhost:1313/categories/</link>
<description>Recent content in Categories on incngrnt</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-ca</language>
<atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -1,34 +0,0 @@
:root{
--ff: 'Ubuntu';
--radius: 6px;
--primary-color: #292929;
--secondary-color: #EFEFE6;
--tertiary-color: #E0002D;
--link-color: #449DD1;
--tertiary-color-light: #FFB370;
--secondary-color-dark: #DFDFCD;
--black: #292929;
--code-bg: #272822; /*Monokai*/
--code-fg: #f8f8f2; /*Monokai*/
--code-scroll-thumb: #525252;
--scrollbar-track: #EFEFE6;
--scrollbar-thumb: #B7B78F;
}
.dark {
--primary-color: #EFEFE6;
--secondary-color: #292929;
--tertiary-color: #FF7F11;
--tertiary-color-light: #A34C00;
--secondary-color-dark: #3D3D29;
--scrollbar-track: #292929;
--scrollbar-thumb: #525252;
}
@font-face {
font-display: swap;
font-family: 'Ubuntu';
font-style: normal;
font-weight: 400;
src: url('../fonts/Ubuntu-Regular.woff2') format('woff2');
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -1,405 +0,0 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.145.0"><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>incngrnt &middot; Home </title>
<meta name="title" content="incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" type="application/rss+xml" href="/index.xml" title="incngrnt" />
<link rel="alternate" type="application/json" href="/index.json" title="incngrnt" />
<meta property="og:url" content="http://localhost:1313/">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="incngrnt">
<meta property="og:description" content="Incngrnt is an experiment in host applications and services, usually run by huge corporations, on a small community scale. Using cloud technologies to enhance redundancy and maintainability while keeping as much as possible hosted locally.
This project provides modern applications and services for friends and family, offering the convenience of cloud-based tools without sacrificing data privacy.
The current instance, cheekily names Fog, is a Kubernetes cluster of 3 Talos Linux nodes. It uses Ceph as the storage layer and Metallb and Traefik for networking. The whole cluster has a has backup batteries in the event of a power failure. All configuration and setup docs live in a self-hosted git repo running directly on Fog.">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="incngrnt">
<meta name="twitter:description" content="Incngrnt is an experiment in host applications and services, usually run by huge corporations, on a small community scale. Using cloud technologies to enhance redundancy and maintainability while keeping as much as possible hosted locally.
This project provides modern applications and services for friends and family, offering the convenience of cloud-based tools without sacrificing data privacy.
The current instance, cheekily names Fog, is a Kubernetes cluster of 3 Talos Linux nodes. It uses Ceph as the storage layer and Metallb and Traefik for networking. The whole cluster has a has backup batteries in the event of a power failure. All configuration and setup docs live in a self-hosted git repo running directly on Fog.">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/index.xml" title="incngrnt">
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant/incngrnt" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<span class="headline">Just a little different</span>
<p>Incngrnt is an experiment in host applications and services, usually run by huge
corporations, on a small community scale. Using cloud technologies to enhance
redundancy and maintainability while keeping as much as possible hosted locally.</p>
<p>This project provides modern applications and services for friends and family,
offering the convenience of cloud-based tools without sacrificing data privacy.</p>
<p>The current instance, cheekily names Fog, is a <a href="https://kubernetes.io/" target="_blank">Kubernetes</a>
cluster of 3 <a href="https://www.talos.dev/" target="_blank">Talos Linux</a>
nodes. It uses <a href="https://ceph.io/en/" target="_blank">Ceph</a>
as the storage layer and <a href="https://metallb.io/" target="_blank">Metallb</a>
and
<a href="https://traefik.io/traefik/" target="_blank">Traefik</a>
for networking. The whole cluster has a has backup
<a href="https://www.ecoflow.com/ca" target="_blank">batteries</a>
in the event of a power failure. All configuration
and setup docs live in a self-hosted <a href="https://git.incngrnt.ca/grant/fog" target="_blank">git repo</a>
running directly on Fog.</p>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

View File

@ -1 +0,0 @@
[]

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>incngrnt</title>
<link>http://localhost:1313/</link>
<description>Recent content on incngrnt</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-ca</language>
<atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View File

@ -1,47 +0,0 @@
(() => {
// <stdin>
var copyText = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M288 448L64 448l0-224 64 0 0-64-64 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-64-64 0 0 64zm-64-96l224 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L224 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64z"/></svg>';
var copiedText = 'Copied! <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"/></svg>';
function createCopyButton(codeblock) {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement("button");
copybutton.classList.add("copy-button");
copybutton.innerHTML = copyText;
function copyingDone() {
copybutton.innerHTML = copiedText;
setTimeout(() => {
copybutton.innerHTML = copyText;
}, 500);
}
copybutton.addEventListener("click", (cb) => {
if ("clipboard" in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand("copy");
copyingDone();
} catch (e) {
}
;
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
}
window.addEventListener("DOMContentLoaded", (event) => {
document.querySelectorAll("pre > code").forEach((codeblock) => createCopyButton(codeblock));
});
})();

View File

@ -1,134 +0,0 @@
(() => {
// <stdin>
var seachOpnBtn = null;
var closeBtn = null;
var searchCntr = null;
var resultCntr = null;
var searchBtn = null;
var searchTxt = null;
var isSearchOpen = false;
var isJsonIndexed = false;
var isResEmpty = true;
var fuse;
function fetchJSON(path, callback) {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
var data = JSON.parse(httpRequest.responseText);
if (callback) callback(data);
}
}
};
httpRequest.open("GET", path);
httpRequest.send();
}
function buildIndex() {
var baseURL = searchCntr.getAttribute("data-url");
baseURL = baseURL.replace(/\/?$/, "/");
fetchJSON(baseURL + "index.json", function(data) {
var options = {
shouldSort: true,
ignoreLocation: true,
threshold: 0,
includeMatches: true,
keys: [
{ name: "title", weight: 0.8 },
{ name: "section", weight: 0.2 },
{ name: "summary", weight: 0.6 },
{ name: "content", weight: 0.4 }
]
};
fuse = new Fuse(data, options);
isJsonIndexed = true;
});
}
function openSearch() {
if (!isJsonIndexed) {
buildIndex();
}
if (!isSearchOpen) {
searchCntr.style.display = "flex";
document.body.style.overflow = "hidden";
isSearchOpen = true;
searchTxt.focus();
}
}
function closeSearch() {
if (isSearchOpen) {
searchCntr.style.display = "none";
document.body.style.overflow = "";
isSearchOpen = false;
}
}
function executeQuery(query) {
let results = fuse.search(query);
let resultsHtml = "";
if (results.length > 1) {
results.forEach(function(value, key) {
var meta = value.item.section + " | ";
meta = meta + value.item.date ? value.item.date + " | " : "";
meta = meta + `<span class="srch-link">${value.item.permalink}</span>`;
resultsHtml = resultsHtml + `<li><a href="${value.item.permalink}">
<p class="srch-title">${value.item.title}</p>
<p class="srch-meta">${meta}</p>
<p class="srch-smry">${value.item.summary}</p>
</a></li>`;
});
isResEmpty = false;
} else {
resultsHtml = "";
isResEmpty = true;
}
resultCntr.innerHTML = resultsHtml;
}
window.addEventListener("DOMContentLoaded", (event) => {
seachOpnBtn = document.getElementById("search-open");
searchBtn = document.getElementById("search-btn");
closeBtn = document.getElementById("search-close");
searchCntr = document.getElementById("search-container");
resultCntr = document.getElementById("search-results");
searchTxt = document.getElementById("search-query");
seachOpnBtn.addEventListener("click", openSearch);
closeBtn.addEventListener("click", closeSearch);
searchTxt.onkeyup = function(event2) {
executeQuery(this.value);
};
searchTxt.onkeydown = function(event2) {
if (event2.key == "Enter" && !isResEmpty) {
resultCntr.firstChild.firstElementChild.focus();
event2.preventDefault();
}
};
});
document.addEventListener("keydown", function(event) {
if (event.key == "/") {
event.preventDefault();
openSearch();
}
if (isSearchOpen) {
if (event.key == "Escape") {
event.preventDefault();
closeSearch();
} else if (event.key == "ArrowDown" && !isResEmpty) {
if (document.activeElement == searchTxt) {
resultCntr.firstChild.firstElementChild.focus();
} else if (document.activeElement == resultCntr.lastChild.firstElementChild) {
searchTxt.focus();
} else {
document.activeElement.parentElement.nextSibling.firstElementChild.focus();
}
event.preventDefault();
} else if (event.key == "ArrowUp" && !isResEmpty) {
if (document.activeElement == searchTxt) {
resultCntr.lastChild.firstElementChild.focus();
} else if (document.activeElement == resultCntr.firstChild.firstElementChild) {
searchTxt.focus();
} else {
document.activeElement.parentElement.previousSibling.firstElementChild.focus();
}
event.preventDefault();
}
}
});
})();

View File

@ -1,25 +0,0 @@
(() => {
// <stdin>
function toggleTheme() {
if (document.body.className.includes("dark")) {
document.body.classList.remove("dark");
localStorage.setItem("theme", "light");
} else {
document.body.classList.add("dark");
localStorage.setItem("theme", "dark");
}
}
window.addEventListener("DOMContentLoaded", (event) => {
const switcher = document.getElementById("theme-switcher");
if (switcher) {
switcher.addEventListener("click", () => {
toggleTheme();
});
}
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (event2) => {
if (event2.matches && localStorage.getItem("theme") === "light") {
toggleTheme();
}
});
});
})();

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-ca">
<head>
<title>http://localhost:1313/</title>
<link rel="canonical" href="http://localhost:1313/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/">
</head>
</html>

View File

@ -1 +0,0 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://localhost:1313/</loc>
</url>
<url>
<loc>http://localhost:1313/categories/</loc>
</url>
<url>
<loc>http://localhost:1313/behind-incngrnt/</loc>
</url>
<url>
<loc>http://localhost:1313/tags/</loc>
</url>
</urlset>

View File

@ -1,365 +0,0 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Tags &middot; incngrnt</title>
<meta name="title" content="Tags &middot; incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/tags/" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" type="application/rss+xml" href="/tags/index.xml" title="incngrnt" />
<meta property="og:url" content="http://localhost:1313/tags/">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="Tags">
<meta property="og:description" content="A Hugo Theme">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Tags">
<meta name="twitter:description" content="A Hugo Theme">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/index.xml" title="incngrnt">
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant/incngrnt" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<h2> Tags </h2>
<div class="taxny-card-container">
</div>
</ul>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Tags on incngrnt</title>
<link>http://localhost:1313/tags/</link>
<description>Recent content in Tags on incngrnt</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-ca</language>
<atom:link href="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>