-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit b8020ae
Showing
6 changed files
with
428 additions
and
0 deletions.
There are no files selected for viewing
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,217 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<title>Dan Kim | Personal Website</title> | ||
<link rel="stylesheet" href="styles.css"> | ||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> | ||
</head> | ||
<body> | ||
<!-- navbar --> | ||
<div class="navbar"> | ||
<div class="navbar-name"> | ||
<a href="#" id="home-link">Dan Kim</a> | ||
</div> | ||
<div class="navbar-links"> | ||
<a href="#about" id="about-link">About</a> | ||
<a href="#experience" id="experience-link">Experience</a> | ||
<a href="#projects" id="projects-link">Projects</a> | ||
</div> | ||
<label class="switch"> | ||
<input type="checkbox" id="dark-mode-toggle"> | ||
<span class="slider"></span> | ||
</label> | ||
</div> | ||
|
||
<!-- about section --> | ||
<section id="about"> | ||
<div class="main"> | ||
<div class="title"> | ||
<h2>Hi, I'm Dan Kim. 👋🏼</h2> | ||
<p class="text"> </p> | ||
<div class="links"> | ||
<a href="assets/resume.pdf" target="_blank" rel="noopener noreferrer"> | ||
<i class="fas fa-file-alt"></i> | ||
</a> | ||
<a href="https://github.com/dankim444" target="_blank" rel="noopener noreferrer"> | ||
<i class="fab fa-github"></i> | ||
</a> | ||
<a href="https://www.linkedin.com/in/dankim44/" target="_blank" rel="noopener noreferrer"> | ||
<i class="fab fa-linkedin"></i> | ||
</a> | ||
</div> | ||
</div> | ||
<img src="images/headshot.jpg" alt="Dan Kim" class="about-image"> | ||
</div> | ||
</section> | ||
|
||
<section id="about"> | ||
<h2>a little about me...</h2> | ||
<div class="about-content"> | ||
<img src="images/headshot.jpg" alt="Dan Kim" class="about-image"> | ||
<div> | ||
<p><strong>Currently, I'm:</strong></p> | ||
<ul> | ||
<li>a student @ The University of Pennsylvania, pursuing a BSE and an intended MSE in Computer Science with a concentration in Artificial Intelligence and a minor in Mathematics.</li> | ||
<li>a Research Assistant @ <a href="https://css.seas.upenn.edu/" target="_blank" rel="noopener noreferrer">CSSLab</a>, researching and developing computational methods to study human behavior at scale.</li> | ||
<li>a Student Software Engineer for <a href="https://www.developforgood.org/" target="_blank" rel="noopener noreferrer">Develop for Good</a>, building software for non-profit organizations in the mental health and global relations spaces.</li> | ||
<li>interested in learning more about software engineering, computer security, machine perception, data science, and AI/ML through professional and academic experiences. </li> | ||
</ul> | ||
</div> | ||
</div> | ||
</section> | ||
|
||
<section id="experience"> | ||
<h2>some experience</h2> | ||
<div class="experience-container"> | ||
<div class="experience-content"> | ||
<h3>Computational Social Science Lab at Penn</h3> | ||
<h4>Research Software Engineer - Full-Stack, Data Science, NLP</h4> | ||
<p>Jun 2024 - present</p> | ||
<p> | ||
Conduct research under Mark Whiting and Duncan Watts to study human behavior at scale. | ||
Develop and enhance custom full-stack web applications to design and monitor social science experiments. | ||
Write programs to streamline workflows, tests, and text processing/translation pipelines. | ||
Presented work at Fall 2024 Research Conference. | ||
</p> | ||
</div> | ||
<img src="images/csslab-logo.png" alt="CSSLab" class="csslab-image"> | ||
</div> | ||
<div class="experience-container"> | ||
<div class="experience-content"> | ||
<h3>Ruta N Medellin</h3> | ||
<h4>Software Engineer Intern - Full-Stack</h4> | ||
<p>Jun 2023 - Aug 2023</p> | ||
<p> | ||
Designed and developed a full-stack internal admin solution using MERN stack, facilitating role-based access and management of the company's | ||
employee data. Selected for fully-funded international internship through Penn's competitive Global Research and Internship Program. | ||
</p> | ||
</div> | ||
<img src="images/rutan.webp" alt="RutaN" class="rutan-image"> | ||
</div> | ||
</section> | ||
|
||
<section id="projects"> | ||
<h2>some projects</h2> | ||
</section> | ||
|
||
<footer> | ||
<p>© 2024 Dan Kim Personal Website.</p> | ||
</footer> | ||
|
||
<script> | ||
// function to remove active class from all links | ||
function removeActiveClass() { | ||
document.querySelectorAll('.navbar-links a').forEach(function(link) { | ||
link.classList.remove('active'); | ||
}) | ||
} | ||
|
||
// function to add active class to clicked link | ||
function addActiveClass(event) { | ||
removeActiveClass(); | ||
event.target.classList.add('active'); | ||
} | ||
|
||
// add event listeners to all links in the navbar | ||
document.querySelectorAll('.navbar-links a').forEach(function(link) { | ||
link.addEventListener('click', addActiveClass); | ||
}); | ||
|
||
// highlight about link by default | ||
window.addEventListener('DOMContentLoaded', function() { | ||
document.getElementById('about-link').classList.add('active'); | ||
}); | ||
|
||
// scroll to the top of the page on reload | ||
window.addEventListener('beforeunload', function() { | ||
window.scrollTo(0, 0); | ||
}); | ||
|
||
// reload page when name is clicked | ||
document.getElementById('home-link').addEventListener('click', function() { | ||
window.location.reload(); | ||
}); | ||
|
||
// automatically highlight the link that corresponds to the section in view | ||
window.addEventListener('scroll', function() { | ||
let fromTop = window.scrollY; | ||
document.querySelectorAll('.navbar-links a').forEach(function(link) { | ||
let section = document.querySelector(link.hash); | ||
if ( | ||
section.offsetTop <= fromTop && | ||
section.offsetTop + section.offsetHeight > fromTop | ||
) { | ||
removeActiveClass(); | ||
link.classList.add('active'); | ||
} | ||
}); | ||
}); | ||
|
||
// Toggle dark mode | ||
const toggle = document.getElementById('dark-mode-toggle'); | ||
toggle.addEventListener('change', function() { | ||
if (toggle.checked) { | ||
document.body.classList.add('dark-mode'); | ||
document.querySelector('.navbar').classList.add('dark-mode'); | ||
document.querySelectorAll('.navbar-links a').forEach(function(link) { | ||
link.classList.add('dark-mode'); | ||
}); | ||
document.querySelector('.navbar-name a').classList.add('dark-mode'); | ||
} else { | ||
document.body.classList.remove('dark-mode'); | ||
document.querySelector('.navbar').classList.remove('dark-mode'); | ||
document.querySelectorAll('.navbar-links a').forEach(function(link) { | ||
link.classList.remove('dark-mode'); | ||
}); | ||
document.querySelector('.navbar-name a').classList.remove('dark-mode'); | ||
} | ||
}); | ||
|
||
// typing animation | ||
const texts = [ | ||
" Aspiring Software Engineer.", | ||
" Computer Science major.", | ||
" Student @ UPenn." | ||
]; | ||
|
||
const textElement = document.querySelector('.text'); | ||
|
||
let index = 0; | ||
let charIndex = 0; | ||
let currentText = ''; | ||
let isDeleting = false; | ||
|
||
function type() { | ||
// If the text is being deleted | ||
if (isDeleting) { | ||
currentText = texts[index].substring(0, charIndex - 1); | ||
charIndex--; | ||
} else { | ||
// If the text is being typed | ||
currentText = texts[index].substring(0, charIndex + 1); | ||
charIndex++; | ||
} | ||
|
||
textElement.textContent = currentText; | ||
|
||
if (!isDeleting && charIndex === texts[index].length) { | ||
// Pause at the end of the current text | ||
setTimeout(() => isDeleting = true, 1000); | ||
} else if (isDeleting && charIndex === 0) { | ||
// Move to the next text after deleting | ||
isDeleting = false; | ||
index = (index + 1) % texts.length; | ||
} | ||
|
||
// Speed control | ||
const typingSpeed = isDeleting ? 50 : 100; | ||
setTimeout(type, typingSpeed); | ||
} | ||
|
||
// Start the typewriter effect | ||
type(); | ||
</script> | ||
</body> | ||
</html> |
Oops, something went wrong.