Hacking Data Compression
This is a twelve-part course on lossless data compression. It was originally presented in the "A2Pro" forum of the GEnie online service, starting back in October 1992 (almost exactly 10 years ago to the day that I type this).
Each part of the course consists of a lesson and some source code. The sources were presented in C and 65816 assembly language, the latter intended for use on an Apple IIgs computer. The C code was actually developed under SunOS, but was usable with either of the 16-bit compilers then available for the IIgs.
Some of the commentary is out of date. For example, this was written before gzip and the "deflate" algorithm existed, at a time when "freeze" was being explored as a replacement for the UNIX "compress" command. You can see the precursors to these in lesson 11. On the flip side, we're still using Huffman encoding (e.g. it's used in bzip2), and GIF LZW is still widely used.
I've made the lesson text available here. For the full original lesson files, complete with source code and other goodies, you can download the full archive in ShrinkIt format. You will need something like NuLib2 or CiderPress to unpack it.
I also have the original syllabus, which more or less matches the above.
Historical note: this was written during the same period that HardPressed was under development, and while I was working full-time. This might help to explain why a 12-week course was presented over a period of nine months.
For anyone intrigued by the "stackable" compression modules described in lesson 12, I have made the complete source code to HardPressed available on this site.