Table of Contents
This is a portable retro game console emulator that uses a Raspberry Pi, IPS screen, and custom breadboard controller.
The video demonstrates the device's functionality as I use the custom controller to control Pokemon Emerald, a game originally designed for the Gameboy Advance console.
Above is a close-up image of the breadboard's circuitry as well as the wires connecting to the pins on the Raspberry Pi.
Above is an alternate angle of the final product as the game is running on the IPS screen.
The first step to completing this project was to install the retropie OS onto a micro SD card to then insert into the Raspberry Pi.
The model used here was a 3B.
A power supply UPS HAT was then attached to the Raspberry Pi and screwed into place.
This allows the system to run on 3.7 volt 18650 rechargeable batteries instead of having to be continuously plugged in.
The IPS screen was then connected to the power supply and Raspberry Pi using a micro USB cable and HDMI ribbon cable.
The initial OS setup was then run using a keyboard, including mapping the keyboard keys to controller controls.
The emulator cores were then installed by connecting the Pi to the internet and using Retropie OS's installing system.
To get the game files onto the Raspberry Pi, I had to SSH onto the Pi's file system and transfer the ROM files from my PC.
The controller was then built using a breadboard, tactile switches, and jumper wires.
The wires for ground, power, and each of the switches were then connected to the appropriate GPIO pins on the Raspberry Pi.
The Pi's terminal was then used to map the GPIO pins to their corresponding controller buttons.
After confirming the controller's functionality by testing it with the software, the jumper cables were trimmed and flattened out on the breadboard.
The top picture shows the controller before the wires were trimmed/flattened, and the bottom picture shows the controller afterward.
The portable handheld retro gaming console was then completed and ready for use.
This AI support bot was programmed using Python, utilizing both the Discord.py API as well as Google's Gemeni API.
The bot was created to automate the process of answering questions that any members of SiliconJackets post in our communication channels on the messaging platform Discord.
Note: SiliconJackets is an organization at Georgia Tech that conducts the chip production process in a way similar to semiconductor industries, all the way from ideation to tapeout.
The bot was trained using past message history in our communication channels so that it may answer any question that has been asked and answered by our members in the past as well as have solid background knowledge if any newer questions are to arise.
The full code is open-source and available here:
https://github.com/Yusufff7/SiliconJackets-AI-Support-Discord-Bot/
Above is a demonstration of this bot's functionality on the messaging platform.
Overview
I was commissioned to create UI/UX designs (in Figma) for a religious calendar app that would allow users to track their religious fasting progress as well as view holidays and their own events on a single calendar.
Home Screen
Schedule / Add Event Screens
Track Screen / Friends Screen
Overview
Aurality is a streaming service that I co-founded alongside 5 others for independent artists to upload and share music.
Unlike streaming services like Apple Music and Spotify, which pay small artists a very small wage due to the universal subscription model, Aurality operates on a subscription model in which users pay to subscribe to individual artists.
This subscription form is more analogous to a platform like Patreon or Twitch, where people who enjoy someone's work and would like to support them can access all of their content by paying them a small donation.
The website was developed in React and the cross-platform mobile app was developed in React Native (both used Typescript and Javascript). The backend is written in Node.js and uses a PostreSQL & Prisma database.
The beta was launched in August 2024 for a total of two weeks, in which we amassed over 300+ registered users, 1500+ uploaded tracks, and 7000+ visits.
The website and mobile app are currently in development for an official release with new features such as paid subscriptions to individual artists and a creator studio planned.
The majority of my contributions were with respect to the development of the creator studio, mobile app player, and UI/UX design.
This is the page in which users can create a compilation of songs and edit things like the tracks, titles, and album covers.
This is the create page after "Add Track" is selected, as the user is prompted with a modal that allows them to upload a file and edit the track's details.
Here is a view of what uploaded albums that are ready for users to play look like on site.
Creator Studio
Above is the Content page of the creator studio, which is finished and ready to be launched alongside the platform's official release.
All of a user's uploaded tracks along with their corresponding visibility, upload date, stream count, and features are listed.
When hovering over any individual track, the row becomes highlighted and three buttons (edit, share, and delete) become visible so that the user may interact with that track.
These are Figma designs that I created for the Analytics page, which is currently being developed to be implemented into the creator studio.
This page will allow artists to view the analytics of their content so that they can better understand how to cater to their audiences and grow their platform.
This page is planned to release alongside the Content page during the official launch.
Mobile App
This shows the mobile app running in an iPhone emulator on MacOS.
The left shows the album view in which users can select songs that they would like to play.
The right shows the song view modal, which appears after a user has clicked the floating song component above the tab navigator.
Overview
Along with a team of 8 other developers, I used React Native to develop a retail and streaming mobile application that was acquired by the Yeezy clothing brand.
When the mobile application was a startup before the acquisition, I was in charge of programming the entirety of the app's settings.
The images and videos below show all of the work I did prior to the acquisition, which I have been permitted to share.
All content shown has been screenshotted or screen-recorded on a working build of the app running on an iPhone through Expo Go.
Main Settings
This is the settings screen, which can be accessed directly from the app's home screen.
The video to the left demonstrates how the page was programmed to handle timezone and country selection.
Whenever a country is selected through the dropdown, the selection of timezones available in the timezone dropdown changes to contain only the timezones present in that country.
Profile Settings
This is the profile settings page, which allows users to change their profile picture, display name, username, and email.
The video demonstrates how each of the boxes were programmed to handle text input.
For all three input boxes, if the field is cleared out entirely, then it resets back to its previous value
For the email input box, any time the user inputs a space, it is automatically deleted.
The email box also only accepts inputs in the form of [name]@[domain].[tld].
If the input deviates from that form, it automatically restores the value to its previous valid value.
Notifications Settings
This is the notifications screen, in which users can customize their notification preferences by clicking on the corresponding switches.
SND refers to the music aspect of the app.
SPLY refers to "supply," which is the retail aspect of the app.
NEWS refers to the mini news article section in the app.
HQ refers to the section of the app dedicated to updates and any other related information.
Security Settings
This is the security screen, where users can change their passwords, reset their forgotten passwords, and deactivate their accounts.
The video on the left demonstrates how the program responds to different combinations of inputs passed into the boxes.
If the password is less than 8 characters long, the field is cleared and the user is prompted to type in a new password.
If the current password is correct and the two new password entries match, the fields are cleared and the user is told that the password was successfully changed.
If the current password is incorrect, even if both new password entries match, the user is told that their password is incorrect and they must try again.
If the current password is correct and the two new entries do not match, the user is told that the passwords do not match.
If multiple of these errors occur at once, all of them are displayed for the user to see.
The 2022 - 2023 FTC Robotics season was the season in which I had the opportunity to do the most work on the robot, as I was the team's lead programmer.
The prior season I was a regular programmer whose main objective was to learn, and the following season I was a mentor whose main objective was to teach the younger team members.
My role as lead programmer was to design the robot and use Java to program it.
The video below demonstrates our robot's functionality in two parts:
The first part is the autonomous portion, in which the robot relies purely on our programming to score 6 cones
It uses color sensors to detect the cones and odometry wheels to estimate its position relative to the starting point.
The second part is the driver-controlled portion, in which we use controllers to control the robot.