2025-11-06 15:14:46 -08:00
<!DOCTYPE html>
< html lang = "en" dir = "auto" data-theme = "auto" >
< 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 = "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 > Hello, World — Why Ask Kenny B? | Ask KennyB< / title >
< meta name = "keywords" content = "intro, homelab, project" >
< meta name = "description" content = "What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture." >
< meta name = "author" content = "Kenny Bondelie" >
< link rel = "canonical" href = "http://localhost:1313/blog/hello-world-why-ask-kenny-b/" >
< 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" hreflang = "en" href = "http://localhost:1313/blog/hello-world-why-ask-kenny-b/" >
< 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 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" >
< article class = "post-single" >
< header class = "post-header" >
< div class = "breadcrumbs" > < a href = "http://localhost:1313/" > Home< / a > » < a href = "http://localhost:1313/posts/" > Posts< / a > < / div >
< h1 class = "post-title entry-hint-parent" >
Hello, World — Why Ask Kenny B?
< / h1 >
< div class = "post-description" >
What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.
< / div >
< div class = "post-meta" > < span title = '2025-11-02 00:00:00 +0000 UTC' > November 2, 2025< / span > · < span > 1 min< / span > · < span > Kenny Bondelie< / span >
< / div >
< / header >
< div class = "post-content" > < p > Welcome! This blog will cover:< / p >
< ul >
< li > Reproducible < strong > homelab guides< / strong > (Proxmox, Docker, Authentik, reverse proxies).< / li >
< li > < strong > Cloud blueprints< / strong > that scale from personal to org-grade.< / li >
< li > Transferable < strong > leadership → architecture< / strong > lessons (risk, controls, finance).< / li >
< / ul >
< p > Thanks for being here—let’ s build.< / p >
< / div >
< footer class = "post-footer" >
< ul class = "post-tags" >
< li > < a href = "http://localhost:1313/tags/intro/" > Intro< / a > < / li >
< li > < a href = "http://localhost:1313/tags/homelab/" > Homelab< / a > < / li >
< li > < a href = "http://localhost:1313/tags/project/" > Project< / a > < / li >
< / ul >
< nav class = "paginav" >
< a class = "prev" href = "http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/" >
< span class = "title" > « Prev< / span >
< br >
< span > Project Log: Docker Dreams and YAML Nightmares< / span >
< / a >
< / nav >
< / footer >
< / 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 >
< script >
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
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);
}
});
< / script >
< / body >
< / html >