Category: Computer Science
-
Distributed Computing – Goodbye and thanks for the wonderful semester
I just finished Spring 2021 at Georgia Tech OMSCS and published a farewell note on the classroom’s forum (i.e. Piazza platform) and would like to share that here: This was one hell of a semester! Hats off to professor Ada and our great TAs — I learned a great deal about both theoretical and practical…
-
iperf3 3 and TCP maximum segment size (MSS)
The above diagram I diagrammed illustrates the impact to a network packet when setting the maximum segment size in iperf3. With an MSS of 1436, the segment (i.e. TCP payload) ends up 1424, due to the overhead of the 12 byte TCP options.
-
Distributed system snapshots: consistent vs inconsistent cuts
In “Consistent Global States of Distributed Systems: Fundamental Concepts and Mechanisms”, the authors propose capturing a distributed system’s computation using a time series graph. Each row in the graph represents a process (e.g. P1, P2, P3), and each tick (e.g. e1, e2) within that row represent a an event: a local event, a send message…
-
The FLP theorem: impossibility of achieving consensus within distributed systems
For this week, my distributed systems course just assigned us students a reading assignment: “Impossibility of distributed consensus with one faulty process“. Apparently, this paper is a seminal piece of work that goes on to describe and prove that, given a single process failure within a distributed system, the underlying system cannot achieve consensus (i.e.…
-
Why is Lamport’s Scalar Clock only consistent, not strongly consistent?
For the last couple days, I’ve been watching the distributed systems video lectures and reading the recommended papers that cover logical clocks. Even after making multiple passes on the material, the concepts just haven’t clicked: I cannot wrap my mind around why Lamport’s clocks satisfy only consistency — not strong consistency. But now I think…
-
8 fallacies of distributed computing
Rotem-Gal-Oz, A. (2005). Fallacies of Distributed Computing Explained. Cognitive biases (built-in patterns of thinking) and fallacies (errors in thoughts) creep into our every day lives, sometimes with us not even knowing it. For example, ever wonder why you work just a little harder, a little quicker, when you think someone is standing over your shoulder,…
-
Snapshotting my understanding of MapReduce
Like my previous posts on snapshotting my understanding of gRPC and shapshotting my understanding of barrier synchronization, this post captures my understanding of MapReduce, a technology I’ve never been exposed to before. The purpose of these types of posts is to allow future self to look back and be proud of what I learned since…
-
Distributed Systems – Active Networks (notes)
Introduction Summary How do quickly and reliably route data Routing on the Internet Summary Key Words: active network The idea is that instead of each router performing a simple next hop look up, let’s make the routers smart and inject code in the packet that can influence the flow. How can we do this securely…
-
What does “invariant partial ordering” mean in Leslie Lamport’s “Time, Clocks, and the Ordering of Events in a Distributed System”
In the conclusion of Time, Clocks, and the Ordering of Events in a Distributed System, Leslie Lamport states that: the concept of “happening before” defines an invariant partial ordering of the events in a distributed multiprocess system. According to a stackoverflow post, Jacob Baskin states that an invariant is a property of the program state…
-
CPU and Device Virtualization (notes)
This post is a continuation of virtualization. In the previous post, I talked about memory virtualization. This post instead discusses CPU and device virtualization. Ultimately, as system designers, one of our chief aims is to provide an illusion to the underlying guest operating systems that they each individually won the underlying hardware, the CPU and…
-
Week 1 and Week 2 of compilers
Last week, I couldn’t carve out enough time to write a post on my reflections for week 1 of my compiler’s course so I’ll do the next best thing: write a post that combines week 1 and week 2. The quarter kicked off on January 10th and since then, I’ve felt a range of emotions,…
-
Masters in CS paying off
Taking computer science courses are already paying off in my career. Nothing too significant (yet) but I am witnessing small wins. For example, this past summer I suffered through HPCA (high performance computing architecture), a course historically only offered in the longer semesters (e.g. fall, spring). In the course, I learned a lot of theory:…
-
Information Security – Project 4
This afternoon, I started on project 4 for introduction to information security (IIS). This goal for this project is to have us students learn more about web security and consists of three objectives, manufacturing three web attacks: cross site scripting, cross site forgery and structure query language (SQL) injection attack. And although I’m very familiar…
-
Week 1 of master’s in computer science
January 7th, 2019 marks the first day of my computer science master’s program through University of Georgia Tech. The week leading up to the first day was somewhat stressful since I was mid flight (returning to Seattle from London), my plane hovering over the massive blue sea, while I frantically typed away on my keyboard…
-
History of i,j,k variables ?
Any time you read code (in production or from a textbook), you’ll often see the control variable, when employing for loops, being declared with the variables i,j,k. And for most of my programming career, I’ve never really questioned why we specifically choose those three letters. Why not m (a great letter), or c or d or…
-
Linear algebra – exam 1
Earlier this morning, before starting the work week, I took my first linear algebra exam at the nearby Northgate Testing center. The proctored exam covered the first four modules in the course, topics including: Gaussian elimination (row echelon) Gaussian Jordan elimination (row reduced echelon) Adding, subtracting, multiplying matrices Calculating the inverse of matrices (using identity…
-
Assembly RA (return address)
About a year has passed since I took computer organization and I’m a bit disappointed of how much of the material faded from my memory. I only realized this while reading about Exception Control Flow (ECF) in the book Computer Systems: A programmer’s perspective, when the authors mentioned: As with a procedure call, the processor pushes a…
-
Flexing C muscles
I’ve been sharpening my C programming skills because I’m now working on a team (i.e. EC2 Networking) within Amazon Web Services that requires skills in lower level software development. And I must say, I’m truly rusty. A noob. On top of that, my only experience with C in the past has been fairly superficial, me…
-
The beauty of dynamic programming
I just discovered dynamic programming and damn, I’m blown away by the concept. The other day, hile working through a homework assignment, I compared the run times between two python functions that I wrote, one function written recursively and the other written in a dynamic programming fashion. Starting with the recursive solution, I arrived at…
-
Wrapping up discrete mathematics course
Last Friday, I took the final exam for my (distant learning) discrete mathematics course and just now I had logged into the student portal (i.e. Blackboard), surprised to find that my exam had not only been graded but my final grade had been posted as well. I finished the course with an 88%, a B,…
-
Graph theory and upcoming final exam
I just scheduled my final exam for my discrete mathematics course, now that I submitted my homework for the final assignment covering graph theory. Throughout this assignment, I was introduced to a variety of concepts: Leonard Euler and his discovery of Euler paths and circuits, Hamiltonian paths and circuits, and a handful of graph related…
-
Software and system ownership
Although I sometimes find getting paged for operational issues enervating, I wouldn’t have it any other way. It’s well known that software engineers at Amazon (Web Services) own their systems, end to end. This means that we not only develop and maintain our software, but we operate the underlying system, complete ownership. From a software…