Projects
D20Kit 2020-
Description
D20Kit is an application that aims to replicate the magic and immersion of in-person tabletop role play gaming. This project has been in development for a few years and has its roots in Synk, an audio replication tool. Synk, Kasqe, AuthNau, and Concord are all core components that create a solid application platform for other projects beyond D20Kit.
Highlights
- Perpetual labor of love, my magnum opus, when it's done :)
- Attempting to reach the limit of multi-platform and multi-discipline technologies
- The incubator for:
- D20Core UI: Customizable and deeply reactive UI component library
- Kasqe: Virtualized Storage and Pipeline Processing
- AuthNau: Authentication Platform
- Concord: Sychronization & RPC
- Anvil: Virtualized Tabletop/World Simulator
- Synk: Realtime Audio Replication
Kasqe 2023-
Description
Kasqe is the culmination of nearly 10 years of engineering and operational experience around a diverse set of ETL, MapReduce, Event Sourcing, Streams, and other "Pipeline" workflows. Kasqe takes a simple typed interface and constructs the serial or parallelizable pipeline, recursively. Inspiration: I needed an exceptionally flexible way to define asset pipelines for D20Kit, Synk, and Anvil. Kasqe offers a way to modularize workflow components like image/video/3d model metadata extraction.
Highlights
- Built using NestJS & Angular
- Permissions on user-defined pipelines powered by AuthNau
- Worker coordination and notifications powered by Concord
AuthNau 2022-
Description
AuthNau is Auth0, but without having to rely on Auth0 or Okta. Auth0 serves a great role for projects which want an auth that "just works", until it doesn't. AuthNau is my solution for when you want your authentication to work NAU. AuthNau is built very similarly to Auth0's product offering and is tenant based.
Highlights
- Built using NestJS & Angular
- Magiclink, Passwordless OTP, among other auth entrypoints
- Automated comms relating to account recovery, password reset, account takeover, etc
- Automated flagging of bot/susicious actors, network tracking, vpn detection
- Automated key-rotation and signing key lifecycle
- Identity impersonation for testing or validation
- Configurable captcha difficulty based on client score. Bespoke captcha implementation
- Integrates with Hashicorp Vault, AWS KMS, or other secret store
- Real-time updates powered by Concord
- Zero-trust managed key material lifecycle powered by Kasqe
Concord 2021-
Description
Concord is a realtime distributed messaging and consensus solution platform. Born from Synk, Concord is battle tested against one of the most sensitive senses: hearing. Audio synchronization without a RTC stream is notorously difficult and any careless event can cause audio to buffer, clip, peak, or playback at different rates. Concord understands how to keep the client in relative sync with the primary source given these sensitive requirements which are configurable per source/group.
Highlights
- Machine-Machine RPC communication
- Client-Server websocket coordinator
- Distributed messaging broker, using node-local, redis, or deferred queue
- Automatically reestablishes existing session when connection is lost
- Communicate with anything anywhere at anytime with the ease of a canonical id
- Undergoing a rust-rewrite to extract more performance, @napi-rs
Anvil 2024-
Description
Anvil is the next generation tabletop and gaming platform that seeks to run on web and native desktop. A mobile/tablet edition is on a distant roadmap but mobile isn't at a place where it has great support for web graphics.
Highlights
- Built with Angular, Bevy, and Tauri for native.
- Seamlessly upload 3d models and have them show up in the world powered by Kasqe
- World synchronization powered by Concord
Synk 2016-
Description
Synk is a web project built to solve the problem of running a D&D campaign and having no way to set the mood with music. Synk works by relaying the audio that the the DM mixes to the players in realtime. Kickstarted the D20Kit project after successful integration with a few D&D Groups.
Highlights
- Realtime Audio Mixing
- Redux state pattern
- Angular Frontend (v19)
- NestJS Backend (v10)
Options & Market Trading Bot 2021
Description
A custom trading bot that was controlled through Discord chat. Aggregated from a diverse set of sources using subreddits to assist discovery of other scrapable data sources. Heavily scraped /r/wallstreetbets. Successfully traded options strategies for profit.
Highlights
- Integrated with discord
- Market analysis through web scraping and sentiment aggregation
- Paper money trading simulator in discord (friends ranking/betting)
Feathers-Couchbase 2018
Description
Feathers-couchbase is the db driver for Synk when it was written using featherjs and couchbase. It implementes the full FeathersJS common query API as well as a N1QL QueryBuilder.
Highlights
- Implements common Database and Query API
- Partial N1QL QueryBuilder
- 100% Test Consistency
- Source
- Official 2018 Announcement
YADDA Secret Store 2016
Description
Yadda is an open source deployment tool for Amazon ECS. This extension to the yadda ecosystem allows all projects using yadda to get AWS KMS encrypted (HIPAA compliant) secrets for free.
Highlights
- Uses DynamoDB as a credential store (Credstash)
- Fully HIPAA compliant
- Container safe, takes best security practices to avoid envrionment scraping
- Source
QR Reporter 2014
Description
The QR reporter was developed to solve the problem of broken lab computers going unreported for extended periods of time. Instead of a patron finding their way to a staff desk to report the issue, they could scan a code on the computer! This successfully reduced student workload and saved tens of thousands of dollars annually.
Highlights
- QR Code Scanning
- Feature rich administration panel
- Full access control list for machine-owned inventory data
- Shibboleth Single Sign On integration
MoarDammit 2009-2023
Description
MoarDammit is a SWF/MP4/WEBM gallery of short (<1 min) clips used to give a quick laugh. MoarDammit has been under development for a few years mainly to practice with NestJS and AngularJS.
Highlights
- Angular Frontend
- Almost endless entertainment
- Personal favorite tracking
- Keyboard shortcuts
- Vanity URL's
- V1 Release (2012)
- V4 release (2021)
- Going Offline (2023)
GetBlocks 2015
Description
A simple little game that allows you, the player, to move around the board collecting blocks over time and making interesting designs. The game gets harder the more you play as the board fills up with deadly blue tiles. (Not built with BlocksEngine)
Highlights
BlocksEngine 2 2018
Description
Closed source project which leverages BabylonJS to build a 3D game engine with hooks into Angular. Swapping out BabylonJS for Bevy leads to Anvil, the 3rd generation renderer.
Highlights
- Realtime Graphics
- Fully Typescript
- Anvil: Virtualized Tabletop/World Simulator
BlocksEngine 2017
Description
A little fun open source project trying to get a generalized Typescript game Engine that works with 2D as well as 3D rendering. A big WIP
Highlights
- Realtime Graphics
- 100% selfwritten component game engine
- Fully Typescript
- Source
iTracker 2017
Description
The iTracker project existed to increase general student involvement with the SGA. It aggregated information from their backend project service Basecamp and allowed students to interact and have the opportunity to jump into projects.
Highlights
- Basecamp 3 API Integration
- Laravel Backend
- AngularJS Frontend
- Aggressive cache strategy
Yelpy Weather 2016
Description
Yelpy weather answers the question, does the weather affect the ratings of yelp reviews? The project is built from the ground up using Hadoop technologies, and was a big data research project mentored by an author of the MapReduce Design Patterns book.
Highlights
- HDFS Big Data
- MapReduce and PIG
- Spark
- Redis (For cached results)
- Mentor: Adam Shook
Library Inventory 2014
Description
The inventory project was designed to replace OCS Inventory by simplifying the setup from the administrator side while giving much more power to search the data provided.
Highlights
- Lumen (API)
- Laravel (Web front-end)
- C++ (Mac & PC client)
- MongoDB, MySQL, Node, and Redis
- Python (Simulated demo client)
- Simulated Computer in Python
CritiqueMe 2014
Description
CritiqueMe was a quick week-long project that aimed to alleviate the problem of youtubers posting a video for critique but never leaving any critiques themselves. This site solves the issue by forcing the channel to leave a critique first in order to post a video.
Highlights
- Video Showcasing
- Youtube v3 Data API
- Interactive critiquing process
Micro Projects
D&D InitTracker
A DnD initiative tracker
Let's Play Timer
A tool to help keep track of time during recording, supports URL configuration so creaters can bookmark the timer they use
Open Source Contributions
Technical Skills
Languages: Javascript, Typescript, Rust (2021e, 2024e), PHP, HTML/CSS, Python, Elixir/OTP, Lua, Haskell, C/C++, Java
Frameworks: NestJS, Angular, TailwindCSS, Redux, React, React Native, Axum, Tokio, FeathersJS, Laravel, jQuery, Material, GraphQL
Designing: large-scale system design (>3m MAU users), modeling databases relational and nosql, cost-aware infrastructure and software, normalization, designing server-client API communication protocols, real-time systems, RESTful routing, gRPC routing, istio service mesh, CI/CD pipelines, RFC-lite/ARP, WebRTC/RTC, distributed websocket orchestration, video and audio streaming orchestration, rich text editor
Databases & Exchanges: SQL, noSQL, PostgresSQL, Redis, MySql/MariaDB, EtcD, SQLite, RabbitMQ, ArangoDB, MongoDB, Google Datastore/Firebase, Couchbase, Kafka, Google Bigtable, Google BigQuery, AWS Dynamo, HBase/Accumulo (Wide-column), Scylla, Cassandra.
Servers, Operating Systems, and Build Tooling: Linux, Docker, Azure Cloud, Amazon Web Services (AWS), Google Cloud Platform (GCP), Kubernetes, Amazon ECS, Hyper-V, LAMP, LEMP, MEAN, Continuous Integration, Continuous Delivery, Site Reliability, PyInfra, ArgoCD, Drone CI, Teamcity, Gitlab, Istio, Envoy, Debian, CentOS, Ubuntu, Windows Server, Hadoop Clusters, Vagrant, Virtual Box, Webpack, Grunt, Gulp, Vite
Networking: TCP/IP, ISO/OSI, Ethernet, VPN, vLAN, Trunking, STP
Game Development: Unreal Engine 4, Unreal Dev Kit, Cryengine 3&5, CryeCSS Anvil (BlocksEngine 3+), Crude Self-made JS engine (BlocksEngine 1 & 2), BabylonJS, Howler.js