Skip to content

Commit 3d85661

Browse files
CopilotNotAwarCopilot
authored
Review and improve portfolio site: Fix critical bugs, enhance content, and optimize performance (#2)
* Initial plan * Fix CSS syntax errors and improve content Co-authored-by: NotAwar <[email protected]> * Improve resume structure, add navigation, and optimize JavaScript performance Co-authored-by: NotAwar <[email protected]> * Enhance speaking page with topic list and styling Co-authored-by: NotAwar <[email protected]> * Update _includes/head.html Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: NotAwar <[email protected]> Co-authored-by: Copilot <[email protected]>
1 parent 29024da commit 3d85661

File tree

7 files changed

+176
-36
lines changed

7 files changed

+176
-36
lines changed

_data/navigation.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
- name: Home
22
link: /
3+
- name: CV
4+
link: /cv/
35
- name: Socials
46
link: /socials/
57
- name: Events

_includes/head.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@
1818
<meta name="color-scheme" content="dark">
1919
<meta name="theme-color" content="#121212">
2020

21+
<!-- Accessibility -->
22+
2123
<!-- CSS -->
2224
<link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
25+
<link rel="preconnect" href="https://fonts.googleapis.com">
26+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
2327
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap">
2428

2529
<!-- Favicon -->

assets/css/style.scss

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ body {
142142
position: relative;
143143

144144
svg {
145-
fill: var (--text-primary);
145+
fill: var(--text-primary);
146146
}
147147
}
148148
}
@@ -274,7 +274,7 @@ a {
274274

275275
p {
276276
margin-bottom: 1.5rem;
277-
color: var (--text-secondary);
277+
color: var(--text-secondary);
278278
}
279279

280280
// Hero Section
@@ -713,7 +713,7 @@ p {
713713
background-color: var(--black-tertiary);
714714
padding: 30px;
715715
border-radius: 10px;
716-
box-shadow: 0 5px 15px var (--shadow-color);
716+
box-shadow: 0 5px 15px var(--shadow-color);
717717
text-align: center;
718718
transition: var(--transition);
719719
border: 1px solid var(--border-color);

assets/js/main.js

Lines changed: 58 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ document.addEventListener('DOMContentLoaded', function() {
8989
this.appendChild(ripple);
9090

9191
setTimeout(() => {
92-
ripple.remove();
92+
if (ripple.parentNode) {
93+
ripple.remove();
94+
}
9395
}, 600);
9496
});
9597
});
@@ -169,7 +171,9 @@ document.addEventListener('DOMContentLoaded', function() {
169171
document.body.appendChild(trail);
170172

171173
setTimeout(() => {
172-
trail.remove();
174+
if (trail.parentNode) {
175+
trail.remove();
176+
}
173177
}, 800);
174178
}
175179

@@ -197,7 +201,9 @@ document.addEventListener('DOMContentLoaded', function() {
197201
}
198202

199203
setTimeout(() => {
200-
particleContainer.remove();
204+
if (particleContainer.parentNode) {
205+
particleContainer.remove();
206+
}
201207
}, 1500);
202208
}
203209

@@ -237,7 +243,11 @@ document.addEventListener('DOMContentLoaded', function() {
237243
particle.style.animation = 'particleFloat 3s ease-out forwards';
238244
document.body.appendChild(particle);
239245

240-
setTimeout(() => particle.remove(), 3000);
246+
setTimeout(() => {
247+
if (particle.parentNode) {
248+
particle.remove();
249+
}
250+
}, 3000);
241251
}, i * 50);
242252
}
243253

@@ -263,7 +273,7 @@ document.addEventListener('DOMContentLoaded', function() {
263273
`);
264274
});
265275

266-
// CSS for ripple effect
276+
// CSS for ripple effect and animations
267277
const style = document.createElement('style');
268278
style.textContent = `
269279
.btn {
@@ -280,33 +290,54 @@ style.textContent = `
280290
pointer-events: none;
281291
}
282292
283-
// Initialize typing animation for hero subtitle
284-
function initTypewriter() {
285-
const typewriterElement = document.getElementById('typewriter');
286-
if (!typewriterElement) return;
287-
288-
// Get the title from the data attribute or fallback
289-
const text = typewriterElement.getAttribute('data-text') || "Senior Cloud Engineer & Cloud Native Competency Lead";
290-
291-
// Set initial state
292-
typewriterElement.textContent = '';
293-
typewriterElement.style.width = '0';
294-
295-
// Add typing class after a short delay to prevent layout shift
296-
setTimeout(() => {
297-
typewriterElement.textContent = text;
298-
typewriterElement.classList.add('typing');
299-
}, 1000);
300-
}
301-
302-
// Initialize typewriter effect
303-
initTypewriter();
304-
305293
@keyframes ripple-animation {
306294
to {
307295
transform: scale(4);
308296
opacity: 0;
309297
}
310298
}
299+
300+
@keyframes particleFloat {
301+
to {
302+
transform: translateY(-100px);
303+
opacity: 0;
304+
}
305+
}
306+
307+
.cursor-trail {
308+
position: fixed;
309+
width: 6px;
310+
height: 6px;
311+
background: var(--gold-primary);
312+
border-radius: 50%;
313+
pointer-events: none;
314+
z-index: 9999;
315+
animation: trailFade 0.8s ease-out forwards;
316+
}
317+
318+
@keyframes trailFade {
319+
to {
320+
opacity: 0;
321+
transform: scale(0);
322+
}
323+
}
324+
325+
.particle {
326+
position: absolute;
327+
width: 3px;
328+
height: 3px;
329+
background: var(--gold-primary);
330+
border-radius: 50%;
331+
animation: particleFloat 1.5s ease-out forwards;
332+
}
333+
334+
.konami-activated {
335+
animation: rainbow 2s linear infinite;
336+
}
337+
338+
@keyframes rainbow {
339+
0% { filter: hue-rotate(0deg); }
340+
100% { filter: hue-rotate(360deg); }
341+
}
311342
`;
312343
document.head.appendChild(style);

events/speaking.html

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,70 @@
55
---
66

77
<div class="container speaking-page">
8-
<h1>Want to listen to me yap?</h1>
8+
<h1>Speaking Engagements</h1>
99

10-
<p>Check out where I've been speaking and where you can catch me next!</p>
10+
<p>I enjoy sharing knowledge about cloud-native technologies, Kubernetes, and DevOps practices. Here's where I've spoken and upcoming events where you can catch my talks!</p>
11+
12+
<div class="speaking-topics">
13+
<h3>Speaking Topics</h3>
14+
<ul>
15+
<li>🚀 Cloud-Native Architecture & Best Practices</li>
16+
<li>☸️ Kubernetes Implementation & Management</li>
17+
<li>🛠️ DevOps Automation & CI/CD Pipelines</li>
18+
<li>☁️ Azure Infrastructure & Cloud Migration</li>
19+
<li>📊 Monitoring & Observability in Cloud Environments</li>
20+
</ul>
21+
</div>
1122

1223
<div class="sessionize-events-container">
1324
<div id="sessionize-events">
1425
<script type="text/javascript" src="https://sessionize.com/api/speaker/sessions/8zkgq232gg/1x0x3fb393x"></script>
1526
</div>
1627
</div>
1728
</div>
29+
30+
<style>
31+
.speaking-page {
32+
padding: 40px 0;
33+
min-height: 60vh;
34+
}
35+
36+
.speaking-topics {
37+
background: var(--black-secondary);
38+
border-radius: 10px;
39+
padding: 30px;
40+
margin: 40px 0;
41+
border: 1px solid var(--border-color);
42+
}
43+
44+
.speaking-topics h3 {
45+
color: var(--gold-primary);
46+
margin: 0 0 20px;
47+
font-size: 1.4rem;
48+
}
49+
50+
.speaking-topics ul {
51+
list-style: none;
52+
padding: 0;
53+
margin: 0;
54+
}
55+
56+
.speaking-topics li {
57+
padding: 10px 0;
58+
border-bottom: 1px solid var(--border-color);
59+
color: var(--text-secondary);
60+
font-size: 1.1rem;
61+
}
62+
63+
.speaking-topics li:last-child {
64+
border-bottom: none;
65+
}
66+
67+
.sessionize-events-container {
68+
margin-top: 40px;
69+
padding: 30px;
70+
background: var(--black-secondary);
71+
border-radius: 10px;
72+
border: 1px solid var(--border-color);
73+
}
74+
</style>

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ <h2 class="hero-subtitle" id="typewriter" data-text="{{ site.data.profile.headli
1919

2020
<section class="speaking-preview">
2121
<h2>Upcoming Events</h2>
22-
<p>I regularly speak at conferences and events about [your topics]. Check out my <a href="/speaking/">speaking page</a> for a complete list.</p>
22+
<p>I regularly speak at conferences and events about cloud-native technologies, Kubernetes, and DevOps practices. Check out my <a href="/speaking/">speaking page</a> for a complete list.</p>
2323

2424
<div class="sessionize-events-container">
2525
<script type="text/javascript" src="https://sessionize.com/api/speaker/sessions/8zkgq232gg/0x1x3fb393x"></script>

resume.html

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,26 @@ <h2>Professional Experience</h2>
1818
{% for job in site.data.profile.experience %}
1919
<div class="experience-item">
2020
<div class="experience-header">
21-
<h3>{{ job.title }}</h3>
22-
<span class="date">{{ job.startDate }} - {{ job.endDate }}</span>
21+
<h3>{{ job.position }}</h3>
22+
<span class="date">{{ job.period }}</span>
2323
</div>
24-
<p class="company">{{ job.company }}{% if job.location %}, {{ job.location }}{% endif %}</p>
24+
<p class="company">{{ job.company }}</p>
2525
<p class="description">{{ job.description }}</p>
26+
{% if job.achievements %}
27+
<ul class="achievements">
28+
{% for achievement in job.achievements %}
29+
<li>{{ achievement }}</li>
30+
{% endfor %}
31+
</ul>
32+
{% endif %}
33+
{% if job.technologies %}
34+
<div class="technologies">
35+
<strong>Technologies:</strong>
36+
{% for tech in job.technologies %}
37+
<span class="tech-tag">{{ tech }}</span>
38+
{% endfor %}
39+
</div>
40+
{% endif %}
2641
</div>
2742
{% endfor %}
2843
</section>
@@ -182,6 +197,37 @@ <h2>Current Focus</h2>
182197
margin: 10px 0 0;
183198
}
184199

200+
.achievements {
201+
margin: 15px 0;
202+
padding-left: 20px;
203+
}
204+
205+
.achievements li {
206+
color: var(--text-secondary);
207+
margin: 5px 0;
208+
line-height: 1.5;
209+
}
210+
211+
.technologies {
212+
margin: 15px 0 0;
213+
}
214+
215+
.technologies strong {
216+
color: var(--text-primary);
217+
margin-right: 10px;
218+
}
219+
220+
.tech-tag {
221+
background: linear-gradient(135deg, var(--gold-primary), var(--gold-secondary));
222+
color: var(--black-primary);
223+
padding: 4px 8px;
224+
border-radius: 12px;
225+
font-size: 0.8rem;
226+
font-weight: 600;
227+
margin: 0 5px 5px 0;
228+
display: inline-block;
229+
}
230+
185231
.skills-categories {
186232
display: grid;
187233
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));

0 commit comments

Comments
 (0)