James Hahn


Programmer. Thinker. Builder.




Recent News

August 2021: Marks the beginning of my first full-time job. I am a full-stack developer at Amazon on the Alexa Mobile team!
May 2021: I began work on my first side project in a year in a half, attempting to create a TikTok Unwrapped website, much akin to Spotify Unwrapped (more info).
May 2021: After graduation, I will be working at Amazon as a Software Engineer in the Alexa Devices organization in Santa Monica, CA.
April 2021: Despite a tumultuous past year due to COVID-19, I managed to graduate from Georgia Tech with a Master's in Computer Science and a 4.0 GPA.
May 2020: After finishing the first year of my MSCS at Georgia Tech last month, I have began my internship at Amazon doing data mining and visualization.
February 2020: My Medium article on decoding text CAPTCHAs was published in Analytics Vidhya, a Medium publication, which can be viewed here.
January 2020: Completed a mini side project to decode text CAPTCHAs, achieving 91% accuracy on the character classification sub-task and 44% on the CAPTCHA decoding task. I released a report and code here.
January 2020: Completed a mini side project to classify MNIST digits, achieving 99.2% accuracy, and wrote a full report with t-SNE visualizations (click here to read the report and download code).
October 2019: I was accepted as a reviewer for Machine Vision and Applications, a bimonthly computer vision journal.
October 2019: I was accepted as a proposal reviewer for the President's Undergraduate Research Award (PURA) at Georgia Tech.
October 2019: We had a journal article accepted to TPAMI 2019 titled "Interpreting Rhetoric of Visual Advertisements". [Paper]
August 2019: Had an extended abstract accepted to the MDALC workshop at ICCV 2019 (Seoul, South Korea). [Paper] [Poster] [Slides]
August 2019: Began my Master's in Computer Science at Georgia Tech in Atlanta, focusing on computer vision and machine learning.
August 2019: Finished my research internship at Sony in Tokyo, Japan, focusing on ingredient recognition for a robotic cooking assistant.
April 2019: Received an NSF REU from Dr. Adriana Kovashka to continue advertisements research over the Summer.
April 2019: Had an extended abstract accepted to the CV-COPS Workshop at CVPR 2019 (Long Beach, CA). [Paper] [Poster]
April 2019: Graduated with a Bachelor of Philosophy in Computer Science from the University of Pittsburgh with minors in mathematics and statistics.
April 2019: Committed to Georgia Tech for my Master's in Computer Science with a thesis, beginning in Fall 2019.
April 2019: Successfully defended my bachelor's thesis.
March 2019: The Pitt Honors College wrote an article about my Bachelor's thesis. You can read it here.
March 2019: Served as a mentor at SteelHacks 2019.
February 2019: Served as a mentor at TartanHacks 2019.
February 2019: Returned to AAAI-19 (Honolulu, HI) to serve as a robotics AI workshop teaching assistant.
January 2019: Presented current progress on my thesis work at the University of Pittsburgh Honors Research Fair.
December 2018: Wrapped up interdisciplinary research seminar through the honor's college, attending PhD defenses, technical/non-technical talks, and grant/proposal workshops.
November 2018: Received the CURF fellowship for my bachelor's thesis.
August 2018: Began my senior year of undergraduate studies.
August 2018: Attended SIGGRAPH 2018 (Vancouver, BC) as a conference student volunteer.
June 2018: Attended CVPR 2018 (Salt Lake City, UT) to help my research advisor co-organize a workshop on advertisements.
June 2018: Started internship at Hulu as a software engineering intern on the Ad Platform team.
May 2018: Received the THINK fellowship for my bachelor's thesis.
March 2018: My thesis proposal for acceptance to the Bachelor of Philosophy program through the Honor's College was successful.
February 2018: Attended AAAI-18 (New Orleans, LA) to serve as a robotics AI outreach workshop assistant.

About Me

A recent graduate of Georgia Tech and the University of Pittsburgh, I now work at Amazon as a software engineer under the Alexa Devices organization. Learning everyday doesn't just stop after college; it follows you throughout life.


My love falls with engaging young coders and exciting them about the fascinating world of computer science.


I possess both extensive software engineering (preferably back-end development) and research skills, allowing me to fit into a variety of roles.


My research interests include human-visual reasoning, perception, and machine learning. With my previous research experience, I seek to develop the next best computer vision products.


If I'm not responding to your emails, I'm either watching tennis/soccer, playing sports, busy coding, or watching a new psychological thriller movie.


I'm currently open to mentorship and outreach programs for all high school and college students, as well as ML/CV research side opportunities. Let's get in touch!


Technical Skills

Languages


Advanced: C++, Python, C, Java, R, MATLAB
Intermediate: JavaScript, Node.js, ReactJS, HTML, CSS, SQL
Been a while: UnityScript, OpenGL

Data Science Tools


Advanced: Sci-kit Learn, NumPy, Tensorflow / PyTorch, Pandas, OpenCV
Intermediate: OpenMP, OpenMPI, OpenACC, CUDA, Caffe
Been a while: Jupyter

Development Tools


Advanced: MySQL, Git/Github, Confluence
Intermediate: TFS, SQL Server, DynamoDB, AWS S3
Been a while: Jenkins, Gaia, JIRA

Hardware


Advanced: Raspberry Pi
Been a while: Arduino, Amazon Alexa

Concepts


Advanced: Unit testing, Agile Methodology, Version Control
Proficient: Spanish

Operating Systems


Windows, OS X, Unix/Linux

Experience

Work


Software Engineer 1 (Amazon — Santa Monica, CA)
August 2021 - Present
Full-stack developer on the Alexa Mobile team developing for both iOS and Android.
Software Engineer Intern (Amazon — Seattle, WA)
May 2020 - August 2020
During my virtual internship, I built out a service dependency network, allowing teams to identify which of their services are dependent on each other (tracked through network requests), therefore reducing redundancy, increasing uptime, and saving development time.
Research Intern (Sony Computer Science Laboratories — Tokyo, Japan)
May 2019 - August 2019
I worked on a novel cooking robot while in Japan. Specifically, I worked on ingredient recognition with the main objective of teaching the robot how to identify ingredients and construct a recipe piece-by-piece. This involved building and training my own computer vision models and resulted in a conference abstract at ICCV.
Software Engineer Intern (Hulu — Santa Monica, CA)
June 2018 - August 2018
At Hulu, my initial project was buiding out an image assets manager for the Ad Platform team, bringing in an additional $90 million in revenue for the company. My primary project was to develop a video advertisement quality assurance tool to flag faults in companies' advertisements (e.g. an athlete not wearing a helmet on a bicycle) using pre-built machine learning tools.
Security Intern (CMU Software Engineering Institute — Pittsburgh, PA)
September 2017 - April 2018
While at CERT, I worked with several security professionals to build out multiple internal tools including one project involving CI/CD tools to generate a functional website with a frontend/backend suitable for a development team. This pipeline was showcased at a conference workshop.
Software Engineer Intern (JP Morgan Chase — Chicago, IL)
June-August 2017
During this internship, I worked in a team of four to develop a mobile application for JP Morgan's Credit Card line of business. We used ReactJS for front-end, Java for back-end, and Cordova to deploy the application to both iOS and Android. I contributed to the overall full-stack development on the team and helped successfully deploy the application to the cloud.
Machine Learning Forum Mentor (Udacity — Remote)
July 2016 - August 2017
On a daily basis, I answered the questions of Udacity's Machine Learning Nanodegree's students. In order to do this, I had to understand machine learning concepts and appropriate data analysis libraries, such as Sci-kit Learn, NumPy, and Pandas (all in Python).
Software Engineer Intern (MRI Software — Solon, OH)
May-August 2016
Throughout the internship, I worked on several projects. The main project was a web application using the ASP.NET framework and the MVC architectural pattern in JavaScript, AJAX, and C#. Also, I worked on the back-end of a dynamic news/information navigation bar viewable to all clients, which was put into production.
Undergraduate Teaching Assistant (Uni. of Pittsburgh — Pittsburgh, PA)
January - April 2016
Worked as a teaching assistant for CS0007 (Intro to Computer Programming with Java). Every week, I held labs to explain object-oriented concepts to 29 students. In addition, students could come to my bi-weekly office hours for additional help. This experience helped me develop strong skills with patience, leadership, time-management, and explaining concepts smoothly.

Research


Graduate Researcher (Georgia Tech)
August 2019 - April 2020
Work in progress -- will update soon. recipe2video task.
Undergraduate Researcher (University of Pittsburgh)
October 2018 - TBA
With the help of two other students, we developed a two-camera system as a term project to monitor work and school environments to track which objects in the room were utilized the most. This is useful, for example in makerspaces, to recognize when markers may need to be replaced or if certain tools are utilized at max capacity, informing supervisors to buy more of those items.
Undergraduate Researcher (University of Pittsburgh)
January 2018 - February 2019
I used both traditional and modern computer vision methods, as well as traditional cues, to predict effectiveness of video advertisements in the hope of ensuring companies appeal to the largest audience possible. The cues were largely traditional (e.g. shot boundary detection and object recognition) and an ensemble of models was utilized as well. This resulted in a publication at T-PAMI.
Undergraduate Researcher (University of Pittsburgh)
August 2018 - April 2019
Stegonography is a cousin of cryptography, where the latter hides secret information by obviously obfuscating it and the former hides it in plain sight. Traditional stegonography alters individual pixels in an image, but my goal was to alter the inherent characteristics of an image (e.g. change the color of somebody's shirt) to hide data. I did this through a toy problem of altering how a person's handwriting looks in an image. I presented this in front of a 4-person defense committee and was key to receiving my Bachelor of Philosophy degree.
Seminar in Conducting Research (University of Pittsburgh)
August - December 2018
I learned how to create a 30-second pitch for my thesis, in addition to a quick 5 minute introduction, 10 minute presentation, and 20 minute presentation. All of these presentations were carefully catered to appeal to an interdisciplinary audience of undergraduate researchers, professors, mentors, and professionals.

Organizational Leadership


SWE (Society of Women Engineers) Mentorship Event (Mentor, 2020)
SteelHacks 2019 (Mentor)
TartanHacks 2019 (Mentor)
SteelHacks 2018 (Organizer)
University of Pittsburgh CS Club (Vice-President, 2017-2018)
CodeDay Pittsburgh (Mentor, 2017)
Investing Now Workshop (Mentor, 2017)

Research Leadership


PURA Research Award Spring 2020 (4 x Proposal Reviewer)
PURA Research Award Summer 2020 (5 x Proposal Reviewer)
PURA Research Award Summer 2021 (4 x Proposal Reviewer)
PURA Research Award Fall 2021 (5 x Proposal Reviewer)
AAAI-18 (Robotics/AI Outreach Workshop Assistant)
AAAI-19 (Robotics Workshop TA)
CVPR-18 (Workshop Co-organizer)
SIGGRAPH-18 (Student Volunteer)

Awards

Academics


THINK Research Fellowship (2018)
Chancellor's Undergraduate Research Fellowhsip (2018)
NSF-Funded REU (2019)
Bachelor of Philosophy Degree (2019)

Competitions


Pitt Challenge 2017 (1st place)
CMU Datathon 2017 (Finalist)
JP Morgan Global Innovation Hackathon (1st place)
HackMIT 2017 (Best Re-imagination of the Financial Market)
8 other hackathons

Side Projects

TikTok Unwrapped

TikTok Unwrapped
May 2021 - Present
I love Spotify and one of the annual hyped-up projects the company outputs is Spotify Unwrapped (here), detailing which musical artists and podcasts a user has listened to over the past year. While a neat gimmicky feature, TikTok has no existing feature. My goal is to bring this into existence by showcasing a user's most prominent sounds, most liked videos, activity, and other such details. The project is written using Python and multiple TikTok APIs on the backend with (hopefully) a ReactJS frontend. A repository can be found here.
CAPTCHA Solver
Captcha Solver (Medium publication)
December 2019 - January 2020
The greater goal of this project was to take text CAPTCHAs with a lot of noise, and decode them. With CAPTCHAs containing 4 characters on a 36-way supervised classification task (A-Z and 0-9 characters), a character classification model was trained to achieve 90.88% accuracy. Then, on the CAPTCHA classification task, with the help of the character model, an accuracy of 44.41% was achieved. Throughout the project, a significant amount of code was used to preprocess the code, train models, and visualize results/accuracies. A combination of both low-level traditional computer vision (for preprocessing) and modern deep learning techniques (for classification) were used to accomplish the aforementioned accuracies. The project was written using Python, PyTorch, Scikit-learn, Scipy, OpenCV, NumPy, Matplotlib, and the Python captcha library. A repository can be found here, while the full technical report (17 minute read) can be found on Medium, here.
MNIST Classification
MNIST Classification
January 2020
Achieved 99.2% accuracy on 10-way supervised task to classify the 10 classes of MNIST, a dataset containing images of handwritten digits. The project was written with Python and PyTorch. A full report, along with code, is available on my Github repo located here.
Hu Dat?
Hu Dat?
July 2018
A small data science project carried out in a group of 6 interns at the Hulu hackathon. The project was user segmentation for Hulu customers to place accounts into creative archetypes, such as Southern Belle, Busy Parent, Weeaboos, and more, utilizing 48 heterogeneous features of historical watch data. A short presentation is available here. I personally worked on elbow analysis for our our clustering algorithms' hyperparameter tuning. This involved using Python, matplotlib, numpy, and scipy
Playlist Generator
Playlist Generator
March - August 2016 (with intermittent updates)
Extracts a person's Chrome bookmarks from a list of input folders and converts YouTube URLs into an automated playlist. Serves 400 weekly users with ~225 daily impressions. Created with JavaScript, HTML, CSS, and the Google Chrome API. The repository can be found in the "Playlist" folder located here. The project is open source so feel free to contribute.
Diagnose Me
Diagnose Me
February 2017
An Amazon Alexa skill that provides a preliminary self-diagnosis to the user by listing their 3 most common illnesses from their symptoms. Created and won 1st place at the Pitt Challenge, a 24-hour healthcare hackathon hosted at the University of Pittsburgh. Created with Node.js and several other services. The project is located here.
Job Explore
Job Explore
July - August 2016
Helps teenagers and adults search for careers that might fit them. Users can search by occupation or skill to see associated skills and occupations, respectively. After searching their set of skills, they'll discover exciting new occupations that best suit them! Created with PHP5, MySQL, JavaScript, HTML, and CSS. Project can be found here.
Random Terrain Generator
Random Terrain Generator
January 2016
A random terrain generator using 2 algorithms: Midpoint Displacement (2D terrain) and Diamond-Square (3D terrain). Allowed me to mess around with a low-level graphics library for the first time. Pictures/video of each algorithm are on my Github. Created with LWJGL, a Java binding for OpenGL. The repository, containing a video of the results, can be found in the "Random terrain" folder located here.
Future Projects
Future Projects
Always ongoing!
I'm always working on something new. Whether it's with data science, games, web applications, low-level applications, or hackathon projects, you can find my new stuff on my Github!