Projects
Check out some of my projects below. For a full list of my projects check out my GitHub
-
Pocket Relay
Pocket Relay is a custom game server emulator for Mass Effect 3. The server allows players to host their own servers for the game, enabling things like playing over LAN (Local Area Network).
This server includes a dashboard, which allows users to manage the server and even experiment with different in-game items and characters in an environment isolated from the official game servers.
The server is very performant, able to handle many simultaneous connections while using very few resources.
-
Pocket Ark
Pocket Ark is a custom server emulator that I am writing for the Mass Effect Andromeda game. This server is currently under development but aims to be the Pocket Relay of Mass Effect 3’s sequel game Mass Effect Andromeda. I hope to be able to provide the level of quality seen in the Pocket Relay server in this one as well.
-
Quizler
Quizler is a super small, easy-to-use, and deployable app for creating quizzes that can be played across multiple devices in real time. The app is intended to be small, portable, and easy to use. This is my replacement for my original real-time quiz application (Quizler-v1). It comes with lots of new features and performance improvements.
-
Quizler Enterprise
Intended to be the upgraded alternative to my Quizler project, Quizler Enterprise is an upcoming project of mine which intends to take an larger scale take on Quizler with persisted data, authentication, and additional functionality.
-
Obsidian Timekeep
Obsidian Timekeep is a plugin designed for Obsidian that enables time tracking directly within Obsidian Vaults. The tracked time information is stored within the markdown directly and can continue tracking even when the app is closed. Moreover, the tracked data can be exported to a variety of formats, including Markdown, CSV, JSON, and PDF.
-
Obsidian Spoilers
Obsidian Spoilers is a plugin designed for Obsidian that enables users to create concealable regions of text and other content, including environment variables or sensitive information, within an Obsidian Vault. It supports various features such as markdown and a table format for viewing environment variables.
-
OGuard
This is software I’m working on for monitoring and controlling my “Dynamix UPSD2000 Defender” UPS. The software allows me to control my and monitor my UPS, I have reverse engineered the USB protocol it uses and can monitor the device state and perform actions such as self-tests. Currently the software is quite basic however, it is quite performant and coming along nicely. This is under active development still.
-
AK500 Digital RS
AK500 Digital RS is a Linux replacement for the DEEPCOOL software, which controls the display on a CPU cooler to show CPU temperature and usage. DEEPCOOL does not offer a Linux version of their software. Additionally, their current software utilizes more resources than necessary, as it is an Electron app primarily used for displaying a tray menu. AK500 Digital RS is written in Rust and functions as a lightweight background program.
-
Drive-PI
Drive-PI is an application I wrote for a school assessment. Drive-PI acts as a network file share running on a Raspberry PI. Drive-PI will share the connected drives over its wireless hotspot along with providing a management web interface to unmount, mount and remount drives. The backend is written in rust and its frontend is written in Typescript using ReactJS.
-
Chemic
While studying at Developers Institute I found that I quite often needed to check whether my microphone was working or not. I solved this by creating this CLI program which lets you play your microphone back to you so that you can hear whether its working or not
-
Tdf
Tdf is a library that I have written to serialize and deserialize the format used by the BlazeSDK for encoding RPC packets. This library is used by my Pocket Relay and Pocket Ark projects. The library comes with a robust set of derive macros that allow quickly and easily making enums and structures into serializable and deserializable structures.
-
Blaze SSL Async
This is the asynchronous implementation of the SSLv3 protocol in Rust to support the game clients for Mass Effect 3 which are only able to use SSLv3 due to its hardcoded implementation so in order to make it possible for the Rust rewrite of PocketRelay and to introduce the new client app I decided to implement the SSLv3 protocol myself as there aren’t any other libraries that support it without either compiling from scratch or modifying key parts of the system such as doing registry edits
-
PDF Process
This is a Rust library for working with PDF files, it allows rendering PDF file pages to PNG/JPEG/TIFF, extracting the text contents from PDF files and viewing basic information about PDF files such as the encryption status, page count, subject, title, creator, author, and more.
-
Office Convert Server
This is a HTTP server that allows converting files from the various office file formats (doc, docx, xlsx, ..etc) into PDF files for much easier viewing and preview generation. Uses the conversion capabilities of LibreOffice and their provided native C++ SDK to perform the conversions. This interaction with LibreOffice is powered by my libreofficesdk Rust library.
-
LibreOfficeKit
This is a Rust library providing access to the LibreOffice native C++ SDK, allowing you to perform a variety of tasks such as converting office documents to various formats, signing documents, along with pulling information from LibreOffice. As apposed to alternative implementations this library provides a safe to access implementation with correct locks and safety gates in place.
-
Needy Appliances
I collaborated on this project with a number of other members from Questionable Research Labs and we created appliances with emotions. For this project I wrote the user interface and the server connected to said user interface in order to provide a connection between the devices MQTT server and the tablets which would display the conversations and state
-
Interlink
While developing my Pocket Relay project I was struggling to maintain a specific structure to all my asynchronous logic as the server was making use of many different types of access and required lots of state to be accessible. Originally I planned on moving the server to the Actix actors structure however after multiple attempts this didn’t seem like the right solution as it restricted the server heavily. My solution to this was to make my own async framework Interlink
-
QRLS
QRLS is a kiosk system for the Questionable Research Labs which allows members and guests to sign in when entering the building and also manage and view who has been in the building. There has been multiple iterations of this website first of which was not created by me but since then there has been two new remakes by me.
-
KNI
KNI (KAMAR Notices Interface) is a collection of libraries in different programming languages that all have the one purpose of fetching notices from the KAMAR portal application. Each library referenced in this repository can be used to fetch KAMAR notices in their respective language.
-
KAMAR-Notices
KJP is a web application for pulling notices from KAMAR and displaying them in a nice easy to read view that will cache results from KAMAR. Retrieves notices from KAMAR API using a PHP backend.
-
Quizler v1
This is my original implementation of my Quizler real-time quiz application, for quickly and easily making quizzes with an extremely small deployment size of 1.82mb making it extra portable. This is intended to be used as a quick simple LAN quiz game tool, however it can be deployed and run within a container on the cloud.
-
Pond
Pond is a custom scripting language for writing scripts for the USB Rubber Ducky. This language improves a lot upon the existing ducky code language providing variables, macros and lots of ease of use functionality.
-
TetriVersal
An unfinished game of multiplayer Tetris intended for use as the game for a school project. Although unfinished it is completely playable it is only unfinished in terms of not having a proper client completed the only way to play is through the testing client which is a terminal based client.
-
Malduino-W Firmware
This is a custom fork of the Malduino Wireless Bad-USB firmware with a more modern embedded website which has a nice SPA which uses the Svelte frontend framework.
-
Kotlin Netty HTTP
This is a library for HTTP routing in Netty with minimal dependencies, This project only depends on the required Netty libraries and can be slapped right onto a Netty channel as a handler. Its a lightweight and easy solution which is used in my KME3 project for routing.
-
Kotlin XML Builder
This is a library which creates a DSL like builder for creating XML through Kotlin code this is used in other projects to create XML objects at runtime. This project has been optimized quite a bit from its original version.
-
NZGM
NZGM (NZGrapher Modern) is a modern alternative to the NZGrapher web graphing application which has many improvements of NZGrapher such as live editing data and the ability to run offline.
-
TrueRandom
TrueRandom is joke website designed for the “Terrible Ideas Hackathon”. This website is centered around a dice rolling machine as a service concept. The project is for generating random numbers by physically rolling a dice with a mechanical arm.
-
Pocket Relay (Kotlin)
Custom dedicated Mass Effect 3 game server software which emulates the functionality of the official EA servers with the added benefit of allowing “Home Hosting” / LAN play. Because the server is hosted by outside of EA servers you can alter your player data. This server also includes a MITM (Man-in-the-middle) mode which creates a tunnel for connecting to the official servers which decoding all the packets in-between.
-
KJP
KJP (KAMAR JSON Pass-through) is a server written in Go which provides a way to connect to and use KAMAR portal APIs through the web with an easy to use JSON REST API. This Project makes it possible to make Single-Page-Apps or other web apps that interface with KAMAR
-
Tiny Serve
This is a tiny portable Rust application which has only one purpose and that is to create an HTTP server that shares all the files placed in the “public” folder next to it.
-
Hour.ly
Hourly is small desktop electron app for keeping track of how many hours you’ve worked for. Stores the information in a JSON file and displays a small counter in the corner of your screen.
-
Freddy's Fast Food
A python application submitted for an internal assessment in Digital Technologies for Achievement Standard 91896. This is an advanced ordering system written in python with a terminal UI and menu system.
-
Computron
A website designed, built and submitted for an internal assessment in Digital Technologies for “Web Design 2.4 AS91893”. This website is a simple website for providing computer support.
-
Morse Code Kt
This is a library for encoding and decoding Morse code in Kotlin. The library also has a WIP feature which allows you to play the Morse code through the device speakers however at the moment that feature is quite experimental.
-
Wellbot
Wellbot is a simple JavaScript chatbot that I created for the JavaScript segment of the Client Side course that I studied at Developers Institute. The bot uses a state machine to transition between each state and can handle additional commands such as restart, bye, etc.
-
BlazeKT
BlazeKt is a library which implements the packet system used by Blaze servers which is the server software that EA uses for games such as Mass Effect and Battlefield. The library also has an annotation processor for generating packet routing based on annotation functions.
-
BlazePK
BlazePK is an implementation of the Blaze packet system used by EA games such as Mass Effect 3 and Battlefield. This implementation is written in Rust and uses macros for wrapping structures and allowing packets to be encoded and decoded from them. This library features both async and sync reading and writing of packets. This library was deprecated in favor of my new Tdf library
-
Blaze SSL
Implementation of the SSLv3 protocol in Rust to support the game clients for Mass Effect 3 which are only able to use SSLv3 due to its hardcoded implementation so in order to make it possible for the Rust rewrite of PocketRelay and to introduce the new client app I decided to implement the SSLv3 protocol myself as there aren’t any other libraries that support it without modifying key parts of the system such as doing registry edits
-
DuckCentral
An app for controlling the Malduino Wireless Bad-USB using a Android app with a lightweight firmware that removes the embedded website for extra space.
-
InstaViewer
A simple app for viewing the full message contents of Instagram without opening actual direct message.
-
Alto
Alto is a high performance Minecraft client written in Kotlin which greatly out performs many clients available today. This project is pending rewrite and currently doesn’t have any publicly available releases.
-
Jarpo
This is a work-in progress web application which is intended to be an easily accessible public repository for compiled Minecraft server Jar files. Although this is in very early stages whats currently being implemented is a clone of the Spigot Build Tools in Rust as part of the backend to compile spigot Jars fast and asynchronously