Welcome to Greg Johnson's web site

Rules of the road for high-quality software

A handy interactive tool for experimenting with red-black trees

An interactive Rubik's Cube with solver

The infamous predecessor function for Church Numerals in the Lambda Calculus

Some thoughts on Danny Hillis's mechanical binary adder

Yet another attempt at developing intuition for the Fast Fourier Transform

A really small Ruby implementation of the Fast Fourier Transform algorithm

A fresh look at red-black trees

2-3 Trees in Ruby

An intuitive way of thinking about the Foucault Pendulum

Build your own ascii-art trees interactively

A quine (self-printing) program written in awk, with comments and explanation

An elementary proof of a key lemma in Shor's quantum factoring algorithm

Aplette: A 64-bit port of the classic APL\11 interpreter

Why does complex multiplication have to be the way it is?