1:"$Sreact.fragment" 2:I[59919,["/_next/static/chunks/151f45c951fc5992.js"],"default"] 3:I[3374,["/_next/static/chunks/151f45c951fc5992.js"],"default"] 4:I[39756,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"] 5:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"] 14:I[68027,[],"default"] :HL["/_next/static/chunks/2af85be03b8d3044.css","style"] :HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 0:{"P":null,"b":"iv-nbJZe_jiHzLFjamu1u","c":["","projects"],"q":"","i":false,"f":[[["",{"children":["projects",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2af85be03b8d3044.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/151f45c951fc5992.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased min-h-dvh flex flex-col","children":["$","$L2",null,{"children":[["$","a",null,{"href":"#main-content","className":"skip-to-content","children":"Skip to content"}],["$","$L3",null,{}],["$","main",null,{"id":"main-content","className":"flex-1","children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}],["$","footer",null,{"className":"border-t border-card-border py-8","aria-label":"Site footer","children":["$","div",null,{"className":"mx-auto max-w-6xl px-4 text-center text-sm text-muted","children":[["$","p",null,{"children":["Stephen Foote"," · ","Systems and Network Administrator"," · ","KF0OTE"]}],["$","div",null,{"className":"mt-2 flex flex-wrap items-center justify-center gap-3","children":[["$","a",null,{"href":"mailto:sfoote@pm.me","className":"text-accent hover:text-accent-hover transition-colors","children":"sfoote@pm.me"}],["$","span",null,{"children":"·"}],["$","a",null,{"href":"https://www.linkedin.com/in/itfoote/","target":"_blank","rel":"noopener noreferrer","className":"text-accent hover:text-accent-hover transition-colors","children":"LinkedIn"}],["$","span",null,{"children":"·"}],["$","a",null,{"href":"https://github.com/itfoote","target":"_blank","rel":"noopener noreferrer","className":"text-accent hover:text-accent-hover transition-colors","children":"GitHub"}],["$","span",null,{"children":"·"}],["$","a",null,{"href":"https://www.qrz.com/db/KF0OTE","target":"_blank","rel":"noopener noreferrer","className":"text-accent hover:text-accent-hover transition-colors","children":"QRZ"}]]}],["$","p",null,{"className":"mt-2","children":"Built with Next.js, Tailwind CSS, and Claude"}]]}]}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"mx-auto max-w-6xl px-4 py-12","children":[["$","h1",null,{"className":"text-3xl font-bold tracking-tight md:text-4xl","children":"Projects"}],["$","p",null,{"className":"mt-3 text-muted","children":"A selection of active and completed projects spanning SolarWinds administration, automation, AI integration, and homelab infrastructure."}],["$","div",null,{"className":"mt-10 grid gap-6 md:grid-cols-2","children":[["$","div","systems-audit",{"className":"rounded-xl border border-card-border bg-card p-6 shadow-card flex flex-col","children":[["$","div",null,{"className":"flex items-start justify-between gap-3","children":["$L6","$L7"]}],"$L8","$L9"]}],"$La","$Lb","$Lc","$Ld","$Le","$Lf","$L10","$L11"]}]]}],null,"$L12"]}],{},null,false,false]},null,false,false]},null,false,false],"$L13",false]],"m":"$undefined","G":["$14",[]],"S":true} 15:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"OutletBoundary"] 16:"$Sreact.suspense" 18:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"ViewportBoundary"] 1a:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"MetadataBoundary"] 6:["$","h2",null,{"className":"text-lg font-semibold","children":"SolarWinds Systems Audit Report"}] 7:["$","span",null,{"className":"shrink-0 rounded-full px-2.5 py-0.5 text-xs font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400","children":"In Progress"}] 8:["$","p",null,{"className":"mt-3 flex-1 text-sm text-muted","children":"Rebuilt the systems audit report from scratch — 14 sections, ~28 tables, 559 lines of SWQL. Covers Platform Health, Accounts, Licensing, Alerting, Discovery, NCM, Reporting, SAM, Interfaces, Volumes, Groups, Custom Pollers, Syslog/Traps, and advanced modules."}] 9:["$","div",null,{"className":"mt-4 flex flex-wrap gap-1.5","children":[["$","span","SolarWinds",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"SolarWinds"}],["$","span","SWQL",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"SWQL"}],["$","span","Report Builder",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Report Builder"}],["$","span","Audit",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Audit"}]]}] a:["$","div","cf-industries-audit",{"className":"rounded-xl border border-card-border bg-card p-6 shadow-card flex flex-col","children":[["$","div",null,{"className":"flex items-start justify-between gap-3","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"Enterprise Client Audit (104-Page)"}],["$","span",null,{"className":"shrink-0 rounded-full px-2.5 py-0.5 text-xs font-medium bg-green-500/10 text-green-600 dark:text-green-400","children":"Complete"}]]}],["$","p",null,{"className":"mt-3 flex-1 text-sm text-muted","children":"104-page comprehensive SolarWinds audit for a major enterprise client. All 14 sections completed across 12 Report Builder and 2 manual Database Manager reports. Key outcomes: 869+ stale interfaces removed, 600+ junk volumes cleaned up."}],["$","div",null,{"className":"mt-4 flex flex-wrap gap-1.5","children":[["$","span","SolarWinds",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"SolarWinds"}],["$","span","Audit",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Audit"}],["$","span","PowerShell",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"PowerShell"}],["$","span","Cleanup",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Cleanup"}]]}]]}] b:["$","div","node-location-mgmt",{"className":"rounded-xl border border-card-border bg-card p-6 shadow-card flex flex-col","children":[["$","div",null,{"className":"flex items-start justify-between gap-3","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"Node Location Management System"}],["$","span",null,{"className":"shrink-0 rounded-full px-2.5 py-0.5 text-xs font-medium bg-green-500/10 text-green-600 dark:text-green-400","children":"Complete"}]]}],["$","p",null,{"className":"mt-3 flex-1 text-sm text-muted","children":"Automated bulk-update system for SolarWinds node custom properties (Location, Address, GPS coordinates) based on IP-to-site CSV mappings. Piloted with a global logistics client across 100+ facilities worldwide."}],["$","div",null,{"className":"mt-4 flex flex-wrap gap-1.5","children":[["$","span","PowerShell",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"PowerShell"}],["$","span","SolarWinds",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"SolarWinds"}],["$","span","Automation",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Automation"}],["$","span","CSV",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"CSV"}]]}]]}] c:["$","div","client-health-checkups",{"className":"rounded-xl border border-card-border bg-card p-6 shadow-card flex flex-col","children":[["$","div",null,{"className":"flex items-start justify-between gap-3","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"Client Health Checkups"}],["$","span",null,{"className":"shrink-0 rounded-full px-2.5 py-0.5 text-xs font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400","children":"In Progress"}]]}],["$","p",null,{"className":"mt-3 flex-1 text-sm text-muted","children":"Standardized health checkup framework for 8 enterprise clients. Master checklist covering Platform Health, Module Status, Licensing, Alerting, Discovery, NCM, Reporting, Dashboards, and Client Communication."}],["$","div",null,{"className":"mt-4 flex flex-wrap gap-1.5","children":[["$","span","SolarWinds",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"SolarWinds"}],["$","span","Audit",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Audit"}],["$","span","Obsidian",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Obsidian"}],["$","span","Process",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Process"}]]}]]}] d:["$","div","daily-briefing",{"className":"rounded-xl border border-card-border bg-card p-6 shadow-card flex flex-col","children":[["$","div",null,{"className":"flex items-start justify-between gap-3","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"Daily Briefing System"}],["$","span",null,{"className":"shrink-0 rounded-full px-2.5 py-0.5 text-xs font-medium bg-green-500/10 text-green-600 dark:text-green-400","children":"Complete"}]]}],["$","p",null,{"className":"mt-3 flex-1 text-sm text-muted","children":"Automated morning briefing pipeline: AppleScript fetches ticket emails from Mail.app, sends to n8n webhook for AI summarization via Ollama, creates Obsidian daily notes. Runs at 7:30 AM via LaunchAgent."}],["$","div",null,{"className":"mt-4 flex flex-wrap gap-1.5","children":[["$","span","n8n",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"n8n"}],["$","span","Ollama",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Ollama"}],["$","span","Automation",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Automation"}],["$","span","Obsidian",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Obsidian"}]]}]]}] e:["$","div","gold-templates",{"className":"rounded-xl border border-card-border bg-card p-6 shadow-card flex flex-col","children":[["$","div",null,{"className":"flex items-start justify-between gap-3","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"Gold Copy Template System"}],["$","span",null,{"className":"shrink-0 rounded-full px-2.5 py-0.5 text-xs font-medium bg-green-500/10 text-green-600 dark:text-green-400","children":"Complete"}]]}],["$","p",null,{"className":"mt-3 flex-1 text-sm text-muted","children":"Reusable script and query templates for all managed clients. Client-Config.ps1 dot-sourced by cleanup scripts. Gold copies maintained centrally, deployed to client Orion servers."}],["$","div",null,{"className":"mt-4 flex flex-wrap gap-1.5","children":[["$","span","PowerShell",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"PowerShell"}],["$","span","Templates",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Templates"}],["$","span","SolarWinds",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"SolarWinds"}],["$","span","Process",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Process"}]]}]]}] f:["$","div","pci-dss-compliance",{"className":"rounded-xl border border-card-border bg-card p-6 shadow-card flex flex-col","children":[["$","div",null,{"className":"flex items-start justify-between gap-3","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"PCI DSS Compliance Audits"}],["$","span",null,{"className":"shrink-0 rounded-full px-2.5 py-0.5 text-xs font-medium bg-green-500/10 text-green-600 dark:text-green-400","children":"Complete"}]]}],["$","p",null,{"className":"mt-3 flex-1 text-sm text-muted","children":"Led annual PCI DSS compliance efforts at a call center company (2016–2021). Managed network segmentation, firewall rule reviews, vulnerability scanning, access control policies, and audit evidence collection across a multi-site call center environment processing restaurant payment transactions. Maintained compliance through three major site relocations and full transition to remote operations."}],["$","div",null,{"className":"mt-4 flex flex-wrap gap-1.5","children":[["$","span","PCI DSS",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"PCI DSS"}],["$","span","Compliance",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Compliance"}],["$","span","Security",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Security"}],["$","span","Network Segmentation",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Network Segmentation"}]]}]]}] 10:["$","div","comfyui-workflows",{"className":"rounded-xl border border-card-border bg-card p-6 shadow-card flex flex-col","children":[["$","div",null,{"className":"flex items-start justify-between gap-3","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"ComfyUI Image Generation"}],["$","span",null,{"className":"shrink-0 rounded-full px-2.5 py-0.5 text-xs font-medium bg-amber-500/10 text-amber-600 dark:text-amber-400","children":"Ongoing"}]]}],["$","p",null,{"className":"mt-3 flex-1 text-sm text-muted","children":"Local AI image generation with ComfyUI on Mac Mini M4. Custom workflows for Stable Diffusion XL, Flux outpainting, LLaVA vision captioning, and batch processing. Memory-optimized for 24GB unified memory."}],["$","div",null,{"className":"mt-4 flex flex-wrap gap-1.5","children":[["$","span","ComfyUI",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"ComfyUI"}],["$","span","Stable Diffusion",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Stable Diffusion"}],["$","span","AI",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"AI"}],["$","span","Ollama",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Ollama"}]]}]]}] 11:["$","div","homelab",{"className":"rounded-xl border border-card-border bg-card p-6 shadow-card flex flex-col","children":[["$","div",null,{"className":"flex items-start justify-between gap-3","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"Homelab Infrastructure"}],["$","span",null,{"className":"shrink-0 rounded-full px-2.5 py-0.5 text-xs font-medium bg-amber-500/10 text-amber-600 dark:text-amber-400","children":"Ongoing"}]]}],["$","p",null,{"className":"mt-3 flex-1 text-sm text-muted","children":"Proxmox-based virtualization environment. Docker containers for n8n, self-hosted services. macOS automation with LaunchAgents. Obsidian-based knowledge management and documentation."}],["$","div",null,{"className":"mt-4 flex flex-wrap gap-1.5","children":[["$","span","Proxmox",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Proxmox"}],["$","span","Docker",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Docker"}],["$","span","macOS",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"macOS"}],["$","span","Self-hosting",{"className":"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs text-accent","children":"Self-hosting"}]]}]]}] 12:["$","$L15",null,{"children":["$","$16",null,{"name":"Next.MetadataOutlet","children":"$@17"}]}] 13:["$","$1","h",{"children":[null,["$","$L18",null,{"children":"$L19"}],["$","div",null,{"hidden":true,"children":["$","$L1a",null,{"children":["$","$16",null,{"name":"Next.Metadata","children":"$L1b"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] 19:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 1c:I[27201,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"IconMark"] 17:null 1b:[["$","title","0",{"children":"Projects | Stephen Foote"}],["$","meta","1",{"name":"description","content":"Active and completed projects — SolarWinds audits, automation scripts, monitoring dashboards, and homelab builds."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"icon","href":"/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L1c","4",{}]]