Last year I wrote a database engine for a company I work for. Because I am obsessed by compression I made an algorithm they did not ask for (in my own time). They are not interested in the algorithm so I feel free to publish it in the wild.
It's something that's not ready for real world usage but shows promise for the future. Mainly because the encoding times are ridiculous on large files. Decoding is very fast though.
The main goals designing this encoder is being able to use it in a database. It should be able to start reading on random positions (database fields). To be able to do that I used a static Huffman tree. A full explanation and source code can be found on https://github.com/kapenga/LittleBit/ and an alpha release on https://github.com/kapenga/LittleBit/releases/
Make your own compiled jar if you don't trust the release.
Please don't complain about the encoding times because I am aware that these are not practical.
I am however proud on the compression ratios LittleBit is able to produce, considering it is allowed to work with only a static Huffman tree. The compression file sizes mentioned are including the Huffman tree (to be very clear about that). After reading the Huffman tree, decoding can be done on every bit that is the start of a Huffman tree leaf.
Book1: 768.771 original, 22.975 huffman tree, 234.765 data, 257.740 total
Enwik8: 100.000.000 original, 1.290.337 huffman tree, 25.357.414 data, 26.647.751 total