Work Experience

Current Role

Zoomi, Inc (December 2019 to Present)

Data Scientist/Researcher/Full Stack Developer

Philadelphia, Pennsylvania

At a Glance:

Core Technologies: Python, JavaScript (React), Docker

Role Summary: Data Scientist on the Advanced Research Team

Overall Impact: Only full time data scientist and member of the research team, work includes developing solution and deploying to prototype. Specific responsibilities include:

  • Conducting research to solve problems identified by the product management team, such as synonym identification

  • Leveraging research into sales demos and products, including both front-end and back-end changes

  • Productionizing demos by refactoring existing code for maintainability and efficiency, including Dockerizing code

  • Consulting on sales calls to answer questions and assess future opportunities

  • Consulting in product management meetings to discuss direction of core technologies

  • Conducting novel, independent research with academics and writing up the results for publication

  • Personally designed research project for intern and supervised for the duration of the internship

Skills Gained: Implementing data science concepts in practice, building front end applications using React, interacting with different teams within the company, experience moving from demo to product

The Team: Worked with other software engineers, data scientists, the sales and QA teams

Previous Roles - Click to Expand

Air Force Institute of Technology (Summer 2018)

Software Engineering Intern

Wright-Patterson Air Force Base, Dayton, Ohio

At a Glance:

Core Technologies: Rust, Cargo, C

Project Summary: Wrote embedded software for satellite platform designed for a variety of payloads

Overall Impact: Led a team writing API and service for the radio system, contributed to HDLC Crate

Skills Gained: Embedded systems programming, working collaboratively, introduction to SCRUM and other workflow practices

The Team: Worked with other software engineers, electrical engineers, mechanical engineers

In Depth:

I chose this internship largely to broaden my technical skill set. Most of my work previously had been high-level whereas all of the work for this internship was for embedded systems. I was also very interested in the goal of the project. Previously satellites designed by this program had been built from the ground up each time to serve a specific payload. This project aimed to create a general purpose satellite framework that could be updated as necessary and could support many different kinds of payloads. Accomplishing this would not only greatly reduce the work and expense that would go in to building each satellite, but would also dramatically reduce the amount of time required to launch a satellite. Finally, I liked that this project was a research one that gave me the opportunity to interact with students. AFIT is a Master's level program for aerospace engineers, and the satellites built for this project are to support a class in satellite design. Each is eventually launched to do scientific research, but throughout the process helps to train aerospace engineers.

The first two weeks were dedicated to learning the language Rust and its project management system Cargo. After this, I began right away on a project to integrate the radio with existing flight software. This consisted of writing an API and service, both in Rust, that would allow the onboard computer to send messages to and receive messages from the radio. Often this boiled down to determining how to handle bits transmitted to and from the radio. The project was complicated by the fact that the radio was no longer being supported by its manufacturer and had incomplete documentation. In addition to software testing, it was often necessary to test directly with the hardware by setting up a software defined radio, simulating the output from the onboard computer, and seeing how the radio responded to its input. After we got the radio to successfully downlink, I moved on to working on a service for the payload for the last week of my internship.

Overall, I learned a lot from my time at AFIT. I gained knowledge of embedded systems and gained first-hand experience in working with them and programming in Rust. I was able to help with teaching, which is always a valuable skill in reinforcing one's own knowledge. I also became more familiar with working as part of a team. In my undergraduate degree, collaboration was generally discouraged on most projects and my previous internship was based on a project I did on my own. At AFIT, I frequently pair programmed or helped to debug someone else's code. I contributed to an open source Rust crate HDLC written primarily by one of my coworkers. I also gained experience reading other people's code and ensuring I wrote readable code myself. I started to use standard tools, such as GitLab, Trello, and Slack for workflow management. Lastly, I was introduced to the SCRUM framework.

LexisNexis Special Services Inc.

(Summer 2016)

Software Engineering Intern

Dayton, Ohio

At a Glance:

Core Technologies: Enterprise Control Language (ECL), High Performance Cluster Computing (HPCC)

Project Summary: Completed a project to provide a measure of accuracy on record matches

Overall Impact: Feature added directly to customer-facing web application

Skills Gained: Experience with the Extract, Transform, and Load (ETL) model, using cluster computing with millions of records

The Team: Worked mostly alone with supervision from a mentor

In Depth:

I chose this internship to learn what data processing looks like in practice and gain experience with cluster computing. The first few weeks of the internship were centered around learning Enterprise Control Language (ECL) on data from IMDb. These wound up being several tables of a few million rows each. ECL is somewhat similar to Hadoop and uses much the same syntax as SQL. I learned about how to extract, transform, and load (ETL) data. The exercises taught me how to think critically about the data received as input and all of the inconsistencies it might have. Some of the assignments required designing algorithms to return information about the movie (such as the top-billed actor). Often, I strove to make a simple and naïve algorithm that was efficient and a more elaborate one that was more accurate. This exercise helped me to consider problems in several different ways and design solutions that were best suited to a customer's needs.

After I finished learning ECL, I began work on an algorithm to determine how well records were matched. One of LNSSI's major web applications attempts to match heterogeneous data on certain fields and return a combined record. These matches were often "fuzzy," in that some fields had to be guessed at or slight discrepancies ignored due to inaccurately input data. My task was to consider the major fields used by LNSSI's customers and provide a confidence score for how well the records were matched. This required considering the relative importance for different fields and how much variance should be accepted for each. The idea was that this could then be evaluated by humans to improve record matching for their specific dataset. I worked on this project alone with supervision from a full-time software engineer. At the end of the project, I was told that my confidence score was being added to the primary customer-facing web application provided by the company.