├── LICENSE
├── README.md
├── RESOURCES.md
└── seasons
└── distributed-paper-stacks
├── README.md
└── distributed-paper-stacks.html
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 reading-stacks
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Reading Stacks Book Club
2 |
3 | Reading Stacks is a book club for Turkish-speaking people interested in advanced topics where software engineering and computer science meet. We meet bi-weekly to discuss specific books and papers. We also share our notes and resources in this repository.
4 |
5 | This README documents the roles in this book club and how to manage or participate in a meetup by maximizing the fun and learning.
6 |
7 | ## How to participate
8 |
9 | ### Join the club
10 |
11 | To join the club, please fill out the [form](https://docs.google.com/forms/d/e/1FAIpQLSeP21SqfTEKvU3Vi-1njdVolrxPavfPcSu9kpCth-4_hs5-IQ/viewform?embedded=true) and we will add you to the club's mailing list.
12 |
13 | ### Suggest a resource for future meetups
14 |
15 | > Not implemented yet, come back later!
16 |
17 | ### Volunteer to host/moderate a meetup
18 | > Not implemented yet, come back later!
19 |
20 | ## Structure
21 |
22 | The club is designed to meet bi-weekly and discuss decided resources, such as book chapters or papers.
23 |
24 | > [!NOTE]
25 | > This is not a strict rule book, but a guide that outlines the suggested format for the best meetup experience for every attending individual.
26 |
27 |
32 |
33 | ### Before the meetup
34 |
35 | The vision for this club is to encourage a public debate on the books and topics we discuss, as well as facilitate an environment for actively producing content. We encourage everyone to take notes about their thoughts, be it short or long, handwritten or typeset, and add them to the `Notes` folder of the public repository for the resource.
36 |
37 | The club will have two mediums of communication. (1) A mailing list/google group for the weekly discussions as well as public announcements, (2) a set of GitHub repositories for archiving and sharing the notes and resources.
38 |
39 | Our mailing list is hosted at [Google Groups](https://groups.google.com/g/reading-stacks). We will send out the meeting links and announcements through this mailing list.
40 |
41 | The chapters/papers to be read for each meetup will be announced on the mailing list two weeks before the event. Three days before the event, the host will publish three to six questions alongside a set of notes/summaries to be discussed during the meetup. The participants are encouraged to share their notes and questions to contribute to the discussion.
42 |
43 | ### During the meetup
44 |
45 | Each meetup follows a similar structure:
46 |
47 | 1. **Introduction** (5 minutes): The host introduces the topic and the resource to be discussed.
48 | 2. **Discussion** (60 minutes with a 5-minute break at 30): The host leads the discussion by asking questions and encouraging everyone to participate. Mods will help to moderate the discussion and make sure everyone has a chance to speak.
49 | 3. **Conclusion** (5 minutes): The host summarizes the discussion and concludes the meetup.
50 |
51 | ### After the meetup
52 |
53 | After the meetup, the host will share their notes in the mailing list. The notes should include:
54 |
55 | - A summary of the discussion
56 | - Additional resources for further reading
57 | - A list of questions that were not answered during the meetup
58 |
59 | The next meetup date/time, host and resource will be announced by the club organizers in the mailing list.
60 |
61 | ## Roles
62 |
63 | ### Club Organizers
64 |
65 | Club organizers are responsible for the overall management of the club, including but not limited to:
66 |
67 | - Selecting resources and planning bi-weekly chapter or paper discussions
68 | - Announcing the meetup date/times, session hosts and resources to be discussed
69 | - Sending out polls to club participants for decisions such as resource selection
70 | - Maintaining the list of resources in the [Resources](./RESOURCES.md) doc
71 | - Maintaining a friendly and inclusive environment for everyone
72 | - Managing the mailing list and GitHub repositories
73 |
74 | ### Host
75 |
76 | The host is responsible for leading the discussion during the meetup. The host should:
77 |
78 | - Read the book chapter or paper of the week before the meetup
79 | - Prepare questions to lead the discussion
80 | - Research the topic and prepare additional materials if necessary
81 | - Reach out to sector experts for additional insights if necessary
82 | - Encourage everyone to participate in the discussion
83 | - Make sure everyone has a chance to speak
84 | - Summarize the discussion and conclude the meetup
85 |
86 |
92 |
93 | ### Session Moderator
94 |
95 | The session moderator is responsible for moderating the discussion during the meetup. This role is a helper role to the host.
96 |
97 | If not explicitly stated, the club organizers will do the moderation. If the club organizers are not available, they will select moderator(s) from the pool of volunteers who have expressed interest in moderating a meetup.
98 |
99 | ### Participant
100 |
101 | The participant is responsible for (preferably actively) participating in the discussion during the meetup. The participant should:
102 |
103 | - Read the book chapter or paper of the week before the meetup
104 | - Prepare questions or comments to contribute to the discussion
105 |
106 | > [!NOTE]
107 | > We do not force the participant to be active in the discussion, but we encourage everyone to participate.
108 |
--------------------------------------------------------------------------------
/RESOURCES.md:
--------------------------------------------------------------------------------
1 | # Reading List for Reading Stacks
2 |
3 | This note lists reading items (books, papers, etc.) that can be used in several possible reading groups.
4 |
5 | ## Distributed Systems
6 |
7 | - [ ] Designing Data Intensive Applications - Martin Kleppmann
8 | - [ ] Specifying Systems - Leslie Lamport
9 | - [ ] Practical TLA+ - Hillel Wayne
10 | - [ ] Program Proofs - K. Rustan M. Leino
11 |
12 | ## Databases
13 |
14 | - [ ] Database Internals - Alex Petrov
15 |
16 | ## Computer Science Theory
17 |
18 | - [ ] Structure and Interpretation of Computer Programs - Gerald Jay Sussman, Hal Abelson, Julie Sussman
19 |
20 | ## System Programming
21 |
22 | - [ ] Street Coder - Sedat Kapanoğlu
23 | - [ ] Learning eBPF - Liz Rice
24 |
25 | ## Software Engineering
26 |
27 | - [ ] System Design Interview Volume 2 - Alex Xu
28 |
--------------------------------------------------------------------------------
/seasons/distributed-paper-stacks/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Reading Stacks Season 2: Distributed Paper Stacks
3 |
4 | In this season of Reading Stacks, we will host 4 episodes on different topics in distributed systems. In each episode, we will base our discussions on a fundamental paper in the field, and augment the discussion with interactive demos, tutorials, use cases of the concepts in real-world systems, and more.
5 |
6 | The four episodes are:
7 |
8 | (1) Distributed Queues by Can Toraman *(May 15, 2024)*
9 |
10 | (2) Distributed Key-Value Stores by Ozan Sazak *(May 29, 2024)*
11 |
12 | (3) Realtime State Sharing with CRDTs by Alperen Keles and Ozan Akin *(June 12, 2024)*
13 |
14 | (4) Latency in Distributed Systems by Yigit Varli *(June 26, 2024)*
15 |
16 | Below, you can find the abstracts for each episode.
17 |
18 | ## Episode 1: Distributed Queues
19 |
20 | **Host:** Can Toraman
21 | **Date:** May 15, 2024
22 |
23 |
25 | Click to see the abstract
26 |
27 | In this episode of Paper Stacks, Can Toraman will be discussing Achieving Task-Based Scheduling in Low-Latency Distributed Priority Queues.
28 |
29 | In modern distributed systems, managing the queue efficiently is crucial for performance and responsiveness. Especially in multi-tenant environments, prioritizing different tasks (based on customer, task type, etc) is crucial. Yet, this area is still not highly explored, as many companies solve it by using different queues. Well, are more optimal ways, and how are they achievable in a distributed setting?
30 |
31 | Distributed priority queues are still not highly explored in the academic environment, so will base our discussions on different theoretical and practical perspectives used in the industry:
32 |
33 | - Timestone, Netflix’s distributed queue used in its encoding service
34 |
35 | - B4, Google’s Wide Area Network to support requests from both GCP and Google applications.
36 |
37 | - Facebook’s FOQS to support horizontal scaling and multi-tenant environments
38 |
39 | - QPID: A Distributed Priority Queue with Item Locality
40 |
41 | Links:
42 |
43 | - Timestone: https://netflixtechblog.com/timestone-netflixs-high-throughput-low-latency-priority-queueing-system-with-built-in-support-1abf249ba95f
44 |
45 | - B4: https://research.google/pubs/b4-and-after-managing-hierarchy-partitioning-and-asymmetry-for-availability-and-scale-in-googles-software-defined-wan/
46 |
47 | - FOQS: https://engineering.fb.com/2021/02/22/production-engineering/foqs-scaling-a-distributed-priority-queue/
48 |
49 | - QPID: https://ieeexplore.ieee.org/document/4725152
50 |
51 |
60 | Click to see the abstract
61 |
62 | In this episode of Paper Stacks, Ozan Sazak will explore the internals of Amazon Dynamo, a highly available and scalable key-value store.
63 |
64 | Dynamo, developed for Amazon’s critical services, addressed the internal needs of Amazon using techniques such as consistent hashing, quorum-like techniques, and eventual consistency.
65 |
66 | We’ll dive into the 2007 Dynamo paper, discuss the internals of the Dynamo, and the design decisions between the parts such as partitioning and replication.
67 |
68 | Paper Link: https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
69 |
78 | Click to see the abstract
79 |
80 | In this episode of Paper Stacks, Alperen Keles and Ozan Akin will be discussing
81 | Real-Time Distributed State Sharing for Collaborative Applications using Conflict-Free
82 | Replicated Data Types(CRDTs).
83 |
84 | Sharing state between multiple servers and clients is extremely common today. When
85 | multiple users make concurrent updates on a shared data structure, the applications need
86 | conflict resolution strategies to ensure all users agree on the final state.
87 |
88 | CRDTs are one such mechanism for handling distributed state; the differentiating factors
89 | for CRDTs are (1) they don't need a central server, (2) they are highly fault-tolerant, allowing
90 | users to work offline, and sync their work at arbitrary intervals.
91 |
92 | Within the episode, we will base our discussions on the 2011 paper by Marc Shapiro, discuss the
93 | usage of CRDTs in collaborative text editing in Zed Code Editor, collaborative canvases such as
94 | Excalidraw and Figma, and provide live demos on the internal workings of CRDTs.
95 |
96 | Paper Link: https://inria.hal.science/inria-00555588/document
97 |
106 | Click to see the abstract
107 |
108 |
109 | In this episode of Paper Stacks, Yigit Varli will be discussing the challenges of
110 | optimizing tail latencies in large-scale distributed systems.
111 |
112 | Distributed systems tend to serve a diverse set of users at geographically varying locations, with
113 | heterogeneous loads and requirements. Classically, such systems have optimized for “average latency”,
114 | which resulted in very high latency for a small subset of users, the so-called tail.
115 |
116 | In this episode, we will dive into 'The Tail at Scale' by Jeffrey Dean and Luiz André Barroso from Google,
117 | where we will explore system designs and techniques to handle high loads, ensuring smoother operation and
118 | improved user experience.
119 |
120 | Paper Link: https://dl.acm.org/doi/pdf/10.1145/2408776.2408794
121 |
In this season of Reading Stacks, we will host 4 episodes on 30 | different topics in distributed systems. In each episode, we will base 31 | our discussions on a fundamental paper in the field, and augment the 32 | discussion with interactive demos, tutorials, use cases of the concepts 33 | in real-world systems, and more.
34 |The four episodes are:
35 |Below, you can find the abstracts for each episode.
46 |Host: Can Toraman
48 | Date: May 15, 2024
49 |
In this episode of Paper Stacks, Can Toraman will be discussing 55 | Achieving Task-Based Scheduling in Low-Latency Distributed Priority 56 | Queues.
57 |In modern distributed systems, managing the queue efficiently is 58 | crucial for performance and responsiveness. Especially in multi-tenant 59 | environments, prioritizing different tasks (based on customer, task 60 | type, etc) is crucial. Yet, this area is still not highly explored, as 61 | many companies solve it by using different queues. Well, are more 62 | optimal ways, and how are they achievable in a distributed setting?
63 |Distributed priority queues are still not highly explored in the 64 | academic environment, so will base our discussions on different 65 | theoretical and practical perspectives used in the industry:
66 |Links:
76 |Host: Ozan Sazak
94 | Date: May 29, 2024
95 |
In this episode of Paper Stacks, Ozan Sazak will explore the 101 | internals of Amazon Dynamo, a highly available and scalable key-value 102 | store.
103 |Dynamo, developed for Amazon’s critical services, addressed the 104 | internal needs of Amazon using techniques such as consistent hashing, 105 | quorum-like techniques, and eventual consistency.
106 |We’ll dive into the 2007 Dynamo paper, discuss the internals of the 107 | Dynamo, and the design decisions between the parts such as partitioning 108 | and replication.
109 | Paper Link: https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf 111 |Host: Alperen Keles and Ozan Akin
115 | Date: June 12, 2024
116 |
In this episode of Paper Stacks, Alperen Keles and Ozan Akin will be 122 | discussing Real-Time Distributed State Sharing for Collaborative 123 | Applications using Conflict-Free Replicated Data Types(CRDTs).
124 |Sharing state between multiple servers and clients is extremely 125 | common today. When multiple users make concurrent updates on a shared 126 | data structure, the applications need conflict resolution strategies to 127 | ensure all users agree on the final state.
128 |CRDTs are one such mechanism for handling distributed state; the 129 | differentiating factors for CRDTs are (1) they don’t need a central 130 | server, (2) they are highly fault-tolerant, allowing users to work 131 | offline, and sync their work at arbitrary intervals.
132 |Within the episode, we will base our discussions on the 2011 paper by 133 | Marc Shapiro, discuss the usage of CRDTs in collaborative text editing 134 | in Zed Code Editor, collaborative canvases such as Excalidraw and Figma, 135 | and provide live demos on the internal workings of CRDTs.
136 | Paper Link: https://inria.hal.science/inria-00555588/document 138 |Host: Yigit Varli
142 | Date: June 26, 2024
143 |
In this episode of Paper Stacks, Yigit Varli will be discussing the 149 | challenges of optimizing tail latencies in large-scale distributed 150 | systems.
151 |Distributed systems tend to serve a diverse set of users at 152 | geographically varying locations, with heterogeneous loads and 153 | requirements. Classically, such systems have optimized for “average 154 | latency”, which resulted in very high latency for a small subset of 155 | users, the so-called tail.
156 |In this episode, we will dive into ‘The Tail at Scale’ by Jeffrey 157 | Dean and Luiz André Barroso from Google, where we will explore system 158 | designs and techniques to handle high loads, ensuring smoother operation 159 | and improved user experience.
160 | Paper Link: https://dl.acm.org/doi/pdf/10.1145/2408776.2408794 162 |