Procedural Hex Maps in Inner Alliance

Inner Alliance Inner Alliance is a tabletop turn-based tactical rescue game where players lead a team of specialists through a flooded environment in a top-down, XCOM-style format. Beyond promoting strategy and teamwork, it serves as an educational tool to foster diversity, equity, and inclusion (DEI) within military organizations. By leveraging interactive media, the game engages players in complex decision-making, emphasizing the importance of inclusive collaboration in high-stakes scenarios. I joined the project through the Archipelago of Design to transform the board game into a video game, taking on the full scope of programming. The team later grew to include talented designers and artists, enhancing the project’s development, which remains ongoing with promising progress. ...

April 11, 2025

20-day TapTap Spotlight Challenge 2024

Lucid Dream | 20-day TapTap Game Jam 2024 unity Unity C# ...

April 5, 2025

Bujots: Jot-Based Journals

Bujots - “boo-jots”: /buˈʒɒts/ A portmanteau of bullet journaling and Jots A web-based jot note app to create organized online notes Jot-Based Journals The goal of this project is to capture the joy and satisfaction of writing a beautiful journal entry and apply it to jot notes. Along with the ability to write daily notes organized in a timeline, users can freely customize their notes with stickers, adding personality and charm to each one. ...

June 24, 2024

PianoTypes: Virtual Piano

Virtual Piano PianoTypes is a web-based piano that provides a full-range, customizable piano that is fast, visually sleek, and easy-to-use. While there are similar sites out there, PianoTypes tries to stand out by being a fully featured package and replicates most of the fundamental capabilities of a keyboard and more. Svelte | Front-End Framework tonal.js | Music Theory Calculations smplr.js | Instrument Sounds MidiPlayerJS | Instrument Sounds Simply JavaScript and CSS Features Full Pedalling and Instrument Controller ...

June 24, 2024

Pianotypes Devlog 5

Not many code changes as of late but I’ve been more active on one of the packages I’m using to play sound, smplr. It’s such an amazing package for playing instrument sounds with an incredibly simple and powerful api. Kudos to danigb. A bunch of new changes were made recently that have added some awesome features as well as some bugs I found while using them. Note Scheduling Throughput The first change was a tweak to note scheduling that fixes an issue of the web audio getting overloaded and introducing lot’s of static. ...

October 1, 2023

Useful Linear Algebra

Dot Product Find the interior angle between two vectors $$ A\cdot B = |A||B|cos\theta $$ $$ \theta = \arccos(\dfrac{A\cdot B}{|A||B|}) $$ $$ where\ A\cdot B = A_x \times A_y + B_x \times B_y $$ Cross Product Get perpendicular vector from two vectors Find area created by two vectors (for 2D, parallelogram area, for 3D, parallelepiped area) This is the magnitude of perpendicular vector Matrix Multiplication There is a formula for calculating the resultant matrix from a matrix multiplication. ...

September 25, 2023

Pianotypes Devlog 4

Not too much to report. I had the realization that I can pause the scheduled notes by suspending the AudioContext since they depend on the context’s timer. It’d be pretty easy to add pause functionality. The only caveat is that if I pause the AudioContext, than all sound from the piano is also paused. Perhaps I could code in a notice to resume the timer given the user inputs a key press but I don’t want to resume the context on every key press. Maybe I could write some code to resume on the first user input on pause. ...

August 25, 2023

Reviving Tabby Sort

A couple years ago I made a little extension for chrome to organize and sort tabs by url domains. It was really quick and crudely designed and since I wasn’t even a Chrome user, I didn’t think too much about improving it. Fast forward to now, I decided to do exactly that. Looking at old code Actually the code was mostly better than I expected, other than some variable naming and redundant lines, I didn’t see much need to rewrite it. The html on the other hand needed some tuning and was pretty messily put together. There was lot’s of redundant styling and a disappaering timeout on the buttons that I wonder why I even thought was a good idea in the first place. ...

August 23, 2023

Pianotypes Devlog 3

Today I spent some time working on getting the instructions dialogues up. I originally planned on creating a secondary overlay window that pops up given a trigger. Very similar to how to the toast notifications work but instead with a much larger area. The only problem with that is I wanted a clean way to inject custom html into the dialogue box depending on who triggers it. In the case of the toast notification I just pass it a string which is fine given it’s only suppose to be a sure notifier anyways. For the instructions, I may need to add bullets or text stylings depending on what the instructions are for. Strings aren’t going to cut it. ...

August 23, 2023

Pianotypes Devlog 2

I’m a bit more than late for a second devlog but I figured there’s no better thing to call this. I originally made this blog for the purposes of short and sweet devlogs but my recent posts have been bit larger than what I originally intended. I’m hoping with this log to bring that focus back down to just that. Since my previous post, I’ve done a lot of fine tuning of the UI and functionality of the site. One I’m quite happy with was adding draggability to the inputs simialr to other software like Blender. It’s a lot more convenient than typing and allows you to set options easily using mouse only. ...

August 21, 2023