2626
2727 <!-- Open Graph / Facebook -->
2828 < meta property ="og:type " content ="website ">
29- < meta property ="og:url " content ="https://devcompack.github.io / ">
29+ < meta property ="og:url " content ="https://dev.saidelimam.com / ">
3030 < meta property ="og:title " content ="Said Elimam | Public Dev Projects ">
3131 < meta property ="og:description " content ="Portfolio of Said Elimam - Public development projects including GoCollab.cc, DCP Setup Maker, Portfolio Template, and more. ">
32- < meta property ="og:image " content ="https://devcompack.github.io /favicon.png ">
32+ < meta property ="og:image " content ="https://dev.saidelimam.com /favicon.png ">
3333 < meta property ="og:site_name " content ="Said Elimam Portfolio ">
3434 < meta property ="og:locale " content ="en_US ">
3535
3636 <!-- Twitter -->
3737 < meta name ="twitter:card " content ="summary_large_image ">
38- < meta name ="twitter:url " content ="https://devcompack.github.io / ">
38+ < meta name ="twitter:url " content ="https://dev.saidelimam.com / ">
3939 < meta name ="twitter:title " content ="Said Elimam | Public Dev Projects ">
4040 < meta name ="twitter:description " content ="Portfolio of Said Elimam - Public development projects including GoCollab.cc, DCP Setup Maker, Portfolio Template, and more. ">
41- < meta name ="twitter:image " content ="https://devcompack.github.io /favicon.png ">
41+ < meta name ="twitter:image " content ="https://dev.saidelimam.com /favicon.png ">
4242
4343 <!-- Additional Meta Tags -->
4444 < meta name ="theme-color " content ="#0a0e27 ">
4545 < meta name ="msapplication-TileColor " content ="#0a0e27 ">
46- < link rel ="canonical " href ="https://devcompack.github.io / ">
46+ < link rel ="canonical " href ="https://dev.saidelimam.com / ">
4747
4848 <!-- Structured Data (JSON-LD) -->
4949 < script type ="application/ld+json ">
5050 {
5151 "@context" : "https://schema.org" ,
5252 "@type" : "Person" ,
5353 "name" : "Said Elimam" ,
54- "url" : "https://devcompack.github.io /" ,
54+ "url" : "https://dev.saidelimam.com /" ,
5555 "sameAs" : [
5656 "https://saidelimam.com" ,
5757 "https://github.com/saidelimam"
6464 }
6565 </ script >
6666
67- < script >
67+ < script defer >
6868 ( function ( i , s , o , g , r , a , m ) {
6969 i [ 'GoogleAnalyticsObject' ] = r ; i [ r ] = i [ r ] || function ( ) {
7070 ( i [ r ] . q = i [ r ] . q || [ ] ) . push ( arguments )
7474
7575 ga ( 'create' , 'UA-51359241-3' , 'auto' ) ;
7676 ga ( 'send' , 'pageview' ) ;
77-
7877 </ script >
7978</ head >
8079
@@ -106,7 +105,7 @@ <h1 class="subtitle">
106105 </ span >
107106 < a href ="https://simt.app " class ="card-image ">
108107 < div class ="card-image-wrapper ">
109- < img alt ="SIMT logo " src ="images/simt.png ">
108+ < img alt ="SIMT logo " src ="images/simt.png " width =" 140 " height =" 140 " loading =" eager " fetchpriority =" high " >
110109 </ div >
111110 </ a >
112111 < div class ="card-content ">
@@ -132,7 +131,7 @@ <h2 class="card-title">
132131 </ span >
133132 < a href ="https://github.com/saidelimam/portfolio " class ="card-image ">
134133 < div class ="card-image-wrapper ">
135- < img alt ="Portfolio Template logo " src ="images/portfolio.webp ">
134+ < img alt ="Portfolio Template logo " src ="images/portfolio.webp " width =" 140 " height =" 140 " loading =" eager " >
136135 </ div >
137136 </ a >
138137 < div class ="card-content ">
@@ -165,7 +164,7 @@ <h2 class="card-title">
165164 </ span >
166165 < a href ="https://www.gocollab.cc " class ="card-image ">
167166 < div class ="card-image-wrapper ">
168- < img alt ="GoCollab logo " src ="images/gocollab.ico ">
167+ < img alt ="GoCollab logo " src ="images/gocollab.ico " width =" 140 " height =" 140 " loading =" eager " >
169168 </ div >
170169 </ a >
171170 < div class ="card-content ">
@@ -204,7 +203,7 @@ <h2 class="card-title">
204203 </ span >
205204 < a href ="http://dev.saidelimam.com/setupmaker/ " class ="card-image ">
206205 < div class ="card-image-wrapper ">
207- < img alt ="DCP Setup Maker logo " src ="images/setupmaker.png ">
206+ < img alt ="DCP Setup Maker logo " src ="images/setupmaker.png " width =" 140 " height =" 140 " loading =" lazy " >
208207 </ div >
209208 </ a >
210209 < div class ="card-content ">
@@ -243,101 +242,124 @@ <h2 class="card-title">
243242 </ svg >
244243 </ button >
245244 < div class ="archive-content " id ="archiveContent ">
246- < div class ="cards-container ">
247- < div class ="card " data-status ="aborted ">
248- < span class ="card-label label-aborted ">
249- < span class ="status-dot "> </ span > aborted
250- </ span >
251- < a href ="https://github.com/RoleSwitch " class ="card-image ">
252- < div class ="card-image-wrapper ">
253- < img alt ="RoleSwitch logo " src ="images/roleswitch.png ">
245+ < ul class ="archive-list ">
246+ < li class ="archive-item " data-status ="aborted ">
247+ < div class ="archive-item-content ">
248+ < div class ="archive-item-header ">
249+ < div class ="archive-item-left ">
250+ < img alt ="RoleSwitch logo " src ="images/roleswitch.png " width ="40 " height ="40 " loading ="lazy " class ="archive-logo ">
251+ < h3 class ="archive-item-title ">
252+ < a href ="https://github.com/RoleSwitch "> RoleSwitch</ a >
253+ </ h3 >
254+ < span class ="archive-status label-aborted ">
255+ < span class ="status-dot "> </ span > aborted
256+ </ span >
257+ < span class ="archive-year "> 2015</ span >
258+ </ div >
254259 </ div >
255- </ a >
256- < div class ="card-content ">
257- < div class ="card-header ">
258- < h2 class ="card-title ">
259- < a href ="https://github.com/RoleSwitch "> RoleSwitch</ a >
260- </ h2 >
261- < span class ="card-year "> 2015</ span >
262- </ div >
263- < p class ="card-description "> Role-Playing Social Network project.</ p >
264- < a href ="https://github.com/RoleSwitch " class ="card-link ">
265- < span > View Source</ span >
266- < svg width ="16 " height ="16 " viewBox ="0 0 16 16 " fill ="none " xmlns ="http://www.w3.org/2000/svg ">
260+ < p class ="archive-description "> Role-Playing Social Network project.</ p >
261+ < a href ="https://github.com/RoleSwitch " class ="archive-link ">
262+ View Source
263+ < svg width ="14 " height ="14 " viewBox ="0 0 16 16 " fill ="none " xmlns ="http://www.w3.org/2000/svg ">
267264 < path d ="M6 12L10 8L6 4 " stroke ="currentColor " stroke-width ="2 " stroke-linecap ="round " stroke-linejoin ="round "/>
268265 </ svg >
269266 </ a >
270267 </ div >
271- </ div >
268+ </ li >
272269
273- < div class ="card " data-status ="aborted ">
274- < span class ="card-label label-aborted ">
275- < span class ="status-dot "> </ span > aborted
276- </ span >
277- < a href ="https://github.com/HumInAct " class ="card-image ">
278- < div class ="card-image-wrapper ">
279- < img alt ="HumInAct logo " src ="images/huminact_logo.png ">
270+ < li class ="archive-item " data-status ="aborted ">
271+ < div class ="archive-item-content ">
272+ < div class ="archive-item-header ">
273+ < div class ="archive-item-left ">
274+ < img alt ="HumInAct logo " src ="images/huminact_logo.png " width ="40 " height ="40 " loading ="lazy " class ="archive-logo ">
275+ < h3 class ="archive-item-title ">
276+ < a href ="https://github.com/HumInAct "> HumInAct</ a >
277+ </ h3 >
278+ < span class ="archive-status label-aborted ">
279+ < span class ="status-dot "> </ span > aborted
280+ </ span >
281+ < span class ="archive-year "> 2015</ span >
282+ </ div >
280283 </ div >
281- </ a >
282- < div class ="card-content ">
283- < div class ="card-header ">
284- < h2 class ="card-title ">
285- < a href ="https://github.com/HumInAct "> HumInAct</ a >
286- </ h2 >
287- < span class ="card-year "> 2015</ span >
288- </ div >
289- < p class ="card-description "> Artificial Intelligence project to simulate brain memory using NLP.</ p >
290- < a href ="https://github.com/HumInAct " class ="card-link ">
291- < span > View Source</ span >
292- < svg width ="16 " height ="16 " viewBox ="0 0 16 16 " fill ="none " xmlns ="http://www.w3.org/2000/svg ">
284+ < p class ="archive-description "> Artificial Intelligence project to simulate brain memory using NLP.</ p >
285+ < a href ="https://github.com/HumInAct " class ="archive-link ">
286+ View Source
287+ < svg width ="14 " height ="14 " viewBox ="0 0 16 16 " fill ="none " xmlns ="http://www.w3.org/2000/svg ">
293288 < path d ="M6 12L10 8L6 4 " stroke ="currentColor " stroke-width ="2 " stroke-linecap ="round " stroke-linejoin ="round "/>
294289 </ svg >
295290 </ a >
296291 </ div >
297- </ div >
292+ </ li >
298293
299- < div class ="card " data-status ="abandoned ">
300- < span class ="card-label label-abandoned ">
301- < span class ="status-dot "> </ span > abandoned
302- </ span >
303- < a href ="https://sourceforge.net/projects/graphmake/ " class ="card-image ">
304- < div class ="card-image-wrapper ">
305- < img alt ="GraphMake logo " src ="images/graphmake_logo.jpg ">
306- </ div >
307- </ a >
308- < div class ="card-content ">
309- < div class ="card-header ">
310- < h2 class ="card-title ">
311- < a href ="https://sourceforge.net/projects/graphmake/ "> GraphMake</ a >
312- </ h2 >
313- < span class ="card-year "> 2010</ span >
294+ < li class ="archive-item " data-status ="abandoned ">
295+ < div class ="archive-item-content ">
296+ < div class ="archive-item-header ">
297+ < div class ="archive-item-left ">
298+ < img alt ="GraphMake logo " src ="images/graphmake_logo.jpg " width ="40 " height ="40 " loading ="lazy " class ="archive-logo ">
299+ < h3 class ="archive-item-title ">
300+ < a href ="https://sourceforge.net/projects/graphmake/ "> GraphMake</ a >
301+ </ h3 >
302+ < span class ="archive-status label-abandoned ">
303+ < span class ="status-dot "> </ span > abandoned
304+ </ span >
305+ < span class ="archive-year "> 2010</ span >
306+ </ div >
314307 </ div >
315- < p class ="card -description "> Free Open-Source Software, for making graphs, and scheduling projects.</ p >
316- < a href ="https://sourceforge.net/projects/graphmake/ " class ="card -link ">
317- < span > Download</ span >
318- < svg width ="16 " height ="16 " viewBox ="0 0 16 16 " fill ="none " xmlns ="http://www.w3.org/2000/svg ">
308+ < p class ="archive -description "> Free Open-Source Software, for making graphs, and scheduling projects.</ p >
309+ < a href ="https://sourceforge.net/projects/graphmake/ " class ="archive -link ">
310+ Download
311+ < svg width ="14 " height ="14 " viewBox ="0 0 16 16 " fill ="none " xmlns ="http://www.w3.org/2000/svg ">
319312 < path d ="M6 12L10 8L6 4 " stroke ="currentColor " stroke-width ="2 " stroke-linecap ="round " stroke-linejoin ="round "/>
320313 </ svg >
321314 </ a >
322315 </ div >
323- </ div >
324- </ div >
316+ </ li >
317+ </ ul >
325318 </ div >
326319 </ div >
327320 </ div >
328321
329322 < footer class ="footer ">
330323 < div class ="footer-content ">
331- < p class ="footer-text ">
332- < span class ="code-comment "> //</ span > © < span id ="current-year "> </ span > Created by < a href ="https://saidelimam.com " class ="footer-link "> Said Elimam</ a >
333- </ p >
324+ < div class ="git-blame ">
325+ < div class ="git-blame-line ">
326+ < span class ="git-blame-hash "> ^< span id ="commit-hash "> a1b2c3d</ span > </ span >
327+ < span class ="git-blame-line-number "> 1</ span >
328+ < span class ="git-blame-filename "> index.html</ span >
329+ < span class ="git-blame-author ">
330+ < a href ="https://saidelimam.com " class ="footer-link "> Said Elimam</ a >
331+ </ span >
332+ < span class ="git-blame-date ">
333+ (< span id ="current-year "> </ span > -01-27)
334+ </ span >
335+ < span class ="git-blame-message "> // Committed by Said Elimam</ span >
336+ </ div >
337+ </ div >
334338 </ div >
335339 </ footer >
336340 </ div >
337341
338342 < script >
339- // Set current year for copyright
340- document . getElementById ( 'current-year' ) . textContent = new Date ( ) . getFullYear ( ) ;
343+ // Set current year for copyright and git blame
344+ const currentYear = new Date ( ) . getFullYear ( ) ;
345+ const currentYearEl = document . getElementById ( 'current-year' ) ;
346+ if ( currentYearEl ) {
347+ currentYearEl . textContent = currentYear ;
348+ }
349+
350+ // Generate a simple commit hash-like string
351+ function generateCommitHash ( ) {
352+ const chars = '0123456789abcdef' ;
353+ let hash = '' ;
354+ for ( let i = 0 ; i < 7 ; i ++ ) {
355+ hash += chars [ Math . floor ( Math . random ( ) * chars . length ) ] ;
356+ }
357+ return hash ;
358+ }
359+ const commitHashEl = document . getElementById ( 'commit-hash' ) ;
360+ if ( commitHashEl ) {
361+ commitHashEl . textContent = generateCommitHash ( ) ;
362+ }
341363
342364 // Archive toggle functionality
343365 document . addEventListener ( 'DOMContentLoaded' , function ( ) {
@@ -355,7 +377,7 @@ <h2 class="card-title">
355377 } ) ;
356378 </ script >
357379
358- < script async src ="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7816663811120927 "
380+ < script async defer src ="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7816663811120927 "
359381 crossorigin ="anonymous "> </ script >
360382</ body >
361383
0 commit comments