Personal Projects

ruby-irc is an IRC client gem. It facilitates development of IRC clients, whether they be full user interfaces or simple console-based bots.

Highlights:

  • Multithreaded event handling
  • Flood protection
  • CTCP support

overwatch is a web app for monitoring the various network services that I have run over the years. It was created out of a desire to aggregate various game servers, all of which reported their status via different protocols, into a single view.

Highlights:

  • Simple, single-page web front-end.
  • Extensible design: to add a new service, write a class and add it to a configuration file.
  • Background daemon that keeps the web client up to date, reducing the load on client connections.

twitch-gpm is a Node.js application that interfaces with Google Play Music Desktop Player and Twitch to allow viewers of a video stream to remotely control a music player on the host's machine.

Highlights:

  • Viewers can queue songs from Google's music library.
  • Reports current state of the music player, which can be reported back to viewers (using my streaming widgets, for example).
  • Hosts a WebSocket interface to allow other applications to hook into its data model.

XOutput is a utility that allows users to use older DirectInput devices as if they were modern XInput devices.

XOutput2 aims to extend the functionality of the original utility by supporting new types of devices, improving the UI, and allowing multiple hardware devices to feed a single software device. This project has only just begun, so it is not yet ready for testing.

Highlights:

  • Integrates head tracking equipment to enable head tracking in programs that otherwise do not support it.
  • Allows users to combine multiple devices (such as a steering wheel and pedals) into a single virtual device to expose to applications.
  • Offers an improved UI that makes it easier for users to configure their virtual device.

A collection of web pages and styles used to produce broadcast overlays within OBS.

Highlights:

Contributions

gmusic-ui.js is a component of Google Play Music Desktop Player. At the time of my contribution, it did not offer full access to all of the features of Google Play Music, so I implemented a few useful ones.

Contributions:

  • Added API for accessing previously inaccessible features of Google Play Music.
  • Implemented "Play next" and "Add to queue" features using said API.

discordrb is a Ruby module for interfacing with the Discord comunication platform. I contributed some of its core event handlers during its infancy.

Contributions:

  • Created the foundation for the permissions system.
  • Automated handling of system events to make the API simpler for end users.