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.

Tuesday, August 07, 2018

Android App

Today I published my first Android app: Squishy Earth

This was based on a HTML5 demo I made a few years ago.

Wednesday, March 07, 2018

cmix updates

There was recently a new winning entry (called phda) for the Hutter Prize. The Hutter Prize is a contest for compressing the first 100MB of Wikipedia (called enwik8). Here is how all of the previous versions of cmix performed on enwik8. phda is incredible - using far less CPU and memory than cmix while getting a similar compression rate. Unfortunately it is closed source, so many of its implementation details are hidden. phda has pushed cmix v14 into second place on the Large Text Compression Benchmark. cmix currently compresses enwik8 to 15113248 bytes, so I am guessing the next cmix release should make it back to first place. Unfortunately there is a bug which is preventing cmix from compressing enwik9 properly, so I need to fix that before the v15 release. This bug is difficult to fix because I have only seen it happen when compressing enwik9... which takes over one week of CPU time for each debugging pass.

Last year I got funding for cmix through the AI Grant. This helped speed up progress by giving me access to more computational resources. I bought a new desktop and can use many virtual machines simultaneously on Google Compute Engine. The new resources let me run cmix on the Lossless Photo Compression Benchmark, getting first place using over 6 months of CPU time!