I'm a third-year student studying computer science.
Despite my birthplace of Columbus, Ohio, I'm attending the University of Michigan (although I grew up in Albany, New York).
I'm currently an Instructional Aide for EECS 203, an introductory discrete math course at the University of Michigan.
In addition, I'm a Research Assistant at comp.social, a lab that analyzes social media systems under Professor Eric Gilbert, and I'm also a
Project Manager at Atlas Digital, a student-run tech consulting group that does pro-bono work for local businesses and non-profits alike.
This past summer, I worked as a Software Development Engineer Intern at Amazon on an Alexa Shopping team.
I can hold fluent conversations in English and Chinese, and if you give me a few seconds to think, I might be able to ask for directions to the nearest hotel in Russian.
I spent the summer working on the Conversation Routing team, a team with the responsibility of routing incoming shopping requests from Alexa. One of the services that our team owns is a web platform where partners 60+ other Alexa Shopping teams can configure customer experiences for shopping.
One of the configurations requires partners to write logic in JSLT, a JSON transformation language yielding code that can become very long and complex. As such, we urge partners to write unit tests for their JSLT expressions. However, these unit tests could only be run during a release, the process where ALL configuration are saved into production. Thus, a release can take around ~10 minutes, which means that a partner trying to write, edit, and debug their JSLT configuration would need to wait ~10 minutes for any sort of feedback.
My intern project was to build a front-end feature to allow partners to directly run their JSLT tests in the web platform UI. I was responsible for every phase of the project, from having a requirements gathering session with a partner, drafting a design doc, leading a team review of the design doc, implementing the project, writing unit and end to end tests, and leaving behind extensive documentation.
I learned a lot throughout the course of my internship. Besides getting a lot better at reading and writing code, I've gotten acquainted with the concept of ownership. In the later weeks of my internship, an on-call engineer discovered that one of my pushes had inadvertently broke something, so I promptly traced the source of the bug and sent out a fix. I found that this experience was empowering-- not the action of breaking the codebase, of course, but the idea that I take responsibility for each and every line of code I push.
Overall, 5 stars. Amazing team, would intern here again.
Working remotely amidst the global pandemic, I spent the summer developing and productionizing a SQL process that identifies the members of a healthcare client who are at high-risk for poor outcomes should they contract COVID-19. Additionally, the process also digs through each person's medical claim history, looking for medical codes related to COVID-19 diagnoses, symptoms, and testing.
The primary goal of the process is to aid healthcare payers in their ongoing COVID-19 care management efforts. By identifying high risk individuals and providing data on COVID-19 related medical history, the process gives clients the information they need to more actively seek out and protect those high risk individuals from experiencing hospitalization, ICU admittance, or even death.
During development, I was given access to data from a payer client with approximately 5 million members. Through code optimization, I cut down my process's runtime from ~40 minutes to ~13 minutes, where the typical data processing job might take upwards of several hours on a client of this size.
Between my process's cheap runtime cost and ongoing need for COVID-19 related care management data, I was given the green light to productionize my process. Using internal deployment and production tools, I added my process to the Master Schedule, which is the collection of SQL scripts run for all clients as Health Information Service's core product.
Crossmoderator, or Crossmod for short, is a Reddit moderation bot which detects toxic content through machine learning. Crossmod is intended as a supplement to current moderation tools which rely on matching regular expressions and are unable to detect more subtle personal attacks or racist remarks that don't explicity contain toxic keywords.
Our research team recently deployed Crossmod to r/Futurology, a subreddit with over 14 million users. We are studying Crossmod's accuracy and precision and plan to refine Crossmod's machine learning models based on its real-time moderation decisions on the subreddit.
In order make Crossmod more scalable, I deployed its backend of 160 gigabytes of FastText machine learning models to a cloud-based RESTful Flask API. The API also allows Crossmod's backend to be utilized more generally as a public toxicity detection service (it has already been utilized in a separate, NSF-funded project studying tools that can be used to study internet toxicity).
A demo can be found here. We are currently refactoring Crossmod to switch its backend to the API. If you would like access to an API key, feel free to contact me.
In the future, we hope to release Crossmod as an open-source project.
Atlas Digital is a student-run consulting group that provides pro-bono tech services to businesses, startups, and non-profits in the local Ann Arbor area. I'm a part of the Internal Project Team which built and now continues to develop and maintain our website, atlasdigital.org through Git workflows.
As the project manager, I coordinate a team of 3-4 other consultants by communicating via tools such as Slack, when2meet, and Google Meets and by organizing both short-term and long-term goals via Trello. Furthermore, because our team practices Agile-like and horizontal development, I prepare and present regular deliverables to either the executive board or the rest of the club and dynamically alter tasks and goals based on feedback.
In addition to my managerial responsibilities, I also work extensively on the technical side of development with my team. Aside from contributing to a large portion of our front-end (HTML, CSS, Javascript), I am the team's primary back-end developer. I switched our site from the previous static hosting service to a dynamic Flask webapp running on an AWS EC2 instance to take advantage of templating and databases.
If you happen to be a potential client interested in taking advantage of our services, feel free to contact Atlas Digital through the official channels or email me directly.
I'm an instructional aide for EECS 203 (Discrete Math) at the University of Michigan. I do anything I can to help our team of other IAs, GSIs, and profs keep this course of 900+ students running smoothly.
My duties include running a weekly discussion section where students can review lecture material and practice problem-solving techniques, holding virtual office hours, writing and testing exam and homework problem sets, answering Piazza posts, and managing the chat in online Zoom lectures.
All in all, I've been having a lot of fun teaching and working alongside the rest of the EECS 203 staff. I did quite a bit of teaching in high school (I coached and ran classes for Mathcounts, TA'd for Chinese Language classes, and ran a local programming club), so I'm glad I was able to find an opportunity to continue doing so in college.
As a plus, there are some pretty interesting insights you can derive from discrete math. Did you know that, in a random group of just 23 people, there's about a 50% chance that two people have the same birthday?
under construction
...with more to come!