Memory allocators divide up memory into pieces. But how can an allocator's author allocate memory to track the pieces? The shells used in terminals – Bash, zsh, etc. – are little compilers wrapped in a loop. We build one with working pipes. Data compression can be simple. Huffman coding, as used in ZIP, MPEG, and MP3, is built around one clever use of a tree. We build six fundamental programming t