Writing

I want to get better at writing.  Writing long-form pieces accomplishes a few things: It sharpens your thinking regarding the topic. You can hide a lot of sloppy thinking in bullet points and presentations. If…

Composition vs Inheritance

The internet is so full of discussions concerning this point. It was first presented to me in Effective Java and while I think one should always take suggested good practices with a grain of salt…

Bloom Filter for Dummies

Someone once told me that when it comes to Computer Science white papers, don’t bother with reading the whole thing. According to him as long as he understands the intuition behind it, he’ll know where to look…

Services and modules

There has been some debate in my team about how to define and differentiate between a “service” and a “module”. Here is my proposal: A module exists to fulfill some technical purpose. (A good module…

A study of cache sizing

Recently I’ve been hard at work building a distributed in-memory cache for our runtime systems. One of the most important decisions that I’ve had to make in this project is the size of the cache….

Gorilla

This post is to write down my first impressions after reading Facebook’s Gorilla which is their in-house TSDB. Long story short, Facebook designed their own time-series database (TSDB) to collect and expose system metrics for…

Java Weak References

This is just a note about an (in my opinion at least) interesting use case for Java weak references. Weak References Java helps the developer take care of tracking objects and memory and cleaning up…

Alias Method

This post is about a brilliant algorithm called the Alias Method. This method allows you to generate samples according to a discrete probability distribution in constant time. In other words, it allows you to simulate a loaded or…

Using Memcache at Scale (Facebook)

My last post summarized why I chose memcached over Redis for our system’s caching layer. Memcache fit our desired feature set and was also faster (probably due to the relatively simple workload, set and get…