Music. Coding. Gaming. Life.


Programming has been a hobby of mine since I was a child. I am entirely self-taught, and have managed to carve out a career in the field that spans over fifteen years.

Initially, I worked with BASIC on the TI 99/4A, Atari 130XE, and the Commodore 64 and 128. This transitioned easily to Mac OS 7's QBasic. Then I learned Microsoft Visual Basic 4 through 6 and starting making small programs and games. My first two programming jobs involved me learning Microsoft Access, with all kinds of back-end VBScript.

In 1998, I got heavily interested in web technology, and took a dive into HTML and JavaScript. Soon, I'd pick up Visual Basic.NET, C#, and ASP.NET. I was then able to transition my HTML knowledge to the modern HTML5 browser. My JavaScript experience also readied me for learning Node.js. Along the way I've picked up a bunch of PHP and C/C++ as well somehow.

In many ways, I consider the core concept of coding to come quite naturally to me. You simply break a task down into smaller and smaller tasks. What really fascinates me about coding, however, is how you can put all these simple tasks together to do something phenomenal.

I am involved in many projects outside of my professional career that involve programming in some way. This page is dedicated to showcasing those projects.

Current Projects

Commits and Releases

Through October 2020.
Use igdb-api-node instead of home grown IGDB library.
(4 total commits)
Package updates.
Package updates.
(4 total commits)
Package updates, typing definition additions and fixes.
Package updates.
No longer using Whitesource.
(2 total commits)
Fix Safari icon, remove Common reference in index.
Update visibility type

According to, `visibility` is a number that can be either 0 or 1. In discord-oauth2, this is currently a `string`, which does not match.

This commit updates the typings for discord-oauth2 to match Discord's documentation.
Require -modded argument to load mods, send modded status and mods loaded in capabilities. Server still needs to read them and handle them.
Fix bug with season id field.
Released v2.0.2
Remove manual token refresh.
Await on cache adds.
Remove unnecessary packages.
Add database migration capability.
Remove unused library.

Fixes #14.
Avoid 301s.
Don't need to expose redis ports.
You don't believe me, do you?
I can spell, I swear.
Through September 2020.
Log into Twitch immediately upon starting the application.
Don't need to expose node ports.
IGDB support.
Fix a deprecation.
Add volume for Mongo.
Version 2.1.0. Significant improvement as to how Twitch oauth happens. Now, both the channel and the bot Twitch client access and refresh tokens are stored via the config.json file. These tokens must be present in order for the bot to work. I'll need to come up with a way to reseed them if they expire or get lost, but for now this should be fine.
Package upgrades.
Fix bug with `!creatematch`.
Default for matches per page.
Add intents to Discord login.
More efficient handling of data on the home view.
Fix bug with sudden change to Soundcloud's API. Thanks, Soundcloud.
Yes, yes it is being called.
Update spritefont.js

Comment/syntax cleanup.
Fix various bugs with > 4 players per team.
Released v4.0.6
Version 4.0.6.
Sort map categories for `!homes`.
Fix bug with channel topics.
Fix bug with team sizes > 4.
Issue #49 - Restricted Modifiers
(3 total commits)
Fix issue where rear view camera sometimes wouldn't be properly initialized and would require toggling to not bomb DrawHUD display
(3 total commits)
Separate olmod link from tracker.
The Yinut patch.
`!matchtime` for unconfirmed matches only, improve text on `!confirm`.
Fix resolution selector.

Fixes #52.
Fix merge error.
Fix bug with older clients being unable to join in progress due to invalid messages being sent.
(7 total commits)
Nice word.
(4 total commits)
Issue #47 - PIP Rear View option
(2 total commits)
The WhollyCow patch.
Released v0.3.4
Update readme.
Version 0.3.4, fix thunderbolt sound.
Minor formatting change.
Released v0.3.3
Update Linux script to use stderr.
Version 0.3.3.
Released v4.0.5
Update README.
Version 4.0.5.
Fix bug that was combining regular and postseason damage on an player's damage breakdown.
Released v1.2.2
Version 1.2.2.
Fix minor bug with adding stats from the wrong game.
Fix bug with not having enough maps when a challenge is created.
Fix bugs related to topic generation.

Fixes #188.
Automatically set Twitch name and whether they're streaming a challenge for pilots.

Fixes #187.
Add `!mynext` command.
Fix bug with rematches not recognizing the previous team size played.
Issue #21 - Improve JIP handling of disconnected pilots
(4 total commits)
Possible gsync fix, needs feedback.
Fix bug with older clients being unable to join in progress due to invalid messages being sent.
Fix to sniper packet implementation.

Fixes #34.
Re-upgrade to discord.js 12.3.1, and resolved setParent issues as discussed in discordjs/discord.js#4787.
Downgrade Discord.js to 12.2.0 until discordjs/discord.js#4787 is resolved.
Released v4.0.4
Version 4.0.4.
Version 2.0.2.
Update dev packages.
Fix various bugs found in testing.
Add testing setting so that test bot doesn't listen to other servers. Package.json updates.
Update website to include new home level categories.
Add neutral map commands. Update about page.
Fix Graphics Options VSync left arrow.

Fixes #39.
From @tobiasksu, fix left arrow not working in console.

Fixes #41.
(11 total commits)
Fix flak/cyclone/thunderbolt charge/fire rate holding over after death.

Fixes #38.
Released v2.0.1
Version 2.0.1.
Version 2.0.1.
Add IP Address to the properties. Media Player