Skip to content

Commit 92b695c

Browse files
committed
feat: add animated network canvas background and update teaching section layout
1 parent 497bb05 commit 92b695c

3 files changed

Lines changed: 96 additions & 9 deletions

File tree

index.html

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
</script>
6767
</head>
6868
<body>
69+
<canvas id="network-canvas" aria-hidden="true"></canvas>
6970
<div class="bg-shape shape-1" aria-hidden="true"></div>
7071
<div class="bg-shape shape-2" aria-hidden="true"></div>
7172
<div class="cyber-grid-overlay" aria-hidden="true"></div>
@@ -86,6 +87,7 @@
8687
<a class="nav-link" href="#education">Education</a>
8788
<a class="nav-link" href="#publications">Publications</a>
8889
<a class="nav-link" href="#experience">Experience</a>
90+
<a class="nav-link" href="#teaching">Teaching</a>
8991
<a class="nav-link" href="#skills">Skills</a>
9092
<a class="nav-link" href="#contact">Contact</a>
9193
</div>
@@ -175,17 +177,17 @@ <h2>Education</h2>
175177
<article class="mini-card">
176178
<h3>Doctor of Philosophy (PhD) in Computing</h3>
177179
<p class="meta">Queen's University, Kingston, ON, Canada</p>
178-
<p>September 2025 - Present</p>
180+
<p>Sep 2025 Present</p>
179181
</article>
180182
<article class="mini-card">
181183
<h3>Master of Science (MSc) in Computing</h3>
182184
<p class="meta">Queen's University, Kingston, ON, Canada</p>
183-
<p>September 2024 - August 2025 | CGPA: 4.24/4.30</p>
185+
<p>Sep 2024 – Aug 2025 | CGPA: 4.24/4.30</p>
184186
</article>
185187
<article class="mini-card">
186188
<h3>Bachelor of Science (BSc) in Computer Science and Engineering</h3>
187189
<p class="meta">Metropolitan University, Sylhet, Bangladesh</p>
188-
<p>September 2015 - August 2019 | CGPA: 3.90/4.00</p>
190+
<p>Sep 2015 – Aug 2019 | CGPA: 3.90/4.00</p>
189191
</article>
190192
</div>
191193
</div>
@@ -203,7 +205,7 @@ <h3>Personalized Mental Health Assistance with Large Language Models</h3>
203205
<article class="card publication-card">
204206
<p class="year">2024</p>
205207
<h3>LLM-Therapist: A RAG-Based Multimodal Behavioral Therapist as Healthcare Assistant</h3>
206-
<p>IEEE Global Communications Conference (GLOBECOM)</p>
208+
<p>IEEE Global Communications Conference (GLOBECOM) 2024</p>
207209
<a href="https://ieeexplore.ieee.org/document/10901139" target="_blank" rel="noopener noreferrer">Read Publication</a>
208210
</article>
209211
<article class="card publication-card">
@@ -282,7 +284,7 @@ <h3>Full-Stack Engineer</h3>
282284
</div>
283285
</section>
284286

285-
<section class="section reveal teaching-section">
287+
<section id="teaching" class="section reveal teaching-section">
286288
<h2>Teaching Experience</h2>
287289
<div class="grid cards teaching-grid">
288290
<article class="card teaching-card">
@@ -296,7 +298,7 @@ <h3>CISC 886 – Cloud Computing</h3>
296298
</article>
297299
<article class="card teaching-card">
298300
<div class="teaching-top">
299-
<h3>CISC 498 - Information Technology Project</h3>
301+
<h3>CISC 498 Information Technology Project</h3>
300302
<span class="term-badge">Sep 2025 - Apr 2026</span>
301303
</div>
302304
<p class="meta">Queen's University, Kingston, ON</p>
@@ -305,7 +307,7 @@ <h3>CISC 498 - Information Technology Project</h3>
305307
</article>
306308
<article class="card teaching-card">
307309
<div class="teaching-top">
308-
<h3>CISC 327 - Software Quality Assurance</h3>
310+
<h3>CISC 327 Software Quality Assurance</h3>
309311
<span class="term-badge">Sep 2025 - Dec 2025</span>
310312
</div>
311313
<p class="meta">Queen's University, Kingston, ON</p>
@@ -314,7 +316,7 @@ <h3>CISC 327 - Software Quality Assurance</h3>
314316
</article>
315317
<article class="card teaching-card">
316318
<div class="teaching-top">
317-
<h3>CISC 324 - Operating Systems</h3>
319+
<h3>CISC 324 Operating Systems</h3>
318320
<span class="term-badge">Jan 2025 - Apr 2025</span>
319321
</div>
320322
<p class="meta">Queen's University, Kingston, ON</p>
@@ -323,7 +325,7 @@ <h3>CISC 324 - Operating Systems</h3>
323325
</article>
324326
<article class="card teaching-card">
325327
<div class="teaching-top">
326-
<h3>CISC 327 - Software Quality Assurance</h3>
328+
<h3>CISC 327 Software Quality Assurance</h3>
327329
<span class="term-badge">Sep 2024 - Dec 2024</span>
328330
</div>
329331
<p class="meta">Queen's University, Kingston, ON</p>

script.js

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,78 @@
1+
(function () {
2+
const canvas = document.getElementById('network-canvas');
3+
if (!canvas || window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
4+
5+
const ctx = canvas.getContext('2d');
6+
const COLORS = ['#119f5d', '#0f766e', '#2563eb'];
7+
const CONNECTION_DIST = 135;
8+
const SPEED = 0.28;
9+
10+
let nodes = [], width = 0, height = 0, raf;
11+
12+
function resize() {
13+
width = canvas.width = window.innerWidth;
14+
height = canvas.height = window.innerHeight;
15+
}
16+
17+
function makeNode() {
18+
return {
19+
x: Math.random() * width,
20+
y: Math.random() * height,
21+
vx: (Math.random() - 0.5) * SPEED * 2,
22+
vy: (Math.random() - 0.5) * SPEED * 2,
23+
r: 1.6 + Math.random() * 1.4,
24+
color: COLORS[Math.floor(Math.random() * COLORS.length)],
25+
};
26+
}
27+
28+
function init() {
29+
resize();
30+
const count = window.innerWidth < 768 ? 36 : 62;
31+
nodes = Array.from({ length: count }, makeNode);
32+
}
33+
34+
function draw() {
35+
ctx.clearRect(0, 0, width, height);
36+
37+
for (let i = 0; i < nodes.length; i++) {
38+
for (let j = i + 1; j < nodes.length; j++) {
39+
const dx = nodes[i].x - nodes[j].x;
40+
const dy = nodes[i].y - nodes[j].y;
41+
const d = Math.sqrt(dx * dx + dy * dy);
42+
if (d < CONNECTION_DIST) {
43+
ctx.beginPath();
44+
ctx.moveTo(nodes[i].x, nodes[i].y);
45+
ctx.lineTo(nodes[j].x, nodes[j].y);
46+
ctx.strokeStyle = `rgba(17,159,93,${(1 - d / CONNECTION_DIST) * 0.22})`;
47+
ctx.lineWidth = 0.9;
48+
ctx.stroke();
49+
}
50+
}
51+
}
52+
53+
nodes.forEach((n) => {
54+
ctx.beginPath();
55+
ctx.arc(n.x, n.y, n.r, 0, Math.PI * 2);
56+
ctx.fillStyle = n.color + 'aa';
57+
ctx.fill();
58+
59+
n.x += n.vx;
60+
n.y += n.vy;
61+
if (n.x < -10) n.x = width + 10;
62+
else if (n.x > width + 10) n.x = -10;
63+
if (n.y < -10) n.y = height + 10;
64+
else if (n.y > height + 10) n.y = -10;
65+
});
66+
67+
raf = requestAnimationFrame(draw);
68+
}
69+
70+
window.addEventListener('resize', () => { resize(); });
71+
72+
init();
73+
draw();
74+
})();
75+
176
const reveals = document.querySelectorAll('.reveal');
277
const navLinks = document.querySelectorAll('.nav-link');
378
const sections = [...document.querySelectorAll('main section[id]')];

styles.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,16 @@ article.card {
598598
font-size: 0.92rem;
599599
}
600600

601+
#network-canvas {
602+
position: fixed;
603+
inset: 0;
604+
width: 100%;
605+
height: 100%;
606+
pointer-events: none;
607+
z-index: 0;
608+
opacity: 0.65;
609+
}
610+
601611
.bg-shape {
602612
position: fixed;
603613
border-radius: 999px;

0 commit comments

Comments
 (0)