Skip to content

Commit e96f3d7

Browse files
refactor: move avatar to assets, rename, and remove fallback data
1 parent d7e7c18 commit e96f3d7

5 files changed

Lines changed: 22 additions & 82 deletions

File tree

assets/profile.png

-626 KB
Binary file not shown.

Gemini_Generated_Image_97mvmi97mvmi97mv.jpeg renamed to assets/profile_img.jpeg

File renamed without changes.

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ <h2 class="hero-subtitle" id="hero-title">Senior Software & Systems Engineer</h2
8686
</div>
8787

8888
<div class="avatar-card">
89-
<img src="Gemini_Generated_Image_97mvmi97mvmi97mv.jpeg" alt="Bill Caffery" id="hero-avatar" class="avatar-image">
89+
<img src="assets/profile_img.jpeg" alt="Bill Caffery" id="hero-avatar" class="avatar-image">
9090
</div>
9191
</div>
9292
</div>

js/app.js

Lines changed: 20 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,28 @@ document.addEventListener('DOMContentLoaded', async () => {
77

88
try {
99
const response = await fetch('resume.yaml');
10-
if (response.ok) {
11-
const yamlText = await response.text();
12-
if (window.jsyaml) {
13-
resumeData = jsyaml.load(yamlText);
14-
}
10+
if (!response.ok) {
11+
throw new Error(`Failed to fetch setup/config file: ${response.status} ${response.statusText}`);
12+
}
13+
const yamlText = await response.text();
14+
if (!window.jsyaml) {
15+
throw new Error("jsyaml library is not available.");
16+
}
17+
resumeData = jsyaml.load(yamlText);
18+
if (!resumeData) {
19+
throw new Error("Parsed resume data is empty.");
1520
}
1621
} catch (err) {
17-
console.warn('Could not load resume.yaml live, using fallback data.', err);
18-
}
19-
20-
// Fallback data if YAML fetch is unavailable
21-
if (!resumeData) {
22-
resumeData = getFallbackData();
22+
console.error('Critical Error loading resume.yaml:', err);
23+
document.body.innerHTML = `
24+
<div style="display:flex; justify-content:center; align-items:center; height:100vh; flex-direction:column; text-align:center; padding:2rem;">
25+
<h1 style="color:#ff003c; margin-bottom:1rem;">Error Loading Profile</h1>
26+
<p style="color:var(--text-secondary); max-width:500px;">
27+
Could not load or parse the required <code>resume.yaml</code> configuration file. <br/><br/>
28+
Please ensure the file exists and contains valid YAML formatting.
29+
</p>
30+
</div>`;
31+
return;
2332
}
2433

2534
// Render Page Sections
@@ -339,72 +348,3 @@ function showToast(message) {
339348
toast.classList.remove('show');
340349
}, 4000);
341350
}
342-
343-
function getFallbackData() {
344-
return {
345-
personal: {
346-
name: "Bill Caffery",
347-
title: "Senior Software & Systems Engineer",
348-
tagline: "Architecting resilient web applications, cloud infrastructure, and intelligent developer tools.",
349-
bio: "Passionate software engineer with over 8 years of experience building scalable web solutions, distributed backend services, and high-performance frontend interfaces.",
350-
email: "bill.caffery@example.com",
351-
github: "https://github.com/billythakidd04",
352-
avatar: "assets/profile.png"
353-
},
354-
stats: [
355-
{ label: "Years Experience", value: "8+" },
356-
{ label: "Production Deployments", value: "150+" },
357-
{ label: "GitHub Contributions", value: "2.4k+" },
358-
{ label: "Uptime SLA", value: "99.99%" }
359-
],
360-
skills: [
361-
{
362-
category: "Frontend & UI",
363-
items: [
364-
{ name: "HTML5 / CSS3 / Modern Web APIs", level: 95 },
365-
{ name: "JavaScript (ESNext) / TypeScript", level: 92 },
366-
{ name: "React / Next.js", level: 88 }
367-
]
368-
},
369-
{
370-
category: "Backend & Cloud",
371-
items: [
372-
{ name: "Node.js / Express / Python", level: 90 },
373-
{ name: "RESTful APIs / WebSockets", level: 88 },
374-
{ name: "Docker / CI/CD", level: 86 }
375-
]
376-
}
377-
],
378-
experience: [
379-
{
380-
company: "Apex Innovations",
381-
title: "Senior Full Stack Engineer",
382-
period: "2023 - Present",
383-
location: "Remote",
384-
summary: "Leading technical development of high-throughput SaaS web applications and cloud infrastructure.",
385-
achievements: [
386-
"Architected real-time event streaming pipeline processing 5M daily events.",
387-
"Spearheaded frontend migration optimizing LCP by 45%."
388-
],
389-
technologies: ["Node.js", "TypeScript", "React", "Docker"]
390-
}
391-
],
392-
projects: [
393-
{
394-
id: "p1",
395-
title: "Neurolytics Dashboard",
396-
category: "Fullstack",
397-
summary: "Real-time analytics platform featuring dark glassmorphism cards and live streams.",
398-
image: "assets/project1.png",
399-
tags: ["JavaScript", "WebSockets", "Node.js"],
400-
github: "https://github.com/billythakidd04"
401-
}
402-
],
403-
education: [
404-
{ degree: "B.S. Computer Science", institution: "State University", year: "2018", details: "Distributed Systems" }
405-
],
406-
certifications: [
407-
{ name: "AWS Solutions Architect", issuer: "AWS", year: "2023" }
408-
]
409-
};
410-
}

resume.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ personal:
1010
phone: "716-912-1812"
1111
location: "West Seneca, NY (Available for remote work only)"
1212
github: "https://github.com/billythakidd04"
13-
avatar: "Gemini_Generated_Image_97mvmi97mvmi97mv.jpeg"
13+
avatar: "assets/profile_img.jpeg"
1414
career_start_year: 2012
1515
resume_pdf_url: "#"
1616

0 commit comments

Comments
 (0)