Weekly Review: week ending in 2020/09/27

This past week, I skipped writing my daily reviews for two days in a row because I was really pressed for time. On the days that I skipped, I immediately started studying for the midterm exam as soon as I woke up. Looking back, I regret not writing anything down. Because I’ve already forgotten the events from those days, the memories lost.

In the future, when I’m under the gun I think I should still do my daily reviews going even if that means typing out only 5 bullet points. To that end, I’m going to limit the time for my daily reviews and return to time bounding the activity to 15 minutes. I’m hoping that setting an upper bound on those reviews will encourage me to rapidly write something (or anything) down, which is much better than writing nothing down.

Looking back at last week

Writing

  • Published 4 daily reviews (missing Friday and Saturday reflections)
  • Introduced a “what did I learn” section in my reviews (super helpful to capture the knowledge I acquired, even if they are in small doses)

Graduate School

  • Launched an online study group (i.e. war room) so us students could collaborate over video in preparation for the upcoming midterm. Overall, the war rooms were super beneficial (and fun as well), not only for me but for others. Lots of discussions happened. Made me re-realize that although writing does help solidify my understanding of a subject so does speaking about the topic. Also, hearing people’s others questions and answers help me understand the material more deeply.

Things I learned

  • To build high performance parallel systems we want to limit sharing global data structures. By reducing sharing, we limit locking, an expensive operation.
  • Heavy use of typedef keyword with enums creates cleaner C code
  • Learned that hierarchical locking (or locking in general) hinders system performance, preventing concurrency. What should we do instead? Reference counting for existence guarantee.
  • Writing a simple line parser in C one has to protect against so many edge cases
  • Most of the C string functions return pointers (e.g. strnstr for locating substring)
  • Learned how you can ensure that you are not statically creating a large data structure by using the -w-larger-than=byte_size compiler option
  • Able to visualize what an IPv6 data structure looks like underneath the hood: 16 char bytes. Also these are big endian, the least significant bit starting first.
  • Writing a simple line parser in C one has to protect against so many edge cases
  • Most of the C string functions return pointers (e.g. strnstr for locating substring)
  • Learned how you can ensure that you are not statically creating a large data structure by using the -w-larger-than=byte_size compiler option
  • Able to visualize what an IPv6 data structure looks like underneath the hood: 16 char bytes. Also these are big endian, the least significant bit starting first.