remove public folder
359
public/404.html
@ -1,359 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-ca" dir="ltr">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 · incngrnt</title>
|
||||
<meta name="title" content="404 Page not found · 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>
|
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 243 KiB |
Before Width: | Height: | Size: 41 KiB |
@ -1,435 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-ca" dir="ltr">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 · incngrnt</title>
|
||||
<meta name="title" content="Grant Hunter · 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 “The Cloud” 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>
|
@ -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>
|
@ -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>
|
@ -1,365 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-ca" dir="ltr">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 · incngrnt</title>
|
||||
<meta name="title" content="Categories · 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>
|
@ -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>
|
1000
public/css/main.css
@ -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');
|
||||
}
|
Before Width: | Height: | Size: 788 B |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 450 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 191 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 294 KiB |
Before Width: | Height: | Size: 200 KiB |
Before Width: | Height: | Size: 5.2 KiB |
@ -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&v=2&port=1313&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 · 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>
|
@ -1 +0,0 @@
|
||||
[]
|
@ -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>
|
@ -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));
|
||||
});
|
||||
})();
|
@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
})();
|
@ -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();
|
||||
}
|
||||
});
|
||||
});
|
||||
})();
|
@ -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>
|
@ -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"}
|
@ -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>
|
@ -1,365 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-ca" dir="ltr">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 · incngrnt</title>
|
||||
<meta name="title" content="Tags · 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>
|
@ -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>
|