Monday, April 03, 2023

Stacking Things


Today I released a HTML5 game called Stacking Things. It is a physics-based puzzle game. It uses planck.js for the physics and Phaser for the graphics/sound. The images came from a combination of public domain photos and images generated by Stable Diffusion.

Saturday, December 17, 2022


I have designed and 3D printed my own board game. It is a two player strategy game called Hexacrystal. Each player controls one color. The game starts with two towers:

The rules are simple. Players take turns placing their pieces. Pieces can be placed anywhere on the board. The game ends when a player resigns, or no more pieces can be placed. The goal of the game is to create a connected path from your tower to the opponent's tower. Neighboring pieces of the same color form a path. The winner is the player whose path (connected to their own tower) gets closest to the opponent's tower. You simultaneously try to extend your path while blocking your opponent's path.

There are 2D and 3D versions of this game. In the 2D version, pieces occupy a single tile on the board. In the 3D version, the crystal pieces can extend beyond the edges of the tile so that they can block neighboring pieces. A valid move requires that the placed crystal doesn't touch any other pieces (verified with a "wiggle" test to make sure neighboring pieces don't move). This introduces more complex strategy: carefully selecting and rotating crystals. Each player gets the same set of crystals (21 unique shapes).

Monday, June 27, 2022

Water Computer

 Using a 3D printer I have built a water-powered computer. Here is a video:

Here is a diagram of the main component: 

The "inverted output" on the left will be ON when the input is OFF, and OFF when the input is ON. The "amplified output" on the right will be the same state as the input, but will have increased water flow. By redirecting the outputs with tubes, this single component is powerful enough to build any logic circuit or computer. This type of computation is known as fluidics.

Here is the binary half-adder circuit that I built (using five of the above components):

Here are the models for the different parts that I 3D printed:

  • transistor - the main logic component
  • nozzle - used for releasing water from the milk carton
  • connector - used to connect funnels to tubes
  • hook - used to provide extra magnet support
  • funnel - funnel with a single output
  • splitter funnel - funnel with two outputs - this can be used to split one larger stream into two smaller streams

Sunday, March 13, 2022


Similar to Turing Paint and Doodle Code, I have released another visual programming language called Bitlog. This is a simulator for electronic logic circuits, represented with bitmap images.

Monday, January 04, 2021

Doodle Code

 I have created a type of barcode called Doodle Code. Similar to QR codes, it can be used to store data.

Sunday, October 25, 2020

Turing Paint


I have created my own programming language called Turing Paint. It is a visual programming language: programs are represented using images.

Monday, July 20, 2020


I just released a new open source compression program: tensorflow-compress. It performs lossless data compression using neural networks. Its compression rate is significantly worse than cmix, but it has some nice features:
  • It can run significantly faster using GPUs
  • It is written in Colab and designed to be run through a web browser
I am planning to continue working on it to improve performance and compression rate.