Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    M

    Michael Mitzenmacher

    eecs.harvard.edu/~michaelm · Personal blog · on HN since 2010

    Michael Mitzenmacher, a Harvard computer science professor, shares papers on randomized algorithms, hashing, Bloom filters, and probabilistic data structures.

    Visit blogHN submissions
    MathSystems & PerformanceDistributed Systems
    What HN says

    HN links his papers on the power of two random choices, cuckoo filters, and better Bloom filters when discussing load balancing and hashing.

    Stats for nerds
    39HN people shared it
    7linked in comments
    261story points
    Feb 2026last shared
    2011people per year2026

    Top posts on HN

    1. 1
      How to Read a Research Paper [pdf]
      1 person · 174 points · first shared 2014 · 48 comments on HN
    2. 2
      Cuckoo Filter: Practically Better Than Bloom (2014) [pdf]
      1 person · 80 points · first shared 2022 · 13 comments on HN
    3. 3
      The Power of Two Random Choices [pdf]
      18 people · 2 points · first shared 2011 · Discussion on HN
    4. 4
      CS Paper: Let users pick any password they like, if it's not too popular
      1 person · 2 points · first shared 2010 · Discussion on HN
    5. 5
      Generative models for power law vs. lognormal distributions [pdf]
      1 person · 1 points · first shared 2026 · Discussion on HN
    6. 6
      An Improved Data Stream Summary: The Count-Min Sketch and its Applications
      1 person · 1 points · first shared 2011 · Discussion on HN
    7. 7
      Network Applications of Bloom Filters: A Survey [pdf]
      1 person · 1 points · first shared 2026 · 1 comments on HN
    8. 8
      Mythesis.pdf
      6 people · first shared 2013
    9. 9
      Coinflipext.pdf
      3 people · first shared 2016
    10. 10
      Tpds2001.pdf
      2 people · first shared 2016

    What HN people wrote when they linked it

    • julesApr 2013

      I certainly already agreed that Rails' architecture is bad (though the reason that it has this problem is its memory usage, and not any of the other reasons you mention). Herokus architecture is bad as well. It's the combination of these that causes the problem. But that does not mean that it's impossible, or even hard, to solve the problem at Herokus end.

      > I'm not sure there are such providers, and if there aren't, I think it's safe to point the finger towards Rails.

      This is not sound logic. I described above two methods for solving the problem: (1) increase the memory per Dyno (see below: they're doing this, going from 512MB to 1GB per Dyno IIRC, which although still low will be a great improvement if that means that your app can now run 2 concurrent processes per Dyno instead of 1), or (2) do intelligent routing for small groups of Dynos. Do you understand the problem with random routing, and why either of these two would solve it? If not you might find the paper I linked to previously very interesting:

      "To motivate this survey, we begin with a simple problem that demonstrates a powerful fundamental idea. Suppose that n balls are thrown into n bins, with each ball choosing a bin independently and uniformly at random. Then the maximum load, or the largest number of balls in any bin, is approximately log n / log log n with high probability. Now suppose instead that the balls are placed sequentially, and each ball is placed in the least loaded of d >= 2 bins chosen…

    • 082349872349872Mar 2024

      > few applications of random walks for random human walking

      I've heard a hypothesis that an advantage of dubious fortune-telling techniques (entrails, tea leaves, etc.) for hunter-gatherer societies is that random choice of prey and direction each day keeps them from over-exploiting any given resource to extinction.

      A weird flex Indian Rajas were said to have done is to release a horse and then follow it, offering to fight anyone they met upon the resulting (not so random) walk. https://en.wikipedia.org/wiki/Ashvamedha

      I have read both ancient sword fighters and modern fencers advise to consciously plan an attack, but unconsciously trigger it: by letting noise from the environment decide the moment T=0, you're less likely to give your opponent any tells.

      One might imagine that divination before battle would provide what the modern world calls a "mixed strategy" and could indeed by superior to pure strategies. (compare the SSBN; see also https://www.atlanticcouncil.org/in-depth-research-reports/issue-brief/us-strategy-and-force-posture-for-an-era-of-nuclear-tripolarity/ )

      On a more peaceful note, if you wish to choose between popular dinner spots, it may be best to make the selection at hazard: http://www.eecs.harvard.edu/~michaelm/postscripts/handbook2001.pdf

    • ChrisLomontDec 2020

      >assuming you have a perfect cryptographic hash function

      Except there is no such thing (not in the sense you need it) - it too would be a perfect source of randomness, and you're just pushing the problem down the road.

      As an example, NIST publication 800-90B recommends multiple randomness extractors, one of which is SHA. They recommend using twice the amount of entropy in as the entropy out to get random "enough" bits. Thus even SHA is not going to mix bits well enough as you want.

      (The things called perfect hash functions in the literature map N items into N slots with no collisions, which is not what is needed here).

      As a perhaps surprising counterexample to any simple solution, here [1] is a math paper with a proof that there can be no optimal algorithm that is best for all values of coin bias.

      Here's [2] a cool walkthough on some of the ideas in theory that have been investigated.

      [1] https://web.eecs.umich.edu/~qstout/abs/AnnProb84.html
      [2] http://www.eecs.harvard.edu/~michaelm/coinflipext.pdf

    • mjbAug 2023

      Two random choices has a few significant advantages over "find the least filled one":

      - It's O(1), rather than O(buckets).

      - It's robust to stale data and concurrency. One way systems try to avoid the O(buckets) work is by caching, or by scanning in parallel, either of which cause stale load estimates. "Pick the best" tends to lead to significant over-filling http://www.eecs.harvard.edu/~michaelm/postscripts/handbook2001.pdf or https://brooker.co.za/blog/2012/01/17/two-random.html).

      - Best-of-k (rather than best-of-two) provides a parameter `k` that allows the system to tradeoff between optimality (higher k is more optimal), and robustness to stale data and concurrent accesses (lower k is more robust). Mitzenmacher's core observation is that the step up from k=1 to k=2 is a massive improvement in optimality with only a small loss in robustness (and much more than most people would expect).

    • spydumDec 2016

      Good talk, I feel like I've tread exactly this same thinking and given a similar talk internally (i accidentally ended up as the LB SME), even used poisson distribution to model the requests and do some code demos.

      He references a simple algorithm/paper on simply chosing between two servers, and the results on the smoothing out of variance was impressive (paper: https://www.eecs.harvard.edu/~michaelm/postscripts/mythesis.pdf ).

      So, no real conclusion, it's just interesting to peel back the layers of LB.. so many people treat it as magic, when really its a statistical lie - and impossible to achieve perfect distribution (hence the title)!

    • eruSep 2025

      It depends a bit on exactly what you mean.

      But eg if you want to write a new hash table (with a new hash function), you'd want to do pretty similar-ish analysis to figure out whether it's a good idea.

      I used some neat math in my time to justify much simpler algorithms than what we were using before. (But not hash table related.)

      https://www.keithschwarz.com/darts-dice-coins/ is also a joy to read. (As mentioned in the discussion on https://news.ycombinator.com/item?id=8006336 )

      Have a look at eg https://www.eecs.harvard.edu/~michaelm/postscripts/handbook2001.pdf for some more in this flavour.

    Related

    Marc Brookerbrooker.co.za204 people

    It's always TCP_NODELAY

    Marc Brooker
    Personal · last shared 2026
    Daniel Lemirelemire.me500 people

    Xor Filters: Faster and Smaller Than Bloom Filters

    Daniel Lemire
    Personal · last shared 2026
    My Biased Coinmybiasedcoin.blogspot.com18 people

    The effect of Groupon promotions on Yelp ratings

    My Biased Coin
    Personal · last shared 2021
    Michael Nielsenmichaelnielsen.org208 people

    How to crawl a quarter billion webpages in 40 hours

    Michael Nielsen
    Personal · last shared 2026
    Florianflorian.github.io15 people

    That XOR Trick (2020)

    Florian
    Personal · last shared 2026
    Beren Millidgeberen.io18 people

    The Scale of the Brain vs. Machine Learning (2022)

    Beren Millidge
    Personal · last shared 2026
    Fogusblog.fogus.me197 people

    Technical Papers Every Programmer Should Read (At Least Twice)

    Fogus
    Personal · last shared 2026
    The Morning Paperblog.acolyer.org606 people

    Local-first software: you own your data, in spite of the cloud

    The Morning Paper
    Personal · last shared 2026