Update index.html
Browse files- index.html +265 -264
index.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
<!DOCTYPE html>
|
| 2 |
-
<html lang="en">
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
@@ -10,6 +10,7 @@
|
|
| 10 |
<body>
|
| 11 |
<div class="mesh-bg"></div>
|
| 12 |
<div class="grid-bg"></div>
|
|
|
|
| 13 |
|
| 14 |
<!-- SVG SPRITES -->
|
| 15 |
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
|
|
@@ -27,7 +28,6 @@
|
|
| 27 |
<symbol id="i-book" viewBox="0 0 24 24"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/></symbol>
|
| 28 |
<symbol id="i-pin" viewBox="0 0 24 24"><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z"/><circle cx="12" cy="10" r="3"/></symbol>
|
| 29 |
<symbol id="i-link" viewBox="0 0 24 24"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></symbol>
|
| 30 |
-
<symbol id="i-alert" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></symbol>
|
| 31 |
<symbol id="i-brain" viewBox="0 0 24 24"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"/><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"/><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"/></symbol>
|
| 32 |
<symbol id="i-db" viewBox="0 0 24 24"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5V19A9 3 0 0 0 21 19V5"/><path d="M3 12A9 3 0 0 0 21 12"/></symbol>
|
| 33 |
<symbol id="i-layout" viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2"/><line x1="3" y1="9" x2="21" y2="9"/><line x1="9" y1="21" x2="9" y2="9"/></symbol>
|
|
@@ -37,6 +37,18 @@
|
|
| 37 |
<symbol id="i-cloud" viewBox="0 0 24 24"><path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/></symbol>
|
| 38 |
<symbol id="i-download" viewBox="0 0 24 24"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></symbol>
|
| 39 |
<symbol id="i-users" viewBox="0 0 24 24"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></symbol>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
</svg>
|
| 41 |
|
| 42 |
<!-- NAV -->
|
|
@@ -48,18 +60,28 @@
|
|
| 48 |
</a>
|
| 49 |
<div class="flex items-center gap-1 md-hide" id="nav-links">
|
| 50 |
<a href="#home" class="nav-link">Home</a>
|
| 51 |
-
<a href="#
|
|
|
|
| 52 |
<a href="#github" class="nav-link">GitHub</a>
|
|
|
|
| 53 |
<a href="#contact" class="nav-link">Contact</a>
|
| 54 |
</div>
|
| 55 |
-
<
|
| 56 |
-
<
|
| 57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
</div>
|
| 59 |
<div id="mobile-menu" class="mobile-menu hidden glass">
|
| 60 |
<a href="#home">Home</a>
|
|
|
|
| 61 |
<a href="#huggingface">Hugging Face</a>
|
| 62 |
<a href="#github">GitHub</a>
|
|
|
|
| 63 |
<a href="#contact">Contact</a>
|
| 64 |
</div>
|
| 65 |
</nav>
|
|
@@ -68,16 +90,16 @@
|
|
| 68 |
<section id="home" style="min-height:100vh;display:flex;align-items:center;justify-content:center;padding-top:80px">
|
| 69 |
<div class="container text-center">
|
| 70 |
<div class="fade-up" style="animation-delay:.1s">
|
| 71 |
-
<span style="display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:9999px;border:1px solid rgba(74,222,128,.2);font-size:.875rem;color
|
| 72 |
<span class="pulse" style="width:8px;height:8px;background:#4ade80;border-radius:50%;display:inline-block"></span>
|
| 73 |
Available for Collaboration
|
| 74 |
</span>
|
| 75 |
</div>
|
| 76 |
<h1 class="fade-up" style="animation-delay:.2s">
|
| 77 |
-
<span class="hero-title" style="display:block;font-size:clamp(2.5rem,8vw,5rem);font-weight:800;
|
| 78 |
<span class="hero-sub mono cursor gradient-text" id="typewriter" style="display:block;font-size:clamp(2rem,6vw,4rem);font-weight:700;margin-top:.25rem"></span>
|
| 79 |
</h1>
|
| 80 |
-
<p class="fade-up" style="animation-delay:.35s;font-size:clamp(1rem,2vw,1.25rem);color
|
| 81 |
Building the future with AI and code. Passionate about machine learning, open-source, and creating impactful solutions.
|
| 82 |
</p>
|
| 83 |
<div class="flex flex-wrap justify-center gap-3 fade-up" style="animation-delay:.5s">
|
|
@@ -88,28 +110,11 @@
|
|
| 88 |
<svg class="icon"><use href="#i-github"/></svg> GitHub
|
| 89 |
</a>
|
| 90 |
</div>
|
| 91 |
-
|
| 92 |
<div class="grid grid-4 gap-3 fade-up" style="animation-delay:.65s;max-width:700px;margin:5rem auto 0">
|
| 93 |
-
<div class="card glow-card stat">
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
</div>
|
| 98 |
-
<div class="card glow-card stat">
|
| 99 |
-
<div class="stat-icon" style="color:#60a5fa"><svg class="icon icon-lg"><use href="#i-branch"/></svg></div>
|
| 100 |
-
<div class="stat-num" id="s-repos">5+</div>
|
| 101 |
-
<div class="stat-label">Repositories</div>
|
| 102 |
-
</div>
|
| 103 |
-
<div class="card glow-card stat">
|
| 104 |
-
<div class="stat-icon" style="color:#34d399"><svg class="icon icon-lg"><use href="#i-code"/></svg></div>
|
| 105 |
-
<div class="stat-num">10K+</div>
|
| 106 |
-
<div class="stat-label">Lines of Code</div>
|
| 107 |
-
</div>
|
| 108 |
-
<div class="card glow-card stat">
|
| 109 |
-
<div class="stat-icon" style="color:#f472b6"><svg class="icon icon-lg"><use href="#i-heart"/></svg></div>
|
| 110 |
-
<div class="stat-num">500+</div>
|
| 111 |
-
<div class="stat-label">Contributions</div>
|
| 112 |
-
</div>
|
| 113 |
</div>
|
| 114 |
</div>
|
| 115 |
</section>
|
|
@@ -117,12 +122,12 @@
|
|
| 117 |
<!-- CODE SHOWCASE -->
|
| 118 |
<section class="section">
|
| 119 |
<div class="container-sm">
|
| 120 |
-
<div class="code-win" style="box-shadow:0 24px 48px rgba(168,85,247,.05)">
|
| 121 |
<div class="code-head">
|
| 122 |
<div class="code-dot" style="background:rgba(239,68,68,.8)"></div>
|
| 123 |
<div class="code-dot" style="background:rgba(234,179,8,.8)"></div>
|
| 124 |
<div class="code-dot" style="background:rgba(34,197,94,.8)"></div>
|
| 125 |
-
<span class="mono" style="margin-left:1rem;color
|
| 126 |
</div>
|
| 127 |
<div class="code-body">
|
| 128 |
<div class="c-gray2"># Define the developer profile</div>
|
|
@@ -130,47 +135,45 @@
|
|
| 130 |
<div style="padding-left:1.5rem"><span class="c-purple">def</span> <span class="c-blue">__init__</span><span class="c-gray">(</span><span class="c-orange">self</span><span class="c-gray">):</span></div>
|
| 131 |
<div style="padding-left:2.5rem"><span class="c-orange">self</span><span class="c-gray">.</span>name <span class="c-gray">=</span> <span class="c-green">"AIencoder"</span></div>
|
| 132 |
<div style="padding-left:2.5rem"><span class="c-orange">self</span><span class="c-gray">.</span>role <span class="c-gray">=</span> <span class="c-green">"AI/ML Engineer & Developer"</span></div>
|
| 133 |
-
<div style="padding-left:2.5rem"><span class="c-orange">self</span><span class="c-gray">.</span>
|
| 134 |
-
<div style="padding-left:3.5rem"><span class="c-green">"huggingface"</span><span class="c-gray">:</span> <span class="c-green">"huggingface.co/AIencoder"</span><span class="c-gray">,</span></div>
|
| 135 |
-
<div style="padding-left:3.5rem"><span class="c-green">"github"</span><span class="c-gray">:</span> <span class="c-green">"github.com/Ary5272"</span></div>
|
| 136 |
-
<div style="padding-left:2.5rem"><span class="c-gray">}</span></div>
|
| 137 |
<div style="padding-left:1.5rem;margin-top:.75rem"><span class="c-purple">def</span> <span class="c-blue">create_impact</span><span class="c-gray">(</span><span class="c-orange">self</span><span class="c-gray">):</span></div>
|
| 138 |
<div style="padding-left:2.5rem"><span class="c-purple">return</span> <span class="c-green">"Transforming ideas into reality"</span></div>
|
| 139 |
-
<div style="margin-top:1rem" class="c-gray2"># Initialize and run</div>
|
| 140 |
-
<div><span class="c-white">dev</span> <span class="c-gray">=</span> <span class="c-amber">Developer</span><span class="c-gray">()</span></div>
|
| 141 |
-
<div><span class="c-white">dev</span><span class="c-gray">.</span><span class="c-blue">create_impact</span><span class="c-gray">()</span></div>
|
| 142 |
-
<div style="margin-top:.5rem"><span class="c-gray">>>> </span><span class="c-green">"Transforming ideas into reality"</span></div>
|
| 143 |
</div>
|
| 144 |
</div>
|
| 145 |
</div>
|
| 146 |
</section>
|
| 147 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 148 |
<!-- HUGGING FACE -->
|
| 149 |
<section id="huggingface" class="section">
|
| 150 |
<div class="container">
|
| 151 |
-
<div class="flex items-center justify-between" style="margin-bottom:3rem">
|
| 152 |
<div class="flex items-center gap-3">
|
| 153 |
-
<div class="section-icon" style="background:rgba(245,158,11,.1);color:#f59e0b">
|
| 154 |
-
|
| 155 |
-
</div>
|
| 156 |
-
<div>
|
| 157 |
-
<h2 class="section-title">Hugging Face</h2>
|
| 158 |
-
<p style="color:#6b7280;font-size:.875rem;margin-top:.25rem">AI models, spaces, and datasets for the community</p>
|
| 159 |
-
</div>
|
| 160 |
</div>
|
| 161 |
-
<a href="https://huggingface.co/AIencoder" target="_blank" rel="noopener noreferrer" class="flex items-center gap-1 md-hide" style="color:#f59e0b;font-size:.875rem;font-weight:500">
|
| 162 |
-
View Profile <svg class="icon icon-sm"><use href="#i-up-right"/></svg>
|
| 163 |
-
</a>
|
| 164 |
</div>
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
<div class="card glow-card card-amber" style="padding:2rem;margin-bottom:2.5rem">
|
| 168 |
<div class="flex gap-5 profile-wrap" style="align-items:center">
|
| 169 |
<img id="hf-avatar" src="https://huggingface.co/avatars/46a0d6090e169c088fc1a64d4b8d993c.svg" alt="" class="profile-avatar profile-avatar-hf" onerror="this.outerHTML='<div class=\'profile-avatar profile-avatar-hf profile-avatar-fallback hf\'>A</div>'">
|
| 170 |
<div style="flex:1;min-width:200px">
|
| 171 |
<h3 style="font-size:1.25rem;font-weight:700" id="hf-name">Aryan Nukala</h3>
|
| 172 |
-
<p style="color
|
| 173 |
-
<p style="color
|
| 174 |
</div>
|
| 175 |
<div class="flex gap-2 flex-wrap profile-stats">
|
| 176 |
<div class="profile-stat amber"><div class="profile-stat-num" style="color:#f59e0b" id="hf-n-models">7</div><div class="profile-stat-label">Models</div></div>
|
|
@@ -180,56 +183,32 @@
|
|
| 180 |
</div>
|
| 181 |
</div>
|
| 182 |
</div>
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
<h3 class="flex items-center gap-2 section-subtitle" style="color:#
|
| 186 |
-
|
| 187 |
-
</h3>
|
| 188 |
-
<div class="grid grid-3 gap-4
|
| 189 |
-
|
| 190 |
-
<!-- Spaces -->
|
| 191 |
-
<h3 class="flex items-center gap-2 section-subtitle" style="color:#c084fc">
|
| 192 |
-
<svg class="icon icon-sm"><use href="#i-layout"/></svg> Spaces
|
| 193 |
-
</h3>
|
| 194 |
-
<div class="grid grid-3 gap-4" style="margin-bottom:2.5rem" id="hf-spaces"></div>
|
| 195 |
-
|
| 196 |
-
<!-- Datasets -->
|
| 197 |
-
<h3 class="flex items-center gap-2 section-subtitle" style="color:#34d399">
|
| 198 |
-
<svg class="icon icon-sm"><use href="#i-db"/></svg> Datasets
|
| 199 |
-
</h3>
|
| 200 |
-
<div class="grid grid-3 gap-4" id="hf-datasets"></div>
|
| 201 |
</div>
|
| 202 |
</section>
|
| 203 |
|
| 204 |
<!-- GITHUB -->
|
| 205 |
-
<section id="github" class="section
|
| 206 |
<div class="container">
|
| 207 |
-
<div class="flex items-center justify-between" style="margin-bottom:3rem">
|
| 208 |
<div class="flex items-center gap-3">
|
| 209 |
-
<div class="section-icon" style="background:rgba(255,255,255,.05);color
|
| 210 |
-
|
| 211 |
-
</div>
|
| 212 |
-
<div>
|
| 213 |
-
<h2 class="section-title">GitHub</h2>
|
| 214 |
-
<p style="color:#6b7280;font-size:.875rem;margin-top:.25rem">Open source projects and contributions</p>
|
| 215 |
-
</div>
|
| 216 |
</div>
|
| 217 |
-
<a href="https://github.com/Ary5272" target="_blank" rel="noopener noreferrer" class="flex items-center gap-1 md-hide" style="color
|
| 218 |
-
View Profile <svg class="icon icon-sm"><use href="#i-up-right"/></svg>
|
| 219 |
-
</a>
|
| 220 |
</div>
|
| 221 |
-
|
| 222 |
-
<!-- Profile Card -->
|
| 223 |
-
<div class="card glow-card" style="padding:2rem;margin-bottom:2rem">
|
| 224 |
<div class="flex gap-5 profile-wrap" style="align-items:center">
|
| 225 |
<img id="gh-avatar" src="https://avatars.githubusercontent.com/u/215576213?v=4" alt="" class="profile-avatar profile-avatar-gh" onerror="this.outerHTML='<div class=\'profile-avatar profile-avatar-gh profile-avatar-fallback gh\'>A</div>'">
|
| 226 |
<div style="flex:1;min-width:200px">
|
| 227 |
<h3 style="font-size:1.25rem;font-weight:700" id="gh-name">Aryan Nukala</h3>
|
| 228 |
-
<p style="color
|
| 229 |
-
<p style="color
|
| 230 |
-
<div class="flex flex-wrap gap-4" style="margin-top:.5rem;font-size:.75rem;color:#6b7280">
|
| 231 |
-
<span class="flex items-center gap-1"><svg class="icon icon-sm"><use href="#i-pin"/></svg><span id="gh-loc">Remote</span></span>
|
| 232 |
-
</div>
|
| 233 |
</div>
|
| 234 |
<div class="flex gap-2 profile-stats">
|
| 235 |
<div class="profile-stat"><div class="profile-stat-num" style="color:#c084fc" id="gh-repos-n">5</div><div class="profile-stat-label">Repos</div></div>
|
|
@@ -237,63 +216,69 @@
|
|
| 237 |
</div>
|
| 238 |
</div>
|
| 239 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 240 |
|
| 241 |
-
|
| 242 |
-
|
| 243 |
-
|
| 244 |
-
|
| 245 |
-
|
|
|
|
|
|
|
|
|
|
| 246 |
</div>
|
| 247 |
</section>
|
| 248 |
|
| 249 |
<!-- TECH STACK -->
|
| 250 |
-
<section class="section">
|
| 251 |
<div class="container-sm text-center">
|
| 252 |
-
<h2 class="section-title" style="margin-bottom:.75rem">Tech Stack</h2>
|
| 253 |
-
<p style="color
|
| 254 |
-
<div class="flex flex-wrap justify-center gap-2" id="tech-pills"></div>
|
| 255 |
</div>
|
| 256 |
</section>
|
| 257 |
|
| 258 |
<!-- CONTACT -->
|
| 259 |
-
<section id="contact" class="section"
|
| 260 |
<div class="container-xs text-center">
|
| 261 |
-
<h2 class="section-title" style="margin-bottom:.75rem">Let's Connect</h2>
|
| 262 |
-
<p style="color
|
| 263 |
-
<div class="grid grid-2 gap-4" style="max-width:420px;margin:0 auto">
|
| 264 |
<a href="https://huggingface.co/AIencoder" target="_blank" rel="noopener noreferrer" class="card glow-card card-amber text-center" style="padding:1.5rem">
|
| 265 |
-
<div style="width:48px;height:48px;background:rgba(245,158,11,.1);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto .75rem;color:#f59e0b;font-size:1.5rem">
|
| 266 |
-
<svg class="icon icon-lg"><use href="#i-smile"/></svg>
|
| 267 |
-
</div>
|
| 268 |
<h3 style="font-weight:600;margin-bottom:.25rem">Hugging Face</h3>
|
| 269 |
-
<p style="color
|
| 270 |
</a>
|
| 271 |
<a href="https://github.com/Ary5272" target="_blank" rel="noopener noreferrer" class="card glow-card text-center" style="padding:1.5rem">
|
| 272 |
-
<div style="width:48px;height:48px;background:
|
| 273 |
-
<svg class="icon icon-lg"><use href="#i-github"/></svg>
|
| 274 |
-
</div>
|
| 275 |
<h3 style="font-weight:600;margin-bottom:.25rem">GitHub</h3>
|
| 276 |
-
<p style="color
|
| 277 |
</a>
|
| 278 |
</div>
|
| 279 |
</div>
|
| 280 |
</section>
|
| 281 |
|
| 282 |
<!-- FOOTER -->
|
| 283 |
-
<footer style="padding:2rem 0;border-top:1px solid
|
| 284 |
<div class="container flex items-center justify-between" style="flex-wrap:wrap;gap:1rem">
|
| 285 |
<div class="flex items-center gap-1">
|
| 286 |
<svg class="icon" style="color:#c084fc"><use href="#i-terminal"/></svg>
|
| 287 |
<span class="mono gradient-text" style="font-weight:700;font-size:.875rem">AIencoder</span>
|
| 288 |
</div>
|
| 289 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 290 |
<div class="flex gap-1">
|
| 291 |
-
<a href="https://huggingface.co/AIencoder" target="_blank" rel="noopener noreferrer" style="color
|
| 292 |
-
|
| 293 |
-
</a>
|
| 294 |
-
<a href="https://github.com/Ary5272" target="_blank" rel="noopener noreferrer" style="color:#4b5563;padding:.5rem;transition:color .2s" onmouseover="this.style.color='#fff'" onmouseout="this.style.color='#4b5563'">
|
| 295 |
-
<svg class="icon"><use href="#i-github"/></svg>
|
| 296 |
-
</a>
|
| 297 |
</div>
|
| 298 |
</div>
|
| 299 |
</footer>
|
|
@@ -303,178 +288,194 @@
|
|
| 303 |
const words=['AIencoder','A Developer','An ML Engineer','A Builder'];
|
| 304 |
let wi=0,ci=0,del=false;
|
| 305 |
const tw=document.getElementById('typewriter');
|
| 306 |
-
function type(){
|
| 307 |
-
const w=words[wi];
|
| 308 |
-
tw.textContent=del?w.substring(0,--ci):w.substring(0,++ci);
|
| 309 |
-
let s=del?40:80;
|
| 310 |
-
if(!del&&ci===w.length){s=2500;del=true}
|
| 311 |
-
else if(del&&ci===0){del=false;wi=(wi+1)%words.length;s=400}
|
| 312 |
-
setTimeout(type,s);
|
| 313 |
-
}
|
| 314 |
type();
|
| 315 |
|
| 316 |
-
// =====
|
| 317 |
-
const
|
| 318 |
-
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
|
| 324 |
-
|
| 325 |
-
|
| 326 |
-
|
| 327 |
-
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
|
| 331 |
-
|
| 332 |
-
|
| 333 |
-
|
| 334 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 335 |
];
|
| 336 |
-
const
|
| 337 |
-
|
| 338 |
-
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 342 |
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 343 |
|
| 344 |
-
// ===== RENDER FUNCTIONS =====
|
| 345 |
const LANG_COLORS={Python:'#3572A5','C++':'#f34b7d',Dockerfile:'#384d54',HTML:'#e34c26',JavaScript:'#f1e05a'};
|
| 346 |
|
| 347 |
function renderHfCards(items,containerId,type,icon,color){
|
| 348 |
const grid=document.getElementById(containerId);
|
| 349 |
const base=type==='model'?'https://huggingface.co/':type==='space'?'https://huggingface.co/spaces/':'https://huggingface.co/datasets/';
|
| 350 |
-
items.forEach(m=>{
|
| 351 |
-
const name=m.id.split('/')[1];
|
| 352 |
-
const el=document.createElement('a');
|
| 353 |
-
el.href=base+m.id;el.target='_blank';el.rel='noopener noreferrer';
|
| 354 |
-
el.className='card glow-card card-amber';
|
| 355 |
-
el.innerHTML=`
|
| 356 |
-
<div class="flex items-center justify-between" style="margin-bottom:.75rem">
|
| 357 |
-
<div style="width:40px;height:40px;background:${color}15;border-radius:12px;display:flex;align-items:center;justify-content:center;color:${color};font-size:1.25rem">
|
| 358 |
-
<svg class="icon icon-md"><use href="#i-${icon}"/></svg>
|
| 359 |
-
</div>
|
| 360 |
-
<div class="flex items-center gap-3" style="font-size:.75rem;color:#6b7280">
|
| 361 |
-
${m.downloads!==undefined?`<span class="flex items-center gap-1"><svg class="icon icon-sm"><use href="#i-download"/></svg> ${m.downloads}</span>`:''}
|
| 362 |
-
${m.sdk?`<span style="background:rgba(255,255,255,.05);padding:.125rem .5rem;border-radius:9999px;font-size:.625rem">${m.sdk}</span>`:''}
|
| 363 |
-
<span class="flex items-center gap-1"><svg class="icon icon-sm"><use href="#i-heart"/></svg> ${m.likes}</span>
|
| 364 |
-
</div>
|
| 365 |
-
</div>
|
| 366 |
-
<h4 style="font-weight:600;font-size:.875rem;margin-bottom:.25rem" class="truncate">${name}</h4>
|
| 367 |
-
<div style="margin-top:.75rem;display:flex;align-items:center;gap:.375rem;color:${color};font-size:.75rem;font-weight:500">
|
| 368 |
-
Explore <svg class="icon icon-sm"><use href="#i-right"/></svg>
|
| 369 |
-
</div>`;
|
| 370 |
-
grid.appendChild(el);
|
| 371 |
-
});
|
| 372 |
}
|
| 373 |
-
|
| 374 |
function renderGhRepos(repos){
|
| 375 |
-
const grid=document.getElementById('gh-grid');
|
| 376 |
-
|
| 377 |
-
repos.forEach(r=>{
|
| 378 |
-
const el=document.createElement('a');
|
| 379 |
-
el.href=r.url;el.target='_blank';el.rel='noopener noreferrer';
|
| 380 |
-
el.className='card glow-card card-purple';
|
| 381 |
-
const lc=LANG_COLORS[r.lang]||'#8b8b8b';
|
| 382 |
-
el.innerHTML=`
|
| 383 |
-
<div class="flex items-center justify-between" style="margin-bottom:.75rem">
|
| 384 |
-
<div class="flex items-center gap-2" style="min-width:0">
|
| 385 |
-
<svg class="icon icon-sm" style="color:#6b7280;flex-shrink:0"><use href="#i-book"/></svg>
|
| 386 |
-
<h4 style="font-weight:600;font-size:.875rem" class="truncate">${r.name}</h4>
|
| 387 |
-
</div>
|
| 388 |
-
<svg class="icon icon-sm" style="color:#4b5563;flex-shrink:0"><use href="#i-up-right"/></svg>
|
| 389 |
-
</div>
|
| 390 |
-
<p class="repo-desc">${r.desc||'No description'}</p>
|
| 391 |
-
<div class="flex items-center justify-between" style="font-size:.75rem">
|
| 392 |
-
<div class="flex items-center gap-3">
|
| 393 |
-
${r.lang?`<span class="flex items-center gap-1"><span class="lang-dot" style="background:${lc}"></span><span style="color:#9ca3af">${r.lang}</span></span>`:''}
|
| 394 |
-
<span class="flex items-center gap-1" style="color:#6b7280"><svg class="icon icon-sm"><use href="#i-star"/></svg> ${r.stars}</span>
|
| 395 |
-
</div>
|
| 396 |
-
<span style="color:#4b5563">${r.date}</span>
|
| 397 |
-
</div>`;
|
| 398 |
-
grid.appendChild(el);
|
| 399 |
-
});
|
| 400 |
}
|
| 401 |
|
| 402 |
// ===== TECH STACK =====
|
| 403 |
-
const techs=[
|
| 404 |
-
{name:'Machine Learning',icon:'brain',color:'#f59e0b'},
|
| 405 |
-
{name:'Python',icon:'file',color:'#60a5fa'},
|
| 406 |
-
{name:'PyTorch',icon:'flame',color:'#f97316'},
|
| 407 |
-
{name:'TensorFlow',icon:'layout',color:'#34d399'},
|
| 408 |
-
{name:'HF Transformers',icon:'db',color:'#c084fc'},
|
| 409 |
-
{name:'Git',icon:'branch',color:'#22d3ee'},
|
| 410 |
-
{name:'Docker',icon:'box',color:'#f472b6'},
|
| 411 |
-
{name:'Cloud Services',icon:'cloud',color:'#818cf8'},
|
| 412 |
-
];
|
| 413 |
const tp=document.getElementById('tech-pills');
|
| 414 |
-
techs.forEach(t=>{
|
| 415 |
-
const el=document.createElement('div');
|
| 416 |
-
el.className='pill';
|
| 417 |
-
el.onmouseover=function(){this.style.borderColor=t.color+'50'};
|
| 418 |
-
el.onmouseout=function(){this.style.borderColor='rgba(255,255,255,.06)'};
|
| 419 |
-
el.innerHTML=`<svg class="icon" style="color:${t.color}"><use href="#i-${t.icon}"/></svg><span>${t.name}</span>`;
|
| 420 |
-
tp.appendChild(el);
|
| 421 |
-
});
|
| 422 |
|
| 423 |
-
// ===== RENDER
|
| 424 |
renderHfCards(FALLBACK_HF_MODELS,'hf-models','model','brain','#f59e0b');
|
| 425 |
renderHfCards(FALLBACK_HF_SPACES,'hf-spaces','space','layout','#c084fc');
|
| 426 |
renderHfCards(FALLBACK_HF_DATASETS,'hf-datasets','dataset','db','#34d399');
|
| 427 |
renderGhRepos(FALLBACK_GH_REPOS);
|
| 428 |
|
| 429 |
-
// ===== LIVE FETCH UPGRADES
|
| 430 |
(async()=>{
|
| 431 |
-
try{
|
| 432 |
-
|
| 433 |
-
|
| 434 |
-
const u=await r.json();
|
| 435 |
-
if(u.name)document.getElementById('gh-name').textContent=u.name;
|
| 436 |
-
if(u.bio)document.getElementById('gh-bio').textContent=u.bio;
|
| 437 |
-
if(u.location)document.getElementById('gh-loc').textContent=u.location;
|
| 438 |
-
if(u.public_repos){document.getElementById('gh-repos-n').textContent=u.public_repos;document.getElementById('s-repos').textContent=u.public_repos+'+';}
|
| 439 |
-
if(u.followers)document.getElementById('gh-followers-n').textContent=u.followers;
|
| 440 |
-
if(u.avatar_url){const img=document.getElementById('gh-avatar');if(img)img.src=u.avatar_url;}
|
| 441 |
-
}catch(e){}
|
| 442 |
-
try{
|
| 443 |
-
const r=await fetch('https://api.github.com/users/Ary5272/repos?sort=updated&per_page=6');
|
| 444 |
-
if(!r.ok)return;
|
| 445 |
-
const repos=await r.json();
|
| 446 |
-
renderGhRepos(repos.map(r=>({name:r.name,desc:r.description||'',lang:r.language||'',stars:r.stargazers_count,url:r.html_url,date:new Date(r.updated_at).toLocaleDateString('en-US',{month:'short',day:'numeric'})})));
|
| 447 |
-
}catch(e){}
|
| 448 |
-
try{
|
| 449 |
-
const r=await fetch('https://huggingface.co/api/users/AIencoder/overview');
|
| 450 |
-
if(!r.ok)return;
|
| 451 |
-
const u=await r.json();
|
| 452 |
-
if(u.fullname)document.getElementById('hf-name').textContent=u.fullname;
|
| 453 |
-
if(u.numModels)document.getElementById('hf-n-models').textContent=u.numModels;
|
| 454 |
-
if(u.numSpaces)document.getElementById('hf-n-spaces').textContent=u.numSpaces;
|
| 455 |
-
if(u.numDatasets)document.getElementById('hf-n-datasets').textContent=u.numDatasets;
|
| 456 |
-
if(u.numFollowers)document.getElementById('hf-n-followers').textContent=u.numFollowers;
|
| 457 |
-
if(u.avatarUrl){const img=document.getElementById('hf-avatar');if(img)img.src='https://huggingface.co'+u.avatarUrl;}
|
| 458 |
-
}catch(e){}
|
| 459 |
})();
|
| 460 |
|
| 461 |
// ===== MOBILE MENU =====
|
| 462 |
document.getElementById('menu-btn').addEventListener('click',()=>document.getElementById('mobile-menu').classList.toggle('hidden'));
|
| 463 |
|
| 464 |
// ===== SMOOTH SCROLL =====
|
| 465 |
-
document.querySelectorAll('a[href^="#"]').forEach(a=>a.addEventListener('click',function(e){
|
| 466 |
-
e.preventDefault();
|
| 467 |
-
const t=document.querySelector(this.getAttribute('href'));
|
| 468 |
-
if(t){t.scrollIntoView({behavior:'smooth',block:'start'});document.getElementById('mobile-menu').classList.add('hidden')}
|
| 469 |
-
}));
|
| 470 |
|
| 471 |
// ===== RESPONSIVE NAV =====
|
| 472 |
-
function checkNav(){
|
| 473 |
-
const w=window.innerWidth;
|
| 474 |
-
document.getElementById('nav-links').style.display=w>=768?'flex':'none';
|
| 475 |
-
document.getElementById('menu-btn').style.display=w<768?'block':'none';
|
| 476 |
-
if(w>=768)document.getElementById('mobile-menu').classList.add('hidden');
|
| 477 |
-
}
|
| 478 |
window.addEventListener('resize',checkNav);checkNav();
|
| 479 |
</script>
|
| 480 |
</body>
|
|
|
|
| 1 |
<!DOCTYPE html>
|
| 2 |
+
<html lang="en" data-theme="dark">
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
| 10 |
<body>
|
| 11 |
<div class="mesh-bg"></div>
|
| 12 |
<div class="grid-bg"></div>
|
| 13 |
+
<div class="particles" id="particles"></div>
|
| 14 |
|
| 15 |
<!-- SVG SPRITES -->
|
| 16 |
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
|
|
|
|
| 28 |
<symbol id="i-book" viewBox="0 0 24 24"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/></symbol>
|
| 29 |
<symbol id="i-pin" viewBox="0 0 24 24"><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z"/><circle cx="12" cy="10" r="3"/></symbol>
|
| 30 |
<symbol id="i-link" viewBox="0 0 24 24"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></symbol>
|
|
|
|
| 31 |
<symbol id="i-brain" viewBox="0 0 24 24"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"/><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"/><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"/></symbol>
|
| 32 |
<symbol id="i-db" viewBox="0 0 24 24"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5V19A9 3 0 0 0 21 19V5"/><path d="M3 12A9 3 0 0 0 21 12"/></symbol>
|
| 33 |
<symbol id="i-layout" viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2"/><line x1="3" y1="9" x2="21" y2="9"/><line x1="9" y1="21" x2="9" y2="9"/></symbol>
|
|
|
|
| 37 |
<symbol id="i-cloud" viewBox="0 0 24 24"><path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/></symbol>
|
| 38 |
<symbol id="i-download" viewBox="0 0 24 24"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></symbol>
|
| 39 |
<symbol id="i-users" viewBox="0 0 24 24"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></symbol>
|
| 40 |
+
<symbol id="i-sun" viewBox="0 0 24 24"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41"/></symbol>
|
| 41 |
+
<symbol id="i-moon" viewBox="0 0 24 24"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></symbol>
|
| 42 |
+
<symbol id="i-rocket" viewBox="0 0 24 24"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"/><path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/></symbol>
|
| 43 |
+
<symbol id="i-zap" viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></symbol>
|
| 44 |
+
<symbol id="i-shield" viewBox="0 0 24 24"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></symbol>
|
| 45 |
+
<symbol id="i-activity" viewBox="0 0 24 24"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></symbol>
|
| 46 |
+
<symbol id="i-tool" viewBox="0 0 24 24"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></symbol>
|
| 47 |
+
<symbol id="i-merge" viewBox="0 0 24 24"><circle cx="18" cy="18" r="3"/><circle cx="6" cy="6" r="3"/><path d="M6 21V9a9 9 0 0 0 9 9"/></symbol>
|
| 48 |
+
<symbol id="i-pen" viewBox="0 0 24 24"><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"/><path d="m15 5 4 4"/></symbol>
|
| 49 |
+
<symbol id="i-calendar" viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="4" rx="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></symbol>
|
| 50 |
+
<symbol id="i-clock" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></symbol>
|
| 51 |
+
<symbol id="i-eye" viewBox="0 0 24 24"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></symbol>
|
| 52 |
</svg>
|
| 53 |
|
| 54 |
<!-- NAV -->
|
|
|
|
| 60 |
</a>
|
| 61 |
<div class="flex items-center gap-1 md-hide" id="nav-links">
|
| 62 |
<a href="#home" class="nav-link">Home</a>
|
| 63 |
+
<a href="#projects" class="nav-link">Projects</a>
|
| 64 |
+
<a href="#huggingface" class="nav-link">HF</a>
|
| 65 |
<a href="#github" class="nav-link">GitHub</a>
|
| 66 |
+
<a href="#blog" class="nav-link">Blog</a>
|
| 67 |
<a href="#contact" class="nav-link">Contact</a>
|
| 68 |
</div>
|
| 69 |
+
<div class="flex items-center gap-1">
|
| 70 |
+
<button class="theme-toggle" id="theme-toggle" title="Toggle theme">
|
| 71 |
+
<svg class="icon icon-md" id="theme-icon-sun" style="display:none"><use href="#i-sun"/></svg>
|
| 72 |
+
<svg class="icon icon-md" id="theme-icon-moon"><use href="#i-moon"/></svg>
|
| 73 |
+
</button>
|
| 74 |
+
<button id="menu-btn" class="md-show" style="display:none;padding:.5rem">
|
| 75 |
+
<svg class="icon icon-md"><use href="#i-menu"/></svg>
|
| 76 |
+
</button>
|
| 77 |
+
</div>
|
| 78 |
</div>
|
| 79 |
<div id="mobile-menu" class="mobile-menu hidden glass">
|
| 80 |
<a href="#home">Home</a>
|
| 81 |
+
<a href="#projects">Projects</a>
|
| 82 |
<a href="#huggingface">Hugging Face</a>
|
| 83 |
<a href="#github">GitHub</a>
|
| 84 |
+
<a href="#blog">Blog</a>
|
| 85 |
<a href="#contact">Contact</a>
|
| 86 |
</div>
|
| 87 |
</nav>
|
|
|
|
| 90 |
<section id="home" style="min-height:100vh;display:flex;align-items:center;justify-content:center;padding-top:80px">
|
| 91 |
<div class="container text-center">
|
| 92 |
<div class="fade-up" style="animation-delay:.1s">
|
| 93 |
+
<span style="display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:9999px;border:1px solid rgba(74,222,128,.2);font-size:.875rem;color:var(--text-muted);background:var(--bg-card);margin-bottom:2rem">
|
| 94 |
<span class="pulse" style="width:8px;height:8px;background:#4ade80;border-radius:50%;display:inline-block"></span>
|
| 95 |
Available for Collaboration
|
| 96 |
</span>
|
| 97 |
</div>
|
| 98 |
<h1 class="fade-up" style="animation-delay:.2s">
|
| 99 |
+
<span class="hero-title" style="display:block;font-size:clamp(2.5rem,8vw,5rem);font-weight:800;letter-spacing:-.02em">Hello, I'm</span>
|
| 100 |
<span class="hero-sub mono cursor gradient-text" id="typewriter" style="display:block;font-size:clamp(2rem,6vw,4rem);font-weight:700;margin-top:.25rem"></span>
|
| 101 |
</h1>
|
| 102 |
+
<p class="fade-up" style="animation-delay:.35s;font-size:clamp(1rem,2vw,1.25rem);color:var(--text-dim);max-width:600px;margin:2rem auto 3rem;line-height:1.7">
|
| 103 |
Building the future with AI and code. Passionate about machine learning, open-source, and creating impactful solutions.
|
| 104 |
</p>
|
| 105 |
<div class="flex flex-wrap justify-center gap-3 fade-up" style="animation-delay:.5s">
|
|
|
|
| 110 |
<svg class="icon"><use href="#i-github"/></svg> GitHub
|
| 111 |
</a>
|
| 112 |
</div>
|
|
|
|
| 113 |
<div class="grid grid-4 gap-3 fade-up" style="animation-delay:.65s;max-width:700px;margin:5rem auto 0">
|
| 114 |
+
<div class="card glow-card stat"><div class="stat-icon" style="color:#c084fc"><svg class="icon icon-lg"><use href="#i-cpu"/></svg></div><div class="stat-num">15+</div><div class="stat-label">AI Models</div></div>
|
| 115 |
+
<div class="card glow-card stat"><div class="stat-icon" style="color:#60a5fa"><svg class="icon icon-lg"><use href="#i-branch"/></svg></div><div class="stat-num" id="s-repos">5+</div><div class="stat-label">Repositories</div></div>
|
| 116 |
+
<div class="card glow-card stat"><div class="stat-icon" style="color:#34d399"><svg class="icon icon-lg"><use href="#i-code"/></svg></div><div class="stat-num">10K+</div><div class="stat-label">Lines of Code</div></div>
|
| 117 |
+
<div class="card glow-card stat"><div class="stat-icon" style="color:#f472b6"><svg class="icon icon-lg"><use href="#i-heart"/></svg></div><div class="stat-num">500+</div><div class="stat-label">Contributions</div></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
</div>
|
| 119 |
</div>
|
| 120 |
</section>
|
|
|
|
| 122 |
<!-- CODE SHOWCASE -->
|
| 123 |
<section class="section">
|
| 124 |
<div class="container-sm">
|
| 125 |
+
<div class="code-win reveal" style="box-shadow:0 24px 48px rgba(168,85,247,.05)">
|
| 126 |
<div class="code-head">
|
| 127 |
<div class="code-dot" style="background:rgba(239,68,68,.8)"></div>
|
| 128 |
<div class="code-dot" style="background:rgba(234,179,8,.8)"></div>
|
| 129 |
<div class="code-dot" style="background:rgba(34,197,94,.8)"></div>
|
| 130 |
+
<span class="mono" style="margin-left:1rem;color:var(--text-dim);font-size:.75rem">developer_profile.py</span>
|
| 131 |
</div>
|
| 132 |
<div class="code-body">
|
| 133 |
<div class="c-gray2"># Define the developer profile</div>
|
|
|
|
| 135 |
<div style="padding-left:1.5rem"><span class="c-purple">def</span> <span class="c-blue">__init__</span><span class="c-gray">(</span><span class="c-orange">self</span><span class="c-gray">):</span></div>
|
| 136 |
<div style="padding-left:2.5rem"><span class="c-orange">self</span><span class="c-gray">.</span>name <span class="c-gray">=</span> <span class="c-green">"AIencoder"</span></div>
|
| 137 |
<div style="padding-left:2.5rem"><span class="c-orange">self</span><span class="c-gray">.</span>role <span class="c-gray">=</span> <span class="c-green">"AI/ML Engineer & Developer"</span></div>
|
| 138 |
+
<div style="padding-left:2.5rem"><span class="c-orange">self</span><span class="c-gray">.</span>passion <span class="c-gray">=</span> <span class="c-green">"Building tools that matter"</span></div>
|
|
|
|
|
|
|
|
|
|
| 139 |
<div style="padding-left:1.5rem;margin-top:.75rem"><span class="c-purple">def</span> <span class="c-blue">create_impact</span><span class="c-gray">(</span><span class="c-orange">self</span><span class="c-gray">):</span></div>
|
| 140 |
<div style="padding-left:2.5rem"><span class="c-purple">return</span> <span class="c-green">"Transforming ideas into reality"</span></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 141 |
</div>
|
| 142 |
</div>
|
| 143 |
</div>
|
| 144 |
</section>
|
| 145 |
|
| 146 |
+
<!-- PROJECTS -->
|
| 147 |
+
<section id="projects" class="section section-alt">
|
| 148 |
+
<div class="container">
|
| 149 |
+
<div class="text-center reveal" style="margin-bottom:4rem">
|
| 150 |
+
<h2 class="section-title" style="margin-bottom:.75rem">Featured Projects</h2>
|
| 151 |
+
<p style="color:var(--text-dim);max-width:500px;margin:0 auto">Flagship projects I've built — from AI coding assistants to medical imaging tools</p>
|
| 152 |
+
</div>
|
| 153 |
+
<div style="display:flex;flex-direction:column;gap:2rem" id="projects-grid">
|
| 154 |
+
<!-- Rendered by JS -->
|
| 155 |
+
</div>
|
| 156 |
+
</div>
|
| 157 |
+
</section>
|
| 158 |
+
|
| 159 |
<!-- HUGGING FACE -->
|
| 160 |
<section id="huggingface" class="section">
|
| 161 |
<div class="container">
|
| 162 |
+
<div class="flex items-center justify-between reveal" style="margin-bottom:3rem">
|
| 163 |
<div class="flex items-center gap-3">
|
| 164 |
+
<div class="section-icon" style="background:rgba(245,158,11,.1);color:#f59e0b"><svg class="icon icon-md"><use href="#i-smile"/></svg></div>
|
| 165 |
+
<div><h2 class="section-title">Hugging Face</h2><p style="color:var(--text-dim);font-size:.875rem;margin-top:.25rem">AI models, spaces, and datasets</p></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
</div>
|
| 167 |
+
<a href="https://huggingface.co/AIencoder" target="_blank" rel="noopener noreferrer" class="flex items-center gap-1 md-hide" style="color:#f59e0b;font-size:.875rem;font-weight:500">View Profile <svg class="icon icon-sm"><use href="#i-up-right"/></svg></a>
|
|
|
|
|
|
|
| 168 |
</div>
|
| 169 |
+
<!-- HF Profile -->
|
| 170 |
+
<div class="card glow-card card-amber reveal" style="padding:2rem;margin-bottom:2.5rem">
|
|
|
|
| 171 |
<div class="flex gap-5 profile-wrap" style="align-items:center">
|
| 172 |
<img id="hf-avatar" src="https://huggingface.co/avatars/46a0d6090e169c088fc1a64d4b8d993c.svg" alt="" class="profile-avatar profile-avatar-hf" onerror="this.outerHTML='<div class=\'profile-avatar profile-avatar-hf profile-avatar-fallback hf\'>A</div>'">
|
| 173 |
<div style="flex:1;min-width:200px">
|
| 174 |
<h3 style="font-size:1.25rem;font-weight:700" id="hf-name">Aryan Nukala</h3>
|
| 175 |
+
<p style="color:var(--text-dim);font-size:.875rem">@AIencoder</p>
|
| 176 |
+
<p style="color:var(--text-muted);font-size:.875rem;margin-top:.5rem">AI/ML Engineer building intelligent systems</p>
|
| 177 |
</div>
|
| 178 |
<div class="flex gap-2 flex-wrap profile-stats">
|
| 179 |
<div class="profile-stat amber"><div class="profile-stat-num" style="color:#f59e0b" id="hf-n-models">7</div><div class="profile-stat-label">Models</div></div>
|
|
|
|
| 183 |
</div>
|
| 184 |
</div>
|
| 185 |
</div>
|
| 186 |
+
<h3 class="flex items-center gap-2 section-subtitle reveal" style="color:#f59e0b"><svg class="icon icon-sm"><use href="#i-brain"/></svg> Models</h3>
|
| 187 |
+
<div class="grid grid-3 gap-4 reveal" style="margin-bottom:2.5rem" id="hf-models"></div>
|
| 188 |
+
<h3 class="flex items-center gap-2 section-subtitle reveal" style="color:#c084fc"><svg class="icon icon-sm"><use href="#i-layout"/></svg> Spaces</h3>
|
| 189 |
+
<div class="grid grid-3 gap-4 reveal" style="margin-bottom:2.5rem" id="hf-spaces"></div>
|
| 190 |
+
<h3 class="flex items-center gap-2 section-subtitle reveal" style="color:#34d399"><svg class="icon icon-sm"><use href="#i-db"/></svg> Datasets</h3>
|
| 191 |
+
<div class="grid grid-3 gap-4 reveal" id="hf-datasets"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 192 |
</div>
|
| 193 |
</section>
|
| 194 |
|
| 195 |
<!-- GITHUB -->
|
| 196 |
+
<section id="github" class="section section-alt">
|
| 197 |
<div class="container">
|
| 198 |
+
<div class="flex items-center justify-between reveal" style="margin-bottom:3rem">
|
| 199 |
<div class="flex items-center gap-3">
|
| 200 |
+
<div class="section-icon" style="background:rgba(255,255,255,.05);color:var(--text)"><svg class="icon icon-md"><use href="#i-github"/></svg></div>
|
| 201 |
+
<div><h2 class="section-title">GitHub</h2><p style="color:var(--text-dim);font-size:.875rem;margin-top:.25rem">Open source projects and contributions</p></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 202 |
</div>
|
| 203 |
+
<a href="https://github.com/Ary5272" target="_blank" rel="noopener noreferrer" class="flex items-center gap-1 md-hide" style="color:var(--text-muted);font-size:.875rem;font-weight:500">View Profile <svg class="icon icon-sm"><use href="#i-up-right"/></svg></a>
|
|
|
|
|
|
|
| 204 |
</div>
|
| 205 |
+
<div class="card glow-card reveal" style="padding:2rem;margin-bottom:2rem">
|
|
|
|
|
|
|
| 206 |
<div class="flex gap-5 profile-wrap" style="align-items:center">
|
| 207 |
<img id="gh-avatar" src="https://avatars.githubusercontent.com/u/215576213?v=4" alt="" class="profile-avatar profile-avatar-gh" onerror="this.outerHTML='<div class=\'profile-avatar profile-avatar-gh profile-avatar-fallback gh\'>A</div>'">
|
| 208 |
<div style="flex:1;min-width:200px">
|
| 209 |
<h3 style="font-size:1.25rem;font-weight:700" id="gh-name">Aryan Nukala</h3>
|
| 210 |
+
<p style="color:var(--text-dim);font-size:.875rem" id="gh-user">@Ary5272</p>
|
| 211 |
+
<p style="color:var(--text-muted);font-size:.875rem;margin-top:.5rem" id="gh-bio">AI/ML Developer</p>
|
|
|
|
|
|
|
|
|
|
| 212 |
</div>
|
| 213 |
<div class="flex gap-2 profile-stats">
|
| 214 |
<div class="profile-stat"><div class="profile-stat-num" style="color:#c084fc" id="gh-repos-n">5</div><div class="profile-stat-label">Repos</div></div>
|
|
|
|
| 216 |
</div>
|
| 217 |
</div>
|
| 218 |
</div>
|
| 219 |
+
<h3 class="flex items-center gap-2 section-subtitle reveal" style="color:var(--text-muted)"><svg class="icon icon-sm"><use href="#i-book"/></svg> Latest Repositories</h3>
|
| 220 |
+
<div class="grid grid-3 gap-4 reveal" id="gh-grid"></div>
|
| 221 |
+
</div>
|
| 222 |
+
</section>
|
| 223 |
|
| 224 |
+
<!-- BLOG -->
|
| 225 |
+
<section id="blog" class="section">
|
| 226 |
+
<div class="container">
|
| 227 |
+
<div class="text-center reveal" style="margin-bottom:4rem">
|
| 228 |
+
<h2 class="section-title" style="margin-bottom:.75rem">Blog & Insights</h2>
|
| 229 |
+
<p style="color:var(--text-dim);max-width:500px;margin:0 auto">Thoughts on AI development, model optimization, and open-source tooling</p>
|
| 230 |
+
</div>
|
| 231 |
+
<div class="grid grid-3 gap-4" id="blog-grid"></div>
|
| 232 |
</div>
|
| 233 |
</section>
|
| 234 |
|
| 235 |
<!-- TECH STACK -->
|
| 236 |
+
<section class="section section-alt">
|
| 237 |
<div class="container-sm text-center">
|
| 238 |
+
<h2 class="section-title reveal" style="margin-bottom:.75rem">Tech Stack</h2>
|
| 239 |
+
<p class="reveal" style="color:var(--text-dim);margin-bottom:3rem">Technologies I work with</p>
|
| 240 |
+
<div class="flex flex-wrap justify-center gap-2 reveal" id="tech-pills"></div>
|
| 241 |
</div>
|
| 242 |
</section>
|
| 243 |
|
| 244 |
<!-- CONTACT -->
|
| 245 |
+
<section id="contact" class="section">
|
| 246 |
<div class="container-xs text-center">
|
| 247 |
+
<h2 class="section-title reveal" style="margin-bottom:.75rem">Let's Connect</h2>
|
| 248 |
+
<p class="reveal" style="color:var(--text-dim);margin-bottom:3rem">Interested in collaborating or have a question? Let's chat!</p>
|
| 249 |
+
<div class="grid grid-2 gap-4 reveal" style="max-width:420px;margin:0 auto">
|
| 250 |
<a href="https://huggingface.co/AIencoder" target="_blank" rel="noopener noreferrer" class="card glow-card card-amber text-center" style="padding:1.5rem">
|
| 251 |
+
<div style="width:48px;height:48px;background:rgba(245,158,11,.1);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto .75rem;color:#f59e0b;font-size:1.5rem"><svg class="icon icon-lg"><use href="#i-smile"/></svg></div>
|
|
|
|
|
|
|
| 252 |
<h3 style="font-weight:600;margin-bottom:.25rem">Hugging Face</h3>
|
| 253 |
+
<p style="color:var(--text-dim);font-size:.875rem">@AIencoder</p>
|
| 254 |
</a>
|
| 255 |
<a href="https://github.com/Ary5272" target="_blank" rel="noopener noreferrer" class="card glow-card text-center" style="padding:1.5rem">
|
| 256 |
+
<div style="width:48px;height:48px;background:var(--bg-card-hover);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto .75rem;font-size:1.5rem"><svg class="icon icon-lg"><use href="#i-github"/></svg></div>
|
|
|
|
|
|
|
| 257 |
<h3 style="font-weight:600;margin-bottom:.25rem">GitHub</h3>
|
| 258 |
+
<p style="color:var(--text-dim);font-size:.875rem">@Ary5272</p>
|
| 259 |
</a>
|
| 260 |
</div>
|
| 261 |
</div>
|
| 262 |
</section>
|
| 263 |
|
| 264 |
<!-- FOOTER -->
|
| 265 |
+
<footer style="padding:2rem 0;border-top:1px solid var(--border)">
|
| 266 |
<div class="container flex items-center justify-between" style="flex-wrap:wrap;gap:1rem">
|
| 267 |
<div class="flex items-center gap-1">
|
| 268 |
<svg class="icon" style="color:#c084fc"><use href="#i-terminal"/></svg>
|
| 269 |
<span class="mono gradient-text" style="font-weight:700;font-size:.875rem">AIencoder</span>
|
| 270 |
</div>
|
| 271 |
+
<div class="flex items-center gap-3">
|
| 272 |
+
<div class="visitor-badge">
|
| 273 |
+
<span class="visitor-dot"></span>
|
| 274 |
+
<svg class="icon icon-sm"><use href="#i-eye"/></svg>
|
| 275 |
+
<span id="visitor-count">—</span> visits
|
| 276 |
+
</div>
|
| 277 |
+
<p style="color:var(--text-faint);font-size:.75rem">Built with passion and code</p>
|
| 278 |
+
</div>
|
| 279 |
<div class="flex gap-1">
|
| 280 |
+
<a href="https://huggingface.co/AIencoder" target="_blank" rel="noopener noreferrer" style="color:var(--text-faint);padding:.5rem;transition:color .2s" onmouseover="this.style.color='#f59e0b'" onmouseout="this.style.color=''"><svg class="icon"><use href="#i-smile"/></svg></a>
|
| 281 |
+
<a href="https://github.com/Ary5272" target="_blank" rel="noopener noreferrer" style="color:var(--text-faint);padding:.5rem;transition:color .2s" onmouseover="this.style.color='#c084fc'" onmouseout="this.style.color=''"><svg class="icon"><use href="#i-github"/></svg></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 282 |
</div>
|
| 283 |
</div>
|
| 284 |
</footer>
|
|
|
|
| 288 |
const words=['AIencoder','A Developer','An ML Engineer','A Builder'];
|
| 289 |
let wi=0,ci=0,del=false;
|
| 290 |
const tw=document.getElementById('typewriter');
|
| 291 |
+
function type(){const w=words[wi];tw.textContent=del?w.substring(0,--ci):w.substring(0,++ci);let s=del?40:80;if(!del&&ci===w.length){s=2500;del=true}else if(del&&ci===0){del=false;wi=(wi+1)%words.length;s=400}setTimeout(type,s)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 292 |
type();
|
| 293 |
|
| 294 |
+
// ===== THEME TOGGLE =====
|
| 295 |
+
const html=document.documentElement;
|
| 296 |
+
const themeBtn=document.getElementById('theme-toggle');
|
| 297 |
+
const sunIcon=document.getElementById('theme-icon-sun');
|
| 298 |
+
const moonIcon=document.getElementById('theme-icon-moon');
|
| 299 |
+
function setTheme(t){html.setAttribute('data-theme',t);localStorage.setItem('theme',t);sunIcon.style.display=t==='light'?'none':'inline-block';moonIcon.style.display=t==='light'?'inline-block':'none'}
|
| 300 |
+
themeBtn.addEventListener('click',()=>setTheme(html.getAttribute('data-theme')==='dark'?'light':'dark'));
|
| 301 |
+
setTheme(localStorage.getItem('theme')||'dark');
|
| 302 |
+
|
| 303 |
+
// ===== FLOATING PARTICLES =====
|
| 304 |
+
const particleContainer=document.getElementById('particles');
|
| 305 |
+
const colors=['#a855f7','#ec4899','#f59e0b','#60a5fa','#34d399'];
|
| 306 |
+
for(let i=0;i<20;i++){const p=document.createElement('div');p.className='particle';const s=Math.random()*4+2;p.style.cssText=`width:${s}px;height:${s}px;left:${Math.random()*100}%;background:${colors[i%colors.length]};animation-duration:${Math.random()*20+15}s;animation-delay:${Math.random()*10}s;opacity:${Math.random()*.3+.1}`;particleContainer.appendChild(p)}
|
| 307 |
+
|
| 308 |
+
// ===== SCROLL REVEAL =====
|
| 309 |
+
const revealObserver=new IntersectionObserver((entries)=>{entries.forEach(e=>{if(e.isIntersecting){e.target.classList.add('visible');revealObserver.unobserve(e.target)}})},{threshold:.1,rootMargin:'0px 0px -50px 0px'});
|
| 310 |
+
document.querySelectorAll('.reveal').forEach(el=>revealObserver.observe(el));
|
| 311 |
+
|
| 312 |
+
// ===== VISITOR COUNTER (localStorage-based) =====
|
| 313 |
+
let visits=parseInt(localStorage.getItem('portfolio_visits')||'0')+1;
|
| 314 |
+
localStorage.setItem('portfolio_visits',visits);
|
| 315 |
+
document.getElementById('visitor-count').textContent=visits.toLocaleString();
|
| 316 |
+
|
| 317 |
+
// ===== PROJECTS =====
|
| 318 |
+
const projects=[
|
| 319 |
+
{
|
| 320 |
+
name:'Axon',emoji:'🔥',
|
| 321 |
+
tagline:'Free AI Coding Assistant — 25 Tools, 100% Local',
|
| 322 |
+
desc:'A comprehensive AI coding assistant that runs entirely locally using llama.cpp. Features 5 optimized models (up to 30B parameters), 25 coding tools including code generation, debugging, security scanning, SQL/Shell/API builders, and voice input. Uses custom AVX2-optimized wheels for 2-3x faster inference.',
|
| 323 |
+
tags:['llama.cpp','Gradio','Docker','Python'],
|
| 324 |
+
color:'#f59e0b',bg:'linear-gradient(135deg,#1a1000,#2d1800)',
|
| 325 |
+
links:[{label:'Try it',url:'https://huggingface.co/spaces/AIencoder/Axon',icon:'i-rocket'},{label:'Code',url:'https://github.com/Ary5272/llama-cpp-python',icon:'i-github'}],
|
| 326 |
+
featured:true,
|
| 327 |
+
stats:['25 Tools','5 Models','100% Local']
|
| 328 |
+
},
|
| 329 |
+
{
|
| 330 |
+
name:'RadAssist-MedGemma',emoji:'🏥',
|
| 331 |
+
tagline:'AI Radiology Triage Assistant',
|
| 332 |
+
desc:'A 3-step agentic radiology pipeline built for the MedGemma Impact Challenge. Uses MedGemma 1.5 4B to classify chest X-ray severity, extract systematic findings using the ABCDE approach, and generate ACR-formatted radiology reports — all on a single GPU with 4-bit quantization.',
|
| 333 |
+
tags:['MedGemma','PyTorch','Medical AI','HuggingFace'],
|
| 334 |
+
color:'#60a5fa',bg:'linear-gradient(135deg,#001a2e,#002244)',
|
| 335 |
+
links:[{label:'Demo',url:'https://huggingface.co/spaces/AIencoder/RadAssist-MedGemma',icon:'i-layout'},{label:'Notebook',url:'https://www.kaggle.com/code/ary5272/radassist-medgemma-ai-radiology-triage-assistant',icon:'i-file'}],
|
| 336 |
+
featured:true,
|
| 337 |
+
stats:['3-Step Pipeline','4B Params','Edge AI']
|
| 338 |
+
},
|
| 339 |
+
{
|
| 340 |
+
name:'Wheel Factory',emoji:'🏭',
|
| 341 |
+
tagline:'Automated llama-cpp-python Wheel Builder',
|
| 342 |
+
desc:'A Gradio-based automation system for building llama-cpp-python wheels across multiple Python versions (3.10-3.13) with AVX2 optimization. Solves the pain of finding compatible pre-built wheels for Debian/Ubuntu deployments. Wheels published to a public HuggingFace dataset.',
|
| 343 |
+
tags:['Python','C++','CI/CD','HuggingFace'],
|
| 344 |
+
color:'#34d399',bg:'linear-gradient(135deg,#001a0f,#002a18)',
|
| 345 |
+
links:[{label:'Space',url:'https://huggingface.co/spaces/AIencoder/llama-wheel-factory',icon:'i-layout'},{label:'Wheels',url:'https://huggingface.co/datasets/AIencoder/llama-cpp-wheels',icon:'i-download'}],
|
| 346 |
+
stats:['4 Python Versions','AVX2 Optimized','153+ Downloads']
|
| 347 |
+
},
|
| 348 |
+
{
|
| 349 |
+
name:'Merge Config Generator',emoji:'🔀',
|
| 350 |
+
tagline:'Visual Model Merging Tool',
|
| 351 |
+
desc:'A web UI for creating LazyMergeKit merge configurations. Checks model architecture compatibility, supports DARE-TIES/SLERP/Linear methods, provides weight presets, and generates ready-to-use YAML configs for merging LLMs on Google Colab.',
|
| 352 |
+
tags:['Gradio','HuggingFace Hub','YAML','Model Merging'],
|
| 353 |
+
color:'#c084fc',bg:'linear-gradient(135deg,#1a0033,#2a0052)',
|
| 354 |
+
links:[{label:'Try it',url:'https://huggingface.co/spaces/AIencoder/merge-config-generator',icon:'i-rocket'}],
|
| 355 |
+
stats:['Arch Checking','Multiple Methods','1-Click Config']
|
| 356 |
+
}
|
| 357 |
];
|
| 358 |
+
const projectsGrid=document.getElementById('projects-grid');
|
| 359 |
+
projects.forEach(p=>{
|
| 360 |
+
const card=document.createElement('div');
|
| 361 |
+
card.className='project-card glow-card reveal';
|
| 362 |
+
card.innerHTML=`
|
| 363 |
+
<div class="project-card-inner" style="display:flex">
|
| 364 |
+
<div class="project-img" style="background:${p.bg}">
|
| 365 |
+
${p.featured?'<span class="project-featured">Featured</span>':''}
|
| 366 |
+
<span style="position:relative;z-index:1">${p.emoji}</span>
|
| 367 |
+
</div>
|
| 368 |
+
<div class="project-body">
|
| 369 |
+
<h3 style="font-size:1.25rem;font-weight:700;margin-bottom:.25rem">${p.name}</h3>
|
| 370 |
+
<p style="color:${p.color};font-size:.875rem;font-weight:500;margin-bottom:.75rem">${p.tagline}</p>
|
| 371 |
+
<p style="color:var(--text-dim);font-size:.8125rem;line-height:1.7;margin-bottom:1rem">${p.desc}</p>
|
| 372 |
+
<div class="flex flex-wrap gap-1" style="margin-bottom:1rem">
|
| 373 |
+
${p.stats.map(s=>`<span style="padding:.25rem .75rem;border-radius:9999px;font-size:.625rem;font-weight:600;background:${p.color}15;color:${p.color};border:1px solid ${p.color}25">${s}</span>`).join('')}
|
| 374 |
+
</div>
|
| 375 |
+
<div class="flex flex-wrap gap-1" style="margin-bottom:1.25rem">
|
| 376 |
+
${p.tags.map(t=>`<span style="padding:.2rem .6rem;border-radius:9999px;font-size:.625rem;color:var(--text-dim);background:var(--bg-card);border:1px solid var(--border)">${t}</span>`).join('')}
|
| 377 |
+
</div>
|
| 378 |
+
<div class="flex gap-2">
|
| 379 |
+
${p.links.map(l=>`<a href="${l.url}" target="_blank" rel="noopener noreferrer" class="btn btn-sm btn-ghost"><svg class="icon icon-sm"><use href="#${l.icon}"/></svg>${l.label}</a>`).join('')}
|
| 380 |
+
</div>
|
| 381 |
+
</div>
|
| 382 |
+
</div>`;
|
| 383 |
+
projectsGrid.appendChild(card);
|
| 384 |
+
revealObserver.observe(card);
|
| 385 |
+
});
|
| 386 |
+
|
| 387 |
+
// ===== BLOG POSTS =====
|
| 388 |
+
const blogPosts=[
|
| 389 |
+
{
|
| 390 |
+
title:'Building a Local AI Coding Assistant from Scratch',
|
| 391 |
+
excerpt:'How I built Axon — a free, 100% local AI coding assistant with 25 tools and custom AVX2-optimized inference. The journey from broken wheels to 2-3x speedups.',
|
| 392 |
+
date:'Jan 2026',readTime:'8 min',
|
| 393 |
+
tags:['llama.cpp','Local AI','Tutorial'],
|
| 394 |
+
color:'#f59e0b',bg:'linear-gradient(135deg,#2d1800,#1a1000)',icon:'i-zap'
|
| 395 |
+
},
|
| 396 |
+
{
|
| 397 |
+
title:'Model Merging: Combining Coding & Math LLMs',
|
| 398 |
+
excerpt:'A deep dive into merging Qwen2.5-Coder and Qwen2.5-Math using DARE-TIES to create a model that excels at both — architecture compatibility, weight tuning, and results.',
|
| 399 |
+
date:'Feb 2026',readTime:'6 min',
|
| 400 |
+
tags:['Model Merging','DARE-TIES','Qwen'],
|
| 401 |
+
color:'#c084fc',bg:'linear-gradient(135deg,#1a0033,#2a0052)',icon:'i-merge'
|
| 402 |
+
},
|
| 403 |
+
{
|
| 404 |
+
title:'MedGemma for Radiology: Building an AI Triage Agent',
|
| 405 |
+
excerpt:'How I used MedGemma 1.5 4B to build a 3-step agentic pipeline for chest X-ray analysis — from severity classification to structured radiology reports.',
|
| 406 |
+
date:'Feb 2026',readTime:'10 min',
|
| 407 |
+
tags:['Medical AI','MedGemma','Agents'],
|
| 408 |
+
color:'#60a5fa',bg:'linear-gradient(135deg,#001a2e,#002244)',icon:'i-activity'
|
| 409 |
+
}
|
| 410 |
];
|
| 411 |
+
const blogGrid=document.getElementById('blog-grid');
|
| 412 |
+
blogPosts.forEach(post=>{
|
| 413 |
+
const el=document.createElement('div');
|
| 414 |
+
el.className='blog-card glow-card reveal';
|
| 415 |
+
el.innerHTML=`
|
| 416 |
+
<div class="blog-header" style="background:${post.bg}">
|
| 417 |
+
<svg class="icon" style="font-size:2.5rem;color:${post.color};position:relative;z-index:1;opacity:.8"><use href="#${post.icon}"/></svg>
|
| 418 |
+
</div>
|
| 419 |
+
<div class="blog-body">
|
| 420 |
+
<div class="blog-meta">
|
| 421 |
+
<span class="flex items-center gap-1"><svg class="icon icon-sm"><use href="#i-calendar"/></svg>${post.date}</span>
|
| 422 |
+
<span class="blog-dot"></span>
|
| 423 |
+
<span class="flex items-center gap-1"><svg class="icon icon-sm"><use href="#i-clock"/></svg>${post.readTime}</span>
|
| 424 |
+
</div>
|
| 425 |
+
<h3 style="font-size:1rem;font-weight:700;margin-bottom:.5rem;line-height:1.4">${post.title}</h3>
|
| 426 |
+
<p style="font-size:.8125rem;color:var(--text-dim);line-height:1.6;margin-bottom:1rem">${post.excerpt}</p>
|
| 427 |
+
<div class="flex flex-wrap gap-1">
|
| 428 |
+
${post.tags.map(t=>`<span style="padding:.2rem .6rem;border-radius:9999px;font-size:.625rem;color:${post.color};background:${post.color}10;border:1px solid ${post.color}20">${t}</span>`).join('')}
|
| 429 |
+
</div>
|
| 430 |
+
</div>`;
|
| 431 |
+
blogGrid.appendChild(el);
|
| 432 |
+
revealObserver.observe(el);
|
| 433 |
+
});
|
| 434 |
+
|
| 435 |
+
// ===== HF DATA =====
|
| 436 |
+
const FALLBACK_HF_MODELS=[{id:'AIencoder/Logic-Coder-7B',downloads:95,likes:1},{id:'AIencoder/Hermes-2-Pro-Mistral-7B-GodCoder',downloads:15,likes:1},{id:'AIencoder/Logic-Coder-7B-Q4_K_M-GGUF',downloads:52,likes:0},{id:'AIencoder/HermesMath-7B-TIES',downloads:17,likes:1},{id:'AIencoder/Llama3-CodeInstruct-8B',downloads:11,likes:0},{id:'AIencoder/Axon26-Coder',downloads:23,likes:0}];
|
| 437 |
+
const FALLBACK_HF_SPACES=[{id:'AIencoder/AXON-TRINITY',sdk:'Gradio',likes:0},{id:'AIencoder/Axon',sdk:'Docker',likes:3},{id:'AIencoder/llama-wheel-factory',sdk:'Docker',likes:0},{id:'AIencoder/merge-config-generator',sdk:'Gradio',likes:0},{id:'AIencoder/Prompt-Template-Tester',sdk:'Gradio',likes:0},{id:'AIencoder/Axon-Llama-GUI',sdk:'Docker',likes:0}];
|
| 438 |
+
const FALLBACK_HF_DATASETS=[{id:'AIencoder/llama-cpp-wheels',downloads:153,likes:1}];
|
| 439 |
+
const FALLBACK_GH_REPOS=[{name:'llama-cpp-python',desc:'Python bindings for llama.cpp',lang:'Python',stars:0,url:'https://github.com/Ary5272/llama-cpp-python',date:'Jan 25'},{name:'llama.cpp',desc:'LLM inference in C/C++',lang:'C++',stars:0,url:'https://github.com/Ary5272/llama.cpp',date:'Jan 25'},{name:'llama.cpp-Dockerfile',desc:'Dockerfile for llama.cpp',lang:'Dockerfile',stars:0,url:'https://github.com/Ary5272/llama.cpp-Dockerfile',date:'Jan 25'},{name:'Ary5272',desc:'Config files for my GitHub profile.',lang:'',stars:1,url:'https://github.com/Ary5272/Ary5272',date:'Jan 24'},{name:'tutor-app-final',desc:'Tutor application',lang:'HTML',stars:1,url:'https://github.com/Ary5272/tutor-app-final',date:'Jan 21'}];
|
| 440 |
|
|
|
|
| 441 |
const LANG_COLORS={Python:'#3572A5','C++':'#f34b7d',Dockerfile:'#384d54',HTML:'#e34c26',JavaScript:'#f1e05a'};
|
| 442 |
|
| 443 |
function renderHfCards(items,containerId,type,icon,color){
|
| 444 |
const grid=document.getElementById(containerId);
|
| 445 |
const base=type==='model'?'https://huggingface.co/':type==='space'?'https://huggingface.co/spaces/':'https://huggingface.co/datasets/';
|
| 446 |
+
items.forEach(m=>{const name=m.id.split('/')[1];const el=document.createElement('a');el.href=base+m.id;el.target='_blank';el.rel='noopener noreferrer';el.className='card glow-card card-amber';el.innerHTML=`<div class="flex items-center justify-between" style="margin-bottom:.75rem"><div style="width:40px;height:40px;background:${color}15;border-radius:12px;display:flex;align-items:center;justify-content:center;color:${color};font-size:1.25rem"><svg class="icon icon-md"><use href="#i-${icon}"/></svg></div><div class="flex items-center gap-3" style="font-size:.75rem;color:var(--text-dim)">${m.downloads!==undefined?`<span class="flex items-center gap-1"><svg class="icon icon-sm"><use href="#i-download"/></svg> ${m.downloads}</span>`:''} ${m.sdk?`<span style="background:var(--bg-card-hover);padding:.125rem .5rem;border-radius:9999px;font-size:.625rem">${m.sdk}</span>`:''}<span class="flex items-center gap-1"><svg class="icon icon-sm"><use href="#i-heart"/></svg> ${m.likes}</span></div></div><h4 style="font-weight:600;font-size:.875rem;margin-bottom:.25rem" class="truncate">${name}</h4><div style="margin-top:.75rem;display:flex;align-items:center;gap:.375rem;color:${color};font-size:.75rem;font-weight:500">Explore <svg class="icon icon-sm"><use href="#i-right"/></svg></div>`;grid.appendChild(el)});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 447 |
}
|
|
|
|
| 448 |
function renderGhRepos(repos){
|
| 449 |
+
const grid=document.getElementById('gh-grid');grid.innerHTML='';
|
| 450 |
+
repos.forEach(r=>{const el=document.createElement('a');el.href=r.url;el.target='_blank';el.rel='noopener noreferrer';el.className='card glow-card card-purple';const lc=LANG_COLORS[r.lang]||'#8b8b8b';el.innerHTML=`<div class="flex items-center justify-between" style="margin-bottom:.75rem"><div class="flex items-center gap-2" style="min-width:0"><svg class="icon icon-sm" style="color:var(--text-dim);flex-shrink:0"><use href="#i-book"/></svg><h4 style="font-weight:600;font-size:.875rem" class="truncate">${r.name}</h4></div><svg class="icon icon-sm" style="color:var(--text-faint);flex-shrink:0"><use href="#i-up-right"/></svg></div><p class="repo-desc">${r.desc||'No description'}</p><div class="flex items-center justify-between" style="font-size:.75rem"><div class="flex items-center gap-3">${r.lang?`<span class="flex items-center gap-1"><span class="lang-dot" style="background:${lc}"></span><span style="color:var(--text-muted)">${r.lang}</span></span>`:''}<span class="flex items-center gap-1" style="color:var(--text-dim)"><svg class="icon icon-sm"><use href="#i-star"/></svg> ${r.stars}</span></div><span style="color:var(--text-faint)">${r.date}</span></div>`;grid.appendChild(el)});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 451 |
}
|
| 452 |
|
| 453 |
// ===== TECH STACK =====
|
| 454 |
+
const techs=[{name:'Machine Learning',icon:'brain',color:'#f59e0b'},{name:'Python',icon:'file',color:'#60a5fa'},{name:'PyTorch',icon:'flame',color:'#f97316'},{name:'TensorFlow',icon:'layout',color:'#34d399'},{name:'HF Transformers',icon:'db',color:'#c084fc'},{name:'Git',icon:'branch',color:'#22d3ee'},{name:'Docker',icon:'box',color:'#f472b6'},{name:'Cloud Services',icon:'cloud',color:'#818cf8'}];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 455 |
const tp=document.getElementById('tech-pills');
|
| 456 |
+
techs.forEach(t=>{const el=document.createElement('div');el.className='pill';el.onmouseover=function(){this.style.borderColor=t.color+'50'};el.onmouseout=function(){this.style.borderColor=''};el.innerHTML=`<svg class="icon" style="color:${t.color}"><use href="#i-${t.icon}"/></svg><span>${t.name}</span>`;tp.appendChild(el)});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 457 |
|
| 458 |
+
// ===== RENDER FALLBACK DATA =====
|
| 459 |
renderHfCards(FALLBACK_HF_MODELS,'hf-models','model','brain','#f59e0b');
|
| 460 |
renderHfCards(FALLBACK_HF_SPACES,'hf-spaces','space','layout','#c084fc');
|
| 461 |
renderHfCards(FALLBACK_HF_DATASETS,'hf-datasets','dataset','db','#34d399');
|
| 462 |
renderGhRepos(FALLBACK_GH_REPOS);
|
| 463 |
|
| 464 |
+
// ===== LIVE FETCH UPGRADES =====
|
| 465 |
(async()=>{
|
| 466 |
+
try{const r=await fetch('https://api.github.com/users/Ary5272');if(!r.ok)return;const u=await r.json();if(u.name)document.getElementById('gh-name').textContent=u.name;if(u.bio)document.getElementById('gh-bio').textContent=u.bio;if(u.public_repos){document.getElementById('gh-repos-n').textContent=u.public_repos;document.getElementById('s-repos').textContent=u.public_repos+'+'}if(u.followers)document.getElementById('gh-followers-n').textContent=u.followers;if(u.avatar_url){const img=document.getElementById('gh-avatar');if(img&&img.tagName==='IMG')img.src=u.avatar_url}}catch(e){}
|
| 467 |
+
try{const r=await fetch('https://api.github.com/users/Ary5272/repos?sort=updated&per_page=6');if(!r.ok)return;const repos=await r.json();renderGhRepos(repos.map(r=>({name:r.name,desc:r.description||'',lang:r.language||'',stars:r.stargazers_count,url:r.html_url,date:new Date(r.updated_at).toLocaleDateString('en-US',{month:'short',day:'numeric'})})))}catch(e){}
|
| 468 |
+
try{const r=await fetch('https://huggingface.co/api/users/AIencoder/overview');if(!r.ok)return;const u=await r.json();if(u.fullname)document.getElementById('hf-name').textContent=u.fullname;if(u.numModels)document.getElementById('hf-n-models').textContent=u.numModels;if(u.numSpaces)document.getElementById('hf-n-spaces').textContent=u.numSpaces;if(u.numDatasets)document.getElementById('hf-n-datasets').textContent=u.numDatasets;if(u.numFollowers)document.getElementById('hf-n-followers').textContent=u.numFollowers;if(u.avatarUrl){const img=document.getElementById('hf-avatar');if(img&&img.tagName==='IMG')img.src='https://huggingface.co'+u.avatarUrl}}catch(e){}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 469 |
})();
|
| 470 |
|
| 471 |
// ===== MOBILE MENU =====
|
| 472 |
document.getElementById('menu-btn').addEventListener('click',()=>document.getElementById('mobile-menu').classList.toggle('hidden'));
|
| 473 |
|
| 474 |
// ===== SMOOTH SCROLL =====
|
| 475 |
+
document.querySelectorAll('a[href^="#"]').forEach(a=>a.addEventListener('click',function(e){e.preventDefault();const t=document.querySelector(this.getAttribute('href'));if(t){t.scrollIntoView({behavior:'smooth',block:'start'});document.getElementById('mobile-menu').classList.add('hidden')}}));
|
|
|
|
|
|
|
|
|
|
|
|
|
| 476 |
|
| 477 |
// ===== RESPONSIVE NAV =====
|
| 478 |
+
function checkNav(){const w=window.innerWidth;document.getElementById('nav-links').style.display=w>=768?'flex':'none';document.getElementById('menu-btn').style.display=w<768?'block':'none';if(w>=768)document.getElementById('mobile-menu').classList.add('hidden')}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 479 |
window.addEventListener('resize',checkNav);checkNav();
|
| 480 |
</script>
|
| 481 |
</body>
|