Welcome

Welcome to my website

it exists. you can look at it. i won't make you though

About

My name is Opal. In my day job I’m an infrastructure engineer. I’m also a hobbyist game designer and developer, working on several different video and table top games.

I’m bad at talking about myself so that’s all you’re going to get.

Site usage

This site is built to mimic a Windows 95/98 desktop, and works a little differently because of that. Pages are displayed via windows that are dragged to a new position or resized, and each page has several icons in its header bar for further control. The taskbar at the bottom can also be used to move a window to the front if you have several open.

Closes the window
Maximizes the window
If the window is maximzed, restores the window to its previous dimensions
Pops the window out, opening the page in a new tab or opening an external page

Test

My name is Opal. In my day job I’m an infrastructure engineer. I’m also a hobbyist game designer and developer, working on several different video and table top games.

I’m bad at talking about myself so that’s all you’re going to get.

Software

Personal Website
Hammer
Go-Cache
Cover letter generator
No New Tabs
Slack Contrast Tester
Pikalator

Table-Top RPGs

Gnomic
Coolest Kid in School

Video Games

Loading Screen

Personal Website

The website you’re looking at! A demo is included below for convenience.

Written using Jekyll and Aleksander Bakukhin’s win95.css

No New Tabs

Firefox add-on that allows you to temporarily disable the ability to open a new tab. Built it for a friend who said they’d find the functionality to not open a new tab to be more useful for productivity than all the extensions that simply block social media sites.

Hammer

A simple CLI tool for load-testing servers/making HTTP requests at scale. Written in GoLang.

I primarily built this rather than using an existing tool simply because I found it easier to achieve behaviour I wanted by just writing code rather than digging through a man page to understand how a bunch of different flags work.

Fun fact: if you use this to load-test something running on your local machine and use http/1.1 without connection re-use you run out of file descriptors and crash your machine. Ask me how I know.

Cover letter generator

Tool for auto-generating customized cover letters for job postings on the University of Waterloo’s job board for internships/co-op jobs. Originally a ruby script built on top of Selenium, but later re-implemented as a browser extension (screenshot from this version below).

All it did was search for keywords in a job posting using some regexes, and if a keyword was matched the associated paragraph would be inserted into the cover letter. For example if the job posting contained the words “Javascript”, “react” or “SCSS” the paragraph about front-end web development would be inserted. I never had an interviewer mention that they could tell the cover letter wasn’t written by a human.

Go-Cache

A fairly simple reverse-proxy and cache server writting in GoLang, primarily inspired by Varnish.

This was written as an exercise in attempting to implement some of the more complicated features I find extremely useful in my experience with CDNs and asset caching. This includes full support for the vary response header which many CDN providers omit, full support for all cache-control directives, request coalescing, and proper usage of the cache-tag/surrogate-key response header for tagged cache purging.

Slack Contrast Tester

Tool I built for a social Slack server I’m a part of that likes to make a lot of custom emojis that are just text (e.g. so people can react to posts with emojis that say “nice” or “this”). We ran into a bunch of issues where some emojis weren’t legible on both the light and dark theme, so I built this tool to easily determine which colors pass web accessibility guidelines for legibility on both background colors Slack uses.

Pikalator

Possibly the best thing I’ve ever worked on. Made at terrible hack summer 2016, Pikalator is a Chrome extension that translates all text on your page into Pikachu’s language. It also will then read the entire page out to you using a text-to-speech API while playing the opening song from the first season of the Pokemon anime. A truly transcendent experience.

Gnomic

Gnomic is a meta-system for playing Dungeons and Dragons inspired by games like Nomic and Mao.

Its main novel idea is to provide a process for changing the rules of the game managed by a currency that all players can earn. This is intended to create a lot of chaos and make a very strange game of D&D, as everyone around the table attempts to use these very concrete rules to modify how the base game of D&D is played in extremely weird, silly and likely annoying ways.

Coolest Kid in School

A simple game created for the 200-word RPG challenge organized on Tumblr in 2023.

The Coolest Kid in School

A game for 3+ players.

Setup:

Gather some objects to be used as coolness tokens. Each player starts with 5 tokens, keep other tokens in the center.

Each player creates a Cool Kid and describes their vibes. The more flavourful and trope-y, the better.

Gameplay:

At any time players can Show Off, describing how their Cool Kid proves their coolitude. Other players may choose to Challenge Coolness. If no one challenges, the Show-er Off gains a coolness token from the center.

If there are Challenger(s), they and the Show-er Off write an integer 0 or higher on a piece of paper, and then reveal at the same time. The person with the smallest number no one else wrote wins, taking a token from the center and either all challengers or the Show-er Off as appropriate. The winner describes how they either Defeated the Haters or Revealed a Poser.

If all players wrote the same number they all put a token back in the center, none are cool. Cool Kids with no coolness tokens are out of the game.

Ending:

The Cool Kid with the most Coolness Tokens at the end of recess is crowned the Monarch of Cooldom.

Nothing here (yet!)

I’m working on it :)

Loading Screen

Unfinished video game written using Ebitengine. Maybe I’ll get back to it someday.

Note that the demo below is prone to lag spikes (web assembly’s fault not mine, it runs fine on desktop I swear) and controls probably don’t work on mobile.

WASD to move, spacebar to jump, and enter to attack

Welcome
About
Site usage
Software
Table-Top RPGs
Video Games