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

Update eslintrc.
Update the Discord side of commands to add helpful messages.
Fix bug with streamers/hosts being listed multiple times in stream announcements. Fix bug with hosts not being removed after becoming streamers. Fix error handling. Log unhandled promise rejections.
Finish basic logic on the Discord commands.
More Discord responses to commands.
Starting to work on Discord implementation of interface for team management.
Complete command logic for team management.
Added some more commands, working towards finishing team management commands.
Working towards completing all of the team management commands.
More command logic.
More command logic. Spec'd out the remaining commands that need to be added.
Working on more commands.
Continue work on commands.
Get started on command logic.
First commit.
Refactor database calls.
Released v1.4
Use database library, and better handle calls to the database.
Add Brigitte to randomonium.
Released v1.0.2
Use promises recently added to the mssql library for better exception handling.
Released v1.0.0
Initial commit.
Fix comments.
Released v1.0.1
Readme update.
Let's make this more object-oriented, so we can have multiple instances that connect to different databases.
Released v1.0.0
Initial commit.
Visual Studio doesn't know what it's doing sometimes.
Updates for Visual Studio solution.
Update readme.
Update remaining dependencies on
Version 1.0.6. Upgrade all packages to their latest versions, now using node.js v10.
Some minor fixes.
Version 1.0.0.
Add social icons, fix equalizer.
Update SDLMain.m:

commit c4417aafb1fff5ab5b703a340a24d741649bc389 upstream.

10.9 changed how applications were launched, making the old method of detecting a Finder launch fail.
(7 total commits)
Fix FPS.
(7 total commits)
Ensure FrameTime > 0 before starting the frame.
Fix FPS locking and FPS display implementations.
Add missing glDisableClientState call.
Update SDLMain.m:
10.9 changed how applications were launched, making the old method of detecting a Finder launch fail.
(5 total commits)
Fix FPS.
Fix license link.
Fix duplicate scroll input on windows 10 (from opentk/opentk@9ef456b)
Implement methods for PCM 8-bit and 16-bit output.
Fix bug with linking objects to a segment when the segment thinks they are already linked to that object.
Capitalize globals.
These don't need to be in the for loop.
Be certain with shields if shields are below 0.
- Send network token with UPID_GAME_INFO, so that the client already has it when we join.
- Initialize player stats for new ships at the beginning of a multi game BEFORE the level is loaded, so that the stats are initialized before receiving packets from the master.
- Implement a shields_certain flag on players to indicate to observers whether we are confident that the shield counts are accurate. Inaccurate shield counts can happen from out of order or dropped packets. Uncertain shield counts are denoted with a question mark after the shield counts.
- Fix clients setting Netgame.max_numobservers after receiving Netgame.numobservers
Fix run display and shield display on ships.
Seriously, how did this ever work??? Fixed observatory view. Media Player