277 lines
12 KiB
HTML
277 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" dir="auto" data-theme="auto">
|
||
|
||
<head>
|
||
<meta name="generator" content="Hugo 0.152.2"><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
<meta name="robots" content="noindex, nofollow">
|
||
<title>Ask KennyB</title>
|
||
|
||
<meta name="description" content="Landing page for Ask Kenny B.">
|
||
<meta name="author" content="Kenny Bondelie">
|
||
<link rel="canonical" href="http://localhost:1313/">
|
||
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
|
||
<link rel="icon" href="http://localhost:1313/favicon.ico">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
|
||
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
|
||
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
|
||
<meta name="theme-color" content="#2e2e33">
|
||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/index.xml" title="rss">
|
||
<link rel="alternate" hreflang="en" href="http://localhost:1313/">
|
||
<noscript>
|
||
<style>
|
||
#theme-toggle,
|
||
.top-link {
|
||
display: none;
|
||
}
|
||
|
||
</style>
|
||
<style>
|
||
@media (prefers-color-scheme: dark) {
|
||
:root {
|
||
--theme: rgb(29, 30, 32);
|
||
--entry: rgb(46, 46, 51);
|
||
--primary: rgb(218, 218, 219);
|
||
--secondary: rgb(155, 156, 157);
|
||
--tertiary: rgb(65, 66, 68);
|
||
--content: rgb(196, 196, 197);
|
||
--code-block-bg: rgb(46, 46, 51);
|
||
--code-bg: rgb(55, 56, 62);
|
||
--border: rgb(51, 51, 51);
|
||
color-scheme: dark;
|
||
}
|
||
|
||
.list {
|
||
background: var(--theme);
|
||
}
|
||
|
||
.toc {
|
||
background: var(--entry);
|
||
}
|
||
}
|
||
|
||
@media (prefers-color-scheme: light) {
|
||
.list::-webkit-scrollbar-thumb {
|
||
border-color: var(--code-bg);
|
||
}
|
||
}
|
||
|
||
</style>
|
||
</noscript>
|
||
<script>
|
||
if (localStorage.getItem("pref-theme") === "dark") {
|
||
document.querySelector("html").dataset.theme = 'dark';
|
||
} else if (localStorage.getItem("pref-theme") === "light") {
|
||
document.querySelector("html").dataset.theme = 'light';
|
||
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||
document.querySelector("html").dataset.theme = 'dark';
|
||
} else {
|
||
document.querySelector("html").dataset.theme = 'light';
|
||
}
|
||
|
||
</script><link rel="preconnect" href="https://fonts.googleapis.com">
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
|
||
|
||
<link rel="icon" href="/favicon.ico" sizes="any">
|
||
<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="apple-touch-icon" href="/apple-touch-icon.png">
|
||
<link rel="manifest" href="/site.webmanifest">
|
||
<meta name="theme-color" content="#007a70">
|
||
|
||
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
|
||
</head>
|
||
<body class="list" id="top">
|
||
<header class="header">
|
||
<nav class="nav">
|
||
<div class="logo">
|
||
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
|
||
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
|
||
height="75"> </a>
|
||
<div class="logo-switches">
|
||
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
|
||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round">
|
||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||
</svg>
|
||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round">
|
||
<circle cx="12" cy="12" r="5"></circle>
|
||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<ul id="menu">
|
||
<li>
|
||
<a href="http://localhost:1313/posts/" title="Posts">
|
||
<span>Posts</span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://localhost:1313/about/" title="About">
|
||
<span>About</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</header>
|
||
<main class="main">
|
||
<div class="post-content"><div class="bio-block">
|
||
<img src="/images/profile.png" alt="Kenny Bondelie" class="bio-photo">
|
||
<div class="bio-text">
|
||
👋 I’m Kenny Bondelie — finance leader turned hands-on IT and security architect.<br>
|
||
I write about building reliable systems, both technical and organizational.
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
</div>
|
||
<article class="first-entry home-info">
|
||
<header class="entry-header">
|
||
<h1>Ask KennyB</h1>
|
||
</header>
|
||
<div class="entry-content">
|
||
From nonprofit CFO → hands-on IT & security leader. Homelab, cloud, ops, and practical strategy.
|
||
</div>
|
||
<footer class="entry-footer">
|
||
<div class="social-icons" >
|
||
<a href="https://www.linkedin.com/in/kennethbondelie" target="_blank" rel="noopener noreferrer me"
|
||
title="Linkedin">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||
stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path>
|
||
<rect x="2" y="9" width="4" height="12"></rect>
|
||
<circle cx="4" cy="4" r="2"></circle>
|
||
</svg>
|
||
</a>
|
||
</div>
|
||
|
||
</footer>
|
||
</article>
|
||
|
||
<article class="post-entry">
|
||
<header class="entry-header">
|
||
<h2 class="entry-hint-parent">Project Log: Docker Dreams and YAML Nightmares
|
||
</h2>
|
||
</header>
|
||
<div class="entry-content">
|
||
<p> Sometimes the difference between a ‘production-ready stack’ and ‘why is my NAS on fire?’ is one missing space in a YAML file.
|
||
It started innocently enough:
|
||
a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart.
|
||
The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key.
|
||
YAML: 1 — Human: 0.
|
||
...</p>
|
||
</div>
|
||
<footer class="entry-footer"><span title='2025-11-05 00:00:00 +0000 UTC'>November 5, 2025</span> · <span>1 min</span> · <span>Kenny Bondelie</span></footer>
|
||
<a class="entry-link" aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/"></a>
|
||
</article>
|
||
|
||
<article class="post-entry">
|
||
<header class="entry-header">
|
||
<h2 class="entry-hint-parent">Hello, World — Why Ask Kenny B?
|
||
</h2>
|
||
</header>
|
||
<div class="entry-content">
|
||
<p>Welcome! This blog will cover:
|
||
Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—let’s build.
|
||
</p>
|
||
</div>
|
||
<footer class="entry-footer"><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span> · <span>1 min</span> · <span>Kenny Bondelie</span></footer>
|
||
<a class="entry-link" aria-label="post link to Hello, World — Why Ask Kenny B?" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/"></a>
|
||
</article>
|
||
</main>
|
||
|
||
<footer class="footer">
|
||
<span>© 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
|
||
|
||
<span>
|
||
Powered by
|
||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||
</span>
|
||
</footer>
|
||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||
<path d="M12 6H0l6-6z" />
|
||
</svg>
|
||
</a>
|
||
|
||
<script>
|
||
let menu = document.getElementById('menu');
|
||
if (menu) {
|
||
|
||
const scrollPosition = localStorage.getItem("menu-scroll-position");
|
||
if (scrollPosition) {
|
||
menu.scrollLeft = parseInt(scrollPosition, 10);
|
||
}
|
||
|
||
menu.onscroll = function () {
|
||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||
}
|
||
}
|
||
|
||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||
anchor.addEventListener("click", function (e) {
|
||
e.preventDefault();
|
||
var id = this.getAttribute("href").substr(1);
|
||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||
behavior: "smooth"
|
||
});
|
||
} else {
|
||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||
}
|
||
if (id === "top") {
|
||
history.replaceState(null, null, " ");
|
||
} else {
|
||
history.pushState(null, null, `#${id}`);
|
||
}
|
||
});
|
||
});
|
||
|
||
</script>
|
||
<script>
|
||
var mybutton = document.getElementById("top-link");
|
||
window.onscroll = function () {
|
||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||
mybutton.style.visibility = "visible";
|
||
mybutton.style.opacity = "1";
|
||
} else {
|
||
mybutton.style.visibility = "hidden";
|
||
mybutton.style.opacity = "0";
|
||
}
|
||
};
|
||
|
||
</script>
|
||
<script>
|
||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||
const html = document.querySelector("html");
|
||
if (html.dataset.theme === "dark") {
|
||
html.dataset.theme = 'light';
|
||
localStorage.setItem("pref-theme", 'light');
|
||
} else {
|
||
html.dataset.theme = 'dark';
|
||
localStorage.setItem("pref-theme", 'dark');
|
||
}
|
||
})
|
||
|
||
</script>
|
||
</body>
|
||
|
||
</html>
|