diff --git a/content/blog/2022-01-06-unfinished-projects.md b/content/blog/2022-01-06-unfinished-projects.md
new file mode 100644
index 0000000..b1d958a
--- /dev/null
+++ b/content/blog/2022-01-06-unfinished-projects.md
@@ -0,0 +1,516 @@
+---
+layout: page
+title: "Unfinished projects and failed ideas"
+description: "A walkthrough of my private GitHub repos"
+date: 2022-01-06
+tags: random
+draft: false
+extra:
+ uses_katex: false
+---
+
+My [GitHub profile](https://github.com/Ewpratten) is a bit like an iceberg. At the time of writing, I have made nearly 8 and a half thousand commits to nearly a thousand repositories. Since July 2018, I have made an effort to go no more than 3 consecutive days without writing code, and I have only broken that streak 6 times (each of those being a 4-day break).
+
+
+
+I remember making myself a GitHub account back in 8th grade (August 16, 2016 to be exact). Ever since then, I have published *every single* personal project I have made to GitHub.
+
+My goal at the time was simply to use GitHub as a free file storage platform for my little side-projects, but it ended up having two interesting side-effects:
+
+- My profile is an accurate representation of my work, since it *is* my work. No filler or template projects needed!
+- You can see my progression as a programmer by looking through my timeline.
+
+Since I send potential employers directly to my GitHub profile, I have a few rules for how I manage the account. The important one for this post is:
+
+> Only *finished* and *documented* projects are made public. (Some WIP projects may also be public for various reasons)
+
+This means that while I currently have 476 *finished* personal projects (yes, I write a lot of code), I also have roughly the same number of unfinished projects that'll likely never see the light of day.
+
+
+## Showcase
+
+My goal for this post is to showcase some of the interesting failed ideas I have had in the past. Before I get to the whole list, here are a few recent projects of mine that are worth mentioning in their own section:
+
+### A near success
+
+This is a project that may actually be finished some day, considering how its nearly production ready.
+
+In mid-late 2021, I was building a custom graphics pipeline for some friends. After finishing work on [**\[data::loss\]**](https://github.com/Ewpratten/ludum-dare-49), a group of us started prototyping various concepts for future games. Continuing off of this, [@demilurii](https://demilurii.art) and I began looking at integrating 3D layout and rigging tools into our 2D asset pipeline.
+
+Thus, `strangle` was born. Strangle is a little tool that allows super easy project and asset management through various tools using Pixar's [USD](https://graphics.pixar.com/usd/release/index.html) as a data interchange format.
+
+`strangle` can handle the [MagicaVoxel](https://ephtracy.github.io/), [Blender](https://www.blender.org/), [Maya 2022](https://www.autodesk.ca/en/products/maya/overview), and [Houdini](https://www.sidefx.com/) DCCs in a layering approach, where each DCC is used to add their specialty to an asset. This means that magica could be used for modeling, blender for texturing and shading, maya for layout, rigging and animation, and houdini for lighting and FX.
+
+This whole pipeline works flawlessly, but the tooling was never released due to some less-than-ideal design choices in how the tools interface with each other across OSes.
+
+### A public failure
+
+I actually published one of my failed projects as reference material for other developers.
+
+{{ github(repo="ewpratten/animal-loader") }}
+
+
+
+> `animal-loader` (A not-so-acronym for "A Native Mod Loader") is an experimental, unfinished project to allow the [@kleientertainment](https://github.com/kleientertainment/) games [Don't Starve](https://www.klei.com/games/dont-starve) and [Don't Starve Together](https://www.klei.com/games/dont-starve-together) to load native mods written in rust, and support WebAssembly plugins.
+
+After starting work on this project, I learned that the game I was attempting to mod was never compiled with support for dynamic library loading through its LUA interface, so I was unable to continue without considerable effort.
+
+### A little bit of IOT hacking
+
+`mitechlib`, another unfinished project of mine, is a Rust library that allows me to programmatically interface with the laundry machines in the building I live in.
+
+The only reason it exists is because I thought it would be funny to walk into a laundry room, and wash my clothes with a laptop connected to a washing machine.
+
+## The list
+
+
+With the power of APIs, I threw together a little GraphQL query to grab all my private repos:
+
+```graphql
+query {
+ viewer {
+ repositories (privacy: PRIVATE, first: 100, after: null) {
+ edges {
+ node {
+ name
+ description
+ }
+ }
+ pageInfo {
+ endCursor
+ }
+ }
+ }
+}
+```
+
+I then vetted the list a bit, and converted it to a web-ready format.
+
+Here is the new and improved list of my project ideas that never saw the light of day:
+
+- `CardStudio`
+ - A tool for working with various RFID cards using Proxmark devices
+- `proxmark-rs`
+ - A Proxmark3 client library for Rust
+- `render-test`
+ - An experimental game that only uses ASCII art for rendering
+- `ewpratten-commit-stats`
+ - A private api for querying my GitHub ranking in Canada
+- `dst-rpc`
+ - Discord RPC (Rich Presence) support for @kleientertainment's Don't Starve Together (precursor to animal-loader)
+- `blink-camera-api`
+ - A partial API client for Amazon/Blink cameras
+- `blink-client`
+ - A simple client for Blink home security cameras
+- `MultiAuth`
+ - A development tool to allow a mix of premium and "offline mode" accounts to join a Minecraft server
+- `multirss`
+ - A minimalist RSS aggregator
+- `dynmap-viewer`
+ - A high-performance desktop client for Dynmap
+- `wtf`
+ - A utility for dumping large amounts of information about a host
+- `microfetch`
+ - An over-simplistic portable command-line system information tool
+- `mitechlib`
+ - A library for interacting with Mitech smart connected laundry machines
+- `rc2d`
+ - A 2D raycasting library for line-of-sight lighting in 2D games
+- `MuchPerformance`
+ - A minecraft performance modpack
+- `tiny-osc`
+ - Morse code practice ocillator built on the Atmel ATtiny85 platform
+- `EmmetMob`
+ - A minecraft mod that turns my friend into an entity
+- `amprdns`
+ - An alternate DNS service, only avalible to 44net hosts
+- `betaroute`
+ - A peer-to-peer routing tool (example implementation of [this RFC](/rfc/modern-repeater-linking))
+- `MiwuStickers`
+ - A custom sticker pack
+- `shoot-to-interact`
+ - A game with one option: shoot
+- `protocrypt`
+ - An experimentation in XOR-ing data
+- `tinylink`
+ - An alternate repeater linking project
+- `repeaterstack`
+ - A full amateur radio simplex node / remote repeater
+- `hamscan`
+ - Frequency monitoring and web visualization based on `rtl_power`
+- `strangle`
+ - Experimental voxel art pipeline
+- `vox2usd`
+ - Convert from the Magica Voxel file format to Universal Scene Description
+- `usd-tutorial-files`
+ - Scripts from Pixar's USD tutorials
+- `discolytica`
+ - A tool for tracking discord data into an analytics database
+- `ampr-minecraft`
+ - Minecraft server for stress-testing an edge router
+- `darkdns`
+ - A standalone Docker-based DNS server that resolves lesser-recognized domains
+- `r3_pipeline`
+ - Video game and animation production pipeline (Used for **\[data::loss\]**)
+- `egf`
+ - Evan's Game Framework: Everything you need to build a 2D game
+- `tyler`
+ - A custom `tiled` map loader
+- `sonr`
+ - A voice chat control library built on Serenity and Songbird
+- `discord-map`
+ - Generates a graphviz map of all your Discord servers
+- `ewc`
+ - C-compatible core library for quick development shortcuts in various languages
+- `cloth-toy`
+ - 2D cloth simulation toy
+- `morsencode`
+ - Experimental data encoding algorithm based around morse code
+- `kobodash`
+ - A simple dashboard application for the Kobo Aura
+- `gpu-avg`
+ - Learning experiment for executing headless compute shaders
+- `rtiod`
+ - Ray-Tracing In One Day: A random project to fill my time
+- `spac`
+ - Abstract mathematical types for library interop with easy-to-use interfaces
+- `vec-convert`
+ - A translation layer between the many Rust vector types
+- `open-echo-proxy`
+ - An open-source echolink proxy server
+- `discord-framework`
+ - Easily build Discord bots by defining them using JSON data
+- `tinygl-rs`
+ - Rust bindings to tinygl
+- `network-monitor`
+ - A tool for logging network drops
+- `fileshare`
+ - Personal file-sharing service
+- `disco`
+ - Simple network discoverability service
+- `zndfrm`
+ - A procedural audio engine
+- `egui-raylib-rs`
+ - Raylib integration for egui
+- `error-adaptor`
+ - Utility macros for wrapping external error types in Rust
+- `xplre`
+ - XPLRE: A small 2d game
+- `strands`
+ - Basic and experimental physics toys
+- `minecraft-wasmtime-experiment`
+ - Experiment in loading plugins into Minecraft with Wasmtime
+- `csrpc`
+ - Crazy Simple RPC library
+- `tiny-analytics`
+ - Small and efficient analytics engine for my personal projects
+- `ut`
+ - Usage Tracking API
+- `zzarl`
+ - VA3ZZA Amateur Radio Logging software
+- `kx2-rs`
+ - Rust library for serial control of the Elecraft KX2/KX3 transceivers
+- `kxsvc`
+ - Local gRPC service for programmatic control of Elecraft KX2 and KX3 transceivers
+- `nv`
+ - An environment management tool
+- `pathwarn`
+ - A library for providing useful feedback about invalid paths passed to Rust applications
+- `tvdsb-student-api-rs`
+ - Rust API for interacting with Thames Valley District School Board student information
+- `ludum-dare-48-rework`
+ - A design rework of our Ludum Dare 48 game: Deep Breath
+- `ewpose`
+ - "ewpratten's positioning library"
+- `vision-types`
+ - Datatypes and utils related to computer vision targets
+- `ampersand`
+ - A build tool for Rust-based Android apps
+- `gnn`
+ - An experiment in building a generic neural network
+- `pixyusb2-rs`
+ - Rust bindings for `libpixyusb2`
+- `mdviz`
+ - Multi-dimensional graphing tool
+- `lightpanel`
+ - A tool for turning my computer monitors into configurable light sources for my room
+- `improc`
+ - Image processing and filtering in Rust
+- `leapmotion-rs`
+ - Rust bindings for the LeapMotion V2 API
+- `wg-dash`
+ - A dashboard for WireGuard servers
+- `lmvn`
+ - A small tool for managing local maven repositories
+- `packtool`
+ - A tool for managing Minecraft modpacks
+- `breaktrack`
+ - A simple crawler for broken URLS on a webpage
+- `stratosphere-r6`
+ - A tool for estimating Rainbow Six Siege match results
+- `autojson`
+ - Automatic JSON serialization and deserialization macros for Rust
+- `ZZALOG`
+ - VA3ZZA's Amateur Radio logging software
+- `repeatermon`
+ - A tool for monitoring repeater activity
+- `lcx`
+ - LaunchControlX: A custom macro pad
+- `git-time`
+ - Graph time spent on a Git project
+- `spawn-server`
+ - Experimental Minecraft server infrastructure
+- `aprtwt`
+ - APRS <-> Twitter bridge
+- `raylib-tessellation`
+ - A bridge between Lyon and Raylib, allowing easy GPU path tessellation
+- `slyce`
+ - An experiment in low-complexity game development
+- `GameTK`
+ - A game development and 3D rendering framework
+- `raylib-imgui-rs`
+ - Raylib + Dear ImGui. In Rust
+- `cone-of-vision-demo`
+ - A small app demonstrating cone-of-vision rendering in 2D
+- `raylib-tweaks`
+ - Some small tweaks and extensions on raylib to make it a little more Rust-friendly
+- `bdl`
+ - Small and fast HTTPS file downloader
+- `burstfetch`
+ - A very simple BitTorrent implementation
+- `tinyos`
+ - A tiny OS
+- `nodelink`
+ - Dockerized internet radio nodes
+- `path3d`
+ - A demonstration of 3D path solving
+- `repeater-info`
+ - Web-based amateur radio repeater information
+- `avr-rust-utils`
+ - Some utility functions for working with Rust AVR code
+- `py-aprsfi-api`
+ - An aprs.fi API client for Python
+- `hambadges`
+ - Embeddable badges for amatuer radio operators
+- `ham-status`
+ - An experimental dashboard for amatuer radio operators
+- `logbook`
+ - Clean and simple log-keeping program for amateur radio operators
+- `propagation-app`
+ - A simple android app for displaying HF and VHF propagation information
+- `tws-bs-x-morse`
+ - Platform-agnostic Rust driver for the TWS-BS series high-power wireless transmitter modules. This driver is specifically for sending data encoded as morse code
+- `wxbcn`
+ - A project to create a local area CW beacon providing temprature and light level informaiton
+- `twentytwo`
+ - A Minecraft server plugin that adds a new music disc type
+- `rayray-demo`
+ - 3D rendering 3D objects, ray-traced in 3D. An experiment
+- `maven-edge`
+ - Tools to deploy personal maven edge servers anywhere, any time
+- `mathutils-rs`
+ - Rust port of my MathUtils library
+- `basic-control`
+ - Basic systems and controllers for Python
+- `control-rs`
+ - Rust ports of various basic control loops and systems
+- `mathutils-py`
+ - Python port of MathUtils
+- `bionic`
+ - A robotics framework
+- `glass-engine`
+ - A dead simple 2d game engine build from past experience
+- `update-notifier`
+ - A small Java library to provide software update notifications to users
+- `plugin-core`
+ - Core API shared across my Spigot / PaperMC plugins
+- `rq`
+ - A scalable rendering pipeline
+- `jarcon`
+ - A lot of recon in a little bit of jar (A tool for hiding telemetry services in Java applications)
+- `SDRInterface`
+ - Web front-end for my WebSDR server
+- `MapLink`
+ - The missing link between Dynmap and your Minecraft client
+- `hookback`
+ - Remote monitoring for Java applications
+- `ChatBridge`
+ - Bridge Minecraft chat to a Discord channel
+- `PlayerStats`
+ - A Minecraft server plugin for tracking client-server activities
+- `sdrexplorer`
+ - A web tool for exploring WebSDR servers globally
+- `tooltips`
+ - Meta extensions to Java, allowing custom tooltips in source
+- `VarStrings`
+ - Non-constant String types for Java
+- `LiteIO`
+ - A lightweight HAL for systems I commonly use
+- `openbandplan`
+ - A web-viewer for ITU region 2 band plans
+- `baremetal-avr`
+ - C++ tools for working with AVR microprocessors
+- `AutoBCN`
+ - Simple CW beacon driver
+- `repeaterbook2gqrx`
+ - A tool for exporting a list of repeaters from RepeaterBook as a GQRX bookmark file
+- `koctl`
+ - A tool for interacting with Kobo hardware on-device
+- `RayJava`
+ - Raylib bindings to Java using cross-compiled JNI
+- `rayconsole`
+ - A graphical debug console for use in Java RayLib applications
+- `codestyle.css`
+ - CodeStyle is a small CSS+JS project I built to nicely style Kramdown code blocks
+- `toy.social`
+ - A personal learning project where I create a simple social platform for sharing text-based posts
+- `nativetools`
+ - My personal toolchain for developing code using the Java Native Interface
+- `rules_teensy`
+ - A collection of Bazel rules for the teensy microcontroller family
+- `xlog`
+ - Cross-platform PWA for logging radio contacts, and syncing between devices
+- `open-london`
+ - A simple API for querying data about the city of London Ontario
+- `repeatermap`
+ - An interactive map showing VHF and UHF amateur radio repeaters throuought the world
+- `robolib`
+ - A Python library containing various tools I developed during my time in highschool robotics
+- `no-wurst-logo`
+ - A small fabric mod to completely disable the Wurst client logo
+- `quicksds`
+ - A small Python library that extends dataclasses to allow packing and unpacking
+- `REGEXResolver`
+ - A small and simple asset resolver for the Pixar USD framework, based on REGEX rules
+- `flashbg`
+ - Flash BattleGrounds is a fast-paced multiplayer arena battle game
+- `amongus_hooks`
+ - A Python library for interacting with a local instance of Among Us on a Windows host
+- `mobile_cv_passthrough`
+ - An experimental Android app for running basic OpenCV video pipelines on-device
+- `dynmap_heatmap`
+ - A GUI tool to generate a real-time heatmap of the positions of Minecraft players via the Dynmap API
+- `vscode-poetry`
+ - Visual Studio Code extension for the Poetry build tool
+- `quickxor`
+ - A tool and file format for encoding and decoding data with an ASCII key
+- `fastrender`
+ - Quick, simple, and easy to use graphics
+- `launchlib`
+ - Interact with MIDI controllers
+- `lp2joy`
+ - Convert Novation Launchpad inputs to Joystick buttons
+- `smtp-send`
+ - A tool for sending email using direct SMTP connection
+- `backblaze`
+ - Rendering improvements for Minecraft
+- `thirdparty-mod-docs`
+ - Automatic Javadoc generation for other people's Minecraft mods
+- `voxelmc-pipeline`
+ - Sponge schematic -> VOX data processing pipeline
+- `grafana-nt`
+ - A Grafana datasource for NetworkTables servers
+- `snapfinder`
+ - A tool for scraping snapchat accounts out of instagram bios
+- `randomart`
+ - Generates SSH randomart from any file
+- `mc-analytics`
+ - A tool for analyzing Minecraft server logs
+- `textual`
+ - A web graphics engine based around visual story telling
+- `offload`
+ - Multi-host hardware interfaces with RPC-over-serial
+- `combat-tracer`
+ - Adds the "Tracing" enchantment to Minecraft, allowing the player to mark entities by hitting them
+- `amongus-hacking`
+ - Playing with the Among Us multiplayer protocol
+- `remoduino`
+ - A project to turn AVR-based Arduino devices into scriptable devices over UART
+- `jekyll-wiki`
+ - A small and lightweight jekyll wiki theme
+- `coreserv`
+ - Fast and easy minecraft server hosting inside a docker container
+- `icebucket`
+ - A small server-side plugin to allow players to add frost-walker to an iron bucket
+- `playergraph`
+ - Graph the vitals of every player on a Minecraft server in real time
+- `mapcap`
+ - A tool for taking "screenshots" of a minecraft map by hooking into dynmap
+- `shift3`
+ - A fast re-implementation of https://github.com/Ewpratten/shift
+- `dynfolio`
+ - Dynfolio is a web tool for displaying your Instagram profile as a photography portfolio
+- `tinygc`
+ - A small learning experiment in garbage collection
+- `shotpredict`
+ - ShotPredict is a software library for predicting the trajectory of objects launched through the air
+- `backblast`
+ - The UI/UX framework I use for web frontends when I don't want to do web work
+- `obfuj`
+ - A demonstration of visually obfuscating Java code
+- `simple-sensor-fusion`
+ - A small Java library and Android webapp for pose estimation of an FRC robot
+- `SnapAbuse`
+ - A script for quickly dealing with spam snapchat accounts to determine what they are trying to do.
+- `fsession`
+ - A simple library for sorting files based on the current session
+- `sliding-arm-manipulation`
+ - A project to design a system with a single jointed arm on a slider
+- `tapatalk-api`
+ - Interact with tapatalk via Python
+- `bust_scripts`
+ - Experimental bustabit betting scripts
+- `celltrackd`
+ - A tool for tracking people based on their network connectivity
+- `vessl`
+ - An experiment in isometric game development
+- `statix`
+ - Easily configurable and scriptable status bars
+- `tvdsb-student-life`
+ - The TVDSB Student Life app
+- `rules_avr`
+ - Bazel rules for build code using AVRC
+- `roborank`
+ - A tool for ranking FRC teams
+- `learning-drake`
+ - Source code from my process of learning how to use DRAKE
+- `driverstation`
+ - A tool for transmitting X-Input data to robot controllers running FRCNetComm
+- `ewvector`
+ - Vectors, Quantities, and Sizes
+- `yubiparse`
+ - A simple library for parsing yubikey OTP strings
+- `tictacsolve`
+ - A program for deciding the optimal move in tac-tac-toe for any given board state
+- `Rayzor2`
+ - A faster implementation of the Rayzor rendering engine
+- `libJames`
+ - Query @rsninja722's life from inside Python
+- `PathChaser`
+ - An experiment in autonomous movement inside an urban environment
+- `pixypose`
+ - An experiment in pose estimation with computer vision
+- `pysnapcode`
+ - Python scripts for working with snapcodes
+- `swarm`
+ - A virtual experiment in swarm-based robotics
+- `homebase`
+ - A webapp for tracking meeting participants
+- `GhostStat`
+ - Share your Google Fit or Apple HealthKit stats in SnapChat
+- `snapterm`
+ - Share your terminal to SnapChat
+- `containerFIRST`
+ - An entire FRC software development toolsuite in a Docker container
+- `pastefs`
+ - A filesystem based around hosting your files in someone else's cloud
+- `guikit`
+ - Build simple GUI programs in Java (an extension of PicoEngine)
+
+## Language statistics
+
+Wow! You made it to the end of the list!
+
+As a reward, here are some language statistics for the project list above. This does not include all languages, just the first few I queried from GitHub off the top of my head.
+
+
diff --git a/static/images/posts/unfinished-projects/commit_history.png b/static/images/posts/unfinished-projects/commit_history.png
new file mode 100644
index 0000000..0415950
Binary files /dev/null and b/static/images/posts/unfinished-projects/commit_history.png differ
diff --git a/static/images/posts/unfinished-projects/lang_stats.svg b/static/images/posts/unfinished-projects/lang_stats.svg
new file mode 100644
index 0000000..eace97d
--- /dev/null
+++ b/static/images/posts/unfinished-projects/lang_stats.svg
@@ -0,0 +1,332 @@
+
+
diff --git a/static/images/posts/unfinished-projects/private_to_md.py b/static/images/posts/unfinished-projects/private_to_md.py
new file mode 100644
index 0000000..d5a8f27
--- /dev/null
+++ b/static/images/posts/unfinished-projects/private_to_md.py
@@ -0,0 +1,7 @@
+import json
+
+file = json.load(open("./privates.json", "r"))
+file.reverse()
+
+for entry in file:
+ print(f"- `{entry['node']['name']}`\n - {entry['node']['description']}")
\ No newline at end of file
diff --git a/static/images/posts/unfinished-projects/privates.json b/static/images/posts/unfinished-projects/privates.json
new file mode 100644
index 0000000..b15a393
--- /dev/null
+++ b/static/images/posts/unfinished-projects/privates.json
@@ -0,0 +1,1423 @@
+[
+ {
+ "node": {
+ "name": "guikit",
+ "description": "Build simple GUI programs in Java (an extension of PicoEngine)"
+ }
+ },
+ {
+ "node": {
+ "name": "pastefs",
+ "description": "A filesystem based around hosting your files in someone else's cloud"
+ }
+ },
+ {
+ "node": {
+ "name": "containerFIRST",
+ "description": "An entire FRC software development toolsuite in a Docker container"
+ }
+ },
+ {
+ "node": {
+ "name": "snapterm",
+ "description": "Share your terminal to SnapChat"
+ }
+ },
+ {
+ "node": {
+ "name": "GhostStat",
+ "description": "Share your Google Fit or Apple HealthKit stats in SnapChat"
+ }
+ },
+ {
+ "node": {
+ "name": "homebase",
+ "description": "A webapp for tracking meeting participants"
+ }
+ },
+ {
+ "node": {
+ "name": "swarm",
+ "description": "A virtual experiment in swarm-based robotics"
+ }
+ },
+ {
+ "node": {
+ "name": "pysnapcode",
+ "description": "Python scripts for working with snapcodes"
+ }
+ },
+ {
+ "node": {
+ "name": "pixypose",
+ "description": "An experiment in pose estimation with computer vision"
+ }
+ },
+ {
+ "node": {
+ "name": "PathChaser",
+ "description": "An experiment in autonomous movement inside an urban environment"
+ }
+ },
+ {
+ "node": {
+ "name": "libJames",
+ "description": "Query @rsninja722's life from inside Python"
+ }
+ },
+ {
+ "node": {
+ "name": "Rayzor2",
+ "description": "A faster implementation of the Rayzor rendering engine"
+ }
+ },
+ {
+ "node": {
+ "name": "tictacsolve",
+ "description": "A program for deciding the optimal move in tac-tac-toe for any given board state"
+ }
+ },
+ {
+ "node": {
+ "name": "yubiparse",
+ "description": "A simple library for parsing yubikey OTP strings"
+ }
+ },
+ {
+ "node": {
+ "name": "ewvector",
+ "description": "Vectors, Quantities, and Sizes"
+ }
+ },
+ {
+ "node": {
+ "name": "driverstation",
+ "description": "A tool for transmitting X-Input data to robot controllers running FRCNetComm"
+ }
+ },
+ {
+ "node": {
+ "name": "learning-drake",
+ "description": "Source code from my process of learning how to use DRAKE"
+ }
+ },
+ {
+ "node": {
+ "name": "roborank",
+ "description": "A tool for ranking FRC teams"
+ }
+ },
+ {
+ "node": {
+ "name": "rules_avr",
+ "description": "Bazel rules for build code using AVRC "
+ }
+ },
+ {
+ "node": {
+ "name": "tvdsb-student-life",
+ "description": "The TVDSB Student Life app"
+ }
+ },
+ {
+ "node": {
+ "name": "statix",
+ "description": "Easily configurable and scriptable status bars"
+ }
+ },
+ {
+ "node": {
+ "name": "vessl",
+ "description": "An experiment in isometric game development"
+ }
+ },
+ {
+ "node": {
+ "name": "celltrackd",
+ "description": "A tool for tracking people based on their network connectivity"
+ }
+ },
+ {
+ "node": {
+ "name": "bust_scripts",
+ "description": "Experimental bustabit betting scripts"
+ }
+ },
+ {
+ "node": {
+ "name": "tapatalk-api",
+ "description": "Interact with tapatalk via Python"
+ }
+ },
+ {
+ "node": {
+ "name": "sliding-arm-manipulation",
+ "description": "A project to design a system with a single jointed arm on a slider"
+ }
+ },
+ {
+ "node": {
+ "name": "fsession",
+ "description": "A simple library for sorting files based on the current session"
+ }
+ },
+ {
+ "node": {
+ "name": "SnapAbuse",
+ "description": "A script for quickly dealing with spam snapchat accounts to determine what they are trying to do."
+ }
+ },
+ {
+ "node": {
+ "name": "simple-sensor-fusion",
+ "description": "A small Java library and Android webapp for pose estimation of an FRC robot"
+ }
+ },
+ {
+ "node": {
+ "name": "obfuj",
+ "description": "A demonstration of visually obfuscating Java code"
+ }
+ },
+ {
+ "node": {
+ "name": "backblast",
+ "description": "The UI/UX framework I use for web frontends when I don't want to do web work"
+ }
+ },
+ {
+ "node": {
+ "name": "shotpredict",
+ "description": "ShotPredict is a software library for predicting the trajectory of objects launched through the air"
+ }
+ },
+ {
+ "node": {
+ "name": "tinygc",
+ "description": "A small learning experiment in garbage collection"
+ }
+ },
+ {
+ "node": {
+ "name": "dynfolio",
+ "description": "Dynfolio is a web tool for displaying your Instagram profile as a photography portfolio"
+ }
+ },
+ {
+ "node": {
+ "name": "shift3",
+ "description": "A fast re-implementation of https://github.com/Ewpratten/shift"
+ }
+ },
+ {
+ "node": {
+ "name": "mapcap",
+ "description": "A tool for taking \"screenshots\" of a minecraft map by hooking into dynmap"
+ }
+ },
+ {
+ "node": {
+ "name": "playergraph",
+ "description": "Graph the vitals of every player on a Minecraft server in real time"
+ }
+ },
+ {
+ "node": {
+ "name": "icebucket",
+ "description": "A small server-side plugin to allow players to add frost-walker to an iron bucket"
+ }
+ },
+ {
+ "node": {
+ "name": "coreserv",
+ "description": "Fast and easy minecraft server hosting inside a docker container"
+ }
+ },
+ {
+ "node": {
+ "name": "jekyll-wiki",
+ "description": "A small and lightweight jekyll wiki theme"
+ }
+ },
+ {
+ "node": {
+ "name": "remoduino",
+ "description": "A project to turn AVR-based Arduino devices into scriptable devices over UART"
+ }
+ },
+ {
+ "node": {
+ "name": "amongus-hacking",
+ "description": "Playing with the Among Us multiplayer protocol"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMDAwMzEwNzM=",
+ "name": "combat-tracer",
+ "description": "Adds the \"Tracing\" enchantment to Minecraft, allowing the player to mark entities by hitting them"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMDAxMDM4Mzk=",
+ "name": "offload",
+ "description": "Multi-host hardware interfaces with RPC-over-serial"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMDE0MTA4NDk=",
+ "name": "textual",
+ "description": "A web graphics engine based around visual story telling"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMDM3MjcxMDI=",
+ "name": "mc-analytics",
+ "description": "A tool for analyzing Minecraft server logs"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMDQ0NTQ4MjY=",
+ "name": "randomart",
+ "description": "Generates SSH randomart from any file"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMDYwNDYxMDE=",
+ "name": "snapfinder",
+ "description": "A tool for scraping snapchat accounts out of instagram bios"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTA2NjY5ODc=",
+ "name": "grafana-nt",
+ "description": "A Grafana datasource for NetworkTables servers"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTE0MDMxMTk=",
+ "name": "voxelmc-pipeline",
+ "description": "Sponge schematic -> VOX data processing pipeline"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTM3Nzc3NjU=",
+ "name": "thirdparty-mod-docs",
+ "description": "Automatic Javadoc generation for other people's Minecraft mods"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTQxMjgzNzk=",
+ "name": "backblaze",
+ "description": "Rendering improvements for Minecraft"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTQ4MjQzMzc=",
+ "name": "smtp-send",
+ "description": "A tool for sending email using direct SMTP connection"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTQ4OTgzMTA=",
+ "name": "lp2joy",
+ "description": "Convert Novation Launchpad inputs to Joystick buttons"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTQ5MjEyNjE=",
+ "name": "launchlib",
+ "description": "Interact with MIDI controllers"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTUwOTY5MzA=",
+ "name": "fastrender",
+ "description": "Quick, simple, and easy to use graphics"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTY2MjkwOTU=",
+ "name": "quickxor",
+ "description": "A tool and file format for encoding and decoding data with an ASCII key"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTY3NDUwNzI=",
+ "name": "vscode-poetry",
+ "description": "Visual Studio Code extension for the Poetry build tool"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTY4MTIxMzQ=",
+ "name": "dynmap_heatmap",
+ "description": "A GUI tool to generate a real-time heatmap of the positions of Minecraft players via the Dynmap API"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTcwMTg4NTY=",
+ "name": "mobile_cv_passthrough",
+ "description": "An experimental Android app for running basic OpenCV video pipelines on-device"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTcwMjUyMzM=",
+ "name": "amongus_hooks",
+ "description": "A Python library for interacting with a local instance of Among Us on a Windows host"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTc3MjA3NTI=",
+ "name": "flashbg",
+ "description": "Flash BattleGrounds is a fast-paced multiplayer arena battle game"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTgwMjM2ODQ=",
+ "name": "REGEXResolver",
+ "description": "A small and simple asset resolver for the Pixar USD framework, based on REGEX rules"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTgyMzk3MDE=",
+ "name": "quicksds",
+ "description": "A small Python library that extends dataclasses to allow packing and unpacking"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTk1MDIxNzg=",
+ "name": "no-wurst-logo",
+ "description": "A small fabric mod to completely disable the Wurst client logo"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMTk3NjgyMTU=",
+ "name": "robolib",
+ "description": "A Python library containing various tools I developed during my time in highschool robotics"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjIwODI5MTk=",
+ "name": "repeatermap",
+ "description": "An interactive map showing VHF and UHF amateur radio repeaters throuought the world"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjM2NTU5ODY=",
+ "name": "open-london",
+ "description": "A simple API for querying data about the city of London Ontario"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjM3MzQxMTc=",
+ "name": "xlog",
+ "description": "Cross-platform PWA for logging radio contacts, and syncing between devices"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjQ0MzQxNjk=",
+ "name": "rules_teensy",
+ "description": "A collection of Bazel rules for the teensy microcontroller family"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjQ0Nzc3ODA=",
+ "name": "nativetools",
+ "description": "My personal toolchain for developing code using the Java Native Interface"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjQ5MDc1MDU=",
+ "name": "toy.social",
+ "description": "A personal learning project where I create a simple social platform for sharing text-based posts"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjQ5MDk2NDc=",
+ "name": "codestyle.css",
+ "description": "CodeStyle is a small CSS+JS project I built to nicely style Kramdown code blocks"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjY0NTE5Nzc=",
+ "name": "rayconsole",
+ "description": "A graphical debug console for use in Java RayLib applications"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjY1MDc0NTY=",
+ "name": "RayJava",
+ "description": "Raylib bindings to Java using cross-compiled JNI"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjgyMjc0NDk=",
+ "name": "koctl",
+ "description": "A tool for interacting with Kobo hardware on-device"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjgyNzIxMzQ=",
+ "name": "repeaterbook2gqrx",
+ "description": "A tool for exporting a list of repeaters from RepeaterBook as a GQRX bookmark file"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjkzNTQzOTk=",
+ "name": "AutoBCN",
+ "description": "Simple CW beacon driver"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMjk5NDUwNjY=",
+ "name": "baremetal-avr",
+ "description": "C++ tools for working with AVR microprocessors"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzIwNzI1MjE=",
+ "name": "openbandplan",
+ "description": "A web-viewer for ITU region 2 band plans"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzI0NzI4NTI=",
+ "name": "LiteIO",
+ "description": "A lightweight HAL for systems I commonly use"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzM3OTQ2NzE=",
+ "name": "VarStrings",
+ "description": "Non-constant String types for Java"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzQwMzE3MDE=",
+ "name": "tooltips",
+ "description": "Meta extensions to Java, allowing custom tooltips in source"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzQyNDIyNDc=",
+ "name": "sdrexplorer",
+ "description": "A web tool for exploring WebSDR servers globally"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzQ5ODgzNzE=",
+ "name": "PlayerStats",
+ "description": "A Minecraft server plugin for tracking client-server activities"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzUzMzA2MjQ=",
+ "name": "ChatBridge",
+ "description": "Bridge Minecraft chat to a Discord channel"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzU3NDIxNDU=",
+ "name": "hookback",
+ "description": "Remote monitoring for Java applications"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzgzNjM0MjE=",
+ "name": "MapLink",
+ "description": "The missing link between Dynmap and your Minecraft client"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzg4MjAyNDY=",
+ "name": "SDRInterface",
+ "description": "Web front-end for my WebSDR server"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzkyMTk2MjE=",
+ "name": "jarcon",
+ "description": "A lot of recon in a little bit of jar (A tool for hiding telemetry services in Java applications)"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzMzk4NTkxOTQ=",
+ "name": "rq",
+ "description": "A scalable rendering pipeline"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDAwOTI2NTA=",
+ "name": "plugin-core",
+ "description": "Core API shared across my Spigot / PaperMC plugins"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDAyMDIwMTM=",
+ "name": "update-notifier",
+ "description": "A small Java library to provide software update notifications to users"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDEyODgzMjA=",
+ "name": "glass-engine",
+ "description": "A dead simple 2d game engine build from past experience"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDEzMTY2ODA=",
+ "name": "bionic",
+ "description": "A robotics framework"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDE0MDU4ODM=",
+ "name": "mathutils-py",
+ "description": "Python port of MathUtils"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDE1OTAyMTQ=",
+ "name": "control-rs",
+ "description": "Rust ports of various basic control loops and systems"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDE3MTk5OTk=",
+ "name": "basic-control",
+ "description": "Basic systems and controllers for Python"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDIyNjI0ODA=",
+ "name": "mathutils-rs",
+ "description": "Rust port of my MathUtils library"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDIzNzM0NzA=",
+ "name": "maven-edge",
+ "description": "Tools to deploy personal maven edge servers anywhere, any time"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDI2MjMwNjQ=",
+ "name": "rayray-demo",
+ "description": "3D rendering 3D objects, ray-traced in 3D. An experiment"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDMxODQ5MDE=",
+ "name": "twentytwo",
+ "description": "A Minecraft server plugin that adds a new music disc type"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDM1MjAxMDY=",
+ "name": "wxbcn",
+ "description": "A project to create a local area CW beacon providing temprature and light level informaiton"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDM4MTM0ODE=",
+ "name": "tws-bs-x-morse",
+ "description": "Platform-agnostic Rust driver for the TWS-BS series high-power wireless transmitter modules. This driver is specifically for sending data encoded as morse code"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDQ0ODcwMDM=",
+ "name": "propagation-app",
+ "description": "A simple android app for displaying HF and VHF propagation information"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDU2OTk1NDY=",
+ "name": "logbook",
+ "description": "Clean and simple log-keeping program for amateur radio operators"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDY3NTQ5NDU=",
+ "name": "ham-status",
+ "description": "An experimental dashboard for amatuer radio operators"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDgwMDkyMzE=",
+ "name": "hambadges",
+ "description": "Embeddable badges for amatuer radio operators"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDkwNzQ0Njk=",
+ "name": "py-aprsfi-api",
+ "description": "An aprs.fi API client for Python"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNDkxNDY5NzQ=",
+ "name": "avr-rust-utils",
+ "description": "Some utility functions for working with Rust AVR code"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTA3Mzc4Nzg=",
+ "name": "repeater-info",
+ "description": "Web-based amateur radio repeater information"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTA4MzE0MjQ=",
+ "name": "path3d",
+ "description": "A demonstration of 3D path solving"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTE0NTY2NjM=",
+ "name": "nodelink",
+ "description": "Dockerized internet radio nodes"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTI2OTQ5NDQ=",
+ "name": "tinyos",
+ "description": "A tiny OS"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTM3NTg0MzQ=",
+ "name": "burstfetch",
+ "description": "A very simple BitTorrent implementation"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTM4MjI0OTI=",
+ "name": "bdl",
+ "description": "Small and fast HTTPS file downloader"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTQwMzQxMjU=",
+ "name": "raylib-tweaks",
+ "description": "Some small tweaks and extensions on raylib to make it a little more Rust-friendly"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTQzNzU1NzM=",
+ "name": "cone-of-vision-demo",
+ "description": "A small app demonstrating cone-of-vision rendering in 2D"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTc2MDQxODc=",
+ "name": "raylib-imgui-rs",
+ "description": "Raylib + Dear ImGui. In Rust"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTc5NjUwMzA=",
+ "name": "GameTK",
+ "description": "A game development and 3D rendering framework"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTgzMTcxNDQ=",
+ "name": "slyce",
+ "description": "An experiment in low-complexity game development"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNTgzMjQ2MTI=",
+ "name": "raylib-tessellation",
+ "description": "A bridge between Lyon and Raylib, allowing easy GPU path tessellation"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjAyMzQ0MzY=",
+ "name": "aprtwt",
+ "description": "APRS <-> Twitter bridge"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjAyNzI1OTQ=",
+ "name": "spawn-server",
+ "description": "Experimental Minecraft server infrastructure"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjIxMjkwMTE=",
+ "name": "git-time",
+ "description": "Graph time spent on a Git project"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjMyMzExNTQ=",
+ "name": "lcx",
+ "description": "LaunchControlX: A custom macro pad"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjYwNjA4ODY=",
+ "name": "repeatermon",
+ "description": "A tool for monitoring repeater activity"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjYzOTQwODA=",
+ "name": "ZZALOG",
+ "description": "VA3ZZA's Amateur Radio logging software"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjc2MzQ3MDA=",
+ "name": "autojson",
+ "description": "Automatic JSON serialization and deserialization macros for Rust"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjc5MTA5NDM=",
+ "name": "stratosphere-r6",
+ "description": "A tool for estimating Rainbow Six Siege match results"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjg1NTQ0ODc=",
+ "name": "breaktrack",
+ "description": "A simple crawler for broken URLS on a webpage"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjk1MzE4ODE=",
+ "name": "packtool",
+ "description": "A tool for managing Minecraft modpacks"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNjk4Mjc2OTU=",
+ "name": "lmvn",
+ "description": "A small tool for managing local maven repositories"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzEwMzgzMzc=",
+ "name": "wg-dash",
+ "description": "A dashboard for WireGuard servers"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzMxNjQ3MDQ=",
+ "name": "leapmotion-rs",
+ "description": "Rust bindings for the LeapMotion V2 API"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzM1MDQ4NzA=",
+ "name": "improc",
+ "description": "Image processing and filtering in Rust"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzM1MTcxMjY=",
+ "name": "lightpanel",
+ "description": "A tool for turning my computer monitors into configurable light sources for my room"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzUwNDE4MDk=",
+ "name": "mdviz",
+ "description": "Multi-dimensional graphing tool"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzUwODI5OTA=",
+ "name": "pixyusb2-rs",
+ "description": "Rust bindings for `libpixyusb2`"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzU0MjY2MTQ=",
+ "name": "gnn",
+ "description": "An experiment in building a generic neural network"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzc4NjM0OTY=",
+ "name": "ampersand",
+ "description": "A build tool for Rust-based Android apps"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzgxNTA4MDk=",
+ "name": "vision-types",
+ "description": "Datatypes and utils related to computer vision targets"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzgxNjYzNDI=",
+ "name": "ewpose",
+ "description": "\"ewpratten's positioning library\""
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzkzMzY5ODg=",
+ "name": "ludum-dare-48-rework",
+ "description": "A design rework of our Ludum Dare 48 game: Deep Breath"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzNzk5NDA0MjQ=",
+ "name": "tvdsb-student-api-rs",
+ "description": "Rust API for interacting with Thames Valley District School Board student information"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODAzMzYyOTI=",
+ "name": "pathwarn",
+ "description": "A library for providing useful feedback about invalid paths passed to Rust applications"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODA1MjEzOTc=",
+ "name": "nv",
+ "description": "An environment management tool"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODA1MjkwNzM=",
+ "name": "kxsvc",
+ "description": "Local gRPC service for programmatic control of Elecraft KX2 and KX3 transceivers"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODA1MzIyNDI=",
+ "name": "kx2-rs",
+ "description": "Rust library for serial control of the Elecraft KX2/KX3 transceivers"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODE3NDA4MDM=",
+ "name": "zzarl",
+ "description": "VA3ZZA Amateur Radio Logging software"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODI3NDEzNzU=",
+ "name": "ut",
+ "description": "Usage Tracking API"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODMxNTYxMzQ=",
+ "name": "tiny-analytics",
+ "description": "Small and efficient analytics engine for my personal projects"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODQ0NDQzMjg=",
+ "name": "csrpc",
+ "description": "Crazy Simple RPC library"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODQ0OTQxMjY=",
+ "name": "minecraft-wasmtime-experiment",
+ "description": "Experiment in loading plugins into Minecraft with Wasmtime"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODQ5ODg0MTk=",
+ "name": "strands",
+ "description": "Basic and experimental physics toys"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODUwMDY0OTY=",
+ "name": "xplre",
+ "description": "XPLRE: A small 2d game"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODUwMTQ4OTk=",
+ "name": "error-adaptor",
+ "description": "Utility macros for wrapping external error types in Rust"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODUyODI1NzA=",
+ "name": "egui-raylib-rs",
+ "description": "Raylib integration for egui"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODcwMDYzMTU=",
+ "name": "zndfrm",
+ "description": "A procedural audio engine"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODcxOTI0Mjc=",
+ "name": "disco",
+ "description": "Simple network discoverability service"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzODk0NTUyMzc=",
+ "name": "fileshare",
+ "description": "Personal file-sharing service"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzOTA3OTY3OTU=",
+ "name": "network-monitor",
+ "description": "A tool for logging network drops"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzOTA4Mzg3NDc=",
+ "name": "tinygl-rs",
+ "description": "Rust bindings to tinygl"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzOTM3MTU1NDY=",
+ "name": "discord-framework",
+ "description": "Easily build Discord bots by defining them using JSON data"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzOTM5OTgxNTA=",
+ "name": "open-echo-proxy",
+ "description": "An open-source echolink proxy server"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzOTUwMTQ3NTg=",
+ "name": "vec-convert",
+ "description": "A translation layer between the many Rust vector types"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzOTYwMzg4MDI=",
+ "name": "spac",
+ "description": "Abstract mathematical types for library interop with easy-to-use interfaces"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzOTYwNTM4NDE=",
+ "name": "rtiod",
+ "description": "Ray-Tracing In One Day: A random project to fill my time"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnkzOTgwNTQwMzk=",
+ "name": "gpu-avg",
+ "description": "Learning experiment for executing headless compute shaders"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnk0MDAyNTIwOTE=",
+ "name": "kobodash",
+ "description": "A simple dashboard application for the Kobo Aura"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnk0MDA1MTE1MjE=",
+ "name": "morsencode",
+ "description": "Experimental data encoding algorithm based around morse code"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnk0MDIxOTAyNDQ=",
+ "name": "cloth-toy",
+ "description": "2D cloth simulation toy"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnk0MDMzNTU5Njg=",
+ "name": "ewc",
+ "description": "C-compatible core library for quick development shortcuts in various languages"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnk0MDUyMDM0MDc=",
+ "name": "discord-map",
+ "description": "Generates a graphviz map of all your Discord servers"
+ }
+ },
+ {
+ "node": {
+ "id": "MDEwOlJlcG9zaXRvcnk0MDc1NDY1NTQ=",
+ "name": "sonr",
+ "description": "A voice chat control library built on Serenity and Songbird"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGKDEdQ",
+ "name": "tyler",
+ "description": "A custom `tiled` map loader"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGKsx4A",
+ "name": "egf",
+ "description": "Evan's Game Framework: Everything you need to build a 2D game"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGK5Ssg",
+ "name": "r3_pipeline",
+ "description": "Video game and animation production pipeline (Used for **\\[data::loss\\]**)"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGOy-aA",
+ "name": "darkdns",
+ "description": "A standalone Docker-based DNS server that resolves lesser-recognized domains"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGPif-Q",
+ "name": "ampr-minecraft",
+ "description": "Minecraft server for stress-testing an edge router"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGRGoVg",
+ "name": "discolytica",
+ "description": "A tool for tracking discord data into an analytics database"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGR_qng",
+ "name": "usd-tutorial-files",
+ "description": "Scripts from Pixar's USD tutorials"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGU8_WQ",
+ "name": "vox2usd",
+ "description": "Convert from the Magica Voxel file format to Universal Scene Description"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGVB7Uw",
+ "name": "strangle",
+ "description": "Experimental voxel art pipeline"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGWlwWQ",
+ "name": "hamscan",
+ "description": "Frequency monitoring and web visualization based on `rtl_power`"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGXm44g",
+ "name": "repeaterstack",
+ "description": "A full amateur radio simplex node / remote repeater"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGZOxKw",
+ "name": "tinylink",
+ "description": "An alternate repeater linking project"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGZjGag",
+ "name": "protocrypt",
+ "description": "An experimentation in XOR-ing data"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGZlSGA",
+ "name": "shoot-to-interact",
+ "description": "A game with one option: shoot"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGZoyoQ",
+ "name": "MiwuStickers",
+ "description": "A custom sticker pack"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGZtGsg",
+ "name": "betaroute",
+ "description": "A peer-to-peer routing tool (example implementation of [this RFC](/rfc/modern-repeater-linking))"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGZ7sKQ",
+ "name": "amprdns",
+ "description": "An alternate DNS service, only avalible to 44net hosts"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGcxcBg",
+ "name": "EmmetMob",
+ "description": "A minecraft mod that turns my friend into an entity"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGdDqow",
+ "name": "tiny-osc",
+ "description": "Morse code practice ocillator built on the Atmel ATtiny85 platform"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGdFEKw",
+ "name": "MuchPerformance",
+ "description": "A minecraft performance modpack"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGdYxbQ",
+ "name": "rc2d",
+ "description": "A 2D raycasting library for line-of-sight lighting in 2D games"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGfeDnw",
+ "name": "mitechlib",
+ "description": "A library for interacting with Mitech smart connected laundry machines"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGifO_A",
+ "name": "microfetch",
+ "description": "An over-simplistic portable command-line system information tool"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGiyiGw",
+ "name": "wtf",
+ "description": "A utility for dumping large amounts of information about a host"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGkoJvw",
+ "name": "dynmap-viewer",
+ "description": "A high-performance desktop client for Dynmap"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGkydgg",
+ "name": "multirss",
+ "description": "A minimalist RSS aggregator"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGk2JNQ",
+ "name": "MultiAuth",
+ "description": "A development tool to allow a mix of premium and \"offline mode\" accounts to join a Minecraft server"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGlTCew",
+ "name": "blink-client",
+ "description": "A simple client for Blink home security cameras"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGlf2QQ",
+ "name": "blink-camera-api",
+ "description": "A partial API client for Amazon/Blink cameras"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGmD9Yw",
+ "name": "dst-rpc",
+ "description": "Discord RPC (Rich Presence) support for @kleientertainment's Don't Starve Together (precursor to animal-loader)"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGmX80Q",
+ "name": "ewpratten-commit-stats",
+ "description": "A private api for querying my GitHub ranking in Canada"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGmr6gQ",
+ "name": "render-test",
+ "description": "An experimental game that only uses ASCII art for rendering"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGoQgqQ",
+ "name": "proxmark-rs",
+ "description": "A Proxmark3 client library for Rust"
+ }
+ },
+ {
+ "node": {
+ "id": "R_kgDOGoXonw",
+ "name": "CardStudio",
+ "description": "A tool for working with various RFID cards using Proxmark devices"
+ }
+ }
+]
\ No newline at end of file