Category: Uncategorized
What I’m currently listening to: Vattnet Viskar
Raw. Powerful.
Travel
After 24+ hours of traveling I’m back in San Francisco! The long journey gave me a lot of time to think. And read. And sleep (I think my superpower is falling asleep on airplanes).
Here are some of the things I read:
- The chapter on HDFS in the Architecture of Open Source Applications: I knew most of the content in this chapter because of various classes at UIUC, but it was still a fun read.
- http2 explained: One of the best resources (in my opinion) to understand the core concepts behind http2.
- Two stories from Labyrinths. I started reading this book on November 29th 2014 and am still only 50% done with it.
- Research paper on Succint.
Sojourn
I’m leaving for San Francisco in a couple of hours. Here is how I fared on my vacation goals:
- Made decent progress on my Pocket list.
- Read 4 research papers: a paper on AsterixDB, a paper on Hekaton, a paper on f4, and a paper on Borg.
- Finished Seveneves. I really enjoyed it.
- Did not run three miles everyday. I think I ran about half the days I was here.
- I figured out what my goals for 2016 are.
Later
One of my vacation goals was to work through my Pocket list. While I’m not close to being done (I’ve only been looking at the Computer Science related links. I also have a number of music related links on my list) here are the highlights so far:
- The CAP FAQ
- Making The Case For Building Scalable Stateful Services In The Modern Era: The entire article is very interesting. I particularly liked the “What Can Go Wrong” section.
- Fail at Scale: Adaptive LIFO is awesome.
Research Paper: “f4: Facebook’s Warm BLOB Storage System”
(second paper in my quest to distract myself)
f4: Facebook’s Warm BLOB Storage System introduces the reader to f4, a storage system designed and used at Facebook to store “warm” binary large objects (aka BLOBs). The term “warm” is used to denote the fact that these pieces of data are not as frequently accessed as “hot” BLOBs (which are stored in Haystack). The main motivation behind the design of f4 was the desire to lower the replication factor for warm BLOBs, while still maintaining the same fault tolerance guarantees (node, rack, and datacenter failure) that hot BLOBs have.
The first half of the paper dives into warm BLOBs and their characteristics (section 3) and also gives an overview on how Haystack works (section 4).
Section 5 dives into the details of f4. It explains the overall architecture of the system, how it leverages Reed-Solomon coding to reduce storage overhead (compared to raw replication), how the replication factor for BLOBs is 2.1 (compared to 3.6 in Haystack), how fault tolerance works, etc. The architecture section is very well written and does a good job of explaining the different types of nodes that comprise a f4 cell. My favorite section in the paper is the one that talks about fault tolerance (section 5.5); the “Quadruple Failure Example” in this section is extremely interesting and does a good job of showing how the system deals with failures at various levels. Another part of the paper that I really liked was the section on “Software/Hardware Co-Design” in section 5.6.
Overall this paper was fun to read and very interesting. It had been on my “To Read” list for quite some time now and I’m glad I finally got to it.
Research Paper: “Hekaton: SQL Server’s Memory-Optimized OLTP Engine”
(I’ve noticed that when I’m sad I tend to throw myself at whatever activity catches my fancy at the moment. I do this to distract myself, and in general this seems to work pretty well. To deal with my sadness this time around I will be reading research papers. And blogging. Here’s the first paper I read.)
(Hekaton was one of the systems mentioned in the “Red Book” that piqued my interest)
Hekaton: SQL Server’s Memory-Optimized OLTP Engine gives the reader an overview of Hekaton, a database engine that is a part of Microsoft SQL Server. It has been designed to work with data that fits entirely in main memory. The main motivation driving the design and implementation of Hekaton is the dropping cost of memory and the every growing popularity of multi-core CPUs. In order to achieve the best performance and to take full advantage of the multiple cores the Hekaton embraces a lock/latch-free design: all the index structures (a hash table and B-Tree) are lock/latch-free (details on the design are in [1] and [2]) and transactions use MVCC.
While the details of the implementation of the index data structures are in another paper, this paper does go into details of the MVCC design used and the garbage collection mechanism used to delete old records. Sections 6, 7, and 8 go into details of transactions, logging, and garbage collection. These sections are incredibly well written and do a great job of explaining these complex and core components of the system. The logging and checkpointing system is quite unique and I thought the non-usage (I’m sure there is a better term) of WAL is interesting. Section 8, which goes into details of the garbage collection mechanism used in Hekaton is definitely my favorite section in the paper. I think the GC algorithm is, simply put, beautiful.
Another unique aspect of the system: T-SQL queries and procedures are compiled down into native code to achieve high performance. Section 5 goes into the details of how this is done. What is interesting about this conversion process is that the generated code is one big function with labels and goto statements.
This was a great paper to begin 2016 with.
References
[1] Maged M. Michael. 2002. High performance dynamic lock- free hash tables and list-based sets. In Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures (SPAA ’02): 73-82.
[2] Levandoski, J.J.; Lomet, D.B.; Sengupta, S., “The Bw-Tree: A B-tree for new hardware platforms,” in Data Engineering (ICDE), 2013 IEEE 29th International Conference on , vol., no., pp.302-313, 8-12 April 2013
First
(Inspired by Ryan Hoover’s post)
A few firsts from (alliteration yay!) 2015:
- Not being afraid/shy and actually putting myself out there when it comes to dating. I think this was the biggest change in my life. The result? I met a lot of awesome people, have a lot of happy (and as expected, some sad ones as well) memories, and I learned a lot about myself. I think these experiences have made me into a better individual.
- Coachella
- Living in San Francisco. I love SF. The icing on the cake? Having a best friend who lives in Berkeley.
- Rock climbing
- Portland
- Blogging (almost) everyday for a month.
- Eating A5 wagyu beef at Kusakabe. The entire meal was incredible.
- Doing a muscle up.
- Taking part in a fitness related event (San Francisco Urbanathlon).
- Mentoring an intern on the distributed graph team at LinkedIn.
- Going to the SF Symphony.
2016
Writing a post about what my goals and resolutions for 2015 was a great idea. I think being public and open about what I wanted to achieve was added incentive to actually completing those goals. In the same vein here are my resolutions for 2016 –
- Always be there for family, friends, and romantic interests (for lack of a better term): It can be hard sometimes to make time for the people who love you and the people you love. I don’t ever want that to happen. As Kurt Vonnegut (via the character of Malachi Constant) said in The Sirens of Titan —
“…a purpose of human life, no matter who is controlling it, is to love whoever is around to be loved.”
- Keep volunteering: I managed to do some volunteering in 2015. I would love to put in more hours of volunteering in 2016.
- Stop procrastinating: I’ve realized that I tend to procrastinate quite a bit. While it hasn’t negatively affected my life in any way I think it’s a terrible trait to have and I will work on removing it in 2016.
- Be open and honest: I phrased this as “Be less shy” in 2015, but I think this is a more accurate description of what I am aiming for. I wrote a post explaining my rationale behind this decision. I still stand by that. After living life with this philosophy last year and seeing its (positive and negative) outcomes I cannot fathom living any other way.
- Learn Rust: Learning Rust or Erlang was one of my goals for 2015. I’ve decided to narrow the scope and focus on Rust.
- Read 24 books: My goal last year was to read 12 books over the course of 2015. I ended up reading 25. I’m very confident that I will be able to complete 2 books a month on average.
- Read 24 research papers: Same as last year. I will do a better job at tracking and writing about these this time around.
- Write 36 blog posts: 3 posts a month. Based on my posting frequency last year this should be doable.
- Get better a playing the guitar: I bought a beautiful guitar last year. My goal is to get noticeably better at playing it.
- Fitness goals:
(a) run a mile in 8 mins (my best mile time is currently 9 minutes and 50s. I’m terrible at running sigh)
(b) do a handstand
(c) squat twice my body weight
(d) run a half marathon
(e) +20 lb weighted muscle-up
Let’s see how many of these I can achieve in 2016. It’s going to be a fun year!
Goal Tracking: December 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 December –
- 0 hours of volunteering.
- 0 shyness.
- 0 progress on Rust or Erlang. This is now a 2016 goal.
- I read two books in December — The Sandman, Vol. 1: Preludes and Nocturnes (amazing. I’m definitely going to be reading this entire series) and Batman: Hush (very enjoyable; it was also the first Batman graphic novel I’ve read that had an element of romance in it).
- Two papers read. I wrote about one of them.
- 9 posts over the course of the month. Being on vacation meant I had more time to write.
- One muscle up this month. And that was just to prove to my brother that I can do at least one.