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

Move cast view to its own class, fix database issues.
Refactor controllers to call models instead of directly accessing DB.
Refactor the Otl class into other classes.
Refactor file structure and notifications.
Refactor for team database calls.
Refactor general database calls into Map, Event, & Team database calls.
Turnstile - Update - 4/21/2019
Refactor for player database calls.
Refactor notifications database calls into challenge database calls.
Refactor for new team database calls.
Refactor for match database calls.
KrossFire - CM, MP - Krusty - 4/13/2019
(3 total commits)
Begin database refactor, breaking out challenges into its own class.
Add favicon support.

Fixes #56.
`!addmap` and `!removemap` admin commands.

Fixes #55
`!lockteam` and `!unlockteam` admin commands.

Fixes #54.
Minor refactor to support dynamic loading of matches.

Fixes #53.
Make events scheduleable, and wait until an hour prior to allow joins.

Fixes #10 and #11.
Changes in preparation of Season 15.
(2 total commits)
Fix bugs with missing players.
Update to HTTPS where necessary.

Fixes #51.
Show KDA for `!addstat`.

Fixes #52.
Add links page, fix a variety of bugs.

Fixes #50.
Add images for Burning Indika, Keg Party, and Sub Rosa.
OuterKrust - CM, MP - Krusty - 4/12/2019
Tryhard - CM, MP, SP - Yinut - 4/9/2019
KubeRun - CM, MP - Krusty - 4/7/2019
Undertow - Update, adds MP - 4/6/2019
Add link to Challonge tournaments.
Show full error message for long errors.
Implement displaying of overtime games on the website.

Fixes #48.
Implement recording of overtime on the bot.

Fixes #47.
Fix bug with team size records not showing correctly on the website.

Fixes #46.
Scrub information in parenthesis after name on website.

Fixes #45.
Implement morgan for web logging.

Fixes #44.
Enforce a minimum of one stock map per team.

Fixes #43.
Burning Indika - Update - 4/3/2019
Hubrus - Update, adds MP - 4/1/2019
Conviction - MP - kevin - 3/31/2019
Rabootage - SP - LusTuccc - 3/29/2019
(2 total commits)
Mesa update - 3/28/2019
Newbie - CM, MP, SP - Yinut - 3/28/2019
Case insensitive banned home level checks.
Enforced banned home list.

Fixes #8.
Polytropy update - 3/26/2019
Embedded - MP - Miasmic - 3/24/2019
Iapetus update - 3/21/2019
Add to the banned map list when a map is played.
Add !replacehome, !forcereplacehome, and !forcehome.

Fixes #7.
Cage - CM, MP - kevin - 3/19/2019
Fix pairings when top player has no valid matches with odd # of players.
Disable `!standings` for the Finals Tournament.

Fixes #5.
Add finals tournament roles for accepted, declined, and invited.

Fixes #4.
Fix bugs.
Mesa update - 3/18/2019
Don't require "signOff" to be true for online pings.
Added server browser instructions to README
(7 total commits)
Disable unused field for now
(6 total commits)
Fix bug with timezones when a date without a year is entered.

Fixes #42.
Refactor website to use router.
Released v1.0.2
Version 1.0.2.
Fix API so that it didn't change from before.
Multiple bug fixes.
Bug fix.
Different way to filter, based on how olproxy is going to send the pings.
README typo fix.
Released v1.0.2
Version 1.0.2.
Add IP address to status update.
Fix bug when missing server information.

Fixes #8.
Add link to the map.

Fixes #7.
Add a page for server setup.

Fixes #5 and #6.
Add various Overload links.

Fixes #4.
Polytropy update - 3/16/2019
Iapetus - CM - Trappist - 3/15/2019
Crab Rave update - 3/15/2019
Hover update - 3/11/2019
Freezer - MP - Miasmic - 3/11/2019
Move old servers to the bottom of the list and grey them out.

Fixes #3.
Add an "online" querystring to the API to toggle a server's visibility.

Fixes #2.
Use database for backend server list persistence.

Fixes #1.
Remove settings file from repo.
Metro - CM, MP - terminal - 3/11/2019
Add damage breakdown.
Released v1.0.7
Version 1.0.7.
Add best game stats for maps and opponents to player stats.

Fixes #41.
Reverse team colors to match the order they are shown in the game.
Hover - MP - Miasmic - 3/10/2019
Released v1.0.1
Version 1.0.1.
Condemned - MP - Astro - 3/8/2019
Meltdown update - 3/7/2019
Polytropy update - 3/7/2019
Operation Vega - SP - Yinut - 3/7/2019
Add announcements channel.

Fixes #40.
Prevent scheduling of events & matches too far into the future or past.

Fixes #39.
Career stats by seasons has lifetime stats, added career stats by team.

Fixes #38.
Add season and postseason filtering to team stats.

Fixes #37. Media Player