Character Sheet |
Mobile Application |
June 2014 - May 2016
|
This app was something I built for fun. I could not find any
satisfactory apps at the time for 3.5 edition,
so I built my own one summer. This was my first experience in android app development, so it was a great
learning experience.
After I finished it I just put it up on the app store in case anyone else was interested.
The app currently has over 50,000
installs! If you're interested
you can check it out here
The app has gone through a lot of updates while on the google play store. My original version
was actually corrupted when I got
a new laptop sometime in 2015. I am not incredibly happy with the version that I have on the store now
either. I have learned a lot
since it was first made, and the update I made in 2015 was pretty minor (just fixing a few fields so it
worked better for some people). I
have since taken this concept and expanded on it in a new app, seen below.
|
Salty Seagull
|
Video Game |
September 2017 - December 2017
|
This was a multiplayer video game I developed on a team with one
other developer and two 3D artists. In this game,
players assumed the role of one of four playble seagulls (each with unique textures). Each seagull had a
nest that they
were trying to bring different beach treasure to. Treasure can range from diamonds to old hot
dogs. Each of which was worth varying points.
After a set amount of time, the game ends and the player with the most points wins.
We showed off this game at Undergrad Research and Creative Achivement Day (URCAD) at UMBC.
This event is
meant as a means for undergrads to show off whatever they are researching or otherwise developing to the
rest of the campus.
We saw many players testing our game throughout the day, and many said they really enjoyed the
competative nature of our game.
|
Pokemon AI
|
Web Scraper/AI |
September 2018 - October 2018
|
I had originally intended this as an AI project, but it turned into
more of a practice in web crawling. A popular
website for battling pokemon competatively is Pokemon
Showdown. Here
players can build teams of pokemon with any legal moveset and stat line up. Because of this, building
your team is quick
and the battles can be entirely skill focused. The bot that I had created for this project was able to
log into the site
using a dummy account I set up. It would then upload a predesigned team (using the sites text entry
feature). Once a
team had been loaded and was verified as playable, the bot would immediately find someone to battle.
From here, it
would be able to recognize the pokemon it currently had in play, the opponents name, the pokemon team
the opponent had,
and the pokemon the opponent currently had in play. The option of the four moves, swapping a pokemon,
and mega evolving
(if available as an option) was random, though it would incentivize attacking over swapping a pokemon
out.
When the battle began, the bot would look each of the opponents pokemon up on
serebii which is a the go to site for anything related to pokemon knowlege. From here, the bot
would find out
that pokemon's name, base stats, and typing. I had planned to utilize these for a Q_learning algorithm,
before I realized that
I may wind up with too many variables for that type of learnign algorithm. I may come back to this
project one day.
|
Raspberry Pi Game
Console
|
Hardware |
March 2019 - May 2019
|
Unlike my other projects, this one involves a lot of hardware work. I
bought a raspberry pi and installed the RetroPie OS to it. This operating system houses several video
game emulators.
I have gained experience with soddering buttons to a circuit board and wires connecting those buttons to
GPIO pins on the raspberry pi. The pi is able to parse input from the buttons and recognize them as one
of four directional inputs,
one of four button inputs, one of two shoulder inputs, start, select, or a special hot key button. I
have overlaoded the hot key button to interact with other buttons to perform special functions. For
instance, hotkey+up increases the
volume, and hotkey+down decreases it. I am still in the progress of designing a case for this device,
but it is currently functional with a backlit 3.5" screen!
|
Discord Bot
|
Web Service |
March 2020 - Current
|
I host a discord server for all of my friends. It is mostly used for
games, but also just general communication. For this server, I am actively working on a bot that adds
several quality of life improvements to the server. So far it can roll a dice, start a vote for a given
topic, randomly assemble possible civilization options for the gaive Sid Miers Civilization 5 and 6,
assign server roles to users based on an emote they add to a message, randomly grab posts from reddit
given a subreddit option, and grab a message from my email that is tied to daily programming challenges
to post said email. This bot is written in NodeJS, and utilizes web crawling, email parsing, and
file writing. I am constantly working on it, as more ideas and requests come for functionalities.
|
Focus App
|
Mobile Application |
May 2020 - May 2020
|
Created this app to help me focus on personal projects. It spams me
with a notification ever N seconds that I am not on the app itself. The app just has a simple stopwatch
that counts up. This incentivizes me to avoid facebook, reddit, twitter, etc. while trying to work.
This app can be found
here |
Character Sheet App (5e)
|
Mobile Application |
May 2021 - August 2021
|
This is an updated charactersheet which is compatable with Dungeons and Dragons fifth edition. This
sheet is modeled after my original 3.5 design, but has been written with OOP standards in mind. Each
character is a serializable object, and is saved to the device in a much cleaner way. I addressed
several issues that were pointed out in play store comments on my old app. I have allowed users to share
their characters either through email, or any SEND_TO Intent enabled app. I plan to continue iterating
on this app by making it compatable with 3.5 (to phase out my old application), allowing an automated
flow for users who do not want the customizability of the current app, and generally updating the look
and feel down the line.
This app can be found here
|
Pokemon WatchFace and Tile |
WearOS Application |
May 2022 - November 2022
|
With the release of Google's new Pixel watch, I wanted to get experience with WearOS. To this end, I
developed a watchface in May of 2022 that would display a random pokemon egg each day. As the user
walks, this egg would gain experience and eventually hatch. Every 100 steps is counted as a level, with
most pokemon needing to reach level 50 in order to reach their final forms. This helped to incentives me
to be more active by gamifying the activity. After a while, though, I found that this watchface was
fairly battery intensive. Because of this, I moved the functionality over to a Tile instead. Tiles
proved to be a very different development skill, so I am glad I made this decision and was able to
experience building the UI from all fo the builder functions they provide rather than a layout or
compose function. (Note that I did not design or create most of the art assets that are used. credits
for those can be found on my gitHub, linked below)
The pokemon watch face can be found here |
Digimon TCG App |
Mobile Application |
April 2023 - June 2024
|
I started playing the Digimon trading card game last year. As I played, I wound up with quite a lot of
cards. After a short time, I really wanted a way to categorize the cards I owned, as well as deck build
in an easy way. There wasn't an app on the play store to support this need at the time, so I built my
own. This app is connected to a database that updates with all of the latest cards periodically. Users
can scan any cards into the app using their phone's camera, to keep a growing catalog of all of the
cards in their collection. Users can also use the app to build virtual decks and track which cards they
may still need to make that deck in real life.
This app was built utilizing MVI, Jetpack Compose, and Kotlin. I have integrated the app into a
Raspberry pi server that uses OpenCV and Artificial Intelligence to recognize a user's card and add them
to a database. The next step I want for this will be some automated machine that feeds the cards to the
scanner so the user will not need to capture each individual card.
|
Runescape Stat Widget |
Mobile Application |
July 2024 - August 2024
|
In July I bought a foldable Android phone. The front screen uses a different style of coding than the
main phone, so I decided to make this project to learn how it works. I play an online game called
Runescape and this is a simple application that shows me my character's stats. The project involved making
a network request to their API to get my character's information, storing that into a cache for peformance,
and every 4 hours making an update. The front-page widget utilizes Broadcast Listeners and Receivers to update
the UI every 30 minutes.
|