Software

Overview

South African astronaut in space

For more than two decades, I have been accumulating a graveyard of abandoned projects. Occasionally, an idea worms its way into my brain and magically triggers an obsessive hyperfocus. Very rarely, these ideas emerge in a somewhat functional state.

This is a collection of some of those projects, from when I was a self-taught beginner to today.

A more coherent list of projects can be found on my GitHub profile.

2024

Smartcube 3-Style Trainer

A simple web application to help cubers practice the 3-style method for blindfolded solving. The project was built using React and uses the Web Bluetooth API in supported browsers to connect to a Bluetooth-enabled smartcube.

Smartcube 3-Style
Source code
2024

Multiple Blindfolded Ranks

The web front end for an alternative ranking system for the WCA's Multiple Blindfolded event. I took a data-driven statistical approach to derive a system that produces in scores that align better with an intuitive “feel” for what constitutes a good result, rewarding speed better than the WCA's current system, without punishing slight lapses in accuracy.

MBLD Ranks Web App
Medium Article
Source code
2023

Alphanumeric Sheep Pig Blog

From 2009 to 2015, Brendan ran a blog using Google's Blogger platform. This project includes some Python scripts to convert the Blogger XML export into a JSON format, and minimalst Angular application that renders the content.

Visit blog
Source code
2023

FTO Scrambler

The Face Turning Octahedron (FTO) is a twisty puzzle related to the Rubik's Cube, but with 8 triangular faces. It has a phase space around 3 orders of magnitude larger than the Rubik's cube. This project is an attempt at building a solver for the FTO. While the project is not completely functional and has abysmal performance, it was a great opportunity to learn Rust.

Source code
2022

Comp-Kinch

A website that displays KinchRank-like ranking for WCA speedsolving competitions. A KinchRank is a way of comparing solving speed across different events. A person's Kinch score represents their speed relative to the fastest person in each event. For example, a Kinch score of 50% means that a person is, on average, half the speed of the fastest solver in each event.

The website is written in React and uses the WCA's WCIF API to make it completely serverless.

Comp-Kinch Web App
Source code
2022

Puzzle Stats

This is a set of tools, written in Python, for importing times from various timing apps, calculating various statistics, and plotting my improvement (or lack thereof) over time.

It is the tool responsible for generating the data for the graphs on the cubing stats page.

View Stats
Source code
2021

Nord Status Plasmoid

This is an unofficial plasmoid widget that provides a graphical way to control your NordVPN connection from a widget on a panel on your KDE Plasma Desktop. It is written mostly in QML, with some JavaScript for parsing some CLI output. It was written to learn more about how to develop widgets for KDE.

KDE Store
Source code
2018

ZBLL Sorter

This is Python application for sorting Zborowski-Bruchem Last Layer (ZBLL) algorithms for solving the last layer of a Rubik's Cube. There are 493 distinct cases, and these are separated into subsets according to corner orientation and permutation. The program reads in a text file of algorithms, and generates HTML tracking my progress of learning algorithms for all 493 cases.

My ZBLL Tracker
Source code
2017

CubingZA Website

CubingZA is a non-profit organisation that oversees speedcubing in South Africa. This is the website, with an Angular front end written in TypeScript, a API written using Express and running in Node.js, with a primary database in MongoDB, MySQL for bulk storage of results, and ETL written in Python.

CubingZA Website
Source code
2014

Quick Coords

QuickCoords is a desktop application for quickly and easily capturing a series of coordinates from an image with sub-pixel precision. It is written in Python using PyQT4.

Releases
Source code
2014

Solar System Explorer

A web app for exploring the relative sizes and distances of the planets and major moons in the solar system. It was written mostly in JavaScript using the CreateJS suite of libraries.

Solar System Explorer
Technical Details
Source code
2013

Page Ripping Champion 2013

The object of the game is to rip out all 250 pages in a book. Stop each hand briefly to avoid cramp, but keep the other one moving to keep your bonus multiplier up!

It was written in Python using pygame during August of 2013, as part of the two-button game competition held by the South African Association of Game Makers.

2012

Minecraft Wing Designer

A Python script that takes in a minimal number of aircraft wing parameters, and returns a pair of text files indicating where blocks should be placed to generate an accurate 3D aircraft wing. The resulting wing is a discrete approximation of a NACA 4-digit airfoil.

Source code
2008

SEP Chart

A set of scripts written in MATLAB that plot the flight envelope of a generic subsonic aircraft as a function of airspeed and turn rate. Curves of constant specific excess power, constant turn radius, and constant g-force are also plotted.

2007

Fractals

This includes two programs: one for plotting Julia sets for any seed, and a very simple Mandelbrot set; and the other for a much more detailed exploration of the Mandelbrot set, with zoom levels into the hundreds of billions possible. They were written in Delphi.

2006

EcoSystem

A small artificial life system with a single species of evolving entities. While the population of the system is limited to around 250 individuals, each of these may will have one of the 3 quadrillion possible personality combinations. It was programmed in Turbo Pascal but on a fairly dated computer (even for the time).

Medium Article
Source code
2006

Jagged Alliance Save Game Generator

A desktop application written in Delphi that generates an initial save game for Sir-Tech's 1994 tactical role-playing game, Jagged Alliance, adding some replay value to the game. You can individually edit the stats of each of the 60 recruitable characters, or randomly generate stats in a balanced way.

Download
Source code
2005

Kanji Learner

A pair of desktop applications written in Delphi to help with learning Japanese kanji. The first is a viewer that allows searching an extendable database of kanji bitmaps. The second is a program that presents multiple choice questions and tracks incorrect answers.

This was written before the Brendan had internet access at home. It would have been much easier with unicode.

Download
Source code
© 2025 Brendan James Gray. All rights reserved.