This page is an automatic reverse-chronological list of things I have worked on.
An rss feed is also available.
Protective casing for my TG4x
I made a custom 3D-printable protective case insert for my main mechanical keyboard using OpenSCAD
Lazy search for Mastodon accounts
I made a custom search prefix for my browser that can resolve ActivityPub accounts into their profile pages
I re-implemented ls to query the Steam API
gamels will list all files in a directory in the style of 'ls -la', but will also show the name of any Steam game found in the listing. This utility was made to help me explore the filesystem of the Steam Deck.
"Channels" is a single by Evan Pratten, released on November 25, 2022.
A10U8R: Signal Attenuator
A10U8R is a simple signal attenuator for VCV Rack.
An analysis of personal ASNs in the wild
A look at the usage of personal ASNs based on freely available data
"Summer Tracks." is a single by Evan Pratten, released on September 10, 2022.
A small update post about some website changes
Rickrolling the internet
This post covers some of the logistics behind rickrolling the internet with some clever routing tricks.
Using a Steam Controller with the Nintendo Switch
How to flash custom firmware to the Steam Controller, allowing it to connect to the Nintendo Switch
Getting Visual Paradigm to launch on Fedora 36
A quick guide on launching Visual Paradigm on Fedora 36
Field Log: First look at the NanoVNA
I went out in the field and tried out my brand new NanoVNA.
Commit syncing across hosted GIT instances
This post covers how to keep your commit graph alive across multiple GIT instances by syncing your commit history to magic repos.
The @entry decorator
@entry is designed to be a simple decorator for declaring main functions in python
Space & Time, Vol. 1
"Space & Time, Vol. 1" is an EP by Evan Pratten, released on May 7, 2022.
Crash reporting for Rust programs
A set & forget crate that appends a button to your application's panic messages allowing users to quickly report basic diagnostic information back to you.
Kobo e-reader interface library
A a minimal Rust library for interacting with modified Kobo e-readers. This is designed for use in applications running on the Kobo, not over the network.
Making my UDM-Pro scream
A project review post covering my work on remote-control for the UDM-Pro cooling system
A Linux command-line tool for configuring your drawing tablets.
Monocular depth mapping in Blender
This post covers the process I went through to write a Neural-Network-assisted Blender plugin for converting monocular images into 3D textured meshes.
"Scale Hop" is a single by Evan Pratten, released on January 6, 2022.
Unfinished projects and failed ideas
My GitHub profile 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. This post covers the hidden failed projects.
NetBrowse: an avahi-browse GUI
This tool is used to quickly inspect a network for hosts that publicly expose their services.
A rusty guide to quaternions
This post is an overview of Quaternions for Rust programmers, and anyone willing to learn.
Adventures in BGP: routing my own public IPv4 address space
This post covers the process I went through to publicly route my own /24 block of IP addresses with low-cost hardware.
Ludum Dare 49: [data::loss]
[data::loss] is a fast-paced side-scroller platforming game where you navigate a world full of graphical inconsistencies that have a habit of causing physical consequences.
An overview of the tech on a complex FRC robot
This document is aimed at a small handful of people, but published publicly as reference material for anyone that needs it. All contents are highly specific to the FRC robotics electrical and programming environments.
A "Quick and Dirty" implementation of a finite state machine, derived from another of my libraries: LibKontrol
A real-time dashboard for my dorm room's wall-mounted TV
One-way APRS position reporting using APRS-IS
A fast boids library for Rust
The 'boids' crate is a reasonably fast implementation of the Boids algorithm in Rust
SpaceTrace: 3D path planning
SpaceTrace is the 3rd revision of my 2D/3D path planning algorithm.
This is a Rust library for using the Serde serialization framework with Jekyll-style front matter.
tsinfo is a CLI tool for providing information about a specific UNIX timestamp.
Configuring a native SSH server on Windows 10
I commonly need to configure SSH servers on remote Windows 10 boxes. This post covers the whole process.
Internet Teletype Reader
ittyr is a CLI Internet Teletype client that decodes and outputs ITTY messages in real time as they are being streamed through the ITTY service.
OpenDepthMap is an experiment in Binocular Depth Mapping, based around the ultraleap's first generation LeapMotion hand tracking sensors.
A tool for converting Baofeng bookmarks to GQRX bookmarks
GlassCast: 2D glass rendering experiment
GlassCast is a raytracing (more like raycasting) experiment revolving around glass material with subtractive coloring.
Ludum Dare 48: Deep Breath
Deep Breath is an exploration game where you explore an underwater cave in hopes of finding your lost transponder. Items and upgrades can be acquired along the way to assist your search.
Building a cheap APRS digipeater
Using an extra radio and some spare parts, I set up an APRS/APRS-IS/APRStt digipeater. This post covers some of the details.
Boop: An experimental implementation of ping(8)
boop is a commandline tool that aims to be a super simple cross between ping and nmap. The tool can quickly probe hosts using ICMP ping packets, and report their status.
PolyMesh: A custom 3D file format
PolyMesh is a custom 3D object description file format I designed as an experiment. The PolyMesh file format and toolset are specifically designed for 3D rendering applications.
A small extension for cargo that allows you to fetch your publish token from the command line
A small CLI tool for checking who is playing on a Minecraft server.
Send APRS beacons over IP from your terminal
A script that generates APRS packets based on cli arguments, and sends them to the APRS-IS network
How I flashed QMK to my Vortex Core
After having some issues with the factory firmware on my 40% keyboard, I decided to replace it with the widely used QMK firmware instead.
An interactive Pure Pursuit demo
An interactive demonstration of the Pure Pursuit algorithm used by Raider Robotics
A tool for graphing 3d positional data extracted from DJI drone telemetry
Using KBFS as a makeshift maven server
In my never-ending hunt for a suitable solution for hosting Java libraries, I take a stop to try out Keybase Filesystem (KBFS)
MinimapServer is an open-source re-implementation of xaero96's Minimap API for his popular Xaero's Minimap and Xaero's World Map Minecraft mods.
Direct Memory Access for Java
A Java library that provides c-like malloc() and free() functions, along with many others. All functions operate off-heap, meaning no need to deal with the garbage collector
The Blood Cod plugin pack
A custom Minecraft server plugin pack that was built to enhance the playing experience of a private server by integrating server lore into the base game mechanics
Minecraft market cap calculation
A Minecraft server plugin that scans all inventories in a world to estimate the number of certain items in circulation.
HamBands - Rust Library
A small library for checking which amateur radio band a frequency belongs to
A CW/morse code paddle built with an atmega32u4 processor
The Reverse Beacon Network in your terminal
'rbn' is a small CLI interface to the Reverse Beacon Network, displaying all global network spots in real time as a formatted feed in a terminal.
Reverse Beacon Network client for Python
A commandline application and Python library for obtaining real-time data from the Reverse Beacon Network
A server-side Minecraft plugin that adds a new item, the Frost Bucket
Tunneling a printer from a home network to a VPN
I use a self-hosted VPN to access all my devices at all times, and to deal with my school's aggressive firewall. This post explains the process I use for exposing my home printer to the VPN.
2020 has been my most productive year so far in terms of software development. This post looks back at the year
Mandelbrot Set Viewer
This project is a fairly simple fractal viewer for the Mandelbrot Set that utilizes JNI calls to perform intense calculations outside the JVM
How I have tweaked my Minecraft client to be 'just right'
Over the past 10 years, I have been building the perfect Minecraft experience for myself. This post shares the collection of mods I run, and why I use them.
A console chat client for most Minecraft server versions
Upgrading my chromebook
Performing some upgrades to my old laptop. This post outlines the setup process for installing GalliumOS
Minecraft LAN Server Discovery
A Python library and CLI tool for discovering Minecraft LAN worlds / servers on your local network
Multi-view Dynmap client
An application for providing a multi-user bird's-eye view of players on Minecraft servers that have the Dynmap plugin installed
LegalAccess is a small Java library that wraps some commonly used reflection code for fetching / modifying private variables and methods.
Connecting to a Minecraft server over IRC
This post outlines the process of writing a custom IRC server that can bridge between your favorite IRC client, and any Minecraft server
My first mechanical keyboard: The Vortex Core
I recently purchased my first mechanical keyboard, and decided to go "all in" with a 40% layout.
A tool that will produce a ranked list of contributors for a GitHub organization based on commit count across all repos
A local bridge between a Minecraft server and your favorite IRC client
Using Bazel to create Minecraft modpacks
I decided to modernize my system for producing builds of my personal Minecraft modpack using the Bazel buildsystem.
Mounting Google Drive accounts as network drives
I can never get the Google Drive webapp to load quickly when I need it to. My solution: use some command-line magic to mount my drives directly to my laptop's filesystem.
Reading metadata from a bitmap file
Inspired from one of my friend's projects, I built a small tool for displaying bitmap file info from the command line.
A Python library for interfacing with a Minecraft server running Dynmap
My workflow: video conference edition
As my courses have moved mostly online, I have looked to improve my live video setup. This post covers how I stream sharp HD video at home, and some interesting quirks of the setup.
Not Enough Reviews
An alternate minimal frontend for GitHub repositories
Building a mini maven server
In this post, I explain the process of building my own personal maven server, and show how simple maven servers really are.
Integrating GitHub Codespaces with FRC
I was recently accepted into the GitHub Codespaces beta test program and decided to try it out on the largest open source project I am currently involved with.
Compiling AVR-C code with a modern build system
In this post, I cover my process of combining low level programming with a very high level buildsystem.
LibEPN (Easy Pose Notation) is a Java library designed to provide an easy-to-use interface for 3D position and orientation.
Taking notes with Markdown and LaTeX
I have completely reworked my school notetaking system to use LaTeX. This post outlines how I did everything, and my new workflow.
An API client and command-line application for interacting with @salamander2's TimeAndPlace service over a network
Notes from FRC: Autonomous point-to-point navigation
This post is a continuation on my "Notes from FRC" series. This time, I cover an extremely simple, yet very effective way to get a tank-drive robot from A to B autonomously.
A tool for visualizing an FRC robot's pose in real time
Notes from FRC: Converting joystick data to tank-drive outputs
This post covers the algorithm I devised for converting joystick data to motor commands at Raider Robotics
TVDSB Student API
A Python library and cli tool for interacting with the TVDSB Student Portal service
Raider Robotics Testbench
A tool for performing hardware tests and measurements on various mechanical subsystems
VSCO batch downloader
A script for downloading a batch of images from a VSCO user account
Lib5K is a robotics software library built and maintained by Raider Robotics, and is used by FRC teams world-wide.
A Kernel for use on 32u4 AVR chips.
Flashing code to a 32u4 chip
A reference post that explains how to flash new software to an atmega32u4 chip
Running RoboRIO firmware inside Docker
This post covers how to run a RoboRIO's operating system in Docker
Ludum Dare 46: Jamming with friends
A look back at the development of Micromanaged Mike
Common scripts I use to quickly build classifiers for people's faces, and a little visualization tool to check the results
Raider Robotics IMS
The 5024 Inventory Management System (IMS) is a small side-project designed by two team members to provide a simple tool for locating items in our team's shop.
Robot reveal: Darth Raider
Darth Raider is a competitive robot built by Raider Robotics.
Compiling BrainFuck with a shell script
That was easy
A toy raytracer, built as a highschool computer science final project.
I used cron for the first time
And I didn't die
Programming a live robot
Living on the edge is an understatement
Using an RNN to generate Bill Wurtz notes
Textgenrnn is fun
Building images from binary data
Simple, yet fun
Doing Python OOP the wrong way
In the name of science!
A tool for exporting your posts from devRant for offline storage
I did some cleaning
Spring cleaning is fun when it isn't spring, and a computer does all the work
The shift2 encoding algorithm
Shift was designed to store non-critical text data in such a way that only keyholders could reconstruct a useful message
Keyed data encoding with Python
XOR is pretty cool
My weird piece of EDC
Reasons why I always carry NFC cards with me
Photos from Nova Scotia
My favorites from a larger collection of photos taken in Nova Scotia
Mind map generation with Python
Taking a look back at GMAD
Fun, Simple, and Quick
Scraping FRC team's GitHub accounts to gather large amounts of data
There are a lot of teams...
The DNS over devRant service
Hunting snakes with a shotgun
Python is a little too forgiving
I had some fun with a router
cleartext passwords + external management = death wish
A tool for driving people crazy
The language hunt: Part 2
A quick followup
I gave Google's CTF a short try and learned a thing or two
But exams got in the way and took all the fun
What I have learned from 2 years of FRC programming
Robots are pretty cool
Graphing the relation between wheels and awards for FRC
AKA. Why programmer + reddit + matplotlib is a bad idea.
GitHub's CSS is boring. So I refreshed the design
A purposefully bad flappy bird clone, built for a highschool computer science class
The language hunt
A kernel / os for the atmega328p
Robot reveal: HATCHField
HATCHField is a competitive robot built by Raider Robotics.
The Open Driver Waypoint Coordinator
A utility for scheduling driving instructors using Google maps data
Exit Code One
The c / c++ compiler written in python that never compiles without errors
The Dirobium Assembler
The official bootloader for the Dirobium emulator
The virtual CPU (and emulator) built for hobbyists
Pi-hole API wrapper for Python
A python3 wrapper for the Pi-hole api that aims to eventually be a full replacement for the AdminLTE web panel
A dead simple devRant API wrapper for Python
An ed-like client for devRant written in python
Using a python script to create devRant posts based on the style and content of another user
A python script that shows you the location of the International Space Station in your terminal
A utility for drawing graphics on your Novation Launchpad Mk1/S/Mini
"X-MAS 02" is an album produced by RetryLife, released on December 25, 2017.
"Festive Duality" is a single by Evan Pratten, released on December 25, 2017.
We lost a weather balloon in another country
Beal science project succeeds - maybe too much - as weather balloon floats into U.S.
H.B. Beal weather balloon launch photos
Up and away!
A trip around Québec
My favorites from a larger collection of photos taken on a trip around Québec
"The Eternal" is an EP produced by RetryLife, released on May 21, 2017.
Imagined (Theatrical Soundtrack)
"Imagined (Theatrical Soundtrack)" is an album produced by RetryLife, released on April 6, 2017.
"Lemons" is an album produced by RetryLife, released on March 1, 2017.
"Radioactive" is a single by Evan Pratten, released on February 4, 2017.
"Explosive Christmas" is an album produced by RetryLife, released on December 25, 2016.
"Reborn" is an album produced by RetryLife, released on October 31, 2016.
"Intergalactic Swirlz" is an album produced by RetryLife, released on October 5, 2016.
"Flare" is an album produced by RetryLife, released on May 10, 2016.
"Project 39" is an album produced by RetryLife, released on December 28, 2015.
"Gifted" is an album produced by RetryLife, released on December 25, 2015.
"Silent" is an album produced by RetryLife, released on August 24, 2015.
"Enlarging Elaphants" is an album produced by RetryLife, released on June 1, 2015.
Bring the Onslaught
"Bring the Onslaught" is an album produced by RetryLife, released on May 24, 2015.
"Insanitorium" is an album produced by RetryLife, released on April 25, 2015.
"Hypernova" is an album produced by RetryLife, released on March 29, 2015.
"Hidden Forest" is an album produced by RetryLife, released on March 27, 2015.
Death Among Us
"Death Among Us" is an album produced by RetryLife, released on March 23, 2015.
Memories From the Past
"Memories From the Past" is an album produced by RetryLife, released on December 31, 2012.