As a software engineering intern on the Mobile Ads Infrustracture & EngProd team at Google's Mountain View headquarters, I worked on up-and-coming tools that reduce friction in developers' workflow, specifically, in mobile user interface (UI) validation. My work played a critical role in integrating a contextual mobile UI differ tool called SmartDiff into the Google-wide image capture and comparison framework, which required a hermetic, native call for Android and iOS. I worked on the Android side.
My primary responsibility was to enable cross-platform functionalities for SmartDiff (a C++ library) in the Android runtime environment. Through research, I learned that the approach that best leverages the existing library is to create a cross-language, cross-platform interface for the library using the Simplified Wrapper and Interface Generator (SWIG) or the Java Native Interface (JNI), rather than to re-implement SmartDiff in Java. I then contributed to SmartDiff's value proposition by creating a novel data visualizion and interpretation for SmartDiff results. My project culminated in a pitch to the Google-wide image capture and comparison framework team.
It wasn't as simple as that, however. Mid-way through my internship, after experimenting with various SWIG and JNI configurations, my team and I realized that the crucial foundation was missing: the SmartDiff library doesn't build for a mobile runtime environment, which meant SmartDiff isn't extensible for mobile, which meant my core project was inherently infeasible. Delving into the intricacies of Google's build infrastructure, I learned of the various limitations that mobile applications impose, which a library and all its dependencies must adhere to in order to build for mobile configurations. Disappointed at first, I bounced back by turning my core project in to research: writing scripts to identify all of SmartDiff's dependencies that don't build for mobile configurations, finding suggestions for mobile-compliant replacements for those dependencies, and compiling my learnings into a comprehensive handover document, as refactoring the entirety of SmartDiff would exceed the scope of an intern project.
The earliest dependencies that I was able to replace with mobile-compliant equivalents were SmartDiff's protocol buffers. Mobile applications require an optimized version of the standard protocol buffers due to the mobile-specific issue of multidexing: Android applications have a technical limitation on the number of methods that can be referenced from a single Dalvik Executable (DEX) file. After replacing Smartdiff's protocol buffers dependencies with mobile-compliant equivalents, I was able to use JNI to create a wrapper framework that mimics the parameter and return type of SmartDiff's differ call, which can successfully make the native C++ call in an Android application. Theoretically, if SmartDiff is refactored to build for Android, one can seamlessly add it as a dependency to the wrapper I created and call SmartDiff from an Android application: the original goal of my core project.
I learned so much. I learned the importance of feasibility testing. I learned about C++ and Android development, Google's build infrastructure, the Java Virtual Machine, and inter-language operancy: technical concepts I had no background knowledge in at the beginning of my internship. I learned to ask the seemingly dumb questions early and often because new, fresh perspectives can shed light on things no one has ever considered. I learned to start small and build up, test often, and to not worry about getting everything perfect on the first try. I learned to look for opportunity in situations that look like failure. I learned how my work fits into Google's mission to organize the world's information and make it universally accessible and useful.
In the backdrop of all this, as a 2017 Kessler Fellow, I was inspired to keep an open mind. Initially, I underestimated the impact of my product area for this internship (Tools and Infrastructure) because my work wouldn't be deployed to consumers, only to internal developers. Arriving and working at Google shattered that pre-conceived assumption. During the first week of onboarding, I was in utter awe of the scale and usability of Google's internal development framework, and realized that engineers working my product area are responsible for developing it: for innovating based on their own software development insights, for shaping corporate cultures, for making someone's development and deployment experience so much easier. In Tools and Infrastructure, I learned that we engineers serve as our own product managers and wear many different hats. We are a highly entrepreneurial division, and my project was a testament to just that. Only in this product division would I learn how to bring a product to market and integrate it with a major part of Google, and play a major role in making it happen as an intern. This sentiment built upon my internship at Microsoft the year prior, where I worked in a similar, Microsoft-equivalent product area (Developer Division). Together, these two internships gave me projects of meaning, purpose, and fulfillment and the best possible learning experiences I could hope for as I prepare to head into industry. Upon returning to Cornell after this internship, I was invited to give an hour-long presentation about my summer for the Kessler Fellows Symposium series. I conveyed to listeners that things aren't always as they seem and how to apply effectual thinking, which I related not only to my summer, but also to the journey I took to get here. (The video recording of my presentation is available upon request.)
And of course, I had fun! I was able to pursue my long-term passion for figure skating and train daily before I head into the office. With the other Bay Area Kessler Fellows, I explored the Silicon Valley startup and engineering scene, and was fortunate to meet and share stories with Andy Kessler. I participated in Lean-INterns with fellow female Google engineering interns who became like a second family and a group I could count for motivation and solace. I marched with Google in the San Francisco Pride Parade. I starred as an extra in a film by Maku Creative (can you spot the back of my head?). I fell in love with the natural world more than ever during my excursion in Yosemite National Park. I took way too many Google Grow classes, the most memorable ones being Search Inside Yourself, cooking at KitchenSync cafe, and 3-D printing. I volunteered with my team for GoogleServe. I watched the Miss California pageant, which instilled in me inspiration and zest to pursue my dream of representing the Miss America Organization (and I was successful come October 2017!). I witnessed the internal dynamics of how Google responded to a challenging situation. I learned that the value of diversity stems from an appreciation of individuality and has an indisputable place in the tech industry. And I met so many inspiring, generous, influential people who helped inform my future and to whom I can never fully convey the depths of my gratitude.
This Impact Trek began as a collaboration between the Cornell Engineering Leadership Program and Emzingo. Cornell students from all schools and majors were invited to apply, and ultimately, a diverse team of 7 was assembled. We met regularly throughout the second half of the fall 2017 semester, engaging in teambuilding sessions, design thinking practice, and project onboarding. Early on, we learned about the client that we will be working with: Workay!
Workay! is a social startup in Rio de Janeiro that that connects skilled professionals with commercial and residential customers for specialized repairs and reforms services. Their mission goes beyond connecting skilled professionals with clients; they seek to change cultures. They provide training to women and individuals living in socially vulnerable areas of the city so that they can gain experience, credibility, and certification through completing services with reliability and high quality. This will equip them to contribute to the repair and reforms industry as professionals and build up their reputation and living environments.
Workay! posed to us the question,“How might we scale the organization while ensuring high quality services?” We spoke with Workay!'s founders, Julianna and Patrick, on Skype to learn more about Workay! and how our skills can be leveraged to address this challenge. In the meantime, we all conducted research about various aspects of life in Brazil and used CultureFlex to understand cross-cultural differences. Though we had a love for problem solving and the design thinking tools inside of us, we were encouraged to not jump to solutions right away, for none of us would anticipate the impact that the immersion would have on us and our paradigms.
When I first arrived in Rio, not knowing Portuguese, I felt as if I had been reborn into a new world. I quickly realized that there was so much that I did not know, and only in my humility was I able to attune my mind to the new culture, people, and interactions. We had a full schedule for the week, with cultural immersions, stakeholder interviews, and dedicated project work. Everything was intentionally planned, and it was essential to keep an open mind, be present, and relinquish pre-conceived notions. I saw, interacted with, and learned about a side of Rio that would've never been possible if I came as a tourist.
Every day we gained new perspectives that built off of the previous days', and they would form the foundation of our deliverable to Workay! It was listening, empathizing, and connecting the dots that formed the foundation for the final product that Workay! was extremely satisfied with, not some stroke of genius or ungrounded idea. After we created and pitched our deliverable, I couldn't believe that just a few months ago, I had first read the briefing on Workay! and thought that the solution would be to simply develop an Airbnb or Uber clone.
This trek ingrained in me the power of understanding. Though I will never be able to fully fathom the stakeholders’ stories, they filled me with reverence, expanded my mind, and changed the way I approach problems. To this day, I still think of Rio, of Workay!, and how the city is improving citizens' welfare and mending its economic and social disparity. I'm grateful for everyone who made this trek successful and the close friendships we formed along the way.
As an Explorer Intern in the Static Analysis Strategy Team within the Language and Compiler Platform Team, Developer Division, Cloud & Enterprise, I rotated through the Program Manager and Software Engineer roles with a pod of 2 other Explorers to design and execute an end-to-end project for SARIF (Static Analysis Result Interchange Format), Microsoft's new standard Static Analysis format.
From the first day, Microsoft made clear to me the prevalence of its mission to "empower every person and organization on the planet to achieve more," from its presence in the ambience of team settings, to the details within my project specification, to its printing on the back of every employee and intern badge, to company-wide initiatives that encourage exploration, diversity, and wellness. With the recent changes Microsoft has undergone, I also realized the importance of having a leader who embodies the mission and values of an organization.
I loved being an explorer. As an engineering student with a wide range of interests and budding affinities for engineering leadership and digital product design, I found immense value in experiencing both program management and software engineering roles and learning how they complement, build upon, and relate to one another. An epiphany for me was the realization that I care a lot less about coding than I thought; I care about the people I'd be impacting, the values and mission we engineers can imbue into software, and the joys of solving micro- and macro-sized problems through engineering. That summer, I declared my engineering major to Information Science, Systems, and Technology, which I believe combines the best of computer science and its application to society.
In the Seattle and Puget Sound area, my favorite pastimes were hiking, skydiving, frequenting local tea shops, photographing, sailing, rock climbing, bouldering, and aerial yoga. Highlights over the summer include a Q&A session with Satya Nadella, the Microsoft intern outing to Mount Rainier National Park, Microsoft's Signature Event at the Space Needle and Chihuly Garden and Glass with Ellie Goulding, Microsoft's //oneweek Hackathon, and Builder (a retreat for all Microsoft interns in the developer division).
CodeU is an exclusive year-long program for high potential candidates to build technical skills, work on a team project, and receive regular mentorship from a Google Engineer. From January to August 2016, I completed a rigorous online data structures and algorithms course through the Flatiron school, had weekly Google Hangout calls with a Googler mentor, received technical interview coaching and feedback, and collaborated remotely with two teammates on a project. In August 2016, participants are invited to a week-long summit at Google Headquarters to experience Google's culture firsthand, network, attend leadership and career development workshops, work on their project, and showcase it to Google Engineers. After the summit, we received a final mock interview before preparing to apply for roles at Google for the upcoming year.
For the final project, my teammates and I developed a command line-based web crawler, page indexer, database structure with Redis, and information retrieval backend for a Wikipedia search engine, implemented in Java. Additional features we implemented were a question-answering functionality using Stanford CoreNLP, a web interface frontend using Java EE, and asynchronous search and question-answering using AJAX. The two most memorable moments for me were (1) the eureka moment of mastering AJAX in late hours of the night (2) discovering a superfluous backend call that, when removed, sped up search time by 70%!
Cornell Emergency Medical Service (EMS) units are responsible for keeping track of data related to emergency calls and responses. However, much of this data is recorded on paper during an emergency response, with remaining information being filled out shortly after the response is complete. Paper data limits the ability to gain valuable insight from aggregate data analysis. Many EMS units can benefit from access to data analytics, as it can help them detect potential concerns in their service, allocate resources according to demand, and prepare for the future based on trends.
To bridge this gap, my CS 5150: Software Engineering team developed a data-driven dashboard for Cornell EMS. We set out to help EMS squads manage and glean insight from their data, track emergency calls, improve unit performance, and ultimately help save lives and serve citizens better. This dashboard provides data visualizations and data analysis tools that help EMS professionals understand and make important decisions and judgments about their squad’s performance that would otherwise be too cumbersome to do with paper records or rudimentary spreadsheet processing.
In conjunction with the course, we underwent a comprehensive feasibility study, requirements analysis, and preliminary design process. We learned that client satisfaction is paramount in evaluating project success, and that client satisfaction demanded common goals and understanding. We worked closely with a representative from Cornell EMS to ensure that our project will help them reach for their higher goals while supporting existing practices that cannot be replaced. These conversations delved into Cornell EMS' internal policies, practices, and potential legal ramifications surrounding data privacy, which we would never be able to glean ourselves. Following an iterative development methodology, we created and handed over a product that Cornell EMS was eager to implement and still uses to this present day.
Created using React, Charts.js, Materialize, Node.js, Yarn, and MongoDB.
The inaugural year of BigRed//Hacks was very rudimentarily organized, with a Google Forms application, mass e-mail announcements, and a very exhausted organizing team (consisting of just two people!). Seeing areas of improvement and fueled by my love for the event, I joined the organizing team as a simple-minded, impressionable freshman, hoping to improve both hacker and organizer experience by contributing my web development skills.
I spent the next two years collaborating with a team to run two iterations of BigRed//Hacks, each one surpassing the last in scale, polish, and impact. We brainstormed and developed from scratch a resilient applicant tracking system for 1200+ students using Node.js and MongoDB, with features including applicant dashboard, admin event management, and aggregate information display. We revamped our public image, brand, and campus presence, extending our reach to run socials, photo campaigns, experiential workshops, and a mentorship program. Altogether, this resulted in increased site traffic by 300%, increased event interest by 130%, and a very gratified organizing team.
Random Hacks of Kindness is an altruistic hackathon meant to utilize the skillset of Cornell students to have a positive impact in an area of need for community partners. This interdisciplinary event brings together students from across degrees, majors, and schools at Cornell to solve problems proposed by our community partners using technology.
The proposal that resonated most strongly with me was one presented by Accenture and Women in Computing at Cornell (WICC): to build an app to drive the participation of girls to the new Girls Who Code club that was being launched at Cornell in partnership with WICC and Accenture. Working on this prompt allowed me to draw upon my leadership role in WICC, my passion for the cause, and inspiration from attending my first ever Grace Hopper Celebration in Houston, Texas a month prior. Additionally, as a hackathon veteran and organizer, I emerged as a leader of the team on both the technical and product side.
During an initial brainstorming session, we only considered only ideas that teach coding. But taking a step back, I asked, "Will an educational hack address the prompt of motivating girls to join Girls Who Code?" While education is important, I thought that creating a Codecademy or Treehouse clone would not only be re-inventing the wheel, but also infeasible over the course of 36 hours. I drew upon my experiences to emphasize things that motivate me to study Computer Science in spite of the gender gap: a supportive community, the "epic win" of getting your code to work, and how applicable computing is to other fields. I encouraged my teammates to do the same. The amalgamation of the results and common threads formed the basis for our final idea, which was a web application with three major features:
Initial Excitement and Confidence: Upon opening our app, you will be greeted with fun, quirky spy game where you evade the villan
Education: Not ignoring the importance of education, after passing the game, the page transitions into a resource bank with information about the Girls Who Code club, learn-to-code sites, news about women pioneering in computer science, motivational videos, and a collection of stories from women in computing.
Community: Users can create an account and log in (via the navigation bar) to a tailored social network where they can collaborate on projects, join interest groups, read and contribute ideas, connect with others mentors, fellow students, and potential role models, and discover and create meetups. This feature was implemented with a Parse backend.
After creating a minimum viable prototype on Sunday morning, we conducted user testing with two girls belonging in our target demographic
and incorporated their feedback. We delivered a live pitch to a full audience, and we were awarded first place among nearly 150 projects
With the connections from our Accenture representative mentors, their support for our team and our project, and the momentum generated from that weekend, we deployed our app to the Girls Who Code club at Cornell, and in December 2015, give a virtual presentation to six Girls Who Code executives to brief our project and for them to consider implementing it in additional Girls Who Code clubs. (The video recording of the presentation is available upon request.) In October 2016, inspired by the community aspect of our project, Girls Who Code developed an app called "Loop," which has been deployed on the App Store and Google Play for use by girls worldwide.
Entropy is a 2D puzzle platformer game developed in Java using the libGDX game development framework and Box2D physics engine. This game was conceived for CS 3152: Introduction to Computer Game Architecture. I worked in an interdisciplinary team of 6, comprised of developers and designers, and we were given the go-ahead to create any game we wanted to create, with the only requirements being that it must be feasible within a semester and it must feature innovative gameplay. Following the iterative development methodology (SCRUM sprints)—rotating through rudimentary prototyping, alpha release, beta release, and final release milestones—the class functions like a real game development studio. Class instruction taught all aspects of the broad, all-encompasing realm of game design, including technical implementation, design, and technical writing. Topics that I found especially interesting are physics engines, graphics, character AI (sensing and thinking), story design, and dialogue.
I worked as both a designer and developer. My backgrounds in web development, art, user experience design, and gaming served as strengths as I created the core gameplay mechanic, design goals, and a level designer web application that generated JSON files representing game levels. Entropy was released at the 2016 GDIAC (Game Design Initiative at Cornell) Showcase. It was lauded as having "a very distinctive style with some of the best art assets in the class."
High Concept Statement
After a nuclear apocalypse, plants and animals flourish where humans once lived. Cota, a mysterious creature that can harness the power of plants, is born into this strange environment, unsure of its place in the world. As Cota, use your power to grow and shrink vines to traverse the harsh environment. Avoid contact with the poisonous creatures that dominate both sky and land while you explore to find a place that you may call home in this hostile land.
Description coming soon
//oneweek was a whole new kind of hackathon experience. I worked with the largest, most coordinated team ever (30+ Microsofties), served as a PM for my own feature, and got out into the field, all under a harmonious balance of the "sprint" of traditional hackathons with the level-headedness that the week-long duration afforded us.
We were awarded second place in the //HackForHer challenge at //oneweek 2016!
I cannot disclose specific project details due to a NDA.
PennApps Fellows is a student-run non-profit organization that pairs talented students from around the country to Philadelphia tech companies & startups for a 12-week summer internship program. Fellows work closely with a local startup, get plugged into the Philly tech scene, and meet some of the coolest and brightest people in the country. I was one of 14 PennApps Fellows in the class of 2015: my very first internship after finishing my freshman year in college. Living in the same apartment building, exploring Philadelphia, volunteering, attending meetups, sharing meals, karaoking, and partaking in self-organized "hack nights" together, we forged strong bonds and memories that I will always cherish.
I was paired with CuriousBee, an early stage startup whose mission is to inspire life-long learning through an online platform for listing, searching, and registering for in-person classes. It was launched in Philadelphia because of the city's strong culture of education. As one of four members of the team (the others are the CEO, CTO, and COO), I was given the keys to production to implement any improvements that I saw and that the team approved of. I led the design, implementation, and deployment of site overhauls and features. I rebuilt the site architecture as we transitioned from the CakePHP framework to Symfony framework, leveraging the similarities between each framework's Model-View-Controller design pattern. I enhanced the user onboarding experience through conducting research, reading case studies, prototyping, and gauging telemetry.
All of my work was done remotely. CuriousBee did not have an office, so I spent my days working in various buildings, libraries, and gardens at the University of Pennsylvania. To this day I have never met my teammates in person. I communicated asynchronously with my mentor and CEO, who trusted in me to meet milestones by set deadlines. It was difficult in the initial onboarding and setup phase. My mentor and I would spend hours on Hangouts debugging my installation by sending console commands, screenshots, logs, and outputs back and forth.
Community involvement is a major pillar of the PennApps Fellowship. On Monday nights, we served as Teaching Assistants for the Interdisciplinary Innovation program by PennHealthX, where we mentored PennMed students as they develop Ruby on Rails applications. We participated in OpenAccess Philadelphia and were invited into the discussion on how the local tech scene is helping tackle community issues. At CodeForPhilly, we mentored others and met with civic leaders. Additionally, we attended conferences such as LibertyJS to learn about the latest development trends and meet other developers.
Altogether, the PennApps Fellowship gave me an impeccable start to my career: a summer of empowerment, exploration, learning, responsibility, camaraderie, and outreach. Outside of this fellowship, I attended the WBENC Student Entrepreneurship Program in Austin, Texas and competed in my first national pageant.
The goal of CS 3110-Data Structures & Functional Programming is to help students become excellent programmers who can design and implement software that is elegant, efficient, and correct, and whose code can be maintained and reused. Beyond OCaml syntax, CS 3110 teaches that programming transcends programming in a language: that complicated artifacts can be broken down into small pieces, that you can study those small pieces and understand how they work in isolation, and that ultimately you can understand why their aggregation achieves broader goals. Fun is a keyword. 😉
My final project for CS 3110, developed with a team of 4, is an HTML5 canvas web-browser implementation of the game 2048 written exclusively in OCaml, using the Js_of_ocaml compiler. Key features include game state tracking, keyboard controls, evil/regular game mode toggling, and three AI auto-run implementations. This project had a substantial planning process, which involved outlining the program architecture, system design, module design, data maintenance system, external dependencies, and a testing plan before writing any code.
My INFO 3450: Human-Computer Interaction Design class was structured around a long-term group project. My team and I decided to design a solution to help smokers to kick their habit by iterating through the human-centered design cycle. Our project was voted “Most Impactful” out of all ~50 projects in the class.