Portfolio
Featured Projects
Graphical Playground for Haskell
An interactive environment for learning and experimenting with Haskell, created as an undergraduate honours project. Learning Haskell is difficult without fast feedback, since most tooling is text-only and gives no visual intuition for how functions behave. Haskell's lazy evaluation and purely functional model don't map naturally onto interactive graphics, so I designed an interface layer that could sample and render lazily-evaluated output in real time without breaking referential transparency. I built a web-based playground combining a Haskell interpreter with a live code editor and a canvas renderer, letting users write Haskell functions and immediately see them plotted or animated on screen.
Rock Your Socks Off
A Minecraft mod built around a playful item system, with socks that grant their wearer unique abilities. I wanted to add genuinely new gameplay mechanics rather than just reskinning existing items, but Minecraft's modding APIs weren't designed for arbitrary equipment-driven abilities. Triggering effects reliably meant hooking into low-level tick and event systems while keeping things compatible with vanilla gameplay and other mods. The mod shipped on the Fabric API with a working set of socks, each granting its wearer a distinct ability.
MiniGames
A TypeScript collection of playable mini-games, including the games running in the website's arcade. I wanted a reusable, well-tested codebase of classic games I could embed anywhere, rather than writing one-off implementations for each. Sharing a single engine across very different games meant designing abstractions general enough for turn-based and real-time games alike, without forcing awkward workarounds into any individual game. The result is a shared TypeScript game engine handling the game loop, input, and rendering, which now powers every game in this site's arcade section.