Projects

A Very Hard Game

A game for the open source, retro-inspired, 8-bit console the GameTank

I wrote a lot about A Very Hard Game and my thoughts on creating it here. Please give it a read it if you would like to learn more about this project.

Trone

A minimalist kanban tool.

I had wanted to use a kanban tool to better keep myself organized, but I found the bells and whistles of tools like Trello and Planka distracting. Furthermore, most commercial tools do not allow users to control their own data, and even open source self-hosted alternatives tend to have complicated database setups.

I designed this tool with my own preferences in mind. All but the bare minimum features have been removed, and data is stored locally in IndexedDB (with basic import/ export functionality).

Storing data locally in the browser is not without its drawbacks. The current approach to data storage makes cross-device data syncing impossible. In the future, I'd like to experiment with a "Bring Your Own Storage" sort of approach, where users can locally store keys to their own block storage (e.g. S3). This should allow for data syncing without entirely relinquishing control of one's data at the cost of potentially involved setup.

Sudoku

A fairly basic implementation of a Sudoku puzzle player and builder.

What makes this project interesting is that puzzles are stored in the query string. Therefore, users can share their levels as normal hyperlinks without a need for the puzzles to be stored on any server. Even the static page where the puzzle is played could in theory be replaced by any static page implementing the same logic of decoding the puzzle (described here).

mathjax-loader

A Webpack loader to transform TeX, MathML, and AsciiMath files to SVGs via MathJax.

Older Projects

Context Play/ Pause

A simple WebExtension allowing users to play or pause a tab's video from the tab's context menu. This was made before a change in Firefox which allowed users to control videos similarly with function keys. This significantly reduced the need for the WebExtension, but I still find myself using it from time to time.

This WebExtension will require an update to Manifest V3 in the near future to continue functioning, but I have thus far been quite happy with and impressed by how little maintenance has been required for its continued functioning.

Grid Tetris

An experimental implementation of the classic video game Tetris using CSS Grid for all display.

Controls:

  • A/D: Move right and left
  • J/K: Rotate piece
  • S: Soft drop
  • W: Hard drop
  • Space: Hold piece

This game lacks mobile support as a keyboard is required.

Running out of Space

An action game created in 48 hours for Ludum Dare 42 competition. Competition theme: "Running out of Space." Navigate ship through waves of enemies and a shrinking arena. This version of the game includes some minor bugfixes from after the 48-hour competition.

Controls:

  • WASD: Move
  • Click: Fire

This game lacks mobile support as a keyboard and mouse are required.