Help
RSS
API
Feed
Maltego
Contact
Domain > davidjia.ca
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2024-01-26
52.92.186.27
(
ClassC
)
2025-09-06
3.5.77.82
(
ClassC
)
2025-11-12
3.5.81.239
(
ClassC
)
Port 80
HTTP/1.1 200 OKx-amz-id-2: KTy3Brv1bLFip+92R6+XbGZ7yVt/Wc190VuleoFdaEPAXmLdGWCF58HD56lWt83yfUyCaOa34czxXfQQ0EW/+lhf5uFKVUcB5ScTWROfELgx-amz-request-id: 7F02SYWDW01WMVSEDate: Wed, 12 Nov 2025 21:21:43 GMTLast-Modified: Wed, 05 Mar 2025 00:32:42 GMTETag: 38dc0c2c12b3e465317e8815c79acf74Content-Type: text/htmlContent-Length: 22449Server: AmazonS3 !DOCTYPE html>html langen>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>David Jia | Cyberpunk Portfolio/title> link relstylesheet hrefstyle.css> link hrefhttps://fonts.googleapis.com/css2?familyUbuntu+Mono:wght@400;700&familyVT323&displayswap relstylesheet> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css> !-- Add Plotly.js for interactive visualizations --> script srchttps://cdn.plot.ly/plotly-latest.min.js>/script> !-- Add scroll reveal script --> script srcscroll-reveal.js>/script>/head>body> div classscroll-progress>/div> header classcyber-header> h1 classglitch data-textDAVID_JIA>DAVID_JIA/h1> p classcyber-tagline data-text// Full-Stack Dev - Data Scientist>/p> /header> nav classcyber-nav> ul> li>a href#bio classneon-link>>_Bio/a>/li> li>a href#work classneon-link>>_Work/a>/li> li>a hrefcredit-card.html target_self onclickwindow.location.hrefcredit-card.html; return false; classneon-link>>_CC Analytics/a>/li> li>a href#quotes classneon-link>>_Quotes/a>/li> li>a href#contact classneon-link scroll-trigger>>_Contact/a>/li> /ul> /nav> main> section idhome classhero> h2>Innovative Digital Solutions/h2> p>We specialize in creating bespoke web experiences that drive business growth./p> /section> section idservices> h2>Our Services/h2> div classservice-grid> article classservice-card> h3>Web Development/h3> p>Full-stack development using modern technologies/p> /article> article classservice-card> h3>UI/UX Design/h3> p>User-centered interface design and prototyping/p> /article> /div> /section> section idquotes classquotes-section> h2 classglitch data-textQuotes that stuck with me>Quotes that stuck with me/h2> div classquotes-track> div classquote-container> blockquote classcyber-quote> p>True invention requires lateral thinking, not just incremental improvement. When great minds collaborate, innovation flourishes exponentially./p> cite>- Jeff Bezos on Lex Fridman Podcast/cite> /blockquote> /div> div classquote-container> blockquote classcyber-quote> p>If humanity can overcome the climate challenge, our reward is nothing less than the solar system itself./p> cite>- Adam Frank/cite> /blockquote> /div> div classquote-container> blockquote classcyber-quote> p>Trading teaches lifes essential lessons: discipline over emotion, long-term vision over immediate gratification, and the value of consistent dedication./p> cite>- Market Wisdom/cite> /blockquote> /div> div classquote-container> blockquote classcyber-quote> p>True growth comes from competing with yourself, not others. Your only meaningful comparison is with who you were yesterday./p> cite>- Personal Development Principle/cite> /blockquote> /div> div classquote-container> blockquote classcyber-quote> p>History never repeats itself, but man always does./p> cite>- Voltaire/cite> /blockquote> /div> /div> script> document.addEventListener(DOMContentLoaded, function() { const track document.querySelector(.quotes-track); const quotes document.querySelectorAll(.quote-container); // Clone quotes for infinite scroll quotes.forEach(quote > { const clone quote.cloneNode(true); track.appendChild(clone); }); // Handle quote crash and removal animation track.addEventListener(animationend, (e) > { if (e.animationName slideLeft) { const quote e.target; // Add crash effect quote.style.transition all 0.3s ease; quote.classList.add(quote-death); // Add enhanced screen shake and flash effects document.body.style.animation shake 0.8s cubic-bezier(.36,.07,.19,.97) both; quote.style.animation flash 0.5s ease-in-out; // Add impact flash to nearby quotes const nearbyQuotes Array.from(track.children) .filter(q > q ! quote && Math.abs(q.offsetLeft - quote.offsetLeft) 600); nearbyQuotes.forEach(q > { q.style.animation flash 0.3s ease-out; setTimeout(() > q.style.animation , 300); }); // Reset shake effect setTimeout(() > { document.body.style.animation ; }, 800); // Reset quote after animation with longer duration setTimeout(() > { quote.classList.remove(quote-death); quote.style.transition ; quote.style.animation ; track.appendChild(quote); }, 2500); // Increased duration for more dramatic effect } }); // Add enhanced shake and flash animation styles const style document.createElement(style); style.textContent ` @keyframes shake { 0%, 100% { transform: translate(0, 0) rotate(0deg); } 15% { transform: translate(-8px, 2px) rotate(-1deg); } 30% { transform: translate(6px, -2px) rotate(1deg); } 45% { transform: translate(-6px, 1px) rotate(-0.5deg); } 60% { transform: translate(4px, -1px) rotate(0.5deg); } 75% { transform: translate(-3px, 1px) rotate(-0.25deg); } 90% { transform: translate(2px, 0) rotate(0.1deg); } } @keyframes flash { 0%, 100% { filter: brightness(1); } 25% { filter: brightness(1.5); } 50% { filter: brightness(2); } 75% { filter: brightness(1.5); } } `; document.head.appendChild(style); }); /script> /section> !-- Contact section script --> script> document.addEventListener(DOMContentLoaded, function() { // Handle quotes navigation // Handle quotes navigation document.querySelector(.cyber-nav ahref#quotes).addEventListener(click, function(e) { e.preventDefault(); const quotesSection document.getElementById(quotes); quotesSection.classList.toggle(active); }); // Add glitch effect to form inputs on focus const inputs document.querySelectorAll(.neon-input); inputs.forEach(input > { input.addEventListener(focus, () > { input.parentElement.classList.add(input-active); }); input.addEventListener(blur, () > { input.parentElement.classList.remove(input-active); }); }); // Add button hover sound effect const button document.querySelector(.cyber-button); if (button) { button.addEventListener(mouseenter, () > { button.style.transition all 0.3s ease; }); } }); /script> section idcontact classcontact-section> h2 classglitch data-textGet in Touch>Get in Touch/h2> div classcontact-container> div classcontact-info> div classinfo-item> span classinfo-icon>@/span> p>contact@davidjia.ca/p> /div> div classinfo-item> span classinfo-icon>>/span> p>Toronto, ON, Canada/p> /div> div classsocial-links> a href# classsocial-link> i classfab fa-github>/i> span>GitHub/span> div classhologram>/div> /a> a href# classsocial-link> i classfab fa-linkedin>/i> span>LinkedIn/span> div classhologram>/div> /a> a href# classsocial-link> i classfab fa-twitter>/i> span>Twitter/span> div classhologram>/div> /a> /div> /div> form classcontact-form> div classform-group> label forname classcyber-label>>_name:/label> input idname classneon-input typetext required> /div> div classform-group> label foremail classcyber-label>>_email:/label> input idemail classneon-input typeemail required> /div> div classform-group> label forsubject classcyber-label>>_subject:/label> input idsubject classneon-input typetext required> /div> div classform-group> label formessage classcyber-label>>_message:/label> textarea idmessage classneon-input rows5 required>/textarea> /div> button typesubmit classcyber-button> span classbutton-text>TRANSMIT_MESSAGE/span> span classbutton-glitch>/span> /button> /form> /div> /section> /main> footer classsite-footer> p>© span idcurrent-year>/span> David Jia inc. All rights reserved./p> /footer> script> document.getElementById(current-year).textContent new Date().getFullYear(); /script> !-- Add scroll reveal animations --> script> document.addEventListener(DOMContentLoaded, function() { // Add reveal classes to elements document.querySelectorAll(section).forEach(section > { section.classList.add(reveal-on-scroll); // Add stagger effect to service cards if (section.querySelector(.service-grid)) { section.querySelector(.service-grid).classList.add(stagger-children); } }); document.querySelectorAll(.service-card, .cyber-quote, .contact-form, .contact-info).forEach(el > { el.classList.add(reveal-on-scroll); }); // Initialize Intersection Observer const observerOptions { root: null, rootMargin: 0px, threshold: 0.15 }; const observer new IntersectionObserver((entries, observer) > { entries.forEach(entry > { if (entry.isIntersecting) { entry.target.classList.add(active); // If the element has stagger children, activate them too if (entry.target.classList.contains(stagger-children)) { entry.target.classList.add(active); } // Unobserve after animation observer.unobserve(entry.target); } }); }, observerOptions); // Observe all reveal elements document.querySelectorAll(.reveal-on-scroll, .stagger-children).forEach(el > { observer.observe(el); }); }); /script> script> document.addEventListener(DOMContentLoaded, function() { const sections document.querySelectorAll(section); const navLinks document.querySelectorAll(.neon-link); const progressBar document.querySelector(.scroll-progress); // Handle smooth scrolling navLinks.forEach(link > { link.addEventListener(click, function(e) { e.preventDefault(); const targetId this.getAttribute(href); const targetSection document.querySelector(targetId); // Remove active class from all links navLinks.forEach(link > link.classList.remove(active)); // Add active class to clicked link this.classList.add(active); // Add transition class to target section targetSection.classList.add(section-transition); // Smooth scroll to section targetSection.scrollIntoView({ behavior: smooth }); // Remove transition class after animation setTimeout(() > { targetSection.classList.remove(section-transition); }, 500); }); }); // Update active section on scroll window.addEventListener(scroll, () > { let current ; const scrollPos window.pageYOffset; sections.forEach(section > { const sectionTop section.offsetTop; const sectionHeight section.clientHeight; if (scrollPos > sectionTop - sectionHeight / 3) { current section.getAttribute(id); } }); // Update active nav link navLinks.forEach(link > { link.classList.remove(active); if (link.getAttribute(href) `#${current}`) { link.classList.add(active); } }); // Update progress bar const scrolled (window.pageYOffset / (document.documentElement.scrollHeight - window.innerHeight)) * 100; progressBar.style.transform `scaleX(${scrolled / 100})`; }); }); /script> !-- Add this script before the closing body tag --> script> document.addEventListener(DOMContentLoaded, function() { // ... existing code ... // Typing animation with glitch effect for tagline function typeTagline() { const tagline document.querySelector(.cyber-tagline); const fullText tagline.getAttribute(data-text); let currentIndex 0; let glitchActive false; function typeNextChar() { if (currentIndex fullText.length) { // Add random glitch effect (15% chance) if (Math.random() 0.15 && !glitchActive && currentIndex > 0) { applyGlitch(fullText.substring(0, currentIndex)); return; } // Normal typing tagline.textContent fullText.substring(0, currentIndex); currentIndex++; setTimeout(typeNextChar, 30 + Math.random() * 50); // Faster typing speed } else { // Start continuous glitching after typing is complete startContinuousGlitch(); } } function applyGlitch(correctText) { glitchActive true; // Create glitched version (random chars, reversed segments, etc.) let glitchedText correctText; const glitchType Math.floor(Math.random() * 3); if (glitchType 0) { // Replace random characters glitchedText correctText.split().map(char > Math.random() 0.3 ? _@#%!&*.charAt(Math.floor(Math.random() * 7)) : char ).join(); } else if (glitchType 1) { // Duplicate segment const lastChar correctText.charAt(correctText.length - 1); glitchedText correctText + lastChar.repeat(Math.floor(Math.random() * 3) + 1); } else { // Shift character positions const chars correctText.split(); const pos1 Math.floor(Math.random() * chars.length); const pos2 Math.floor(Math.random() * chars.length); charspos1, charspos2 charspos2, charspos1; glitchedText chars.join(); } // Apply glitch tagline.textContent glitchedText; // Restore correct text after a short delay setTimeout(() > { tagline.textContent correctText; glitchActive false; if (currentIndex fullText.length) { setTimeout(typeNextChar, 30 + Math.random() * 50); } }, 100 + Math.random() * 150); } function startContinuousGlitch() { // Periodically glitch the completed text setInterval(() > { if (!glitchActive && Math.random() 0.6) { // 30% chance of glitching (increased from 20%) applyGlitch(fullText); } }, 700); // Check every 1 second (reduced from 2 seconds) } // Start typing animation typeNextChar(); } // Initialize typing animation after a short delay setTimeout(typeTagline, 1000); }); /script> script> document.getElementById(credit-card-nav-button).addEventListener(click, function() { fetch(credit-card.html) .then(response > response.text()) .then(html > { document.getElementById(content-container).innerHTML html; // Initialize any scripts needed for the credit card section showRewardsAnalytics(); }); }); /script> script> function showTab(tabId) { // Hide all content sections document.querySelectorAll(.content-section).forEach(section > { section.style.display none; }); // Show the selected section document.getElementById(tabId).style.display block; } /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]