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 >