Compare commits

...
Author SHA1 Message Date
JustinandClaude Sonnet 5 c7a10ae719 Fix CSP violations from Cloudflare Radar scan
Two duplicate <meta> CSP tags in index.html conflicted with the
_headers HTTP header, and browsers enforce the intersection of all
active policies. That blocked the profile photo, the inline nav-
highlight script, and the Cloudflare Insights beacon.

Consolidate to a single CSP in _headers, allow the actual external
resources the page needs (ki5bhv.com image, cloudflareinsights.com
beacon), and move the inline script/onerror handler into js/main.js
so script-src no longer needs 'unsafe-inline'.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-30 16:28:33 -05:00
Justin 5d6eae87bf fixing issues with cloudflare 2026-08-30 16:17:44 -05:00
Justin a3b77de5aa added font to css 2026-08-30 16:06:07 -05:00
Justin ae21ab1be9 added the font into the html 2026-08-30 15:44:27 -05:00
Justin 1d9ec33761 added the font 2026-08-30 15:40:56 -05:00
Justin c74589555b header 2026-08-30 15:11:28 -05:00
Justin 2f244ea46d added PDQ Connent to job 2026-08-30 09:15:18 -05:00
Justin d89065ca4d added skilles that was was missing 2026-08-30 09:05:20 -05:00
Justin af7db894b3 fixed some spelling issues 2026-08-29 18:54:46 -05:00
Justin 617838a1e1 test 2026-08-29 09:57:26 -05:00
Justin Frasier 89063938d7 test 2026-08-29 09:52:07 -05:00
Justin 5ad5fd720d fix title change 2026-08-27 20:48:25 -05:00
Justin 24ad1a1097 change the title 2026-08-27 20:45:45 -05:00
Justin 1927c1e85f moved the date and local 2026-08-27 20:27:14 -05:00
Justin 5029d3ca76 move the dates 2026-08-27 20:23:29 -05:00
Justin 8ff376324c added Infrastructure Admin job 2026-08-27 20:12:01 -05:00
Justin Frasier ab6e0b8090 update 2026-05-02 23:52:40 -05:00
Justin Frasier 515af2a4d3 updated 2026-05-02 23:50:15 -05:00
Justin Frasier 2d8b0c6e8f update 2026-04-27 19:12:07 -05:00
JustinandClaude Sonnet 4.6 97de4bca88 fix: add favicon links and fonts.gstatic.com preconnect to both pages
Adds explicit favicon link tags for all sizes and the missing
fonts.gstatic.com crossorigin preconnect required by Google Fonts
for optimal font load performance.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-04-20 20:09:36 -05:00
Justin b5cffd33c6 docs: update Justin Frasier resume PDF 2026-04-14 09:46:21 -05:00
Justin 9b6e3a7b2b docs: update README to reflect expansion to a two-page site including a ham radio dashboard 2026-04-14 09:11:18 -05:00
Justin 1c90c97ed9 feat: add initial K5BSS ham radio station dashboard and logbook interface 2026-04-13 23:52:10 -05:00
Justin 8506a96ee7 feat: add resume download link and update professional experience and skills sections 2026-04-13 22:37:43 -05:00
JustinandClaude Sonnet 4.6 84e62edb92 feat: improve responsive design with tablet and small-screen breakpoints
Add 1024px tablet breakpoint with narrower sidebar, expand mobile styles
with horizontal nav reflow, and add 480px small-phone breakpoint with
tighter spacing. Document all three breakpoints in README.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-04-13 17:09:46 -05:00
Justin 99f88d4bc6 fix: add security attributes to social links, correct typos in skills list, and update copyright year 2026-04-13 16:11:56 -05:00
Justin 7023b402a6 feat: add project README and improve index.html security and content accuracy 2026-04-13 16:11:43 -05:00
Justin 4938b03294 feat: implement responsive site styling and add web design tag to index 2026-04-13 15:59:39 -05:00
Justin Frasier 51e3298b12 <?php 2026-04-13 15:20:44 -05:00
Justin 387af6347c Update to be anupdate resume 2026-04-13 15:18:12 -05:00
Justin Frasier 7561b6eafd Fixed the issue with the body 2025-11-13 10:47:36 -06:00
19 changed files with 2193 additions and 46 deletions

No files matched your search

Executable
+1
View File
@@ -0,0 +1 @@
./vs
BIN
View File
Binary file not shown.
Regular → Executable
+68
View File
@@ -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.
+9
View File
@@ -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
-25
View File
@@ -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 */
}
Executable
+533
View File
@@ -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);
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 473 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Executable
+5
View File
@@ -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');
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 MiB

Regular → Executable
+370 -21
View File
@@ -1,24 +1,373 @@
<html>
<head>
<meta charset="UTF-8">
<title>K5BSS</title>
<link type="text/css" rel="stylesheet" href="css/main.css">
<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">
</head>
<body>
<div class="title">
<div class="off-white">
K5BSS
</div>
</div>
<div class="intro">
<div class="off-white">
I am a ham radio operator.
</div>
</div>
</body>
<!DOCTYPE html>
<html lang="en">
<head>
<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 rel="stylesheet" href="css/style.css">
</head>
<body>
<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 &amp; 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 &amp; Hotel</div>
<div class="exp-meta">Nov 2017 — Mar 2023 &nbsp;·&nbsp; 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 &nbsp;·&nbsp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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="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 &nbsp;|&nbsp; 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 &nbsp;·&nbsp; k5bss.com &nbsp;·&nbsp;
2026
</footer>
</main>
</div>
<script src="js/main.js" defer></script>
</body>
</html>
+23
View File
@@ -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';
});
}
Executable
+1081
View File
File diff suppressed because it is too large. Load diff
+4
View File
@@ -0,0 +1,4 @@
User-agent: *
Allow: /
Sitemap: https://k5bss.com/sitemap.xml
Executable
+29
View File
@@ -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-----
Executable
+18
View File
@@ -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>