Software
My First Programs
When I first started programming, I created a myriad of different software. Here are a few I'm still proud of looking back. I used C# and the .NET library for the following programs, unless otherwise specified.
Shapes - A simple raster graphics editor that allows the user to digitally paint using a wide variety of tools including a pencil, paintbrush, airbrush, shape template and more!
Fretboard Helper - A rudimentary desktop application which assists the user in learning the different notes all across the guitar fretboard.
Random ID Generator - An elementary desktop application which allows the user to generate a randomized identity for a person or character.
Snake on Android - Using Unity, I recreated the classic computer game, Snake to run on the Android operating system.
Pong - I recreated the classic arcade game, Pong, to run on Windows desktops.
My First Games
When I first started programming, my goal was to develop video games. That goal has since changed. However, I am still proud of some of those early video game projects.
Swarm Slayer - Swarm Slayer is a top down shooter in which the player is attempting to fend off waves of insectoid enemies from eating all the food in their picnic. The player is aided by a series of different power-ups such as rapid fire and slow time.
Abenteur - Abenteur is a text based adventure game, with some RPG elements. The game consists of the player making their way from their village all the way to the heart of the kingdom, while traversing the wilderness between the 10 different settlements at which the player stops at on their journey. It includes combat, looting, inventory, character creation and travel mechanics and some rudimentary dialogue mechanics. Similar to Zork, it utilizes a highly contextual text interface, with a bit more structure. I also created a small, original score and icon for the game.
Monster Game Prototype - I had an idea for a Lovecraftian style horror game in which you must navigate an extra-dimensional prison of sorts without getting killed, but also without even looking at the monster, as looking at the monster will drain the sanity from you. This was more of a prototype, and was never fleshed out into a full game, but I did get some of the core systems created, such as the sanity drain, regaining sanity and the monster persisting after you. I used Unity as the engine, used Maya for modeling and used Photoshop to create all the textures.
Park Perfect
Park Perfect was my High School Senior Project which we presented for the UC IT Expo High School Competition and Tech Olympics.
It started with our school's reception and administration asking us to transform their book and paper style of keeping parking records into a digital format that they can use to quickly store and access parking data.
We quickly got to work with C#, Winforms and Microsoft Access to create the software for them. I was the User Interface Lead.
The software allows the user to create parking zones within their parking lot, in order to break up the map into more manageable sections, and then create the different rows of parking spaces within those areas. The user can click on the various spots represented in the GUI in order to find student information, or they can use the search or reports features to find students based on specified information.
We won first place at the UC IT Expo High School with this project.
My First Sites (Diving Into Web Development)
When I first started making websites, I created a couple of rudimentary websites.
A History of Metal - A website briefly outlining different metal subgenres and how they relate to each other.
Shrooms Site - An educational site discussing the potential pharmaceutical uses of Psilocybin mushrooms. Hope to revamp this one day, information and design.
Instrumentation Generation
An online tool for music composers. Instrumentation Generation will generate you a list, and then you, the composer, are challenged to create some new piece of music, just using the given random instruments.
You can also check out the Instrument Library and learn about new instruments through their descriptions, youtube links and wikipedia references.
Enterprise Applications
During my year when I learned enterprise-level and mobile application development, I was apart of a team and worked on a couple of different enterprise applications.
Fleet Manager - A web-based application created using Java Spring. It's an application that makes managing large motor pools and vehicle fleets a far easier and more intuitive experience.
TV Tracker Mobile - A Jetpack Compose-based android application, a mobile port of a web application. It's an application that functions similarly to Letterboxd, but for TV Shows as well as movies.
Alabama Que
In late 2020, I began doing website development for Alabama Que, a local BBQ joint. I did less programming here (but not none) and more general IT and online web development tools. I used Wordpress, Shopify and Square to manage their website alongside various digital point-of-sale tools. I managed 4 or 5 websites for this business.
My Portfolio Site
For my Summer Project in 2022, I created this website! I have been wanting to make a portfolio site for years and this was the perfect opportunity. I also wanted to create a blog site at some point, so I killed two birds with one stone and put a blog on my personal site!
My stack for this site consists of ReactJS, NextJS, Typescript, TinaCMS, Firebase and Tailwind CSS, along with a few miscellaneous utility libraries such as Next SEO, Next Sitemap, Nodemailer and Axios. Using TailwindCSS has been a vast improvement over using React-Bootstrap as I have in the past. CSS actually feels intuitive to do now, it feels a lot like Jetpack Compose.
Looking towards the future, for my next project, whatever it might be, i would like to use Headless UI for some of the structural elements of my Front End design. They come pre-animated, accessible and headless, so you have a blank slate to style yourself! They are also made by the same team who made Tailwind CSS, so it integrates nicely with that.
Chord Explorer
Chord Explorer was my capstone project for my Bachelor's degree in Information Technology. It is a web-based application that allows users to learn new chords, find songs that use a specific chord, and use AI to detect chords from audio. This web application uses Next JS, React, Tailwind, HeadlessUI and several music-related utility libraries such as Tone JS, Tonal JS and React-Chords
For my capstone, I wanted to find a way to combine my passion for music and my passion for programming. I had been teaching guitar for a few years at this point and had noticed many students giving up because of the monotony of learning chords. I wanted to create a tool that would help students learn chords in a fun and engaging way, and so Chord Explorer was born. But, I didn't want it to be an application just for beginners, so I also expanded the chord library and the variety of songs available to be searched.
Chord Explorer makes use of 'Akkorder', which is a TypeScript port of the C++ implementation of Adam Stark's chord recognition algorithm described here and elaborated on here. This library allowed us to create a tool that allows users to upload an audio file, to then have chords extracted from. Additionally, with some tweaking, I was able to adapt the library to take live user audio from the web audio API and detect chords on the fly. The model isn't incredibly accurate, maybe around 80% for the most basic chords, and it doesn't get better from there, but, for a free machine learning model that runs in the user's browser, it does the job.