Files
keith-portfolio/index.html
T
2026-10-06 00:39:24 -04:00

550 lines
23 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Keith Casko &mdash; IT Support, Systems Administration, Cloud Operations</title>
<meta name="description" content="Keith Casko &mdash; IT portfolio: Windows Server, Active Directory, Linux, AWS, Docker, networking, and troubleshooting projects. Based in Kalamazoo, Michigan." />
<link rel="stylesheet" href="css/styles.css" />
</head>
<body>
<!-- ============ Header ============ -->
<header class="site-header" role="banner">
<div class="container">
<div class="brand">
<span class="name">Keith Casko</span>
<span class="tagline">
IT Support &nbsp;|&nbsp; Systems Administration &nbsp;|&nbsp; Cloud Operations
<span class="location">Kalamazoo, MI</span>
</span>
</div>
<button class="nav-toggle" aria-expanded="false" aria-controls="primary-nav">Menu</button>
<nav class="site-nav" id="primary-nav" aria-label="Primary">
<ul>
<li><a href="#home" class="active">Home</a></li>
<li><a href="#projects">Projects</a></li>
<li><a href="#homelab">Homelab</a></li>
<li><a href="#credentials">Credentials</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
<li><a href="#about">About</a></li>
<li><a href="#resume">Resume</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
</div>
</header>
<main>
<!-- ============ Hero ============ -->
<section class="hero" id="home" aria-labelledby="hero-title">
<div class="container">
<div class="hero-grid">
<div>
<h1 id="hero-title">Building Reliable Systems.<br />Solving Real Problems.</h1>
<p class="lede">
Hands-on experience with Windows Server, Active Directory, Linux, AWS,
networking, Docker, monitoring, remote administration, and technical
troubleshooting.
</p>
<p>
Currently completing a B.S. in Software Engineering at Western Governors
University while building practical infrastructure and support experience
through a dedicated homelab, AWS projects, and ongoing study of systems
administration and cloud operations.
</p>
<div class="hero-actions">
<a class="btn btn-primary" href="#projects">View Projects</a>
<a class="btn btn-secondary" href="assets/resume/Keith_Casko_IT_Cloud_Resume.docx" download>Download Resume</a>
</div>
</div>
<div class="hero-image">
<img src="assets/images/hero-server-rack.png" alt="Home server rack and homelab workspace" />
</div>
</div>
</div>
</section>
<!-- ============ Featured Projects ============ -->
<section id="projects" aria-labelledby="projects-title">
<div class="container">
<div class="section-head">
<h2 id="projects-title">Featured Projects</h2>
<span class="subtitle">Hands-on infrastructure, support, and cloud work</span>
</div>
<div class="projects-grid">
<article class="project-card">
<a class="card-link" href="homelab.html" aria-label="View ByteGeist Windows Server Lab details">
<div class="thumb thumb-diagram">
<img src="assets/images/homelab-topology.svg"
alt="ByteGeist AD homelab topology diagram — DC01, FILE01, OPNsense, WIN11-01" />
</div>
</a>
<div class="body">
<h3>ByteGeist Windows Server Lab</h3>
<p>
Windows Server 2022 Active Directory lab in VMware: domain
controller with AD DS and DNS, member file server with
role-based SMB shares, Windows 11 domain client, and an
OPNsense firewall segmenting the networks. Audited and fixed
real problems (PDC time source, stale event log) via
PowerShell and WinRM.
</p>
<a class="view-link" href="homelab.html">View Lab Details</a>
</div>
</article>
<article class="project-card">
<div class="thumb">
<img src="assets/screenshots/bytegeist-support-live.png"
alt="ByteGeist Support Lab &mdash; live app screenshot" />
</div>
<div class="body">
<h3>ByteGeist Support Lab</h3>
<p>
An interactive IT troubleshooting application on AWS (Amplify,
Lambda, API Gateway, DynamoDB) with React. Realistic support
incidents, command-line workflows, diagnosis, resolution, and
scoring.
</p>
<a class="view-link" href="https://supportlab.casko.dev/" rel="noopener">View Live Site</a>
</div>
</article>
<article class="project-card">
<div class="thumb">
<img src="assets/screenshots/bytegeist-infrastructure-live.png"
alt="ByteGeist Infrastructure Lab live control plane showing host telemetry, container health, and service status"
style="object-position: top center;" />
</div>
<div class="body">
<h3>ByteGeist Infrastructure Lab</h3>
<p>
A self-hosted Hetzner Ubuntu environment running Docker-based
services with Prometheus, node_exporter, cAdvisor, Grafana, Loki,
Authentik, Gitea, Woodpecker CI, TLS routing, and a sanitized live
status API. Built to practice deployment, monitoring, identity,
security, recovery, and day-to-day infrastructure operations.
</p>
<a class="view-link" href="https://bytegeist.casko.dev/" rel="noopener">View Live Control Plane</a>
</div>
</article>
<article class="project-card">
<div class="thumb">
<img src="assets/screenshots/aws-tracker.png"
alt="AWS Cloud Study Tracker &mdash; live app screenshot" />
</div>
<div class="body">
<h3>AWS Cloud Study Tracker</h3>
<p>
A serverless AWS CRUD application built with Amplify, API Gateway,
Lambda, DynamoDB, and IAM. Used to practice AWS serverless
architecture, permissions, and least-privilege access.
</p>
<a class="view-link" href="https://production.d2kf0c9e1fogq3.amplifyapp.com/" rel="noopener">View Live Site</a>
</div>
</article>
</div>
</div>
</section>
<!-- ============ What I Work With ============ -->
<section id="homelab" aria-labelledby="skills-title">
<div class="container">
<div class="section-head">
<h2 id="skills-title">What I Work With</h2>
<span class="subtitle">Tools, platforms, and areas of practical experience</span>
</div>
<div class="skills-grid">
<div class="skill-card">
<div class="skill-head">
<svg class="ico" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M3 5.5 11 4v8H3V5.5zM13 3.75 21 2.5V12h-8V3.75zM3 13h8v7L3 18.5V13zm10 0h8v8.5L13 20v-7z"/>
</svg>
<h3>Windows &amp; Active Directory</h3>
</div>
<ul>
<li>Windows 10 / 11</li>
<li>Windows Server 2022</li>
<li>Active Directory</li>
<li>Users &amp; groups, OUs</li>
<li>Domain joins</li>
<li>File shares &amp; permissions</li>
<li>DNS</li>
</ul>
</div>
<div class="skill-card">
<div class="skill-head">
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<rect x="3" y="4" width="18" height="16" rx="1.5"/>
<path d="m7 9 3 3-3 3M12 15h5"/>
</svg>
<h3>Linux</h3>
</div>
<ul>
<li>Ubuntu</li>
<li>WSL2</li>
<li>Bash</li>
<li>SSH</li>
<li>Linux administration</li>
</ul>
</div>
<div class="skill-card">
<div class="skill-head">
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M7 18a4 4 0 0 1-.9-7.9A6 6 0 0 1 18 10.5a3.5 3.5 0 0 1-.5 7H7z"/>
</svg>
<h3>AWS</h3>
</div>
<ul>
<li>EC2, S3, IAM</li>
<li>Lambda</li>
<li>API Gateway</li>
<li>DynamoDB</li>
<li>Amplify</li>
<li>Systems Manager</li>
<li>KMS</li>
</ul>
</div>
<div class="skill-card">
<div class="skill-head">
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<circle cx="12" cy="4" r="2"/>
<circle cx="4" cy="20" r="2"/>
<circle cx="20" cy="20" r="2"/>
<path d="M12 6v6M12 12l-7 6M12 12l7 6"/>
</svg>
<h3>Networking</h3>
</div>
<ul>
<li>TCP/IP, IPv4 / IPv6</li>
<li>DNS, DHCP</li>
<li>SSH, HTTP/HTTPS, TLS</li>
<li>VPNs</li>
<li>Reverse proxies</li>
<li>Firewalls</li>
</ul>
</div>
<div class="skill-card">
<div class="skill-head">
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M4 14v-2a8 8 0 1 1 16 0v2"/>
<rect x="2.5" y="14" width="4.5" height="6" rx="1"/>
<rect x="17" y="14" width="4.5" height="6" rx="1"/>
<path d="M17 20a3 3 0 0 1-3 3h-2"/>
</svg>
<h3>IT Support</h3>
</div>
<ul>
<li>Troubleshooting</li>
<li>Customer &amp; remote support</li>
<li>Technical communication</li>
<li>Incident resolution</li>
<li>Permissions &amp; authentication</li>
<li>Connectivity testing</li>
</ul>
</div>
<div class="skill-card">
<div class="skill-head">
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<rect x="3" y="4" width="18" height="5" rx="1"/>
<rect x="3" y="11" width="18" height="5" rx="1"/>
<rect x="3" y="18" width="18" height="3" rx="1"/>
<path d="M6.5 6.5h.01M6.5 13.5h.01"/>
</svg>
<h3>Infrastructure</h3>
</div>
<ul>
<li>Docker, Docker Compose</li>
<li>VirtualBox</li>
<li>Portainer</li>
<li>Grafana, Prometheus</li>
<li>Loki</li>
<li>Uptime Kuma</li>
</ul>
</div>
<div class="skill-card">
<div class="skill-head">
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<rect x="2.5" y="4" width="19" height="12" rx="1.5"/>
<path d="M8 20h8M12 16v4"/>
</svg>
<h3>Remote Administration</h3>
</div>
<ul>
<li>RDP</li>
<li>Parsec</li>
<li>Tailscale</li>
<li>RealVNC</li>
</ul>
</div>
<div class="skill-card">
<div class="skill-head">
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="m8 7-5 5 5 5M16 7l5 5-5 5M14 5l-4 14"/>
</svg>
<h3>Scripting &amp; Tools</h3>
</div>
<ul>
<li>PowerShell</li>
<li>Bash</li>
<li>Git</li>
<li>GitHub</li>
</ul>
</div>
</div>
</div>
</section>
<!-- ============ Certifications & Credentials ============ -->
<section id="credentials" aria-labelledby="credentials-title">
<div class="container">
<div class="section-head">
<h2 id="credentials-title">Certifications &amp; Credentials</h2>
<span class="subtitle">Verified credentials issued through Credly</span>
</div>
<div class="credentials-grid">
<article class="credential-card">
<div class="credly-embed">
<div data-iframe-width="150" data-iframe-height="270" data-share-badge-id="c4e4c5b4-0645-47b4-89fc-4624a8db3aa9" data-share-badge-host="https://www.credly.com"></div>
</div>
<div class="credential-copy">
<h3>AWS Certified Cloud Practitioner</h3>
<p>Amazon Web Services</p>
<a class="view-link" href="https://www.credly.com/badges/c4e4c5b4-0645-47b4-89fc-4624a8db3aa9/public_url" target="_blank" rel="noopener noreferrer">Verify Credential</a>
</div>
</article>
<article class="credential-card">
<div class="credly-embed">
<div data-iframe-width="150" data-iframe-height="270" data-share-badge-id="be8c0167-dc6c-403f-a498-ba4320a8fc6d" data-share-badge-host="https://www.credly.com"></div>
</div>
<div class="credential-copy">
<h3>Google IT Support Professional Certificate (v2)</h3>
<p>Google</p>
<a class="view-link" href="https://www.credly.com/badges/be8c0167-dc6c-403f-a498-ba4320a8fc6d/public_url" target="_blank" rel="noopener noreferrer">Verify Credential</a>
</div>
</article>
</div>
</div>
</section>
<!-- ============ Troubleshooting Notes ============ -->
<section id="troubleshooting" aria-labelledby="notes-title">
<div class="container">
<div class="section-head">
<h2 id="notes-title">Troubleshooting Notes</h2>
<span class="subtitle">Short, practical case studies</span>
</div>
<div class="notes-list">
<article class="note-item">
<div class="icon" aria-hidden="true">DNS</div>
<div>
<h3>DNS Resolution Issue</h3>
<p>Client cannot reach a service by name but can reach it by IP &mdash; isolate DNS from general network connectivity.</p>
<ul>
<li>Confirm TCP/IP configuration with <code>ipconfig /all</code></li>
<li>Verify DNS server settings and search suffix</li>
<li>Test reachability with <code>ping</code> against both hostname and IP</li>
<li>Use <code>nslookup</code> against the primary and a known-good DNS server</li>
<li>Flush client resolver cache; compare behavior from another host</li>
</ul>
</div>
<div class="chevron" aria-hidden="true">&rsaquo;</div>
</article>
<article class="note-item">
<div class="icon" aria-hidden="true">DKR</div>
<div>
<h3>Docker Networking Problem</h3>
<p>A container responds locally but is unreachable from other hosts, or outbound requests fail.</p>
<ul>
<li>Check container state with <code>docker ps</code> and <code>docker logs</code></li>
<li>Verify published ports and the attached Docker network</li>
<li>Confirm DNS resolution from inside the container</li>
<li>Check host firewall rules affecting the bridge or published ports</li>
<li>Test HTTP endpoints with <code>curl -v</code> from host and container</li>
</ul>
</div>
<div class="chevron" aria-hidden="true">&rsaquo;</div>
</article>
<article class="note-item">
<div class="icon" aria-hidden="true">AD</div>
<div>
<h3>Active Directory Permissions Issue</h3>
<p>A user authenticates successfully but cannot access a shared folder they should.</p>
<ul>
<li>Confirm the user's identity and group membership</li>
<li>Review share permissions and NTFS permissions separately</li>
<li>Check for deny ACEs that override group access</li>
<li>Validate authentication path and session with <code>whoami /groups</code></li>
<li>Test access from a known-good account to isolate user vs. share</li>
</ul>
</div>
<div class="chevron" aria-hidden="true">&rsaquo;</div>
</article>
<article class="note-item">
<div class="icon" aria-hidden="true">IAM</div>
<div>
<h3>AWS IAM Access Problem</h3>
<p>A workload or user receives <em>AccessDenied</em> when calling an AWS service.</p>
<ul>
<li>Identify the exact action, resource, and principal from the error</li>
<li>Review attached identity and resource policies against least privilege</li>
<li>Check for explicit denies, SCPs, and permission boundaries</li>
<li>Reproduce with the IAM Policy Simulator</li>
<li>Grant only the specific action needed; verify, then narrow further</li>
</ul>
</div>
<div class="chevron" aria-hidden="true">&rsaquo;</div>
</article>
</div>
</div>
</section>
<!-- ============ About ============ -->
<section id="about" aria-labelledby="about-title">
<div class="container">
<div class="section-head">
<h2 id="about-title">About</h2>
<span class="subtitle">Background and focus</span>
</div>
<div class="about-grid">
<div class="about-photo">
<img src="assets/images/keith-casko-headshot.png"
alt="Keith Casko"
class="about-headshot" />
</div>
<div class="about-text">
<h3>Keith Casko &mdash; Kalamazoo, Michigan</h3>
<p>
I'm transitioning into IT, cloud, and systems administration while
completing a B.S. in Software Engineering at Western Governors
University. My focus is practical, hands-on infrastructure work:
Windows Server and Active Directory, Linux, AWS, Docker, networking,
and technical troubleshooting.
</p>
<p>
My professional background is at Costco Wholesale as a Baker. The job
is production-paced and team-based, and it's where I developed the
habits I bring to IT work &mdash; customer service, teamwork, training
coworkers, process discipline, prioritization, and real-world
problem-solving under pressure.
</p>
</div>
<aside class="pull-quote" aria-label="Approach">
<span class="mark">&ldquo;</span>
Reliable systems are built one careful change at a time. I'd rather
understand a problem than paper over it &mdash; and I document what I
learn so the next person has a shorter path.
</aside>
</div>
</div>
</section>
<!-- ============ Education & Experience ============ -->
<section id="resume" aria-labelledby="resume-title">
<div class="container">
<div class="section-head">
<h2 id="resume-title">Education &amp; Experience</h2>
<span class="subtitle">Current study and professional background</span>
</div>
<div class="two-col">
<div class="panel">
<h3>Western Governors University</h3>
<div class="meta">Bachelor of Science, Software Engineering &middot; In Progress</div>
<h4>Relevant Study</h4>
<ul>
<li>Cloud Computing</li>
<li>Networking</li>
<li>IT Operations</li>
<li>Software Development</li>
<li>Java</li>
<li>Web Development</li>
<li>Security Fundamentals</li>
</ul>
</div>
<div class="panel">
<h3>Costco Wholesale &mdash; Baker</h3>
<div class="meta">June 2015 &ndash; Present</div>
<h4>Transferable Experience</h4>
<ul>
<li>High-volume production environment</li>
<li>Accuracy and process discipline</li>
<li>Prioritization under time pressure</li>
<li>Day-to-day troubleshooting of equipment and workflows</li>
<li>Coordinating with team members and supervisors</li>
<li>Training coworkers on procedures</li>
<li>Customer service and clear communication</li>
<li>Problem solving and follow-through</li>
</ul>
</div>
</div>
</div>
</section>
<!-- ============ Contact ============ -->
<section id="contact" aria-labelledby="contact-title">
<div class="container">
<div class="contact-cta">
<div>
<h2 id="contact-title">Open to IT Support, Help Desk, and Junior SysAdmin roles</h2>
<p>Based in Kalamazoo, Michigan &mdash; available on-site, hybrid, or remote.</p>
<p><a href="mailto:keith.casko@gmail.com">keith.casko@gmail.com</a></p>
</div>
<div class="contact-actions">
<a class="btn btn-primary" href="mailto:keith.casko@gmail.com">Email Keith</a>
<a class="btn btn-secondary" href="https://www.linkedin.com/in/keith-casko/" rel="noopener">LinkedIn</a>
</div>
</div>
</div>
</section>
</main>
<!-- ============ Footer ============ -->
<footer class="site-footer" role="contentinfo">
<div class="container">
<div>&copy; <span id="year">2026</span> Keith Casko. All rights reserved.</div>
<ul class="footer-links">
<li><a href="assets/resume/Keith_Casko_IT_Cloud_Resume.docx" download>Resume</a></li>
<li><a href="https://github.com/kcasko" rel="noopener">GitHub</a></li>
<li><a href="https://www.linkedin.com/in/keith-casko/" rel="noopener">LinkedIn</a></li>
<li><a href="mailto:keith.casko@gmail.com">Email</a></li>
</ul>
</div>
</footer>
<script type="text/javascript" async src="https://cdn.credly.com/assets/utilities/embed.js"></script>
<script src="js/main.js" defer></script>
</body>
</html>