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

Add `!suggestrandommap` command.
Bump full text search query library.
Version 1.0.3-beta.1.
Fix bug with checking conjunctions.
Fix game settings.
Various bug fixes.
Various bug fixes.
Replace request with @root/request.
Add sudden death overtime options through game UI and match presets.
CTF: possible fix for persistent halo
(56 total commits)
Missed a spot for the 5 minute old server thing.
Add game browser API. Reduce time for a server to be considered "old" to 5 minutes.

Fixes #40.
Add copy button to server list.

Fixes #41.
Add game settings panel to game and archive.

Fixes #38.
CTF: possible fix for persistent halo
(56 total commits)
Fix bug with unstarted games not updating.

Fixes #37.
Remove references to posting a screenshot, replacing with getting the tracker game URL or the .ssl file.
Begin work on time in game.
Add damage taken totals to the damage grid.

Fixes #34.
Add search to the game list.
Move .d.ts file into its own directory since it's not meant to be the .d.ts for the entire library. Adjust other files accordingly.
Version 1.0.2.
Fix bugs with Discord.js update.
Released v3.0.3
Version 3.0.3.
Fix various bugs with stats.

Fixes #172.
More bug fixes.
Package updates, fix breaking changes.
Bump discord-markdown from 2.2.0 to 2.3.1

Bumps [discord-markdown]( from 2.2.0 to 2.3.1.
- [Release notes](
- [Changelog](
- [Commits](

Signed-off-by: dependabot[bot]
(2 total commits)
Add `!capexempt` command.

Fixes #168.
Add summary page.

Fixes #32.
Add feature to disable live updates.

Fixes #31.
Add feature to disable live updates.

Fixes #31.
Add preliminary Russian support. Ensure that if a team's score is 0, !addstats doesn't overwrite it with undefined.

Fixes #166.
Fixes #167.
Fix bug with specifying team colors for a challenge.
Add new normalized names.
Better pagination.

Fixes #27.
Don't swap colors for rematches.

Fixes #165.
Remove cap on captains.
Add channel point redemption reward sounds.
Observatory countdown fix.
Support for CoNDOR season 9.
Package upgrades.
Save completed games data as NTEXT.
Fix security bug with missing encodeURI.
Fix security bug with missing encodeURI.
Fix bugs related to formatting time.
Fix bugs related to formatting time.
Fix match mode for team anarchy.
Released v0.1.0
Initial verison, version 0.1.0.
Add settings.json for olmod.
Revert "Add settings.json for olmod."

This reverts commit 560942dfdc26c6fd01f8c868b485598e095667a6.
Add settings.json for olmod.
Fix bug with setting a caster when the caster is null.
Fix bug with uncasting a challenge.
Fix bug with game controller.
Fix various bugs with new features.
Released v3.0.2
Version 3.0.2.
Import match start time if it started prior to the scheduled time.

Fixes #162.
Only return records for season 3 for CTF and damage stats.

Fixes #163.
Add ability to copy game IP addresses.
Bug fix with minification.

Fixes #161. ->
Update some references to

Fixes #25.
Add bit about creating an open match.
Fix various bugs with alternate game modes.
(2 total commits)
Fix bug with Monsterball score when no goals were scored.

Fixes #28.
Minification and combination of CSS and JS files.

Fixes #30.
Fix font size for damage numbers on players page.
Released v3.0.1
Version 3.0.1.
Various bug fixes from testing.
Bump version of node-database, remove express-minify since we're doing it ourselves.
Mobile pass for CSS.

Fixes #143.
Enable caching for minify/combine.

Fixes #135.
Enable minification and combination of JS and CSS files.
Start work on JS/CSS minification.
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. Media Player