(This post is a summary of two papers I have recently read. Papir is the Norwegian word for paper)

Real-Time Twitter Recommendation: Online Motif Detection in Large Dynamic Graphs is a paper that was presented at VLDB 2016. It combines two of my favorite topics, distributed systems and graph theory, into a short (2 pages!) paper. It presents a simplified version of the algorithm that Twitter uses to detect motifs in real-time in a user’s social graph, which is then used to generate recommendations for the user. One thing I liked about this paper is that it presents naive solutions to the problem at hand before diving into the elegant solution that Twitter uses. The paper then presents their solution to the problem, and explains how it works at Twitter scale by graph partitioning, pruning, and offline data structure generation.

Design patterns for container-based distributed systems is a paper by Google that talks about software design patterns that are emerging from software systems that are built around containers. Software like Docker and CoreOS has made working with containers easier, and more and more companies are moving towards a container based ecosystem. Google was one of the first companies to use containers, and this paper contains design and architecture patterns that they have observed in their container based systems. The design patterns presented are grouped under three main categories of which I enjoyed reading about “Multi-node application patterns” the most. This sections deals with design patterns in distributed systems, where each node holds multiple related containers (called “pods” in the paper). It was interesting to read about how distributed system problems like leader election, scatter-gather, etc. can be dealt with language agnostic containers rather than by language specific libraries. I loved this line from the end of the paper, which made me think of containers in an entirely new light:

In all cases, containers provide many of the same benefits as objects in object-oriented systems, such as making it easy to divide implementation among multiple teams and to reuse components in new contexts. In addition, they provide some benefits unique to distributed systems, such as enabling components to be upgraded independently, to be written in a mixture of languages, and for the system a whole to degrade gracefully.


Quotes: August Edition

I wrote a blog post talking about how I write down lines from books I’m reading. Here are some lines that I loved from the book that I read in August:

It’s tough to live with people stuck in the past, isn’t it? — Harry Potter and the Cursed Child

The truth is a beautiful and terrible thing, and should therefore be treated with great caution. — Harry Potter and the Cursed Child

I exist to serve. — Harry Potter and the Cursed Child

Thank you for being my light in the darkness. — Harry Potter and the Cursed Child

Goal Tracking: August Edition

At the beginning of the year I published a post outlining what some of my goals for the year were. In the spirit of being transparent, here is the progress I made on them over the course of August –

  1. 65%-75% self availability over the course of the month.
  2. Volunteered for 0 hours  😦
  3. An embarrassing amount of procrastination.
  4. August 2016 was, by far, the most honest and open I’ve ever been in my life. The experiences I’ve had during this month have helped me grow a lot and certain moments are most definitely imprinted on the fabric of my mind.
  5. Made zero progress on learning Rust.
  6. I only managed to read one book in August — Harry Potter and the Cursed Child (a good, but NOT great, book).
  7. I read 2 research papers — Real-Time Twitter Recommendation: Online Motif Detection in Large Dynamic Graphs and High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads (I LOVED this paper. I will be writing a post about it soon).
  8. I wrote 5 posts.
  9. I learned to play 2-3 songs on the guitar.
    (Note to self — I need to learn more non-metal songs. Any time someone asks me to play a song the interaction is always along the lines of:
    “Oh cool! Why don’t you play something?”
    “Sure, but you probably haven’t heard the song.”
    Yes, almost none of my friends listen to metal music)

  10. (a) (goal achieved)
    (b) (goal achieved)
    (c) (goal achieved)
    (d) (goal achieved)
    (e) (goal achieved)