Things I've Made

Since it doesn't all fit in one page, and there are some kind of embarassing things in here. Listed in order of vague recency. I only list things I consider either shipped, or particularly relevant. There is an entire graveyard of started but unfinished projects on my GitHub.
Hide Deprecated Things. Show Deprecated Things.


I didn't make these things but I did help! Starting with this first because there's too much old crap down there that will push this beneath the fold.

lzma-rs (2022)

Rust gendx/lzma-rs
LZMA decoder in Rust. Added support for exposing the raw decoder primitives as well as a variety of performance optimizations.

TWiLightMenu (2018–2019)

C++ C DS-Homebrew/TWiLightMenu
DSi Home Menu replacement for the Nintendo DSi and Nintendo 3DS series of consoles. I added the original implementation of Japanese font rendering, streaming audio support for certain themes, and ported the Acekard/Wood R4 menu as a theme. Also added advanced theming support for the DSi Home Menu theme.

mp4parse-rust (2019)

Rust mozilla/mp4parse-rust
MP4 Atom parser in Rust. Added support for parsing iTunes metadata atoms. Ships in Firefox, so technically speaking, I can say I shipped code in Firefox, even though that codepath is never used in Firefox.

BukkitIRCd (2013)

Java Deprecated WMCAlliance/BukkitIRCd
A Bukkit/Minecraft chat bridge for InspIRCd and other IRC daemons. A lot of bugfixes involving InspIRCd. Also, hello Jdbye!


Libraries and resuable parts.

librashader (2023)

Rust C SnowflakePowered/librashader
An independent implementation of RetroArch 'slang' shaders written in Rust with a permissive loader interface for easy integration in emulators and other games. librashader implements the preset parser, shader transpiler and preprocessor, as well as the shader runtimes for OpenGL, DirectX 11, DirectX 12, and Vulkan.

winfsp-rs (2022)

Rust C SnowflakePowered/winfsp-rs
Safe Rust bindings to WinFSP, a usermode file system framework for Windows. I used this to port over a passthrough file system from the original C++ to Rust. Another big yak shave for Snowflake, this time for isolating emulator execution contexts and virtualizing game hard drive directories.

chd-rs (2022)

Rust C SnowflakePowered/chd-rs
From-scratch decoder implementation of the MAME CHD format written in Rust with a focus on readability, intended to document the CHD format as clearly and comprehensively as possible. Also includes a C API that is mostly drop-in compatible with libchdr.

sabinokaku (2022)

Rust C# SnowflakePowered/sabinokaku
Minimal framework for injecting the .NET Runtime into a host process with hostfxr. Other solutions were all in C++, but this one is in Rust! It's very small and highly configurable. Just write a small configuration file and inject. Also supports Linux injection via LD_PRELOAD hooking of __libc_start_main.

bunkai (2021)

C# SnowflakePowered/bunkai
A C# port of shiratsu-naming, a ROM file name parser. Built from the ground up Pidgin parser combinators. Used in Snowflake to parse the title from a ROM filename during scraping. A little less flexible and less powerful than shiratsu-naming because of its differing design goals: there's no need to keep any trivia when scraping ROM names.

shiratsu-naming (2021)

Rust SnowflakePowered/shiratsu
Standalone ROM file name parser built with nom parser combinators. Provides a zero-copy, tokenizing API that keeps track of trivia for various naming standards.

tsuku (2021)

C# SnowflakePowered/tsuku
Cross-platform file-tagging and metadata library using xattr and NTFS alternate data streams. Allows attaching small pieces of metadata to files directly on a supported filesystem.

libslim (2020)

C DS-Homebrew/libslim
Lightweight FAT library for the Nintendo DS based off ChaN FatFS and libELM by Yellow Wood Goblin. Drop-in compatible with libfat for most use cases while being faster and using fewer resources.
Game and ROM database, compiled using shiratsu and atsumare, updated approximately once a month with the latest DAT files.

listinfo-rs (2020)

Rust SnowflakePowered/listinfo-rs
Parser and deserializer for MAME ListInfo style DAT files.

chained_iter (2020)

Rust Deprecated chyyran/chained_iter
Small Rust macro to create non-owning iterators out of values without allocation or unsafe. Wasn't really super efficient and now obsolete now that array::IntoIter is stabilized.

vcdiff (2020)

C# SnowflakePowered/vcdiff
Very heavily optimized vcdiff/xdelta3 library for .NET. Using SIMD vector intrinsics, the .NET Span APIs, and a little bit of unsafe, it can get very close to C++-level performance with purely managed code. Forked from Metric/VCDiff.
Extensible framework for building emulator frontends. Probably the most overengineered emulator frontend ever built. We have compile-time source generation, custom built AST-based serializers that can target any binary or markup configuration format, a full GraphQL API to interact with all these features, a async task-based declarative installation framework for various console game formats, a bespoke plugin framework that also involves mini package manager and build tooling, and more. There's also a bunch of themes and UI work that I haven't listed here because it's nowhere in a complete or workable state yet.
Standard references to game consoles, and their controllers. Defines unique content types for various game ROM formats.

OriginExhaust (2014)

C# Deprecated chyyran/OriginExhaust
Small library to help build Steam launchers for Origin games, back in the day. Who would've thought that 6 years later EA would come back to Steam?


Didn't exist, so I wrote it myself. I still use a lot of these today.

SkyInstaller (2022)

C# chyyran/skyinstaller
One-click installer for the Evolution voice mod for the Trails in the Sky series. Only supports the Steam releases of the games. One day I will get around to actually playing Trails.

atsumare (2020)

Rust SnowflakePowered/atsumare
Downloader from DAT files from No-Intro, Redump, and TOSEC.

shiratsu (2020)

Rust SnowflakePowered/shiratsu
Aggregates DAT files from No-Intro, Redump, and TOSEC to create a huge games database.

noter (2019)

Rust chyyran/noter
A small utility I use to help me take notes. Really just a glorified touch command.

seiri (2018–2019)

Rust TypeScript C++ C# chyyran/seiri
🎶 Opinionated, barebones music manager. Sorts music automatically following a few rules like iTunes' 'Automatically Add to iTunes' feature, as well as a being queryable with a simple but effective query language that transpiles to SQL. UI written with React and Electron. Originally had parts written in C#, compiled to native code with CoreRT. Rest In Power, CoreRT.

Katatsuki (2017)

C# Deprecated chyyran/Katatsuki
Old, poorly hacked together music manager. What I used to manage music before I rewrote it in Rust as seiri.

Snowflake (2014)

Python Deprecated SnowflakePowered/snowflake-py
The original version of Snowflake, before the MEGA SCOPE CREEP. Made me realise that Python is a bad language for large projects.

Battlelogium (2013-2015)

C# JavaScript Deprecated Battlelogium/Battlelogium
Steam launcher for Battlefield 3, Battlefield 4, and Battlefield Hardline.

FreeIsaac (2013)

C# Deprecated chyyran/BindingOfIsaac-Launcher
Launcher for the classic Adobe Flash-based Binding of Isaac that let you choose between the original game, and the Wrath of the Lamb expansion.

HawkenExhaust (2013)

C# Deprecated chyyran/HawkenExhaust
Steam launcher for Hawken. Remember Hawken? Fun mech game.

DesuraTools (2013)

Python Deprecated chyyran/DesuraTools-py
Small utility that added Desura games to Steam as Non-Steam Games. Remember Desura? Fun indie games store.

GOGWrappers for Steam (2013)

C# Deprecated chyyran/GOGWrappers-for-Steam
Small utility that added GOG games to Steam as Non-Steam Games. I don't think this works anymore.

imagerie (2013)

PHP JavaScript Deprecated chyyran/imagerie
Database-free image uploading package that was intended as an alternative to Gyazo.

FlashcartHelper (2011-2012)

Batchfile VB.NET Deprecated chyyran/flashcart-helper
Wizard to help set up DS flashcarts (for homebrew only, of course 😉). Kids have it easy nowadays with their Python tutorials. Back in my day, we learned how to program using Notepad and Batch scripts. I continued to have no concept of Object Oriented Programming until I learned Java, and also VB.NET is a terrible language.


Writeups I've done of some projects that I find interesting and gained some traction.
…or that one time CMake drove me to create an eldritch monstrosity. This blog post detailed how I used CoreRT to compile C# into native code, bootstrap the runtime in Rust, and then call into C# using C FFI bindings, because I didn't want to deal with CMake and TagLib2. I eventually got CMake working (after coming back to it a year later), but you have to wonder how I got this mess working before CMake.
…or that one time where my Computer Science degree finally came in handy because I had to solve a recurrence. This is a writeup of how I optimized vcdiff to be 50x faster (8 seconds to 150ms when diffing a 2MB file) using Span<T> and Memory<T>, .NET Core SIMD Intrisics, and handfuls of unsafe pointer arithmetic in C#.


Academic papers that I wrote during my time at the University of Toronto, mostly dealing in narratological analysis of various East Asian literature.
An analysis of how the Internet and the proliferation of cell phones have influenced and changed the ways the space of the city in both the Real and the Virtual, particularly through the use of computer mediated communication, using the lens of Ryohgo Narita's Durarara!! in comparative reading with Ira Ishida's Ikebukuro West Gate Park.
Applying the traditional narratological toolset to Tokimeki Memorial 2 to explore the role in which gameplay and game user interfaces take on roles of re-narration within interactive media (i.e. video games) in general, to account for gamic interactivity without introducing new axiomatic frameworks.
Exploring the narrator in the role of translator and how the narrator is agentive in choosing what, how, and when to translate in Taiwanese "resistance" literature, using Wu Zhuoliu's アジアの孤児 in comparative reading with Ioannis Mentzas' translation Orphan of Asia to demonstrate the presence of this narrative agency.


These are mostly Minecraft plugins, and things that had to do with Minecraft plugins.
Bukkit plugin that let you eat pumpkin seeds and cocoa beans. The project page on is still up, but not the service I used for CI. And (free!) CI back in 2012 was absolutely terrible.

ReportRTS-WebUI (2012)

PHP Deprecated chyyran/ReportRTS-WebUI
Really barebones Web dashboard for ReportRTS, a Bukkit plugin for report tickets.

MystiaUtils (2012)

Java Deprecated chyyran/MystiaUtils
Ducttape and glue for the Mystia (RIP) Minecraft server.

LegacyZombies (2012)

Java Deprecated chyyran/LegacyZombies
Makes Minecraft Zombies drop feathers like in Alpha. I rescued the source code for this plugin from the JAR at Seems like this was before I could even use git.