Game Development

RPG Maker Add-ons

Addons for Enterbrain's RPG Maker XP and VX game engines, written in their Ruby-based game engine. This includes small tweaks to various menu systems to complete visual and functional overhauls to menus and battle systems. There are also utilities for sprite management which work outside the game engine. Github repository here.

Full Stack Web Development

This website (you're on it)

The latest iteration of my website/blog. I focused on simplicity and a server-less setup, with an easy blogging workflow with GitHub pages and Prose.io. Less is more, you know! The styling is my take on a balance between minimalism and delightful visual flare. Read about the process on my blog post.

VueJS Gallery

A full-stack web app which works as a great-looking gallery for local media. Beautiful layout, subtle animations, great functionality.

Core: NodeJS + SQLite

  • Scan folders for media on-demand
  • Auto-generate and cache thumbnails on-demand for images, animated GIFs and videos
  • Use SQLite for persistent storage of scanned metadata
  • GitHub Repo here.

Server: NodeJS + ExpressJS

  • A web server wrapper around core.
  • Separate from the core, so that the core can be used on its own (like in an Electron app).
  • GitHub Repo here.

Client: VueJS + BulmaCSS

  • Single-file components with modular CSS and JS
  • VueX to manage application state and Vue Router to reflect current state in URL
  • Uses the Bulma CSS framework, custom performant CSS for effects and animations
  • GitHub Repo here.

Trinkets

🍱 Lunch Split

Front-end for Emmie's lunch_split.py. Defaults to "order" mode which can generate a URL for each new order, and a "pay" mode when someone visits that URL. All info is encoded in the URL, so this can run completely on the client-side. But what happens if the GET character limit is exceeded? It's not handled but it's hardly the end of the world.

🎱 Magic Meme Ball

Having a bad day? Here, use this Magic 8-Ball to confuse and delight you! Although most of the memes are inside jokes you probably won't get. What fun.