Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c7a10ae719 | ||
|
|
5d6eae87bf | ||
|
|
a3b77de5aa | ||
|
|
ae21ab1be9 | ||
|
|
1d9ec33761 | ||
|
|
c74589555b | ||
|
|
2f244ea46d | ||
|
|
d89065ca4d | ||
|
|
af7db894b3 | ||
|
|
617838a1e1 | ||
|
|
89063938d7 | ||
|
|
5ad5fd720d | ||
|
|
24ad1a1097 | ||
|
|
1927c1e85f | ||
|
|
5029d3ca76 | ||
|
|
8ff376324c | ||
|
|
ab6e0b8090 | ||
|
|
515af2a4d3 | ||
|
|
2d8b0c6e8f | ||
|
|
97de4bca88 | ||
|
|
b5cffd33c6 | ||
|
|
9b6e3a7b2b | ||
|
|
1c90c97ed9 | ||
|
|
8506a96ee7 | ||
|
|
84e62edb92 | ||
|
|
99f88d4bc6 | ||
|
|
7023b402a6 | ||
|
|
4938b03294 | ||
|
|
51e3298b12 | ||
|
|
387af6347c | ||
|
|
7561b6eafd |
No files matched your search
@@ -0,0 +1,68 @@
|
||||
# k5bss.com
|
||||
|
||||
Personal portfolio and ham radio station site for Justin Frasier — IT Support Analyst and amateur radio operator (K5BSS, General Class).
|
||||
|
||||
Live at: [k5bss.com](https://k5bss.com)
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Two static pages with a dark terminal aesthetic. No frameworks or build tools — just HTML, CSS, and vanilla JavaScript.
|
||||
|
||||
- **[index.html](index.html)** — Resume/portfolio page
|
||||
- **[k5bss.html](k5bss.html)** — Ham radio station dashboard and logbook
|
||||
|
||||
## Structure
|
||||
|
||||
```
|
||||
k5bss.com/
|
||||
├── index.html # Resume/portfolio page
|
||||
├── k5bss.html # Ham radio station dashboard
|
||||
├── Justin_Frasier_Resume.pdf # Downloadable resume
|
||||
├── css/
|
||||
│ └── style.css # Styles for index.html
|
||||
├── favicon.ico
|
||||
├── favicon-32x32.png
|
||||
├── favicon-64x64.png
|
||||
└── favicon-256x256.png
|
||||
```
|
||||
|
||||
## Pages
|
||||
|
||||
### Resume / Portfolio (`index.html`)
|
||||
|
||||
- **About** — summary, tags, and certifications at a glance
|
||||
- **Experience** — work history (Margaritaville, Boomtown, xententLABS)
|
||||
- **Technical Skills** — languages, OS, hardware, tools, networking, IT support, security
|
||||
- **Education** — BPCC A.A.S. Cyber Technology, Northwood High School
|
||||
- **Certifications** — CompTIA A+, PCPro, Udemy courses, amateur radio, locomotive
|
||||
- **Contact** — email, phone, address, GitHub, LinkedIn, self-hosted Git
|
||||
|
||||
Fonts: [IBM Plex Mono](https://fonts.google.com/specimen/IBM+Plex+Mono) and [IBM Plex Sans](https://fonts.google.com/specimen/IBM+Plex+Sans) via Google Fonts. Sticky sidebar with scroll-spy nav via `IntersectionObserver`.
|
||||
|
||||
### Ham Radio Station Dashboard (`k5bss.html`)
|
||||
|
||||
Three-tab single-page app for station stats and the contact logbook:
|
||||
|
||||
- **Dashboard** — QSO count, DXCC entities, states worked; bar charts for modes and bands; top countries list; monthly QSO activity canvas chart
|
||||
- **Logbook** — searchable, filterable, paginated contact log (callsign, name, country, QTH, LoTW status)
|
||||
- **About** — station info and operating preferences
|
||||
|
||||
Fonts: [Share Tech Mono](https://fonts.google.com/specimen/Share+Tech+Mono), [Orbitron](https://fonts.google.com/specimen/Orbitron), and [Barlow](https://fonts.google.com/specimen/Barlow) via Google Fonts. Styles and JavaScript are self-contained within the file.
|
||||
|
||||
## Responsive Design
|
||||
|
||||
`index.html` adapts across three breakpoints defined in `css/style.css`:
|
||||
|
||||
| Breakpoint | Behavior |
|
||||
|---|---|
|
||||
| `≤1024px` (tablet) | Sidebar narrows from 280px to 230px; main content padding reduced |
|
||||
| `≤768px` (mobile) | Sidebar unsticks and stacks above content; nav links reflow into a horizontal wrapping row; contact grid collapses to one column |
|
||||
| `≤480px` (small phone) | Tighter padding and font sizes; skills grid columns shrink to `minmax(140px, 1fr)` |
|
||||
|
||||
All other components — tags, socials, and the skills grid — use `flex-wrap` or `auto-fill` and reflow fluidly without breakpoints.
|
||||
|
||||
## Deployment
|
||||
|
||||
Static files — drop the repo contents onto any web server or host (Nginx, Apache, Caddy, GitHub Pages, etc.). No build step required.
|
||||
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
Content-Security-Policy: default-src 'self'; script-src 'self' https://static.cloudflareinsights.com; style-src 'self' https://fonts.googleapis.com 'unsafe-inline'; font-src 'self' https://fonts.gstatic.com; img-src 'self' https://ki5bhv.com data:; connect-src 'self' https://cloudflareinsights.com; object-src 'none'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'; upgrade-insecure-requests
|
||||
X-Content-Type-Options: nosniff
|
||||
X-Frame-Options: DENY
|
||||
Referrer-Policy: strict-origin-when-cross-origin
|
||||
Permissions-Policy: accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()
|
||||
Cross-Origin-Opener-Policy: same-origin
|
||||
Cross-Origin-Resource-Policy: same-origin
|
||||
X-Permitted-Cross-Domain-Policies: none
|
||||
@@ -1,25 +0,0 @@
|
||||
body{
|
||||
background-image: url("../images/Shreveport.jpg");
|
||||
background-color: black;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-attachment: fixed;
|
||||
}
|
||||
|
||||
.title{
|
||||
font-family: "Press Start 2P", system-ui;
|
||||
text-align: center;
|
||||
font-size: 3.5em;
|
||||
padding-top: 1em;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.off-white{
|
||||
background-color: rgb(245,245,245,0.8);
|
||||
width: 80%;
|
||||
max-width: 10em;
|
||||
margin: 0.5em auto; /* Center the box horizontally and add top/bottom margin */
|
||||
padding: 0.5em; /* Add some padding inside the box */
|
||||
border-radius: 0.25em; /* Optional: Rounded corners */
|
||||
}
|
||||
@@ -0,0 +1,533 @@
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'IBM Plex Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('/fonts/ibm-plex-mono-400.woff2') format('woff2');
|
||||
}
|
||||
|
||||
:root {
|
||||
--bg: #0a0c10;
|
||||
--bg2: #0f1218;
|
||||
--bg3: #151a22;
|
||||
--border: #1e2530;
|
||||
--accent: #00d4aa;
|
||||
--accent2: #0088ff;
|
||||
--dim: #4a5568;
|
||||
--mid: #8892a4;
|
||||
--text: #c9d1e0;
|
||||
--bright: #e8edf5;
|
||||
--red: #ff4d6a;
|
||||
--yellow: #ffd166;
|
||||
--font-mono: 'IBM Plex Mono', monospace;
|
||||
--font-sans: 'IBM Plex Sans', sans-serif;
|
||||
}
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
font-family: var(--font-sans);
|
||||
font-size: 15px;
|
||||
line-height: 1.7;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Scrollbar ── */
|
||||
::-webkit-scrollbar { width: 6px; }
|
||||
::-webkit-scrollbar-track { background: var(--bg); }
|
||||
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
|
||||
|
||||
/* ── Layout ── */
|
||||
.layout {
|
||||
display: grid;
|
||||
grid-template-columns: 280px 1fr;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Sidebar ── */
|
||||
aside {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: 100vh;
|
||||
background: var(--bg2);
|
||||
border-right: 1px solid var(--border);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 2.5rem 1.8rem;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.profile-photo {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-radius: 50%;
|
||||
border: 2px solid var(--accent);
|
||||
object-fit: cover;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.profile-name {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 1.15rem;
|
||||
font-weight: 600;
|
||||
color: var(--bright);
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
.profile-title {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.72rem;
|
||||
color: var(--accent);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
|
||||
.profile-loc {
|
||||
font-size: 0.78rem;
|
||||
color: var(--dim);
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.divider {
|
||||
border: none;
|
||||
border-top: 1px solid var(--border);
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
nav { flex: 1; }
|
||||
|
||||
nav a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.6rem;
|
||||
padding: 0.45rem 0.6rem;
|
||||
border-radius: 4px;
|
||||
color: var(--mid);
|
||||
text-decoration: none;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.78rem;
|
||||
letter-spacing: 0.04em;
|
||||
transition: color 0.15s, background 0.15s;
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
|
||||
nav a:hover, nav a.active {
|
||||
color: var(--accent);
|
||||
background: rgba(0, 212, 170, 0.07);
|
||||
}
|
||||
|
||||
nav a .dot {
|
||||
width: 5px; height: 5px;
|
||||
border-radius: 50%;
|
||||
background: var(--border);
|
||||
flex-shrink: 0;
|
||||
transition: background 0.15s;
|
||||
}
|
||||
|
||||
nav a:hover .dot, nav a.active .dot { background: var(--accent); }
|
||||
|
||||
.socials {
|
||||
display: flex;
|
||||
gap: 0.7rem;
|
||||
flex-wrap: wrap;
|
||||
margin-top: auto;
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
|
||||
.socials a {
|
||||
color: var(--dim);
|
||||
text-decoration: none;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.7rem;
|
||||
letter-spacing: 0.05em;
|
||||
transition: color 0.15s;
|
||||
border: 1px solid var(--border);
|
||||
padding: 0.2rem 0.5rem;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.socials a:hover { color: var(--accent); border-color: var(--accent); }
|
||||
|
||||
/* ── Main Content ── */
|
||||
main {
|
||||
padding: 3rem 3.5rem;
|
||||
max-width: 860px;
|
||||
}
|
||||
|
||||
/* ── Prompt header ── */
|
||||
.prompt {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.72rem;
|
||||
color: var(--dim);
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.prompt span { color: var(--accent); }
|
||||
|
||||
/* ── Section ── */
|
||||
section {
|
||||
margin-bottom: 4rem;
|
||||
scroll-margin-top: 2rem;
|
||||
}
|
||||
|
||||
.section-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.65rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.18em;
|
||||
color: var(--accent);
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 2.4rem;
|
||||
font-weight: 600;
|
||||
color: var(--bright);
|
||||
line-height: 1.15;
|
||||
letter-spacing: -0.03em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 1.25rem;
|
||||
font-weight: 500;
|
||||
color: var(--bright);
|
||||
margin-bottom: 1.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
h2 .hash { color: var(--accent); margin-right: 0.3rem; }
|
||||
|
||||
.hero-sub {
|
||||
font-size: 1.05rem;
|
||||
color: var(--mid);
|
||||
max-width: 540px;
|
||||
margin-top: 1.2rem;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.hero-sub strong { color: var(--text); font-weight: 500; }
|
||||
|
||||
/* ── Tags ── */
|
||||
.tags {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem;
|
||||
margin-top: 1.2rem;
|
||||
}
|
||||
|
||||
.tag {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.7rem;
|
||||
padding: 0.25rem 0.7rem;
|
||||
border-radius: 3px;
|
||||
border: 1px solid var(--border);
|
||||
color: var(--mid);
|
||||
letter-spacing: 0.04em;
|
||||
background: var(--bg2);
|
||||
}
|
||||
|
||||
.tag.accent { border-color: rgba(0,212,170,0.4); color: var(--accent); }
|
||||
.tag.blue { border-color: rgba(0,136,255,0.35); color: var(--accent2); }
|
||||
|
||||
/* ── Experience cards ── */
|
||||
.exp-item {
|
||||
border-left: 2px solid var(--border);
|
||||
padding: 0 0 2rem 1.5rem;
|
||||
position: relative;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
|
||||
.exp-item:last-child { padding-bottom: 0; }
|
||||
|
||||
.exp-item::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: -5px;
|
||||
top: 6px;
|
||||
width: 8px; height: 8px;
|
||||
border-radius: 50%;
|
||||
background: var(--border);
|
||||
border: 2px solid var(--bg);
|
||||
transition: background 0.2s;
|
||||
}
|
||||
|
||||
.exp-item:hover { border-color: var(--accent); }
|
||||
.exp-item:hover::before { background: var(--accent); }
|
||||
|
||||
.exp-role {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
color: var(--bright);
|
||||
}
|
||||
|
||||
.exp-company {
|
||||
font-size: 0.85rem;
|
||||
color: var(--accent2);
|
||||
margin-top: 0.1rem;
|
||||
}
|
||||
|
||||
.exp-meta {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.7rem;
|
||||
color: var(--dim);
|
||||
margin: 0.3rem 0 0.8rem;
|
||||
}
|
||||
|
||||
.exp-list {
|
||||
list-style: none;
|
||||
font-size: 0.86rem;
|
||||
color: var(--mid);
|
||||
}
|
||||
|
||||
.exp-list li {
|
||||
padding: 0.2rem 0;
|
||||
padding-left: 1.1rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.exp-list li::before {
|
||||
content: '→';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
color: var(--dim);
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
/* ── Skills grid ── */
|
||||
.skills-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
||||
gap: 1px;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
background: var(--border);
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.skill-cell {
|
||||
background: var(--bg2);
|
||||
padding: 0.9rem 1.1rem;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.75rem;
|
||||
color: var(--mid);
|
||||
transition: background 0.15s, color 0.15s;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.skill-cell:hover { background: var(--bg3); color: var(--text); }
|
||||
|
||||
.skill-cell .skill-icon { color: var(--accent); margin-right: 0.4rem; font-size: 0.7rem; }
|
||||
|
||||
/* ── Education ── */
|
||||
.edu-card {
|
||||
background: var(--bg2);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
padding: 1.2rem 1.4rem;
|
||||
margin-bottom: 1rem;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
|
||||
.edu-card:hover { border-color: rgba(0,212,170,0.3); }
|
||||
|
||||
.edu-school {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.88rem;
|
||||
font-weight: 600;
|
||||
color: var(--bright);
|
||||
}
|
||||
|
||||
.edu-degree {
|
||||
font-size: 0.84rem;
|
||||
color: var(--mid);
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
|
||||
.edu-meta {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.68rem;
|
||||
color: var(--dim);
|
||||
margin-top: 0.4rem;
|
||||
}
|
||||
|
||||
.edu-honor {
|
||||
display: inline-block;
|
||||
margin-top: 0.5rem;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.68rem;
|
||||
padding: 0.15rem 0.5rem;
|
||||
border: 1px solid rgba(255, 209, 102, 0.4);
|
||||
color: var(--yellow);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
/* ── Certs ── */
|
||||
.cert-group { margin-bottom: 1.5rem; }
|
||||
|
||||
.cert-group-title {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.68rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.14em;
|
||||
color: var(--dim);
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
|
||||
.cert-list { list-style: none; }
|
||||
|
||||
.cert-list li {
|
||||
font-size: 0.84rem;
|
||||
color: var(--mid);
|
||||
padding: 0.3rem 0;
|
||||
border-bottom: 1px solid var(--border);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.cert-list li:last-child { border-bottom: none; }
|
||||
|
||||
.cert-list li::before {
|
||||
content: '✓';
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.7rem;
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
/* ── Contact ── */
|
||||
.contact-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.contact-item {
|
||||
background: var(--bg2);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
padding: 1rem 1.2rem;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
|
||||
.contact-item:hover { border-color: rgba(0,212,170,0.35); }
|
||||
|
||||
.contact-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.65rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
color: var(--dim);
|
||||
margin-bottom: 0.3rem;
|
||||
}
|
||||
|
||||
.contact-val {
|
||||
font-size: 0.85rem;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.contact-val a {
|
||||
color: var(--accent2);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.contact-val a:hover { text-decoration: underline; }
|
||||
|
||||
/* ── Footer ── */
|
||||
footer {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.7rem;
|
||||
color: var(--dim);
|
||||
margin-top: 3rem;
|
||||
padding-top: 1.5rem;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
|
||||
/* ── Blinking cursor ── */
|
||||
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
|
||||
.cursor {
|
||||
display: inline-block;
|
||||
width: 2px; height: 1.1em;
|
||||
background: var(--accent);
|
||||
vertical-align: middle;
|
||||
animation: blink 1.1s step-end infinite;
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
/* ── Tablet ── */
|
||||
@media (max-width: 1024px) {
|
||||
.layout { grid-template-columns: 230px 1fr; }
|
||||
main { padding: 2.5rem 2rem; }
|
||||
}
|
||||
|
||||
/* ── Mobile ── */
|
||||
@media (max-width: 768px) {
|
||||
.layout { grid-template-columns: 1fr; }
|
||||
|
||||
aside {
|
||||
position: relative;
|
||||
height: auto;
|
||||
border-right: none;
|
||||
border-bottom: 1px solid var(--border);
|
||||
padding: 1.5rem 1.2rem;
|
||||
}
|
||||
|
||||
/* Flatten the nav into a horizontal wrapping row to save vertical space */
|
||||
nav {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.3rem;
|
||||
flex: none;
|
||||
margin: 0.8rem 0;
|
||||
}
|
||||
|
||||
nav a {
|
||||
display: inline-flex;
|
||||
font-size: 0.72rem;
|
||||
padding: 0.3rem 0.6rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.socials { padding-top: 1rem; }
|
||||
|
||||
main { padding: 2rem 1.5rem; }
|
||||
h1 { font-size: 1.7rem; }
|
||||
.contact-grid { grid-template-columns: 1fr; }
|
||||
}
|
||||
|
||||
/* ── Small mobile (≤480 px) ── */
|
||||
@media (max-width: 480px) {
|
||||
main { padding: 1.5rem 1rem; }
|
||||
h1 { font-size: 1.4rem; }
|
||||
section { margin-bottom: 2.5rem; }
|
||||
.hero-sub { font-size: 0.92rem; }
|
||||
.skills-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
|
||||
}
|
||||
|
||||
/* ── Fade-in animation ── */
|
||||
@keyframes fadeUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
|
||||
section { animation: fadeUp 0.5s ease both; }
|
||||
section:nth-child(2) { animation-delay: 0.05s; }
|
||||
section:nth-child(3) { animation-delay: 0.1s; }
|
||||
section:nth-child(4) { animation-delay: 0.15s; }
|
||||
section:nth-child(5) { animation-delay: 0.2s; }
|
||||
section:nth-child(6) { animation-delay: 0.25s; }
|
||||
|
||||
/* ── Skills subheading ── */
|
||||
.skills-subheading {
|
||||
margin-bottom: 0.6rem;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.68rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
color: var(--dim);
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 473 B |
|
After Width: | Height: | Size: 826 B |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 4.3 KiB |
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||
<rect width="32" height="32" rx="4" fill="#0f1218"/>
|
||||
<text x="3" y="11" font-family="'IBM Plex Mono','Courier New',monospace" font-size="6" fill="#4a5568">~$</text>
|
||||
<text x="2" y="27" font-family="'IBM Plex Mono','Courier New',monospace" font-size="19" font-weight="600" fill="#22c55e">jf</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 370 B |
@@ -0,0 +1,52 @@
|
||||
@font-face {
|
||||
font-family: 'IBM Plex Mono';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3oQI8lc.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'IBM Plex Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n5ig.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'IBM Plex Mono';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJ8lc.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'IBM Plex Mono';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3vAO8lc.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'IBM Plex Sans';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-stretch: normal;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXGKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1swZSAXcomDVmadSDtFlzAA.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'IBM Plex Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-stretch: normal;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXGKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1swZSAXcomDVmadSD6llzAA.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'IBM Plex Sans';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-stretch: normal;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXGKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1swZSAXcomDVmadSD2FlzAA.ttf) format('truetype');
|
||||
}
|
||||
|
Before Width: | Height: | Size: 3.8 MiB |
@@ -1,24 +1,373 @@
|
||||
<html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>K5BSS</title>
|
||||
<link type="text/css" rel="stylesheet" href="css/main.css">
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="referrer" content="strict-origin-when-cross-origin" />
|
||||
<title>Justin Frasier | Infrastructure Administrator</title>
|
||||
<link rel="sitemap" type="application/xml" href="/sitemap.xml" />
|
||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='4' fill='%230f1218'/%3E%3Ctext x='3' y='11' font-family='IBM Plex Mono,Courier New,monospace' font-size='6' fill='%234a5568'%3E~$%3C/text%3E%3Ctext x='2' y='27' font-family='IBM Plex Mono,Courier New,monospace' font-size='19' font-weight='600' fill='%2322c55e'%3Ejf%3C/text%3E%3C/svg%3E" />
|
||||
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="64x64" href="/favicon-64x64.png" />
|
||||
<link rel="icon" type="image/png" sizes="256x256" href="/favicon-256x256.png" />
|
||||
<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=Press+Start+2P&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="title">
|
||||
<div class="off-white">
|
||||
K5BSS
|
||||
|
||||
<div class="layout">
|
||||
|
||||
<!-- ── Sidebar ── -->
|
||||
<aside>
|
||||
<img class="profile-photo" src="https://ki5bhv.com/photo/justin1.jpg" alt="Justin Frasier">
|
||||
<div class="profile-name">Justin Frasier</div>
|
||||
<div class="profile-title">Infrastructure Administrator</div>
|
||||
<div class="profile-loc">📍 Bossier City, LA</div>
|
||||
|
||||
<hr class="divider">
|
||||
|
||||
<nav>
|
||||
<a href="#about" class="active"><span class="dot"></span>about</a>
|
||||
<a href="#experience"><span class="dot"></span>experience</a>
|
||||
<a href="#skills"><span class="dot"></span>technical skills</a>
|
||||
<a href="#education"><span class="dot"></span>education</a>
|
||||
<a href="#certifications"><span class="dot"></span>certifications</a>
|
||||
<a href="#contact"><span class="dot"></span>contact</a>
|
||||
</nav>
|
||||
|
||||
<div class="socials">
|
||||
<a href="https://github.com/cerealkiller1918" target="_blank" rel="noopener noreferrer">github</a>
|
||||
<a href="https://www.linkedin.com/in/justin-frasier-bb29b8a9" target="_blank"
|
||||
rel="noopener noreferrer">linkedin</a>
|
||||
<a href="https://git.ki5bhv.com/justin" target="_blank" rel="noopener noreferrer">gitea</a>
|
||||
<a href="https://twitter.com/Cerealkiller191" target="_blank" rel="noopener noreferrer">twitter</a>
|
||||
<a href="https://www.facebook.com/cerealkiller1918" target="_blank" rel="noopener noreferrer">facebook</a>
|
||||
<a href="Justin_Frasier_Resume.pdf" target="_blank" rel="noopener noreferrer">resume</a>
|
||||
<a href="https://ki5bhv.com" target="_blank" rel="noopener noreferrer">ki5bhv.com</a>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<!-- ── Main ── -->
|
||||
<main>
|
||||
|
||||
<!-- About -->
|
||||
<section id="about">
|
||||
<div class="prompt"><span>~/k5bss</span> $ whoami</div>
|
||||
<h1>Justin<br>Frasier<span class="cursor"></span></h1>
|
||||
<p class="hero-sub">
|
||||
<strong>Infrastructure Administrator</strong> with a background in computer systems, infrastructure, and security.
|
||||
CompTIA A+ certified with hands-on experience in <strong>Azure Active Directory</strong>,
|
||||
Windows Server, networking, and self-hosted services.
|
||||
Amateur radio operator <strong>(K5BSS — General Class)</strong>.
|
||||
</p>
|
||||
<div class="tags">
|
||||
<span class="tag accent">CompTIA A+</span>
|
||||
<span class="tag accent">PCPro Certified</span>
|
||||
<span class="tag blue">Azure AD</span>
|
||||
<span class="tag blue">Docker</span>
|
||||
<span class="tag blue">Proxmox VE</span>
|
||||
<span class="tag blue">Web Design</span>
|
||||
<span class="tag">Self-hosted Infrastructure</span>
|
||||
<span class="tag">FCC K5BSS</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Experience -->
|
||||
<section id="experience">
|
||||
<h2><span class="hash">#</span>experience</h2>
|
||||
|
||||
<div class="exp-item">
|
||||
<div class="exp-role">Infrastructure Administrator</div>
|
||||
<div class="exp-meta">Aug 2026 — Present</div>
|
||||
<div class="exp-role">IT Support Analyst</div>
|
||||
<div class="exp-meta">Mar 2023 — Aug 2026</div>
|
||||
<div class="exp-company">Margaritaville Resort & Casino</div>
|
||||
<div class="exp-meta">Bossier City, LA</div>
|
||||
<ul class="exp-list">
|
||||
<li>Provide comprehensive Tier 1 and Tier 2 technical support across a large-scale resort and casino environment, diagnosing and resolving hardware, software, and network issues to minimize downtime and maintain seamless business operations.</li>
|
||||
<li>Deploy, configure, and maintain Windows 10 and Windows 11 workstations, managing domain enrollment through Active Directory to uphold a secure, well-organized network infrastructure.</li>
|
||||
<li>Administer Windows Server environments and Azure Active Directory, overseeing user provisioning, group policy management, and access controls to enforce security and compliance standards</li>
|
||||
<li>Diagnose and remediate wired and wireless connectivity issues — including network drops, Wi-Fi interference, and misconfigured settings — restoring reliable access for end users with minimal disruption.</li>
|
||||
<li>Install, terminate, and test network cabling across patch panels and keystones, ensuring robust and reliable infrastructure connectivity throughout the facility.</li>
|
||||
<li>Troubleshoot, repair, and replace hardware components — including RAM, HDDs, SSDs, power supplies, motherboards, and peripherals — returning systems to full operational status efficiently.</li>
|
||||
<li>Administer and support Office 365 applications — including Outlook, Teams, SharePoint, and OneDrive — enabling consistent productivity and collaboration across the organization.</li>
|
||||
<li>Provide end-to-end mobile device support for smartphones and tablets, handling configuration, corporate email integration, and secure connectivity to organizational systems.</li>
|
||||
<li>Manage the full help desk ticket lifecycle — logging, prioritizing, tracking, and resolving requests — ensuring timely support delivery and adherence to service-level expectations.</li>
|
||||
<li>Utilize PDQ Inventory to maintain up-to-date hardware and software asset tracking across all endpoints, enabling informed decision-making for procurement, audits, and lifecycle management.</li>
|
||||
<li>Leverage PDQ Deploy to automate software deployments and updates across the organization, reducing manual effort and ensuring consistent, timely rollouts enterprise wide.</li>
|
||||
<li>Converting PDQ Deploy & Invertory to PDQ Connent. Using PDQ Connent to manage and push packages and update to workstations and laptopps.</li>
|
||||
<li>Administer VMware vSphere environments, managing virtual machine provisioning, configuration, and maintenance to support reliable and scalable infrastructure operations.</li>
|
||||
<li>Manage and support the Cisco phone system, handling configuration, provisioning, and troubleshooting of IP phones to ensure reliable communication across the organization.</li>
|
||||
<li>Utilize TeamViewer to provide remote technical support, enabling efficient diagnosis and resolution of end-user issues without requiring an on-site visit.</li>
|
||||
<li>Monitor network infrastructure and system health using PRTG Network Monitor, proactively identifying and addressing performance issues and outages to maintain high availability.</li>
|
||||
<li>Manage SSL certificates across organizational systems, overseeing procurement, installation, renewal, and troubleshooting to ensure secure and uninterrupted encrypted communications.</li>
|
||||
<li>Deliver clear, patient, and customer-focused technical support to users of all skill levels, translating complex issues into understandable solutions to maximize satisfaction and reduce repeat incidents.</li>
|
||||
<li>Maintain accurate IT asset inventory, tracking hardware assignments, lifecycle status, and equipment locations to support informed procurement and audit readiness.</li>
|
||||
<li>Plan and execute equipment moves and workstation relocations with precision, coordinating logistics to ensure business continuity throughout transitions.</li>
|
||||
<li>Produce comprehensive technical documentation and troubleshooting guides, building an accessible knowledge base that improves team efficiency and accelerates issue resolution.</li>
|
||||
<li>Lead cross-functional IT initiatives, collaborating with department stakeholders to scope, plan, and deliver technology solutions on time and within budget.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="exp-item">
|
||||
<div class="exp-role">Security Supervisor</div>
|
||||
<div class="exp-company">Boomtown Casino & Hotel</div>
|
||||
<div class="exp-meta">Nov 2017 — Mar 2023 · Bossier City, LA</div>
|
||||
<ul class="exp-list">
|
||||
<li>Supervised facility-wide security operations, ensuring the safety of hundreds of guests and employees
|
||||
daily while serving as the primary point of contact for guests and staff.</li>
|
||||
<li>Conducted foot and vehicle patrols; monitored a multi-camera CCTV network and alarm systems to
|
||||
proactively identify risks and coordinate rapid incident response.</li>
|
||||
<li>Applied crisis management and de-escalation techniques to resolve high-pressure situations with minimal
|
||||
operational disruption.</li>
|
||||
<li>Trained and mentored security personnel on protocols, emergency response, and customer interaction
|
||||
standards.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="exp-item">
|
||||
<div class="exp-role">Software Development Intern</div>
|
||||
<div class="exp-company">xententLABS</div>
|
||||
<div class="exp-meta">Jan 2016 — May 2016 · Bossier City, LA</div>
|
||||
<ul class="exp-list">
|
||||
<li>Participated in full-cycle Agile development — sprint planning, stand-ups, and iterative releases —
|
||||
while managing source code repositories using version control best practices.</li>
|
||||
<li>Engineered cross-platform software solutions and collaborated on relational database design, applying
|
||||
normalization principles and optimized query structures.</li>
|
||||
<li>Developed test cases and executed functional tests, tracking defects through resolution to ensure
|
||||
stable, production-ready releases.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Skills -->
|
||||
<section id="skills">
|
||||
<h2><span class="hash">#</span>technical skills</h2>
|
||||
|
||||
<div class="skills-subheading">Languages</div>
|
||||
<div class="skills-grid">
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Python</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Java</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>C# / .NET</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>C++</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>C</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>JavaScript</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Node.js</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>HTML5 / CSS3</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Rust</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>SQL</div>
|
||||
</div>
|
||||
|
||||
<div class="skills-subheading">Operating Systems</div>
|
||||
<div class="skills-grid">
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Linux (Arch, Ubuntu)</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Windows Server</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Windows 10/11</div>
|
||||
</div>
|
||||
|
||||
<div class="skills-subheading">Hardware</div>
|
||||
<div class="skills-grid">
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>RAM</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>HDD/SSD</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Power Supplies</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Motherboards</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Peripherals</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Printers</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Laptop</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Desktops</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Component Diagnostics</div>
|
||||
</div>
|
||||
|
||||
<div class="skills-subheading">Tools & Platforms</div>
|
||||
<div class="skills-grid">
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Active Directory</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Azure AD</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Office 365</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Mobile Device Support</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Printer Support</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>System Imaging & Deployment</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Docker</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Proxmox VE</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>VMware vSphere</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Git</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Help Desk Ticketing Systems</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>PDQ Deploy</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>PDQ Inventory</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>PDQ Connent</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Cisco Systems</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>TeamViewer</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>PRTG Network Monitor</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Web Hosting</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Ansible</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Rubrik Backup</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Proxmox Backup Server</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Nginx Proxy Manager</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Nginx Web Server</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Windows server DNS</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Windows server DHCP</div>
|
||||
</div>
|
||||
|
||||
<div class="skills-subheading">Development IDEs</div>
|
||||
<div class="skills-grid">
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Vim</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>NeoVim</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>IntelliJ</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Visual Studio</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>VS Code</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Google Antigravity</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Unity</div>
|
||||
</div>
|
||||
|
||||
<div class="skills-subheading">Networking</div>
|
||||
<div class="skills-grid">
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>TCP/IP</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>DNS</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>DHCP</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>IP Addressing</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Wire & Wireless Connectivity</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Patch panels</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Keystones</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Switch Management</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Troubleshooting</div>
|
||||
</div>
|
||||
|
||||
<div class="skills-subheading">IT Support</div>
|
||||
<div class="skills-grid">
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Customer Service</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Issue Escalation</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Asset Tracking</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Equipment Moves</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>End-User Training</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Technical Documentation</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>De-escalation</div>
|
||||
</div>
|
||||
|
||||
<div class="skills-subheading">Security</div>
|
||||
<div class="skills-grid">
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Corporate Security</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>CCTV</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Physical Security</div>
|
||||
<div class="skill-cell"><span class="skill-icon">▸</span>Crisis Management</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- Education -->
|
||||
<section id="education">
|
||||
<h2><span class="hash">#</span>education</h2>
|
||||
|
||||
<div class="edu-card">
|
||||
<div class="edu-school">Bossier Parish Community College</div>
|
||||
<div class="edu-degree">A.A.S. Cyber Technology — Programmer-Analyst</div>
|
||||
<div class="edu-meta">2013 – 2016</div>
|
||||
<span class="edu-honor">Dean's List & Chancellor's List</span>
|
||||
<div class="tags" style="margin-top:0.8rem;">
|
||||
<span class="tag">C++ / Java / C#</span>
|
||||
<span class="tag">Web Design</span>
|
||||
<span class="tag">Database Coding</span>
|
||||
<span class="tag">Web App Dev</span>
|
||||
<span class="tag">Cyber Internship</span>
|
||||
<span class="tag">Phi Theta Kappa</span>
|
||||
<span class="tag">Cyber Club</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="intro">
|
||||
<div class="off-white">
|
||||
I am a ham radio operator.
|
||||
|
||||
<div class="edu-card">
|
||||
<div class="edu-school">Northwood High School</div>
|
||||
<div class="edu-meta">1999 – 2003</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Certifications -->
|
||||
<section id="certifications">
|
||||
<h2><span class="hash">#</span>certifications</h2>
|
||||
|
||||
<div class="cert-group">
|
||||
<div class="cert-group-title">Computer</div>
|
||||
<ul class="cert-list">
|
||||
<li>CompTIA A+ ce Certified</li>
|
||||
<li>PCPro Certified</li>
|
||||
<li>Technical Competency Area in Web Design — BPCC</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="cert-group">
|
||||
<div class="cert-group-title">Udemy</div>
|
||||
<ul class="cert-list">
|
||||
<li>Master Microsoft PowerShell</li>
|
||||
<li>PowerShell for Active Directory Administrators</li>
|
||||
<li>IT Troubleshooting Skill Training</li>
|
||||
<li>IT Help Desk Professional</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="cert-group">
|
||||
<div class="cert-group-title">Amateur Radio</div>
|
||||
<ul class="cert-list">
|
||||
<li>FCC License — Callsign: K5BSS | General Class</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="cert-group">
|
||||
<div class="cert-group-title">Locomotive</div>
|
||||
<ul class="cert-list">
|
||||
<li>LocoMotive Air Brake — Wabtec</li>
|
||||
<li>Dash 2 / GP 38 Static / GP 9 / SW 1200 Electrical — TTC</li>
|
||||
<li>EMD Locomotive Engines — Technical Training Consultants</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Contact -->
|
||||
<section id="contact">
|
||||
<h2><span class="hash">#</span>contact</h2>
|
||||
<div class="contact-grid">
|
||||
<div class="contact-item">
|
||||
<div class="contact-label">Email</div>
|
||||
<div class="contact-val"><a href="mailto:[email protected]">[email protected]</a></div>
|
||||
</div>
|
||||
<div class="contact-item">
|
||||
<div class="contact-label">Phone</div>
|
||||
<div class="contact-val"><a href="tel:13185641918">(318) 564-1918</a></div>
|
||||
</div>
|
||||
<div class="contact-item">
|
||||
<div class="contact-label">Location</div>
|
||||
<div class="contact-val">3243 Cottonwood St.<br>Bossier City, LA 71111</div>
|
||||
</div>
|
||||
<div class="contact-item">
|
||||
<div class="contact-label">GitHub</div>
|
||||
<div class="contact-val"><a href="https://github.com/cerealkiller1918" target="_blank"
|
||||
rel="noopener noreferrer">cerealkiller1918</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contact-item">
|
||||
<div class="contact-label">LinkedIn</div>
|
||||
<div class="contact-val"><a href="https://www.linkedin.com/in/justin-frasier-bb29b8a9" target="_blank"
|
||||
rel="noopener noreferrer">justin-frasier</a></div>
|
||||
</div>
|
||||
<div class="contact-item">
|
||||
<div class="contact-label">Self-hosted Git</div>
|
||||
<div class="contact-val"><a href="https://git.ki5bhv.com/justin" target="_blank"
|
||||
rel="noopener noreferrer">git.ki5bhv.com</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<span style="color:var(--accent)">$</span> site built by Justin Frasier · k5bss.com ·
|
||||
2026
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<script src="js/main.js" defer></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,23 @@
|
||||
// Highlight active nav link on scroll
|
||||
const sections = document.querySelectorAll('section[id]');
|
||||
const links = document.querySelectorAll('nav a');
|
||||
|
||||
const observer = new IntersectionObserver(entries => {
|
||||
entries.forEach(e => {
|
||||
if (e.isIntersecting) {
|
||||
links.forEach(l => l.classList.remove('active'));
|
||||
const active = document.querySelector(`nav a[href="#${e.target.id}"]`);
|
||||
if (active) active.classList.add('active');
|
||||
}
|
||||
});
|
||||
}, { threshold: 0.3 });
|
||||
|
||||
sections.forEach(s => observer.observe(s));
|
||||
|
||||
// Hide the profile photo if it fails to load
|
||||
const profilePhoto = document.querySelector('.profile-photo');
|
||||
if (profilePhoto) {
|
||||
profilePhoto.addEventListener('error', () => {
|
||||
profilePhoto.style.display = 'none';
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
Sitemap: https://k5bss.com/sitemap.xml
|
||||
@@ -0,0 +1,29 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
#Generated by https://github.com/gitaware/securitytxtgenerator
|
||||
|
||||
# If you would like to report a security issue, please contact us at:
|
||||
Contact: [email protected]
|
||||
Expires: 2027-04-20T01:14:00Z
|
||||
Preferred-Languages: en
|
||||
Canonical: https://k5bss.com/security.txt
|
||||
Encryption: https://k5bss.com/pgp-key.asc
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
wsFzBAEBCAAnBYJp5onuCZB2Xap8YgdeNhYhBK0QLg9LuG9EuLvfkHZdqnxi
|
||||
B142AAAlIw//Y//VEh32G+tXnamBIuYq4W+vdBlwZuKGeW/IwObedw89bGwo
|
||||
/xSPGWUh0mPKKLof1MtLWNObUUCBscRZiLArExFzw/OZy2J3VuAH5qBrl2am
|
||||
D8dnl/6CbqdrpEI3cinrzgDoa1Z4F15wF5lLNlvYHCGkXFIpNFsd8H6P9/UZ
|
||||
v0jM6l93wDWbEZR1rHIxvtoUQd8gfPwksGa+osj6QkpP7XBRRly6nAihk8u7
|
||||
r+aZ1Sh+YfWiVH966mxmV0x9N2ihYgYmwPMPUNCSRgpDZgM3EEKZWHryuPu2
|
||||
Sp5q3bxa6BahAEXFhYaJKinkL5O95vaxiJcsaqPRhlR2xHXLoQj9Ot5v5E9c
|
||||
uUc2P0v4M/VLFFTWwnu+3z72V/sj32biRJ70hvH/bb58oOm7YAcOCERyFsY+
|
||||
4Drcnt2Am7QDEojhdg3GYf9pJs0tsyvmTZsmpYN8pv3lfzUzEW2YUOdWjMOf
|
||||
nLmeqipVA0tSC3QhK3EMqbgtNpJqR/TpbfyWd9EFLS/Jc/kCkAbJlSDOi9ud
|
||||
FkbnWBMiTtSPOiDwWMswbOdMTwHu+GxnAbB5+lQghxuEOTTmOPvEQ6DtYhpn
|
||||
3+YIf0oDqeptjd+VE5Tx59CMV1RsZkbTVRJanBuLp339Kb/dfQi/G7mIkRne
|
||||
hxUZ/Nx9LjsFxlcJRLnAnmtr5qfHeamo7ME=
|
||||
=o+Va
|
||||
-----END PGP SIGNATURE-----
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
|
||||
<url>
|
||||
<loc>https://k5bss.com/</loc>
|
||||
<lastmod>2026-04-20</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://k5bss.com/k5bss.html</loc>
|
||||
<lastmod>2026-04-20</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
|
||||
</urlset>
|
||||