Projects

This page contains all my projects

2022

WordDefiner (English Dictionary Mobile App)
Released in August 2022 | App Store + Play Store | GitHub

  • Released my second app, WordDefiner, a lightweight, ad-free online dictionary. The most challenging part of building this app was parsing the complex nested JSON structures consisting of maps and lists from the Free Dictionary API (hat tip to this Medium article). Luckily, the Flutter SDK makes showcasing entities within objects of the deserialized decoded JSON response in the UI quite simple with its ListView.builder widget.

2021

Impact of Earnings Calls on Next-Day Common Stock Opening Price
Completed in December 2021 | Report

  • For the final project of our Big Messy Data course, my partners and I tried to uncover the extent to which a company’s earnings call affects their next day opening stock price. Our data, consisting of nearly 48,000 trading days, came from three datasets on Kaggle scraped from Nasdaq, Yahoo Finance, Zacks, and Alpha Vantage. We approached this as a regression problem, then we framed the question as a binary classification problem to predict the sign of the next day returns; details are shared in the report linked above. We found that overall, there is a high correlation between EPS/EPS surprise and the next day returns, but it is tough to always predict this reliably and quantify the exact impact.

JCP-Stack
Completed in August 2021 | GitHub

  • Designed a web scraper to selectively collect and store research paper results based on journal/conference title and date published from the ACM, Springer, and IEEE Xplore digital libraries. Written in Python using the Selenium WebDriver to automate browsing activity and BeautifulSoup to extract data from HTML.

Programmable Delivery Vehicle
Completed in May 2021 | Report

  • Our society has become increasingly contactless due to the influence of COVID-19. Despite that, people in places such as hospitals or care homes still need food and medication delivered to their rooms. To mitigate risk from such necessary scenarios, we aimed to create a fully programmable remote-controlled (RC) vehicle. This vehicle was designed to follow routes to individual rooms and deliver items to patients. To record these routes, we integrated the use of remote access through a Secure Shell (SSH) to allow user input to the vehicle. The vehicle’s chassis was small enough to fit within doorways and halls to fit narrow passages. An onboard computer mounted on the chassis acted as the main control device to control the car’s functionality. We equipped the vehicle with drive motors to move it forward and backward independently to maintain mobility in cramped space environments. Furthermore, we implemented safety features such as object detection using IR sensors and snap action levers to detect objects that may block the car’s path and send a signal to the onboard computer to stop the vehicle until it is safe to resume.

Remotely Settable Digital Alarm Clock
Completed in May 2021 | Request GitHub Access

  • For the final project of our C#, programming course, my partner and I developed a remotely settable digital alarm clock using the components stated on the left. The digital clock and its setter are separate WPF apps (.NET framework). We used a third-party DLL that provides an object which contains the data that can be sent over a UDP socket from the setter to the clock. We used a .NET event to trigger an alarm on the digital clock after sending an alarm time using the setter.

2020

ShortenMyURL (Mobile App)
Released in August 2020 | App Store + Play Store | GitHub

  • Developed a lightweight URL-shortening mobile app, incorporating the MVVM design pattern and using a third-party API to fetch the shortened URL, with the Flutter SDK

  • Engaged in each step of the app development process – from app icon creation to deployment to the respective app stores

I2C, Servo Motors, Pan-Tilt Units (PTU), Bluetooth, RPi Camera, OpenCV, Face/Object Recognition Completed in March 2020 | Report

  • Our goal in this lab was to build a face recognition system. Luckily, the complex face detection algorithm was one that we could simply borrow from the OpenCV library. Everything else, however, was up to us. That is, we had to implement i2c communication between our Raspberry Pi and 16-channel Adafruit servo motor to control the movement of the pan-tilt unit holding the camera and write code to control the operation of this system via bluetooth connection between our phone and the Pi. Furthermore, an added challenge was to design the face detection system such that when operational, the camera would constantly reposition itself with the help of the pan-tilt unit to ensure that the center of the face it saw would be in the center of the video frame it outputted. The explanations of all this, of course, can be found in the report. Designing this embedded system showed us yet another way to harness the unlimited potential of connecting hardware and software.

Intro to the Raspberry Pi, Communicating Between the Raspberry Pi and Arduino
Completed in February 2020 | Report

  • Learned methods of communication between the RPi and Arduino and the importance and convenience of framing and packets so that the receiver knows critical information such as when data transfer began and ended from the sender. Specifically, the protocol we explored was COBS. Using this, we were able to make up for RPi’s lack of analog IO since the Arduino’s analog IO sent analog data to the Pi in COBS format. Ultimately we were able to send real-time sensor data by connecting an accelerometer to the Arduino and sending that data to the Pi. Furthermore, we were able to make the Pi ask for data and Arduino send that specific data which was asked for. Such communication has various uses in the real-world. For example, a temperature sensor could be connected to the Arduino which could be configured to send data to the RPi. The RPi, further connected to an adjustable heater/air conditioning unit, could modify its temperature based on the data received from the Arduino to keep room temperatures within a certain threshold.

Intro to the Beaglebone, Embedded Linux, Digital Read/Write, Analog Read/Write, using C++
Completed in January 2020 | Report

  • Learned how to configure a small, embedded computing device called the Beaglebone Green Wireless using C++ programs that we built ourselves to make it perform functional tasks such as connecting to the Wi-Fi or running a PWM. The Beaglebone Green Wireless has several applications in the real world. One such example could be a home control system implemented with the help of sensors used to control the temperature of the room or change the dimness of the lights. Another application could be a home security system that would use motion sensors to trigger an alarm or send a notification to the user over Wi-Fi. The Beaglebone’s integrated circuits could be implemented in several other ways to create real world applications.

2019

Grade Checker
Completed in December 2019 | GitHub

  • Designed a web scraper to remotely access the student portal, MySlice, and save a cropped screenshot of students’ final semester grades with Python, the Selenium web-driver, and the PIL library

The Censoring Bot (Reddit bot)
Completed in November 2019 | GitHub

  • Built a Reddit bot that replies with the censored version of the calling comment’s parent comment

  • Utilized the Python Reddit API Wrapper, PRAW, to build my bot

  • Deployed the bot on popular subreddits such as r/mildlyinteresting and made it stream all comments from the top 50 rising submissions

Inventory Management System
Completed in April 2019 | GitHub

  • Designed an object-oriented program implementing functional decomposition supplemented by using vectors in C++ to create an interactive, offline inventory management system

2018

Workout Routine Generator
Completed in December 2018 | GitHub

  • Designed an object-oriented program with Python to generate a user-specified workout routine and display it on a GUI as well as store it inside a .txt file

  • Utilized Python’s tkinter package to generate a GUI displaying the user’s workout routine