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

Pluralization fix for `!stats`.
Only count the game type requested when determining if a player played enough games to be active.

Fixes #159.
Fix various bugs with cast page.
Fix bug with matches page not showing dates when there's just one page of matches.

Fixes #152.
Add overtime indicator to the cast page.
Fix bug with cast page for postseason matches showing players twice.

Fixes #151.
Always use all players for postseason stats.
Don't allow `!suggesttype` or `!confirmtype` for locked games.

Fixes #156.
For `!creatematch` only look at homes for the game type specified.

Fixes #155.
Fix bug with `!creatematch` being passed without a game type parameter.
Finish .d.ts conversion.

Fixes #142.
Continued work on improving .d.ts files.
More .d.ts improvements.
Continuing .d.ts improvements.
Continuing work on moving types to .d.ts files.
Start on doing .d.ts files for types.
(2 total commits)
Start on doing .d.ts files for types.
Fix bug with `!addstats` changing the score to a tie.
Fix bug with OT reporting.
Comment formatting changes.
Update team channel topic to split out maps and show map name.
Fix bug with games where players who weren't part of the game caused damage.
Begin changes for better usage of .d.ts files.
(2 total commits)
Exclude team damage from players page.
Fix bugs with players and records pages.
Get correct season for records and players pages.

Fixes #148.
Standardize CTF stats both internally and in presentation.

Fixes #147.
Various fixes with the players page.

Fixes #145 and #146.
Add space before game type in channel topic.

Fixes #144.
Fix bug with one team's stats showing under both teams when a match is closed.
Released v3.0.0
Version 3.0.0.
CTF support for season 3.
(43 total commits)
Bug fixes for season 3.
Update cast page with new stats, and support for differing game types.

Fixes #141.
Use `repeat(x, auto)` in CSS in place of `auto auto auto...`.

Fixes #140.
Fix damage per death on team page.

Fixes #139.
Fix damage per death stat on player spage.
Add damage preferences to `!stats`.

Fixes #90.
`!stats` include CTF stats.
Add damage and damage per death to TA stats. Fixed bug with `!stats` for player not on the server.
Include season number with `!stats`.
Add CTF stats to team page's player list.
Split season record stats into TA and CTF.
Add damage stats to player list in team page.
Separate home maps into TA and CTF on team page.
Update Top Performer for team game log.

Fixes #134.
Matches -> Game Log.
Break out team game log to its own page.
Complete CTF stats for player page.

Fixes #89.
Use CTF stats for performance stats.
CTF stats in the career stats by season and team.
Fix various bugs with player page.
Fix an `!addstats` bug with reverse name lookup that was happening when matches were split between multiple games.
Add damage breakdown by player.
Add damage to player performance stats.
Fix bugs with mobile views of player page.
Add a way to disable caching.
Add damage stats to career stats.
Various bug fixes.
Additional stats for TA games, new stats for CTF games.

Fixes #133.
Split player game log to its own page.
Add CTF records.

Fixes #87.
Add team anarchy records for damage and damage per game for team & players.
Split records into TA and CTF, and into Team and Player. CTF records are currently temporary.
Fix bugs with selectors on players page.
Fix bug with caching the players page.
Fix bug with removing maps.
Add damage and CTF stats to the player spage.

Fixes #86.
Separate Team Anarchy stats from CTF stats.
Use CTF stats in matches and match pages.
Fixes #132.
Add game type records split for standings page.
Fixes #130.
Limit Season Top Players to TA games.
Fixes #129
Add Team Anarchy, CTF, and Monsterball icons to home, matches, and match pages. Add game type to player and team game logs.
Fixes #131.
Fix localization with all languages except Russian. This will need to be done when we know how the server will handle it.
Update web.config to allow Firefox websockets to work.
(2 total commits)
Fix 410 for index API post.
(2 total commits)
Remove Active API. It sends too much data and is not in use.
Released v2.1.1
Fix bug with too much damage in a game.
(3 total commits)
Version 2.1.1.
Fix bug with match page.
Fix bugs with players page.
Bug fix with swapping colors.
Update topic with swap colors.
Add `!swapcolors` command.

Fixes #128.
Fix various bugs with season selector.

Fixes #127.
Fix bug with unencoded player name in `!stats`.

Fixes #126
Fix bug with matches when a score is 0.

Fixes #125.
Bump node-database version.
Released v1.2.1
Version 1.2.1.

Attempt to close existing SQL connection before opening a new one, even if it may not seem necessary.
Fix bug with broadcast talking to closing websockets.
Default to active only players on players page, option for all players.

Fixes #121.
Limit players on top KDA on front page to those that have played a number of games in a season equal or more to 10% of the number of games their current team has played.
Fix operator on rating change on teams page.

Fixes #122.
Fix various bugs with match page.

Fixes #123. Media Player