All Projects
Mana Counter
A quick web app that tracks mana in Magic: the Gathering for those thirty-minute turns in which your mana pool gets flooded.
This was built in about an hour because apparently I have to do everything myself because there was a distinct lack of results on Google for mana counters that didn't demand you download an app.
Right now the engine doesn't do much, so here's a spinning donut.
Palladia Engine
The Palladia Engine is a simple, ECS-based game engine written in C using the SDL GPU API. Currently, it only targets a Vulkan backend, but the goal is to at least also support WebGPU. Most of the code written so far is loosely based on the Learn OpenGL tutorials, at least as far as they can be for using an entirely different graphics API.
The project stemmed from a desire to learn graphics programming and the fact that, in game programming, I often find myself knowing exactly what I want the code to look like, but unsure of how to tell the game engine to do what I want. So I figured that several hundred hours of trial and error should save me thirty or so minutes of reading the Godot documentation.
I intend to come back to this, but as of writing this, my university capstone project is taking up a lot of my time.
I couldn't think of a good image for this one, so here's Piru the Volatile from Magic: The Gathering.
Piru
The way this project came about is kind of funny. When I was doing my internship at NSHC in the summer of 2025, I was tasked with reading and creating a presentation on the Tiny C compiler by Fabrice Bellard. Perhaps because of the language barrier, I had misinterpreted this as being to write a very simple compiler. I had gotten as far as writing a lexer and parser using a tutorial by Kuter Daniel before the misunderstanding had been cleared up.
The compiler targets the RV64I instruction set for portability. The idea is that the compiled code will run in a virtual machine that executes the RISC-V instructions so that only the VM, not the runtime code, has to be recompiled for new platforms. This virtual machine is, of course, part of the project. As a part of preparing to write this project, I followed a tutorial by Justin Meiners and Ryan Pendleton detailing how to write a simple LC-3 virtual machine, and the RV64I VM would be based on that.
I intend to come back to this, but as of writing this, my university capstone project is taking up a lot of my time.
Three.js Test
I built this site as a means of familiarizing myself with Three.js. The text was generated by GPT-3.5 turbo.
It might not render correctly in the small preview window depending on your screen's resolution, so open it in a new tab to view it properly.
Lukeh.xyz
This site serves as my developer portfolio and is built with Alpine, Tailwind, and Cloudflare Pages.
Alpine was chosen for similar reasons; this site isn't seriously limited by the "HTML with interaction on top" approach that using something like vanilla JavaScript or jQuery has. I find Alpine to be more ergonomic than those without inflating the client bundle to multiple megabytes in the way that React would likely do.
I really dragged my feet on adding Tailwind, but the ability to use existing component libraries was something I couldn't ignore any longer.