The Bloom filter seems to be a “sweet spot” for people doing hobby projects: simple enough to implement, unusual enough to be interesting, and complicated enough to feel satisfying.
I am interested in “postbaccalaureate” projects for self-study, and using those projects to bridge the transition from a recent grad to a professional programmer (still with a computer science bent). So I turned to this project for that purpose.
It went… OK!
- I got really caught up in the literate coding stuff, and I think the code was, in effect, too simple. It was more the surrounding machinery that was interesting.
- The driver code ended up being the complicated thing, which does suggest that it’s more running the experiments (which happens a lot in my experience!) that’s interesting, than the implementation-proper.
- Things like the arbitrary-length-bit-vector, and the constituent pages, also seemed to be a bit more interesting.
- I did really like the experiments, though. It was fun figuring out how to automatically make the charts.
I have a bigger write-up here: https://github.com/agorenst/bloom-filter/blob/master/bloomfilter.pdf