
Understanding Bloom Filters with Pharo - mpweiher
https://osoco.es/thoughts/2019/05/understanding-bloom-filters-with-pharo-smalltalk/
======
w8rbt
I put all the 'Have I been Pwned' SHA1 hashes into a bloom filter:
[https://github.com/w8rbt/bp](https://github.com/w8rbt/bp)

~~~
Freaky
I pulled them into a Golomb Compressed Set:
[https://github.com/Freaky/gcstool](https://github.com/Freaky/gcstool)

~~~
w8rbt
Neat. Thanks for sharing that.

------
peteretep
I feel like this gets pretty lost in the weeds for a pretty simple
explanation. I like this one: [https://llimllib.github.io/bloomfilter-
tutorial/](https://llimllib.github.io/bloomfilter-tutorial/)

~~~
theamk
I think the primary goal there was to demo Pharo Smalltalk and/or PharoPDS
library. Note how there were many examples of the code which show how to use
PharoPDS, but do not explain how bloom filters work.

Here is an actual source for the filter: [0], and here is a GUI code which
draws the grid: [1]

I am pleasantly surprised -- some Smalltalks used to be incomprehensible in
github; but looks like Pharo gets this right and produces human-readable
files.

[0] [https://github.com/osoco/PharoPDS/blob/master/src/PDS-
Core/P...](https://github.com/osoco/PharoPDS/blob/master/src/PDS-
Core/PDSBloomFilter.class.st)

[1] [https://github.com/osoco/PharoPDS/blob/master/src/PDS-
Playgr...](https://github.com/osoco/PharoPDS/blob/master/src/PDS-
Playground/PDSBloomFilterPlaygroundContent.class.st)

------
almostarockstar
That was an excellent explanation - regardless of your experience with Pharo
(in my case it was none). Real world use cases and visual examples coupled
with pretty clear language.

I had heard of bloom filters before but hadn't studies them in any detail.

------
m00dy
I also implemented once in python [0].

[0]:
[https://github.com/m00dy/BloomFilter](https://github.com/m00dy/BloomFilter)

