Handpicked open source projects I've worked on. For a full list, see my github repositories.
For reference, I've built projects related to the following games:
Timeline: 2017 - today
Language: Rust
cargo-screeps is a tool for compiling and uploading Rust AIs to Screeps servers. It supports both private servers, and the official server.
screeps-game-api contains API bindings to Screeps' unit control API for use by Rust programs compiling to web assembly.
Together, these projects allow writing Screeps AIs in Rust. I wrote most of the initial code, and worked half-and-ahlf with co-contributors finishing up the rest of the API.
Timeline: 2017 - 2019
Langauge: Rust
rust-screeps-api contains bindings to Screep's REST web API. The advantage over raw HTTPS calls is that all messages are typechecked, and all responses automatically parsed into structs.
This allows you to work with the screeps web API as if it were just another Rust library, with full IDE auto-complete support and compile-time typechecking.
Timeline: 2017 - 2018
Langauge: Rust
scrs is a full alternative Screeps client which can watch live map data. When written, it supported both the official server, and private servers (the official server has since changed protocol, and is no longer supported).
scrs's advantage is that it runs as a small desktop GUI application, and consumes much less power than the official client. The disadvantage is that neither code-editing nor unit-level-detail viewing are supported.
Timeline: 2019
Langauge: Rust
srv is a full alternative Screeps client, the spiritual successor to scrs. Supports both private and official servers.
While scrs was a desktop application, srv is written as a terminal user-interface. It implements all detailed viewing functionality present in the official client for only a fraction of the computing power. The other big advantage is getting those sweet ASCII graphics.
Timeline: 2014 - effectively, 2019
Language: Rust
fern is a logging library backend favoring runtime configurability and fast logging-path execution. Notably, it can run full formatting and filtering with zero allocations on the logging path.
The sell is simple configuration. Since it's all Rust code, changing logging based on command line parameters or config files is easy. The biggest downside, compared to projects like log4rs, is that that configuration still all has to be written in Rust code.
Timeline: 2014
Language: Python
qxlc is a pastebin and link-shortening server.
I wrote this as a learning experience for using the Flask web framework.
Timeline: 2013 - 2016
Language: Java
SkyWars is a Minecraft server plugin for managing ``SkyWars'' games. It queues players, creates arenas and overall manages players playing in competitions.
Timeline: 2012 - 2015
Language: Java
I was a programmer for the FRC team 4030 from 2012-2015. Notable contrbutions include: - writing the manual control code each year, translating joysticks into movement - writing autonomous code, where the robot will perform actions on its own - co-developing an independent control panel which networks with the robot, retrieves status information, and updates configurations.
For background, FRC is a high school robotics competition. On one day in January, a theme and ruleset is released to teams across the world. Teams then have six weeks to build, test, and program the robot. On the sixth week, we box up the robot, and only unbox it for competitions.
Timeline: 2013 - 2014
Language: Java
mc-cli is a command line client for Minecraft. Uses MCProtocolLib for connecting to Minecraft servers and JLine for the interface. Lets you run 10+ fake clients connecting to the same Minecraft server.
This is extremely useful for testing multiplayer plugin features when developing server-side plugins.
Timeline: 2013 - 2014
Language: Bash
MCScript is a bash script compiled for managing a local minecraft server on a linux. It handles backups, restarts the server regularly, ensures it stays running in the background and updates plugins.
This is an alternative to web-based control panels, or just running the server manually. The main advantage is that MCScript "just works" after initial configuration.