Overview

This page contains detailed (more than my resume) information about projects I've completed and am currently working on. This includes professional, academic, and personal projects. Entries within each catagory are generally ordered by date of completion, with the most recent at the top, and the color tab indicates the time commitment of the project.

Focused, < 20h
Midsize, 20-50h
Significant, 50h+

Professional

Project Image

  Freelance Python Data Analysis

Completed 2 freelance contract projects involving Python web scraping, data analysis, presentation, and formatting final results in excel format

Skills

  • Python Scripting
  • Professional Communication
  • Data Analysis
  • Excel Data Presentation

Motivation

I was contracted by a client online, through a connection made in person.

Objectives - Subproject 1

  • Scrape a public database website for all available entries under a certain catagory, and save key numerical identifiers (website itself did not have desired sorting/searching features, and there was a large number of entries in no particular order)
  • Export and format extracted data along with original entry link into excel for the client to sort each entry by the numerical identifiers they desired
  • Present results to client and perform any necesessary revisions

Methods & Process - Subproject 1

  • Python, along with the "requests" library was used to scrape the data, "regex" was used to extract the useful variables from each entry
  • The "pandas" data storage and formatting library was used to export the results into excel format for presentation to the client

Outcomes - Subproject 1

    Client was satisfied with the results after a minor revision to the generated data format, and the project was completed within the time frame and budget.

Objectives - Subproject 2

Note: Some details are omitted for privacy reasons.

  • Scrape a different public database website by a list of account ID's and save additional information based on certain paramters from the account
  • Using this reduced, filtered list of account ID's, more scraping was required to determine the ones that were connected to others in the list
  • Once the reduced final account list was obtained, it was required to determine a concensus between recent activity, determining A: the proportion of accounts all performing the same action, and B the action itself
  • Finally, the results were to be formatted in an excel file and presented to the client

Methods & Process - Subproject 2

  • Python was used for all programming aspects, and the "requests library" we used at first
  • However, for the second phase of determing account connections, significantly more requests were needed. In order to bypass website rate limits, the "cfscrape" library was used
  • In order to further improve data collection speed, the code was compartmentilized and distributed to multiple cores using the "multiprocessing" python module
  • Once all the connection data was gathered, various graph analysis algorithms were used from the "networkx" library to quantify the degree of connection between account IDs
  • Using the new list of account IDs, the they were rescraped for the additional data necessary to determine action consensus
  • Finally, the "pandas" library was used to export the results into an excel spreadsheet, and some manual formatting changes were made before presentation

Outcomes - Subproject 2

    Client was satisfied with the results, and the project was completed within the time frame and budget. Mention of potentioal future work was made, but nothing has come of it yet

Academic

Project Image

  Automatic Cat Trap & Messaging System Prototype

As part of my 1st year Engineering Design course at the University of Toronto, over the course of 6 weeks my team and I designed and built a fully automated cat trap with remote messaging capabilities via 4G.

Skills

  • Mechanical Design & Prototyping
  • Electronic Circuit Design
  • Microcontroller Software Development
  • Problem Solving & Testing
  • Project Management
  • Communication & Collaboration

Associated Final Presentation Poster

Project Image

Motivation

My Engineering Design class required that the student body reach out to various community organizations in Toronto to better understand their current challanges and areas of improvement. Among the organizations we and our peers reached out to, the Annex Cat Rescue stood out to us as a group of animal-lovers. Annex Cat Rescue is a non-profit that aims to capture stray cats and provide them with necessary medical care, and then find them a permenant home.

Through meetings with organization representitives, we learned that that volunteers spent a significant amount of time and resources simply waiting by cat traps, as they were either manually actuated, or had to be checked on a regular basis. This time commitment was a significant limiting factor in the number of cats that could be captured and thus the effectiveness of the organization.

Objectives

  • Design and build a viable prototype capable of significantly reducing the time and effort commitment per trap used by volunteers
  • Ensure that the system is safe to cats even in the event of a power or sensor failure
  • Promptly notify volunteers of a cat being captured by a cross-platform method not requiring excessive setup
  • Perform all research, design, and construction of our prototype within a limited 6-week timeframe, while all team-members also balance 5 other academically demanding courses
  • Stay within the $500 budget for all stages including low and high fidelity prototyping

Methods & Process

The research and high-level design phase of this project covered the first 2 weeks, and details are omitted for brevity.

After high-level concept brainstorming, we had two possible ideas to proceed with. Both involved sensor-based detecion, with different methods of acutating the trap to close. In order to better evaluate these two concepts, I decided to build a low-fidelity prototype of each, seen below.

Left: Gravity door drop concept, Right: Full enclosure drop

Project Image Project Image

We learned from these prototypes that the gravity door drop concept was significantly more reliable in the actuation mechanism, allowed a larger entrance for the cat, and while requiring slightly more complex construction, would ultimately be more effective especially on a larger scale when the trap weighs more.

Proceeding with the gravity door concept, we decided to use lock solenoids to hold the door open, then apply a current to the solenoid to release the door when required. From our testing in the low-fidelity phase, we learned that the PIR motion sensor was prone to false positives, and as such we opted to use an ultrasonic distance sensor instead for the final design, to ensure accurate cat-detection, and thus safety.

Concerning the alert system, we considered email, sms, a loud noise, and a light. We decided that noises and lights would be too distruptive to the surroundings, and potentially uncomfortable for the now-trapped cat. Ultimately SMS through a 4G module was chosen, as it was the most reliable and cross-platform method of alerting volunteers.

In terms of linking a device to the trap, we decided to include a screen and buttons on the trap itself to initialize pairing instructions with a phone (sending a verification code to the traps number), ensuring that there is only ever one phone linked to a trap at a time, and can be easily transfered to another phone as needed.

Finally, for the microcontroller we opted for the Raspberry Pi, as it's a verastile and powerful platform which I am familar with.

Additional design details including power-delivery and physical construction are omitted for brevity, but my design decisions always prioritized reliability of electronics, robustness of mechanichal systems, and always-bolt never-glue construction.

Below is a series of CAD renders I made of the final conceptual design, before building it. Project Image Project Image Project Image Project Image Project Image Project Image

I built the final prototype one subsytem at a time, integrating everything at the end and then performing system-wide testing and debugging. This approach proved effective as I was able to compartmentalize the project into separate tasks and with pre-defined cross-system interfaces (power, communication, mechanichal linkage, etc).

Below is a series of images taken during the construction and testing phase of the project.

Project Image Project Image Project Image Project Image Project Image Project Image Project Image Project Image Project Image Project Image Project Image Project Image



Outcomes

At the end of the 6 weeks, my team's design and prototyping work concluding with the Showcase event, where all groups presented their final designs and results to the course instructors, along with the organization representitives. We performed a live demonstration allowing the representitve to pair their own phone to the trap, and then see it in action. The representitive was very impressed with our design, and mentioned that it was a significant improvement over the current manual traps.

Additionally, the course instructors were impressed with our design, and we recieved a final grade grade of 100% for the project, which comprised a significant (25%) portion of our final grade in the course.

Below are some pictures of the final prototype, my team and I at Showcase, and a video of the final testing of the trap.

Project Image Project Image Project Image