-
APRS iGate System
-
Built a dual-node APRS iGate with Raspberry Pi, Direwolf, APRS-IS, GPS, and network failover.
-
View Project
+
-
- 🧠Skills
-
- - Linux / Systemd
- - Networking / VLANs
- - Raspberry Pi / Embedded Systems
- - Cybersecurity Fundamentals
-
-
+
+
+
+
+
Digital Systems • Infrastructure • Networking • Cybersecurity
+
I build real-world systems that connect hardware, networks, software, and operations.
+
+ I’m Chase Dumphord. My work spans digital systems, Linux infrastructure, homelab engineering,
+ Raspberry Pi deployments, networking, and practical technical problem solving.
+
-
- 📫 Contact
- Email: chasedumphord@gmail.com
-
+
+
+
+
+
+

+
+
+
+
+
+
+
+
About
+
Hands-on systems builder with a digital infrastructure mindset
+
+
+
+
+
+ I’m a technical professional focused on digital systems, infrastructure, networking, and cybersecurity.
+ I enjoy building systems that are practical, reliable, and well documented — from APRS iGates and
+ Raspberry Pi deployments to homelab services, automation, and troubleshooting workflows.
+
+
+ My background blends field engineering, industrial technology, software-oriented thinking, and infrastructure
+ problem solving. I’m especially interested in projects that connect the physical and digital worlds through
+ monitoring, networking, automation, and secure design.
+
+
+
+
+
Core Focus Areas
+
+ - Linux systems and service management
+ - Networking, VLANs, failover, and connectivity troubleshooting
+ - Raspberry Pi and edge-device deployments
+ - Digital systems and infrastructure documentation
+ - Cybersecurity fundamentals and secure system design
+
+
+
+
+
+
+
+
+
+
Projects
+
Featured technical work
+
+
+
+
+
+
APRS iGate System
+ Featured
+
+
+ Built a dual-node APRS iGate system using Raspberry Pi, Direwolf, APRS-IS, GPS planning,
+ and automated Wi-Fi failover between HomeLab and mobile hotspot connectivity.
+
+
+ - Direwolf APRS decoding and APRS-IS integration
+ - Systemd-managed service automation
+ - HomeLab ↔ hotspot failover using nmcli priorities
+ - GitHub-documented configs, architecture, and setup
+
+
+
+
+
+
+
Ced’s HomeLab
+ In Progress
+
+
+ Ongoing homelab platform focused on infrastructure, monitoring, self-hosting, networking,
+ and practical systems engineering.
+
+
+ - VLAN-aware architecture
+ - Pi-based services and self-hosted tools
+ - Documentation-driven build process
+ - Future monitoring and dashboard expansion
+
+
+
+
+
+
+
+
+
+
+
Resume Snapshot
+
Technical experience that bridges field work and digital systems
+
+
+
+
+
What I Bring
+
+ - Industrial and field-service technical experience
+ - Linux, Raspberry Pi, and systems administration work
+ - Networking, connectivity, and troubleshooting depth
+ - Documentation, process building, and reproducible project design
+
+
+
+
+
Current Direction
+
+ I’m positioning myself around digital systems, infrastructure, networking, and cyber-adjacent technical work —
+ especially roles where hands-on problem solving and system integration matter.
+
+
+ More detailed resume content will be added here as the portfolio grows.
+
+
+
+
+
+
+
+
+
+

+
+
+
+
Personal Note
+
Technical, curious, and always building
+
+ Outside of work, I enjoy electronics, self-hosting, coding, drones, and hands-on technical projects that
+ push me to learn something useful. That curiosity carries directly into the way I build and document systems.
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/script.js b/script.js
index e69de29..bea7d2d 100644
--- a/script.js
+++ b/script.js
@@ -0,0 +1,6 @@
+document.addEventListener("DOMContentLoaded", () => {
+ const yearSpan = document.querySelector("[data-year]");
+ if (yearSpan) {
+ yearSpan.textContent = new Date().getFullYear();
+ }
+});
\ No newline at end of file
diff --git a/style.css b/style.css
index 9c69c4e..fbedb03 100644
--- a/style.css
+++ b/style.css
@@ -1,21 +1,350 @@
+:root {
+ --bg: #0b1220;
+ --bg-soft: #121a2b;
+ --card: #172235;
+ --text: #e8eefc;
+ --muted: #a9b6d3;
+ --line: rgba(255, 255, 255, 0.08);
+ --accent: #66b3ff;
+ --accent-2: #8ef0cf;
+ --shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
+ --radius: 18px;
+ --max: 1120px;
+}
+
+* {
+ box-sizing: border-box;
+}
+
+html {
+ scroll-behavior: smooth;
+}
+
body {
- font-family: Arial;
- background: #0d1117;
- color: white;
- padding: 20px;
+ margin: 0;
+ font-family: Arial, Helvetica, sans-serif;
+ background:
+ radial-gradient(circle at top left, rgba(102, 179, 255, 0.08), transparent 30%),
+ linear-gradient(180deg, #0b1220 0%, #0d1424 100%);
+ color: var(--text);
+ line-height: 1.6;
}
-header {
- text-align: center;
- margin-bottom: 40px;
-}
-
-.card {
- background: #161b22;
- padding: 20px;
- border-radius: 10px;
+img {
+ max-width: 100%;
+ display: block;
}
a {
- color: #58a6ff;
+ color: var(--accent);
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.container {
+ width: min(100% - 2rem, var(--max));
+ margin-inline: auto;
+}
+
+.site-header {
+ position: sticky;
+ top: 0;
+ z-index: 1000;
+ backdrop-filter: blur(12px);
+ background: rgba(11, 18, 32, 0.82);
+ border-bottom: 1px solid var(--line);
+}
+
+.nav {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ min-height: 72px;
+}
+
+.logo {
+ color: var(--text);
+ font-weight: 700;
+ font-size: 1.05rem;
+ letter-spacing: 0.02em;
+}
+
+.logo:hover {
+ text-decoration: none;
+}
+
+.nav-links {
+ display: flex;
+ list-style: none;
+ gap: 1.2rem;
+ margin: 0;
+ padding: 0;
+}
+
+.nav-links a {
+ color: var(--muted);
+ font-size: 0.96rem;
+}
+
+.nav-links a:hover {
+ color: var(--text);
+ text-decoration: none;
+}
+
+.hero {
+ padding: 5rem 0 4rem;
+}
+
+.hero-grid {
+ display: grid;
+ grid-template-columns: 1.35fr 0.9fr;
+ gap: 2rem;
+ align-items: center;
+}
+
+.eyebrow,
+.section-label {
+ color: var(--accent-2);
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ font-size: 0.8rem;
+ font-weight: 700;
+ margin-bottom: 0.9rem;
+}
+
+.hero h1 {
+ margin: 0 0 1rem;
+ font-size: clamp(2.2rem, 4vw, 4rem);
+ line-height: 1.1;
+}
+
+.lead {
+ color: var(--muted);
+ font-size: 1.05rem;
+ max-width: 60ch;
+}
+
+.hero-actions {
+ display: flex;
+ gap: 1rem;
+ margin: 1.75rem 0 1.25rem;
+ flex-wrap: wrap;
+}
+
+.btn {
+ display: inline-block;
+ padding: 0.9rem 1.2rem;
+ border-radius: 999px;
+ font-weight: 700;
+ transition: transform 0.18s ease, opacity 0.18s ease, background 0.18s ease;
+}
+
+.btn:hover {
+ transform: translateY(-1px);
+ text-decoration: none;
+}
+
+.btn-primary {
+ background: var(--accent);
+ color: #07111f;
+}
+
+.btn-secondary {
+ border: 1px solid var(--line);
+ color: var(--text);
+ background: rgba(255, 255, 255, 0.03);
+}
+
+.quick-facts {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1rem 1.4rem;
+ list-style: none;
+ padding: 0;
+ margin: 1.25rem 0 0;
+ color: var(--muted);
+}
+
+.hero-image-card,
+.card,
+.project-card {
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.025));
+ border: 1px solid var(--line);
+ border-radius: var(--radius);
+ box-shadow: var(--shadow);
+}
+
+.hero-image-card {
+ padding: 1rem;
+}
+
+.hero-image {
+ border-radius: 16px;
+ width: 100%;
+ object-fit: cover;
+}
+
+.section {
+ padding: 4rem 0;
+}
+
+.section-alt {
+ background: rgba(255, 255, 255, 0.02);
+ border-top: 1px solid var(--line);
+ border-bottom: 1px solid var(--line);
+}
+
+.section-heading {
+ margin-bottom: 1.5rem;
+}
+
+.section h2 {
+ margin: 0;
+ font-size: clamp(1.7rem, 2.6vw, 2.5rem);
+}
+
+.content-grid,
+.projects-grid,
+.contact-grid,
+.personal-grid {
+ display: grid;
+ gap: 1.25rem;
+}
+
+.content-grid {
+ grid-template-columns: 1.2fr 0.9fr;
+}
+
+.projects-grid {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+}
+
+.contact-grid {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+}
+
+.personal-grid {
+ grid-template-columns: 0.95fr 1.05fr;
+ align-items: center;
+}
+
+.card,
+.project-card {
+ padding: 1.35rem;
+}
+
+.project-top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 1rem;
+}
+
+.project-card h3,
+.card h3 {
+ margin-top: 0;
+}
+
+.tag {
+ display: inline-block;
+ padding: 0.35rem 0.7rem;
+ border-radius: 999px;
+ background: rgba(102, 179, 255, 0.12);
+ border: 1px solid rgba(102, 179, 255, 0.22);
+ color: var(--accent);
+ font-size: 0.8rem;
+ font-weight: 700;
+}
+
+.clean-list {
+ margin: 0.8rem 0 0;
+ padding-left: 1.2rem;
+}
+
+.project-links {
+ margin-top: 1rem;
+}
+
+.personal-image-wrap {
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.025));
+ border: 1px solid var(--line);
+ border-radius: var(--radius);
+ box-shadow: var(--shadow);
+ padding: 1rem;
+}
+
+.personal-image {
+ border-radius: 16px;
+ width: 100%;
+ object-fit: cover;
+}
+
+.site-footer {
+ border-top: 1px solid var(--line);
+ padding: 1.4rem 0 2rem;
+}
+
+.footer-content {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 1rem;
+ color: var(--muted);
+}
+
+.back-to-top {
+ color: var(--muted);
+}
+
+.back-to-top:hover {
+ color: var(--text);
+ text-decoration: none;
+}
+
+@media (max-width: 900px) {
+ .hero-grid,
+ .content-grid,
+ .projects-grid,
+ .contact-grid,
+ .personal-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .nav {
+ flex-direction: column;
+ justify-content: center;
+ padding: 0.85rem 0;
+ gap: 0.75rem;
+ }
+
+ .nav-links {
+ flex-wrap: wrap;
+ justify-content: center;
+ }
+
+ .hero {
+ padding-top: 3rem;
+ }
+}
+
+@media (max-width: 560px) {
+ .hero h1 {
+ font-size: 2rem;
+ }
+
+ .hero-actions {
+ flex-direction: column;
+ }
+
+ .btn {
+ text-align: center;
+ }
+
+ .footer-content {
+ flex-direction: column;
+ align-items: flex-start;
+ }
}
\ No newline at end of file