Could someone explain or point me to a resource as to why using multiple buckets in the HyperLogLog algorithm makes it more accurate than a single bucket?
I don't have an article but my intuition is that it reduces variance. It smears the probability of getting "unlucky" with the hashes across all of the buckets.
Friends of mine used "Create Your Own Programming Language" to get started learning about interpreters:
http://createyourproglang.com
I personally learned with SICP (But reading this book isn't just about interpreter, it will make you a better programmer and blow your mind in so many different ways. I wouldn't say it's for experts only, but this isn't the kind of book that beginners would get excited about. However, if someone is serious about improving as a developer, I can't think of a better book):
http://www.amazon.com/Structure-Interpretation-Computer-Prog...
Finally, (How to Write a (Lisp) Interpreter (in Python)) by norvig is a great read if you're getting started with interpreter: http://norvig.com/lispy.html
* The reason the two last links are lisp related is because writing interpreter in Lisp is really straightforward (Since the code is the AST). Similarly, if you wanted to learn about memory management, a language like assembler or C might be more suited than say Python.
Something I've been thinking about recently: does anyone think Slack followed Thiel's advice? It entered a space that already existed (didn't go from 0 to 1), with several competitors, solving a problem that was widely known (email is a broken way to get work done). Yet it's becoming a monopoly and will likely be a very valuable business. It seems like there can be tremendous value in making something really good when the existing solutions are not good, and that creating an extremely valuable business doesn't require doing something entirely new.
Thiel doesn't advocate for an immediate monopoly because the alternative _can't_ work, it's because it's _harder_ to get a startup off the ground in an already-competitive market
I also originally thought he had an array of arrays, but now I I think the run-times he mentioned for insertion and deletion would only work for a single array, not an array of arrays.
I like pair programming sessions a lot because both the candidate and the employer are investing an equal amount of time. While the intention behind take-home projects is good, the result is often that the candidate invests several hours into a project just to be quickly passed over by the employer.