Programming

Here's some various programming projects of mine. Most are open source, all are perpetually unfinished. As you can probably tell, I'm a big fan of Haxe.

Title Description Language
Candid Editor Candid Editor is designed to be a simple-to-use, yet powerful-when-needed image editor. Editor is not designed for a specific task, such as digital painting, photo re-touching, or asset creation - rather, the goal of Editor is to provide a simple way to accomplish multiple types of workloads.
Editor is currently in a very early alpha state. Don't expect it to be able to do too much just yet.

Current key features include:
  • A custom UI framework with support for virtual windows, dubbed "lithium"
  • Simple brush tool
  • Dual-color system with RGB sliders for modification
  • Pan-and-zoomable canvas - Pan using the MMB or the "Paw" tool, zoom using the scroll wheel
Built using OpenFL.
See the linked GitHub page for source + building instructions.
Haxe
Candid Palette A tool for creating and managing color palettes! Originally written for a CS exam back in 2018, I have finally released it to the public.
I plan on eventually adding on to Palette again once I replace the antiquated version of Lithium it uses.

Features:
  • Save and open your palettes using the EPL (Epocti Palette) format. This palette format can then be used with Candid Editor for easy access in the color picker! (well, later on down the road...)
  • Export to GPL for use with programs such as GIMP and Aseprite, and TXT for use with Paint.NET. Just middle-click or right-click the "Save..." button.
  • Create a palette from the most prominent colors in an image file.
  • Add colors to a palette by picking them from an image file.
  • Support for ARGB for those in need of transparency
  • Get your hexcodes for development/web design/whatever purposes!
Built using OpenFL.
See the linked GitHub page for source + building instructions, or here for pre-built releases.
Also, check here for sample palettes.
Haxe
VixenKit A multi-use library for games made using the Stencyl game engine, currently being developed alongside ExaStar. VixenKit contains modding and localization support, debug tools, a unified wrapper for Stencyl's Image API, and more. It's designed for games that are written primarily using Haxe (instead of Stencyl's visual programming language).

I have yet to release it to the public, as it's currently undergoing massive rewrites.
Haxe
OrigamiEngine
(shelved)
An OpenFL-based game engine I was planning to develop, before realizing I didn't have the motivation to start a project as large as that.

Origami is intended to be a "hybrid" of a framework and an engine. While the engine leaves game developers to decide how their content and game components should be structured, some crucial components (such as the "scene" model, rendering, sound mixing, and more) are handled by Origami, instead of leaving the burden on the developers to write their own systems. In a way, it's like using a normal game engine, only there's no "project editor" of sorts to deal with; developers are free to use whatever workflow and tools they'd like.

Though development was put on hiatus after only a week or so of development, some components (such as an implementation of VixenKit's ESprite, a debug console, engine configuration, and more) were pretty feature-complete by the end of it.

I spent quite a bit of time planning how the engine should work, and I'm still really interested in seeing it come to fruition. So, it's only shelved for the time being. Origami's debug console, however, still lives as a feature of VixenKit, since both Stencyl and Origami share the same base (OpenFL).
Haxe
Digitsune A digital kitsune mask I made for a new media arts class. It's controlled by an Arduino-compatible microcontroller and 6 RGB LED panels, and sports various features such as emotes, color changes, voice-sensitivity, video playback (ideally using a RPi, but I used the original microcontroller to play Bad Apple!! on it), and remote control.

In the future, I want to rewrite the firmware to run on a Raspberry Pi instead, as even with a relatively powerful microcontroller there's only so much I can pull off!

There's a lot more that I could write here, to the point where I would need to write a seperate blog post for this.
C (Arduino)
HourlyUnicode A Twitter bot I wrote one night in 2019 which I failed to get working on anything other than macOS. I came back to it in 2022 after realizing I used the Haxe filesystem API incorrectly (whoops), and quickly got it up and running... almost 3 years after I intended.

HourlyUnicode does what it says on the tin: it posts a random Unicode character every hour. Sometimes it has a render for the character, sometimes it doesn't.

Better late than never!
Haxe
CringeCompiler A Twitter bot that posts compilation errors whenever I run into them. I originally wrote this in 2021, proceeded to not use it, then came back to it in 2022 to fix a few things (such as giving it its own account and properly passing through stdout and stderr to the terminal). Haxe
potentual A tool I wrote to recommend accounts for me to follow on Twitter. The goal was to take all of the people I'm mutuals with, get who they follow, and if they're following someone who follows me, recommend I follow that person.

Unfortunately due to Twitter's API rate limits on looking up follows, it takes a while to run.
Haxe
myring A static web ring generator. HTML (Jekyll)
sweepin' A text-based minesweeper clone I wrote in a day when I was bored. It's a bit lacking in features, notably not having a safeguard against generating an unsolvable field, but it's at least playable (...at least I think. I vaguely recall hitting an infinite loop with a recursive function in the game one time, but I just played though a full game without hitting a loop, so I really don't know anymore).

At some point I want to rework this by using ncurses instead of coordinate inputs... somehow.
Java
echowo Probably the most cursed-yet-functional program I've ever made. echowo is a drop-in replacement for the Unix "echo" command, with a (horrifying) twist: Text passed to it gets translated to uwuspeak.
I made this while on painkillers + while I should have been sleeping, so it's not super-well-structured and there's not much in terms of text replacement. It's also a bit slower (by a negligible amount) than something written in C since I used Haxe for this, but it works. I'll add onto this in the future, and somewhere down the line, maybe rewrite it in C. I also want to eventually make a similar program for the "cat" command.
Haxe
HXSFUnserializeTool Small Haxe program to unserialize data stored in HXSF (Haxe Serialization Format), intended to be part of the VixenKit and Origami SDKs (eventually).

It does not yet support unserializing Maps of any type pairing, instead showing only the variable's name. It also does not support reserialization (though why would it?), but I'm planning on writing a (re)serialization tool that works using an intermediary format that will be implemented into the unserializer (most likely JSON).
Haxe
Large Hadron Converter This is a script that I used A TON when I used to manually manage my music library with Plex on my Raspberry Pi.
Because my data plan and home upload speed were a bit limited at the time, and I didn't want to store all of my music on my phone, I had to store my music on a NAS - AND - make sure they were small, because the upload speed of my home network would mean things would take forever to load if I were away from home...

The solution? A script to crunch each album of my existing FLAC/MP3 library down to reasonably-good-sounding-yet-tiny AAC files, then send em over to my Raspberry Pi via ssh. Automatically.

See the linked GitHub page for download + requirements.
Bash script
Peter Alert It's a long story.
Prebuilt binaries can be found here for those not wanting to set up a development environment.
Visual Basic
squeakfox Simple & cute webapp that was used as a landing page during GitFluff's (rest in piece) construction. See it in action here.

Built using OpenFL.
Haxe
peachmaker A script (packaged as executable) that generates a meme based on the "peach time" format, given an image and string as input.

Usage: peachmaker -i <path to image> -t <your text>

Requires imagemagick and the Courier font, but the latter can be swapped out by opening the executable in a text editor and editing the font name after "-family".
Bash script

A lot of my other projects are either incomplete or too tailored towards me personally to release...