Remix.run Logo
pshirshov 4 days ago

Pure bullshit and incompetence.

> esoteric things like Bloom filters, so you can find them later in the unlikely case you need them.

They are not esoteric, they are trivial and extremely useful in many cases.

> Less DSA, more testing.

Testing can't cover all the cases by definition, why not property testing? Why not formal proofs?

Plus, in our days, it's easy to delegate testcase writing to LLMs, while they literally cannot invent new useful AnDS.

cogman10 4 days ago | parent | next [-]

> extremely useful in many cases.

I've not ran into a case where I can apply a bloom filter. I keep looking because it always seems like it'd be useful. The problem I have is bloom filter has practically reverse characteristics from what I want. It gives false positives and true negatives. I most often want true positives and false negatives.

burch45 4 days ago | parent | next [-]

Its entire purpose is an optimization. You have an expensive operation. A bloom filter can tell you that you definitely don’t need to do that operation. So rather than wasting a lot of time unnecessarily doing that operation, you get the cheap Bloom filter Che most of the time and only occasionally have the false positive where you do the expensive thing when it turns out you didn’t need to. That as far as I am aware of is the only use case for a bloom filter. That said, I have used it for that purpose effectively several times in my career.

pshirshov 4 days ago | parent | prev | next [-]

Assume that you need to build a large-scale search or analytics tool for example. All the sketch data structures (like cuckoo filters and especially hypermihashes) are extremely useful in these scenarios.

guiand 3 days ago | parent | prev [-]

> true positives and false negatives

That would be a simple cache in most instances.

burnt-resistor 4 days ago | parent | prev [-]

It's a strawman besmirching niche knowledge for methodology. The two aren't mutex and shouldn't be competitors. Bloom filters are really trivial to implement and are great examples of time/space tradeoffs, and are useful mostly for checking if a key isn't a member of an otherwise expensive lookup operation and so can be avoided early.

What's more concerning is "engineers" incurious about how lower levels of the stack work, or aren't interested in learning breadth, depth, or new things.