Tools Programming

RCalc

(RPN Calculator)

Disinterested with the options for calculator apps on Linux, and frustrated with using Google Search as my primary calculator, I created my perfect calculator: RCalc. Written in C++ using GLFW and Dear ImGui, RCalc is a lightweight RPN calculator that supports scalar types as well as vectors and matrices, and over 80 different operators. To support the over 450 implementations of these operators, I designed a comment-parser-plus-code-generator in Python to enable an almost Elixir-like development experience, reducing my workload by nearly 3x. RCalc can run on Linux, Mac OS, and Windows, either graphically or in the terminal, or as a library to be used anywhere such as in a native iOS app, all from one code base.

Sisyphus

(Budgeting App)

Looking for a budgeting app that felt more in line with my circumstances and approaches, I ended up making Sisyphus using primarily SwiftUI, and supplementing with AppKit for some needed functionality surrounding multiple windows, light/dark mode, and custom UI elements. Overall, while SwiftUI is incredibly fun to start a project with, working on Sisyphus has shown me where it’s strengths and weaknesses ultimately lay.

Proofing Gallery

(Freelance Tool)

In high school, I worked as a freelance photographer shooting portrait, real estate, and commercial photos. For my portraiture clients, I wanted a tool to help clients select which prints they wanted of which photos. As a high school student, I found most of the existing solutions out of my budget, so I created this simple app using Java and Swing. With the ability to select different print options, lay out photo books, and create collages, it was the perfect one-stop shop for me.

Zeus

(OpenLDAP Self Service Portal)

As part of my home lab infrastructure, I set up an OpenLDAP server for authentication into all of my servers, shares, and services. It was important to make something simple and approachable for my non-tech savvy family members. Using Vue for the frontend, npm for the backend API, and rust for an optional daemon to synchronize usernames and passwords with samba, I was able to make something that fit my needs perfectly, while learning about LDAP along the way.

Signature Verification (Godot Module)

I’ve always been a little unsatisfied with Godot’s lack of support for signed data packs. Although you can encrypt a game’s scripts and assets, the engine does not complain if you swap out an encrypted pack for any arbitrary unencrypted pack. To address this, and to become more familiar with Godot’s complex C++ codebase, I wrote a module that makes sure the main pack file has a matching, valid signature. Using a public key embedded in the binary, the module allows the developer to know that only their trusted pack files are run. In it’s current state, this is just a quick prototype for viability, but I have plans to expand the trust model to something more flexible to allow unsigned mods.

Global Weather (Data Visualizer)

For a class final project, I created an app to visualize global weather data across time. The client uses Godot for the 3D and shader functionalities, and connects to a prepared postgres database. Early on in the project, the client was able to pre-seed the database itself, but due to the large size of the data (~300 GB unprocessed), this was quickly scrapped. This project was a great opportunity to experiment with multithreading, connection pooling, and identifying the minimum required precision to reduce the size of the dataset.

Blog at WordPress.com.