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.
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.
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.