Author: mattchung

  • Weekly Review – 2020/08/17 – 2020/08/23

    Weekly Review – 2020/08/17 – 2020/08/23

    • Writing
      • Wrote and published close to a dozen blog posts over the past week, creating a new cadence of bite-sized posts instead of large pieces that sit in draft mode
      • Feeling more confident about my digital organization system, storing all my books and articles and journals consistently, naming them author_year and storing them into DevonThink
    • Graduate School
      • Finished Advanced OS refresher course (threads and file systems and memory systems — skipped over networking module) and posted notes on blog
      • Finished taking notes and watching video lectures from Lesson 1 from Advanced OS course
      • Finished pre-lab assignment on fixing up multi-threaded code (producer/consumer) written with pthread library
    • Health
      • Took 1 hour tennis lesson with Olivia (shoulders and chest sore, that’s a good thing) and most important — produced some sweat
      • Attended my weekly therapy session (mental health: check)
    • Family
      • Bathed Elliott 5 nights this week (1:1 Father and Daughter time)
      • Sang Elliott “Punching in a Dream” while she balanced herself on top guitar neck
      • Visited sister and niece and brother in-law in Renton
      • Shopped with Aunt at Viet Wah, picking up all the ingredients for cooking clay pot fished (vegetarian version)
      • Called dad for his 62nd birthday, despite us not talking for the past two months

    Photos of the week

    Metric the human dog sprawled out across the couch
    Metric the human dog sprawled out across the couch

     

    Little Elliott looking super cute, Mushroom in the background
    Little Elliott looking super cute, Mushroom in the background

    Reflections

    I’d like to find a way to more shave off a few minutes when copying my outline notes from OmniOutliner to WordPress. To this end, perhaps I’ll code up a little python script because right now, copying and pasting and formatting takes an unnecessary 10 minutes, time that I could’ve spent on writing or studying or something else.

     

  • My classmates syllabus in excel form

    My classmates syllabus in excel form

    One of my virtual class mates took the poorly formatted syllabus living on Canvas and converted the document into a beautifully organized excel sheet (above).

    I appreciate him sharing this screenshot since it saves me at least 15 minutes from copying and pasting and wrestling with inevitable formatting issues.  On top of that, I now have a better sense of what to expect over the next 14 weeks of the Fall 2020 term.

    Thanks Luis Batista!

    References

    1 – Piazza Post: https://piazza.com/class/kduvuv6oqv16v0?cid=6_f7

     

  • Snapshotting my understanding before tackling homework assignment #1

    Snapshotting my understanding before tackling homework assignment #1

    Before tackling the homework assignment, I’m going to rate myself on the questions (below), from a scale of 1 (no freaking clue) to 5 (truly understand). The point of this exercise that I just made up myself is that I want to capture my understanding (or lack thereof) at a moment and time. Why do this? Because I know I’ve learned a ton in graduate school (and at work) over the past couple years and it’s easy to lose sight of those little victories and I want to look back (in a few days or in a few weeks) and say “Hey! Look at all your learned!”

    questions from #1 homework assignment (Advanced Operating Systems)
    questions from #1 homework assignment (Advanced Operating Systems)

     

    1. Consider a processor that supports virtual memory. It has a virtually indexed physically tagged cache, TLB, and page table in memory. Explain what happens in such a processor from the time the CPU generates a virtual address to the point where the referenced memory contents are available to the processor.

    (more…)

  • Done with advanced operating systems refresher course

    I’ve finished watching the lectures and taking notes for the operating systems refresher course1 that covers operating system fundamentals, the course covering topics including virtual memory system (e.g. paging, virtually indexed physically tagged) and file systems (e.g. FAT, EXT, inodes) and multi-threaded program (e.g. mutexes, conditional variables, synchronization) and networking2. The notes can be found in the following blog posts:

    Some of the videos really saved my bacon. Without watching the multi-threaded series, I think I would’ve struggled more than necessary on completing the pre-lab homework assignment, which has us students troubleshoot a misbehaving producer/consumer multi-threaded program.

    Reference

    1 – Operating Systems Refresher Course – https://classroom.udacity.com/courses/ud098

    2 – Oh yea, in the title, I included “sort of” because I’m skipping over the networking module. Not because I don’t find the topics interesting (I do), but mainly for two reasons: the interest of time and I think I’m fairly comfortable with those topics (I mean, I did work at Cisco at an network engineer, previously worked in Amazon’s Route53 DNS team and I currently build networking/packet process devices)

  • Little Elliott has found her voice

    Little Elliott has found her voice

    [fvplayer id=”1″]

    Just a short little video milestone of Elliott finding her voice, which sounds raspier than usual since I think she may have overdone it yesterday, making this “ah ah ah” noise for 14 hours.

  • Advanced Operating System Notes (File Systems)

    Advanced Operating System Notes (File Systems)

    Although I’ve covered file systems in previous courses, including graduate introduction of operating systems, I really enjoy learning more about this concept in a little depth.  The file system’s module is packed with great material, the material introducing a high level introduction of file system and then jumps into the deep end unveils what an operating system does behind the scenes.

    Main Take Aways

    • The high level purpose of a file system provides three key abstractions: file, filename and directory tree.
    • A developer can interface with the file system in two ways: a position based (i.e. cursor) and a memory based (i.e. block)
    • C function strol converts a string to a long
    • Mmap system calls maps a file on the file system to a contiguous block of memory (the second method a developer can interface with a file systeme)
    • FAT (file allocation table) glues and chains disk blocks together. It is essentially a linked list (persisted as a busy bit vector table) that is great for sequential reads (i.e. traversing the linked list) but awful for random access (i.e. to get to the middle, need to traverse from head)
    • EXT linux file system is based on inodes and improves random access using 12 direct pointers (13th pointer provides first level of indirection, 14th pointer second level of indirection, 15th pointer third level of direction)
    • Learned about the buffer cache (i.e. write-through) and how we a journal can help stabilize the system while maintaining decent performance
    Linked list and busy bit table
    Linked list and busy bit table

    (more…)

  • My First Research Paper: COVID19 and the impact on higher education

    Abstract—This research paper explores the impact of the COVID-19 health crisis on the education sector by unpacking the challenges and successes of the forced migration of professors and their curricula onto online learning platforms. Quantitative research was conducted in the form of a domestically focused survey to determine the success of those teaching models and the transition to online education by focusing on the experience of educators. This paper ultimately argues that under the specter of a pandemic, the ensuing online education has been as successful as possible, and that despite a myriad of global negative impacts, COVID-19 has opened the door to reform traditional learning, allowing educators to take advantage of this golden opportunity to unlock the power of online education.

    Above is the abstract pulled from my first ever research paper: What does effective education look like in the context of COVID-19, and how can subsequent successes and challenges be measured in order to ensure the future of online learning and the educa- tors that make it possible?

    I conducted the research (read at least three dozen of other educational peer reviewed papers, designing my own survey, sending survey out to thousands of professors teaching domestically) over  this past summer as part of Georgia Tech’s Educational Technology Course. Essentially, I wanted to identify the “best practices” of teaching in the midst of COVID19 and compare them against what was really happening: chaos.

    For the survey, I was able to collect responses from 500+ professors teaching at universities including Massachusetts Institute of Technology, Georgia Tech University, University of Washington and much more1.

    Surveyed professors teaching at schools including Massachusetts Institute of Technology (MIT), Georgia Tech University, University of California Berkeley
    Surveyed professors teaching at schools including Massachusetts Institute of Technology (MIT), Georgia Tech University, University of California Berkeley

     

    (more…)

  • Daily Review – 2020/08/20

    This post reviews yesterday, Wednesday August 19th 2020. Should I change the title to yesterday’s date or keep today’s date? Not sure, but I should probably stay consistent in my posts moving forward.

    Although I’m physically exhausted and tired than usual from waking up early (around 04:30 to 05:00) every day to crank out studying or homework assignments, I feel emotionally and mentally better, less stressed out, knowing that I’m making forward progress on my assignments instead of dealing with an avalanche of work over the weekend.

    Photo of the day

    Breakfast on the hotel floor (Suncadia Hotel) with Elliott and Jess
    Breakfast on the hotel floor (Suncadia Hotel) with Elliott and Jess

    Word of the Day

    Despondent – in low spirits from loss of hope or courage.

    (more…)

  • Advanced Operating Systems – Day 3 Recap

    The below write up consists of notes that I took while watching Multi-Threaded programming module from the Advanced Operating system’s refresher course1. I watched this third module before the second module (on File Systems, the next lecture series I’ll watch) because I started tackling the homework assignment that has us students debug a buggy multi-threaded program written with the POSIX threading library.

    Although I was able to fix many of the problems by writing the man pages of various system calls (e.g. pthread_join2, pthread_exit3), I wanted to back my troubleshooting skills with some theoretical knowledge, and I’m glad I did because I had forgotten that if the main thread (first thread that spawns when OS starts the process) calls exit or return, then all threads exit; this behavior can be modified by having the main thread call pthread_join instead, causing the main thread to wait for some other specific thread to terminate.

    Recap

    Shows that Thread shares the heap, globals, constants, and code - but contains its own stack
    Shows that Thread shares the heap, globals, constants, and code – but contains its own stack

    Writing multi-threaded code is difficult and requires attention to detail. Nonetheless, multi-threaded offers parallelizing work — even on a single core. Threads are cheaper in terms of context switching when compare to process context switches, since threads share the same memory space (although each thread manages its own stack, which must be cleaned up after if the thread is created as a joinable thread — detached threads, on the other hand, are cleaned up automatically when they exit) When using threads, there are a couple different design patterns: team, dispatched, pipeline. Selecting the correct design depends on the application requirements. Finally, when writing multi-threaded programming, the program must keep in mind that there are two different problems that they need to consider: mutual exclusion and synchronization. Regardless, for the program to be semantically correct, the program must exhibit: concurrency, lack of deadlocks and mutual exclusion of shared resources/memory.

     

     

    (more…)

  • Advanced Operating System Notes – Memory Systems (2/2)

    Notes below are from my first study session at 05:00 AM, before I hit the rest of my morning routine: walking the dogs at the local park, blending a delicious fruit smoothy (see my blog post on best vegan smoothie), then jumping behind the desk for hours for work. In the evening, I detoured from watching lectures and instead, focused on working on the pre-lab assignment (write up on this in another post)

    Page table - the underlying data structure that maps virtual pages to physical pages
    Page table – the underlying data structure that maps virtual pages to physical pages

     

    Summary

    Rest of the video lectures wraps up the memory system, discussing how virtual memory and its indirection technique offers a larger address space, protection between processes and sharing between process. For this to work, we need a page table, a data structure mapping virtual page numbers to physical frame numbers. Within this table are page table entries, each entry containing metadata that tracks things such as whether the memory is valid or readable or executable and so on. Finally, we can speed up the entire memory look up process by using a virtually indexed, physically tagged cache, allowing us check the TLB and Cache in parallel.

    (more…)