My Background

Education

Graduate

  • Summer 2020-present: University of Maryland at College Park: PhD Program in Computer Science

  • Fall 2019-Spring 2020: University of North Carolina at Chapel Hill: BS/MS Program (Master's degree in Computer Science)

Undergraduate

University of North Carolina at Chapel Hill

    • Chapel Hill, NC, USA

    • Fall 2015-Spring 2019

    • Computer Science major: Bachelor of Science

    • Chinese language Major: Bachelor of Arts

Yonsei University (연세대학교)

    • Seoul, South Korea

    • Summer 2018

    • Study Abroad (courses)

Chinese University of Hong Kong (香港中文大學)

    • Hong Kong, China

    • Summer 2017

    • Study Abroad (courses and research internship resulting in this)

Capital Normal University (首都师范大学)

    • Beijing, China

    • Summer 2016

    • Study Abroad (courses and cloud app development company internship)

High School

Apex High School

  • Apex, NC

  • 2011-2015

Regis High School

  • Manhattan, NYC, NY

  • 2011-2012

Middle School and before

REACH Program at Regis High School

  • Manhattan, NYC, NY and Scranton, PA

  • 2007-2011

  • Preparatory program for entry to Regis High School

Middle School 577 (now Conselyea Preparatory School)

  • Brooklyn, NYC, NY

  • 2010-2011

Public School 126 (now The John Ericsson Middle School)

  • Brooklyn, NYC, NY

  • 2010-2010

St. Stanislaus Kostka School

  • Brooklyn, NYC, NY

  • 2000-2010

Job History

  • High School

    • repaired mobile devices and PCs as a freelancer

  • Fall 2015

    • worked for UNC Learning Center as an office assistant

      • supervisor: Billey Shambley

  • Spring 2016

    • worked for UNC CS Department on autograders

      • supervisor: Prof. Prasun Dewan

    • worked with Prof. Henry Fuchs and Rohan Chabra on surgical reconstruction with many Kinects (See Projects I Worked On)

    • worked with Prof. Ming Lin and Auston Sterling on realtime sound synthesis (See Projects I Worked On)

    • worked with Prof. Dinesh Manocha and Atul Rungta on perceptual conflicts (like distance perception) in 3d spatialized audio (See Projects I Worked On)

  • Fall 2016-Spring 2019

    • worked on redirected walking applications for visually-impaired kids (See My Own Projects) and sound synthesis (See Projects I Worked On)

      • supervisor: Prof. Ming Lin

    • worked on multi-user surgical training (See My Own Projects) and egocentric reconstruction (See Projects I Worked On)

      • supervisor: Prof. Henry Fuchs

  • Fall 2017-Spring 2018

    • worked on locomotion methods like walking-in-place inside of CAVEs with Brennora Camerie (See Projects I Worked On)

      • supervisor: Mary Whitton

  • Summer 2016

    • worked at Zionbyte with Tsinghua students in Beijing on a cloud storage iOS app and fixing a MongoDB database

      • supervisor: Zhou Tao

  • Summer 2017

    • worked at CUHK's Computer Science department in Hong Kong on basic CV-based pose detection

      • supervisor: Prof. Kin Hong Wong

  • Fall 2018

    • undergrad learning assistant for COMP872: Virtual Worlds

      • supervisor: Prof. Henry Fuchs

  • Spring 2019

    • undergrad learning assistant for COMP585: Serious Games

      • supervisor: Prof. Diane Pozefsky

  • Summer 2020

    • head camp counselor for the UNC School of Education (Carolina Center for Education and Excellence) Gamechangers program

      • supervisors: Derek Creason and Janice Anderson

      • co-counselor: Cameron Simbeck

      • taught groups of middle & high schoolers game development and agile/design thinking skills for 3 weeks (~40 students total), 8 hours/day. All groups had a presentable game made in Unity, Gamemaker Studio, MIT Scratch, Minecraft, etc. by the end of each week

  • Fall 2019

    • graduate teaching assistant for COMP790: Deep Learning & Graphics

      • supervisor: Prof. David Luebke of NVIDIA (adjunct professor)

  • Spring 2020

    • sole instructor for COMP590: Intro to VR, Game Dev, & HCI

      • supervisors: Profs. Henry Fuchs and Mike Reed

      • put class together (lectures, assignments, office hours, logistics, etc.) mostly by myself

Skills

Programming Languages

Highly experienced

C++

  • ~6 years

  • Types of applications: Unreal 4 (especially data analysis), QT5 visualizers, data output, 2D graphics (COMP475), OpenCV

C#

  • ~8 years

  • Types of applications: Unity, XNA, Hololens, Vuforia

UE4 Blueprint

  • ~5 years

  • Types of applications: Unreal 4 (especially state machines and Actor interaction)

Java

  • ~8 years span

  • Types of applications: autograders, interpreters, user I/O

Python

  • ~4 years

  • Types of applications: data analysis and visualization (e.g. pyqt5 and matplotlib), machine learning, processing images (e.g. Realsense), deep learning (image recognition)

Swift

  • ~5 years

  • Types of applications: apps for clubs, accessible apps, community social media, simple games

Mostly coursework/intermittent

CSS/HTML/JS/PHP

  • ~6 years span

  • Experiences: COMP426, high school programming classes, programming websites for clubs, mentoring for hackathons

Visual Basic

  • ~1/2 year span

  • Experiences: Introductory programming course in high school

SAS

  • ~1/2 year span

  • Experiences: SAS programming course in high school (SQL and python have more or less replaced it for me)

MEL

  • ~1 year span

  • Experiences: processing Alembic files for cloth simulation and egocentric reconstruction

MIPS Assembly

  • ~1 year span

  • Experiences: COMP411: Computer Organization and COMP541: Digital Logic

C

  • ~1.5 year span

  • Experiences: COMP411: Computer Organization, COMP530: Operating Systems, and COMP790: OS Implementation. Also some Arduino programs

CLISP

  • ~1/2 year span

  • Experiences: COMP524: Programming Language Concepts

Bash

  • ~1 year span

  • Experiences: automating MeshLab functions and making Blender batch convert 3d animation data

Lua

  • ~3 years span, but I haven't used it for many years

  • Lua is the 1st programming language I learned...I started learning it when I was 11-12

  • Experiences: Roblox and in-game scripting

APIs and Programs

3D Graphics

Highly skilled

Unreal Engine 4

  • ~ 5 years experience

  • I use it for almost all of my demos unless I have no choice (like with the Hololens until recently). It's very easy to draft apps and make things look nice with little effort because of its fantastic PBR lighting/material system. Among the most user friendly dev tools in my experience. I have over 100 UE4 projects that were used for various small tools or major projects.

  • Things I'm particularly good at:

    • Drafting apps quickly with Blueprint, such as mesh samplers, data outputters, etc.

    • Optimizing meshes to work with other APIs we use for research

    • Repurposing existing scenes to look nice while showing what we need to demo in our research

    • Porting apps and mixing APIs

Blender

  • ~ 5 years experience

  • It's my favorite 3D modeling tool by far because it's easy to search for features and program for it in Python for automation

  • Things I'm particularly good at:

    • Quickly creating simple meshes, especially with boolean tools

    • Figuring out how to remesh and optimize meshes so that they work better with other research tools of ours

    • Modifying downloaded meshes to work for us

    • Making 3D models that work well for 3D prints

    • Mathematical modeling (e.g. making sure measurements are exact in the CAD definition). Basically, I'm good at using Blender as if it were AutoCAD, even if it wasn't really designed for that

Unity

  • ~ 5 years experience

  • I disagree with many of Unity's design philosophies that I believe remove power from the developer, but nevertheless, it's a necessary and popular evil. I use it for Hololens apps, mobile apps, and when I'm working with inexperienced developers who can't easily make the jump to Unreal.

  • Things I'm particularly good at:

    • Drafting a working app very quickly. Unity is particularly good for testing small things b/c of small file sizes

    • Helping people troubleshoot Unity bugs

    • Script interaction and data output

    • Teaching people how to program games through Unity

XCode

  • ~ 5 years experience

  • XCode is on par with Unreal 4 for me as far as developer experience goes, even though they're for completely different tasks. Working with Swift in XCode is usually really fun; XCode is great at detecting and helping you fix bugs and optimize. It's also the best program in my experience for working with and installing many 3rd-party libraries thanks to Cocoapods

  • Things I'm particularly good at:

    • Making code stylistically good and well-designed (e.g. appropriate use of data structures)

    • Teaching others how to program in Swift

    • Parametrization, the bane of UNC undergrads' existences

    • Troubleshooting and fixing other people's code

Intermittent experiences

Maya

  • ~ 3 years experience (span)

  • I only use Maya when Blender doesn't do the trick or when Maya can complete something significantly faster (especially Alembic processing)

3ds Max

  • ~ 3 years experience (span)

  • I have done some rendering in 3ds Max (e.g. VRAY) and used it for more complex modeling that wasn't built into Blender at the time. I want to learn more of it but UE4 meets most of my rendering needs

Vector and 2D Graphics

Microsoft Paint

  • ~ 16 years experience

  • Most people wouldn't willingly admit how much they love Paint, but I do. It's the fastest at many things and makes for some great quick fixes for those of us who aren't so artistically inclined. If only Paint3D and OG Paint could be combined well...

Adobe Illustrator

  • ~ 5 years experience

  • I use it for all of my vector graphics (look in Graphics I Made). I'm not a master but it's unfortunately hard to find CS people who know how to use anything but Powerpoint

Adobe Photoshop

  • ~ 5 years experience

  • I'm not amazing with it but it meets my basic image editing needs. I mostly use it to make edits that are easily updated in Illustrator. Gotta love PatchMatch and the background erase tools

Adobe Premiere

  • ~ 5 years experience

  • I always use Premiere for my video editing needs. It's easy to use and looks professional. I only wish it wasn't so buggy...

Devices

HTC Vive, Vive Pro, and ViveTrackers

  • ~ 4 years experience

  • I much prefer the Vive ecosystem for my VR work. The HMDs are comfortably and things work together nicely (when they actually work...which can be the hard part sometimes). My research takes advantage of its large tracking space and extra trackers

Oculus Rift

  • ~ 5 years experience

  • My first VR experiences and research was with the Oculus Dk2, and now, due to occasional partnerships with Oculus, I use it for some research projects involving audio. I think the software is better than the Vive's and it has cooler apps, but is much less comfortable

Microsoft Hololens

  • ~4 years experience

  • Our go-to AR headset. Its API is great and its apps work pretty well given the hardware limitations, with the unfortunate reliance on Unity and long build times in most cases.

Microsoft Hololens 2

  • ~0.5 years experience (more if you include the years working with HL1 since the APIs are almost identical)

  • We recently started using it for its great eye-tracking, hand-tracking, FOV, and power. Unfortunately, the display has some visual distortions that can be annoying if you look closely enough, but it supports UE4 now!

MagicLeap One

  • ~1 year experience

  • Used mostly to stress test my programs and for eye-tracking. It's not particularly better than the HoloLens 1 at anything else.

Leap Motion

  • ~ 5 years experience (span)

  • I extended the UE4 Leap wrapper quite a bit to meet networked needs. I like the Leap and think it works pretty well, I just wish that we could find more practical applications for hand tracking. I think the Hololens 2 will finally make hand tracking cool.

Kinect V1 and V2, Realsense, and other depth sensors

  • ~ 5 years experience (span)

  • Most of the projects I work on have some depth sensor component (including the Leap above), even though I'm usually not the one who interfaces directly with it. We use it for reconstruction, skeletal tracking, and other various tasks. I personally like the Kinect V2 for reconstruction of the entire body, but haven't gotten to a complete app using it extensively.

General Notable Skills

  • Basic networking (IP addressing schemes, subnetting, programming routers and switches)

  • Computer troubleshooting and phone hardware/software repair

  • Website management and development (WordPress, Wix, basic HTML/CSS/JS, Google Sites)

  • Coming up with creative and obscure solutions to hard problems, especially the kinds that approach the problem from multiple angles

  • Narrowing down errors in programs; I can find bugs VERY quickly, even in programs that I know barely anything about

  • Program optimization; finding issues with processing speed

  • Choosing between APIs or mix-and-matching different APIs to meet my needs

  • Brute force troubleshooting and ideation of really obscure solutions that unexpectedly work (research in a nutshell?)

Awards

Classes

Computer Science

High School

  • SAS Programming I

  • Game Development in C# with XNA Framework

  • Programming I (Visual BASIC) & II (Java)

  • Computer Engineering Technology I & II

    • hardware troubleshooting, OS installation/navigation, working with clients, etc.

  • Network Engineering Technology I & II

    • routers, switches, network design, troubleshooting, working with clients, etc.

2015

  • COMP89H: Special Topics in 3D Graphics

    • Prof. Ming Lin

    • multimodal graphics applications

    • final project was on hand tracking for mobile VR: here (before the Oculus Quest made it cool)

  • COMP380H: Everyday Computing

    • Prof. Tessa Nicholas

    • social science applications of CS

  • COMP401: Introduction to Programming (Placement Credit)

    • Prof. Prasun Dewan

    • style, classes, interfaces, factories

2016

  • COMP410: Data Structures

    • Prof. David Stotts

    • data structure-based algorithms, trees, graphs, etc.

  • COMP411: Computer Organization

    • Prof. Montek Singh

    • MIPS, C, memory management, low-level programming, logic gates

  • COMP426: Modern Web Programming

    • Prof. Ketan Mayer-Patel

    • HTML, JS, SQL, CSS

    • worked on a jank multiplayer RPG game

  • COMP530: Operating Systems

    • Prof. Don Porter

    • OS structure, working with pointers, threads, etc.

2017

  • COMP495: Mentored Research

    • Prof. Ming Lin

    • worked on redirected walking applications for visually-impaired people: here

  • COMP585H: Serious Games

    • Prof. Diane Pozefsky

    • class about games for non-entertainment applications

    • worked on group project about programming-teaching application for visually-impaired kids called CodeQuest

      • this project is now published on the App Store by APH: here

    • worked on research project about design of multi-user surgical training in VR: here

  • COMP872: Virtual Worlds

    • Prof. Henry Fuchs

    • class on research of VR/AR/displays/tracking/reconstruction

    • worked on research project about implementation/limitations of multi-user surgical training in VR: here

  • IASP4091: Independent Research on International Studies II

    • Prof. KH Wong

    • taken at CUHK

    • computer vision research on pose detection of quadripeds

  • COMP283: Discrete Structures

    • Prof. David Plaisted

    • proofs, expressions, etc

  • COMP475: 2D Computer Graphics

    • Prof. Mike Reed

    • rasterizers, scanline methods, tesselation, shaders, etc.

    • wrote a rasterizer that eventually processed different kinds of shaders

  • COMP550: Algorithms & Analysis

    • Tanya Amert

    • analyzing algorithms like sorting, searching, etc.

2018

  • COMP455: Models of Language & Computation

    • Prof. David Plaisted

    • regular expressions, state machines, automata, Turing machines, etc.

  • COMP523: Software Engineering Lab

    • Prof. Diane Pozefsky

    • learning software dev planning methods

    • worked on group project called "AR Ghost Stories"

2019

  • COMP541: Digital Logic

    • Prof. Montek Singh

    • programming processors and logic gates to translate MIPS code

    • final project

  • COMP521: Files & Databases

    • Prof. Leonard McMillan

    • SQL, python, queries, tree traversal, organization of data, etc.

  • COMP524: Programming Language Concepts

    • Prof. Prasun Dewan

    • functional & procedural languages, interpreters (LISP), abstraction of programming languages

    • made a LISP interpreter that could eventually communicate with a Java program on a different network

  • COMP562: Intro to Machine Learning

    • Prof. Jorge Silva

    • math and probability behind machine learning

    • final project

  • COMP992: Master's Non-thesis option

    • Prof. Henry Fuchs

    • finish a research project and produce a publishable paper

2020

  • COMP776: Computer Vision

  • COMP755: Machine Learning

    • Prof. Junier Oliva

    • mostly solving random equations related to machine learning topics...

    • final project

  • COMP790: OS Implementation

    • Prof. Don Porter

    • OS topics like memory management, process handling, virtualization, networking, security

    • final project was making a virtual machine that runs inside a skeleton of MIT JOS that we built on throughout the semester

    • "fun" fact: this is by far the hardest class I've ever taken (runner-up is CHIN490)

  • CMSC818B: Decision-Making for Robotics

    • Prof. Pratap Tokekar

    • state machines, learning methods, modelling, etc. to make robots handle uncertainty and ambiguity when deciding to do something (take an action, move somewhere, etc.)

Math & CS Background

High School

  • AP Calculus I & II

2015

  • MATH233: Multivariable Calculus

    • Jeremy Marzuola

    • multivariable functions, partial differentiation, infinite dimensional spaces, etc.

  • PHYS118: Mechanics and Relativity

    • basic physics

2016

  • MATH381: Discrete Math

    • Paul Cornwell

    • proofs

  • MATH383: Differential Equations

    • Katie Newhall

    • analyzing mostly time-based processes with differential equations

  • MATH547: Linear Algebra

    • David Adalsteinsson

    • vectors, matrices, decomposition, infinite-dimension spaces, transformations

2018

  • STOR435: Intro to Probability

    • Ruoyu Wu

    • discrete and continuous probability, distributions, etc.

2019

  • MATH661: Numerical Analysis (placement credit)

Language

High School

  • French I-V, AP

2015

  • CHIN101: Elementary Chinese I

    • Jia Lin

    • learning characters, pronunciation, most simple grammar

2016

  • CHIN102: Elementary Chinese II

    • Jia Lin

    • more practice of the 101 concepts

  • Working in China

    • Nadia Sbaihi

    • class I took in Beijing basically managing the internship

  • Understanding Modern China

    • Prof. David Moser

    • taken at Capital Normal University

    • class about modern China (19-21st century)

  • CHIN203: Intermediate Chinese I

    • took at Capital Normal University

    • more complex topics and grammar

2017

  • CHIN204: Intermediate Chinese II

    • Luoyi Cai

    • practicing 203 concepts

  • MGNT2510: Introduction to International Business

    • taken at CUHK

    • international business, especially in Asian countries

  • CHIN305: Advanced Chinese I

    • Yi Zhou

    • more complex grammar, reading, listening, and presenting

2018

  • CHIN306: Advanced Chinese II

    • Luoyi Cai

    • practicing 305 concepts, especially reading and skimming

  • Korean Cinema

    • taken at Yonsei University

    • looking out how 20th and 21st century events shaped Korean media

  • English & American Literature

    • taken at Yonsei University

    • reading books like Jane Eyre & Great Gatsby

  • CHIN361: Chinese Traditional Theater

    • Li-ling Hsiao

    • Peking operas, differences from other types of theater, characters, etc.

  • CHIN407: Reading in Chinese I

    • Luoyi Cai

    • advanced reading (like stories) and presenting

  • CHIN490: Topics In Chinese

    • Li-ling Hsiao

    • by far the hardest class I've taken at UNC

    • Chinese History taught in Chinese (dynasties, important people, methods, etc)

    • with a partner, we held multiple classes teaching given material to the other students with instructor guidance

    • wrote a research paper on Chinese efforts to conquer Korea

2019

  • CHIN408: Reading in Chinese II

    • Jia Lin

    • more advanced reading & presentations. understanding Chinese movies

  • CHIN463: Narrative Ethics in Modern China

    • Robin Visser

    • differences in narratives throughout Chinese history and comparison to Western philosophy

  • CHIN511: Literary Chinese

    • Wendan Li

    • studying and translating ancient Chinese scripts

Other

High School

  • AP Macroenomics

  • AP Psychology

  • AP English Language & Composition

  • AP Government & Politics

2015

  • ANTH148: Human Origins

    • studying homo-sapiens ancestors and how anthropology works

2016

  • CHEM101L: Quantitative Chemistry Lab

    • analyzing chemical processes scientifically

2018

  • FOLK202: Intro to Folklore

    • American folklore, analyzing folk culture, etc.

2019

  • ENGL283: Life Writing

    • stories like autobiographies, experiences, etc.

Extracurricular

High School

  • Kramden Institute: repairing and recycling computers for students in need

  • National Technical Honors Society: STEM tutoring and classes

  • Key Club: various volunteer opportunities

  • Habitat for Humanity: helping build houses for the disadvantaged

College (all formerly)

  • Summer Bridge

    • summer camp to take classes before 1st semester and adapt to college life

    • didn't leave; the program concludes once the summer ends

  • TEDxUNC

    • 2015-2016: worked on tech team as VR demoer and helped build website

    • 2016-2017: co-head of tech team. made an iOS app for people to communicate with each other during the conference

    • left because I felt the conference was not practically effective in helping the community. It felt like an echo chamber of solid ideas with no implementation

  • Technology Without Borders

    • 2015-2016: mentored homeless people to learn how to use computers

    • left because it was difficult to coordinate with the group

  • Carolina Scientific

    • 2015-2016: published 2 articles on advances in CS, one focusing on Ming Lin, the other on Gary Bishop

    • left due to time constraints and working on research publications as opposed to magazines

  • Carolina Millennial Scholar Program

    • 2015-2016: volunteering for events benefiting minorities or disadvantaged students at UNC or prospective

    • didn't leave; the program concludes after 1st year

  • Unicef @ UNC

    • 2015-2016: volunteering for aid in struggling communities around the worlds

    • left because the organization was not particularly successful at making an impact; it made very little money and thus could spare barely enough resources to help with even a single person's problems

  • Red Cross @ UNC

    • 2015-2016: volunteering for blood drives

    • left because I don't like blood and felt like I couldn't add much to the organization considering my available time

  • Students for Students International (S4Si)

    • 2015-2016: helping to find suitable scholarship recipients to go to Africa to teach girls. helped build the new website and volunteered for events

    • left because of a lack of respect of the amount of time I was able to put into helping them

  • Design for America UNC

    • 2015-2017: led tech team. helped with technical problems, planning, the website, collaborating with other organizations, design thinking workshops, etc.

    • left because the organization seemed ineffective and there was little community interest in it. also for the reason I left S4Si

  • First Year Service Corps

    • 2015-2016: volunteer program that targets 1st-years

    • didn't leave; program ends at end of 1st year

  • Circle K International

    • 2015: volunteering for community events

    • left b/c of time restrictions

  • Honors Carolina

    • 2015-2019: take honors classes

    • I didn't leave, but at some point I stopped putting effort into meeting the requirements because the program lacked CS-related classes that met its requirements, so the only option would have been to take a bunch of social science classes unrelated to my majors. Nevertheless, I graduated with surprisingly only 1 credit hour less than the requirement.

  • Buckley Public Service Scholars

    • 2015-2016: has 300-hour requirement for volunteering

    • left because they denied me ~100 volunteer hours because I submitted them a few minutes late, which told me that they care more about the administrative side than whether or not its members care about volunteering. I decided to turn my volunteer efforts towards organizations that would actually appreciate them

  • Triangle Junior Youth Group

    • 2015-2016: program mentoring at-risk youths. went to long workshops about mentoring kids to strive for college and success

    • left because of difficulties organizing volunteer efforts

  • HackNC

    • 2016-2017: tech team co-lead

    • didn't really leave, but diminished my efforts because of organizing difficulties while I was in Beijing. Have not had interest in leading an organization since starting research projects

    • 2015-2019: mentored participants in VR/AR/game dev/iOS & volunteered for organizational efforts

    • 2017: held a VR/Unity dev workshop

  • PearlHacks

    • 2015-2019: mentored participants in VR/AR/game dev/iOS. Multiple teams that I mentored won awards

    • 2019: held a Unity tutorial workshop

  • HackDuke

    • 2015: made a project with Ami Zou that used the Oculus DK2 and Leap Motion to make an educational VR game allowing the user to divide components of animal and plant cells

    • 2016-2019: participated and experimented with tech, but didn't get to a complete product in time

  • TreeHacks

    • 2016-2018: participated but didn't get to a complete product in time. I typically work on hardware experiments like breadboards and arduinos