Personal Portfolio Website
Personal Portfolio Website logo

Designed and developed as a showcase of skills and experiences, my personal portfolio website serves as a comprehensive platform highlighting my journey as a computer science student and software engineer intern.

The frontend of the portfolio is crafted using React. It employs Material-UI components for a polished and responsive design, ensuring optimal performance across devices and screen sizes. The use of React Router enables smooth navigation between different sections such as About, Projects, Experience, Contact, and Notes.

Managing data for the Notes section is handled through Google Firebase Firestore, a flexible, scalable database for mobile, web, and server development from Firebase. This choice ensures secure storage and efficient retrieval of notes data, supporting CRUD (Create, Read, Update, Delete) operations seamlessly.

Backend functionalities are powered by Netlify Functions, serverless functions that provide a straightforward way to build backend services for web applications without managing servers. These functions handle operations such as saving, fetching, updating, and deleting notes data securely.

Authentication for sensitive actions, like editing and deleting notes, is implemented using a password-based mechanism, ensuring that only authorized users can perform these operations.

The Contact section integrates with Web3Forms API for handling form submissions securely. It includes validation using hCaptcha, a reliable bot protection service, ensuring that messages are submitted by human users only.

Continuous integration and deployment (CI/CD) pipelines are set up with GitHub Actions, automating the build, test, and deployment processes whenever changes are pushed to the repository. This ensures that updates to the portfolio are rolled out smoothly and efficiently.

Throughout the development process, best practices in software engineering, including version control with Git, code reviews, and testing, were followed to maintain code quality and ensure the reliability of the portfolio website.

Overall, this project not only showcases my technical skills in frontend and backend development but also demonstrates my ability to integrate various technologies into a cohesive and functional web application.

GitHub
AutoPrint: Automatic Print Statement Insertion Tool
AutoPrint: Automatic Print Statement Insertion Tool logo

AutoPrint was developed as part of my research internship at Code World, No Blanket Lab, where I assisted PhD student Minhyuk Ko and advisor Dr. Chris Brown with this project. Our goal was to enhance the efficiency of debugging in Java programming by automating the insertion and removal of print statements.

We faced a significant challenge with the previous method of using regular expressions (Regex) to locate code segments for debugging, which was tedious and error-prone. To overcome this, I researched frameworks that could simplify this process, and that's how I stumbled upon JavaParser, a robust framework for parsing Java code. JavaParser not only streamlined the process of identifying and manipulating code segments but also improved collaboration among team members by providing a structured and reliable approach to debugging.

During the implementation phase, I conducted extensive testing to validate JavaParser's capabilities, including:

  • Evaluating its accuracy in identifying potential bug locations
  • Assessing its performance in handling complex Java constructs
The transition from Regex to JavaParser marked a significant improvement in the tool's usability and effectiveness, making debugging tasks more efficient and collaborative-friendly.

This project not only advanced my skills in Java development and software engineering methodologies but also highlighted the importance of adopting appropriate tools to enhance productivity and teamwork in software projects.

View PaperGitHub
ATS Resume Checker Bot
ATS Resume Checker Bot logo

For the Virginia Tech 2023 Hackathon, I undertook the development of a Discord bot designed to analyze candidates' resumes and provide comprehensive feedback. The project stemmed from a recognized lack of effective resume review resources, with many reviews merely guiding job-seekers to switch templates. My primary focus was on the backend, where I tackled the implementation of the resume parser.

One of the significant challenges was the tight deadline of just two days, amidst ongoing school assignments. Despite these constraints, I successfully engineered the bot to:

  • Accept PDF resumes
  • Convert them into text files
  • Parse them using a Python Natural Language Processing (NLP) API called Natural Language Processing Toolkit (NLTK)
This process allowed the bot to extract and evaluate key skills.

After parsing the text, the bot extracts skills mentioned in the resume and scores them based on three criteria:

  • Technical Skills: Proficiency in programming languages, tools, and technologies
  • Social Skills: Interpersonal skills, communication, and teamwork
  • Academic Capabilities: GPA and skills that demonstrate academic prowess, such as time-management and research abilities
In addition, the extracted text was cross-referenced with a JSON file that contains an extensive list of skills for each criteria. For example, text that would increase the score of the Academic Capabilities category would be words like time-management and research.

This project not only demonstrated my technical skills in backend development and ability to use ML APIs but also showcased my ability to pick up new skills quickly and manage time effectively under pressure. It was a valuable learning experience in rapid prototyping and iterative development, resulting in a functional tool that addressed a genuine need in the job application process.

GitHub