├── 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 |
24 | 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 |
52 | 53 | ## Episode 2: Distributed Key-Value Stores 54 | 55 | **Host:** Ozan Sazak 56 | **Date:** May 29, 2024 57 | 58 |
59 | 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 |
70 | 71 | ## Episode 3: Realtime State Sharing with CRDTs 72 | 73 | **Host:** Alperen Keles and Ozan Akin 74 | **Date:** June 12, 2024 75 | 76 |
77 | 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 |
98 | 99 | ## Episode 4: Tail Latency in Distributed Systems 100 | 101 | **Host:** Yigit Varli 102 | **Date:** June 26, 2024 103 | 104 |
105 | 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 |
-------------------------------------------------------------------------------- /seasons/distributed-paper-stacks/distributed-paper-stacks.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Reading Stacks Season 2: Distributed Paper Stacks 8 | 26 | 27 |

Reading Stacks 28 | Season 2: Distributed Paper Stacks

29 |

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 |
    36 |
  1. Distributed Queues by Can Toraman (May 15, 2024)
  2. 37 |
  3. Distributed Key-Value Stores by Ozan Sazak (May 29, 38 | 2024)
  4. 39 |
  5. Realtime State Sharing with CRDTs by Alperen Keles and Ozan Akin 40 | (June 12, 2024) 41 |
  6. 42 |
  7. Latency in Distributed Systems by Yigit Varli (June 26, 43 | 2024)
  8. 44 |
45 |

Below, you can find the abstracts for each episode.

46 |

Episode 1: Distributed Queues

47 |

Host: Can Toraman
48 | Date: May 15, 2024 49 |

50 |
51 | 52 | Click to see the abstract 53 | 54 |

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 | 75 |

Links:

76 | 90 |
91 |

Episode 2: Distributed 92 | Key-Value Stores

93 |

Host: Ozan Sazak
94 | Date: May 29, 2024 95 |

96 |
97 | 98 | Click to see the abstract 99 | 100 |

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 |
112 |

Episode 3: Realtime 113 | State Sharing with CRDTs

114 |

Host: Alperen Keles and Ozan Akin
115 | Date: June 12, 2024 116 |

117 |
118 | 119 | Click to see the abstract 120 | 121 |

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 |
139 |

Episode 4: Tail 140 | Latency in Distributed Systems

141 |

Host: Yigit Varli
142 | Date: June 26, 2024 143 |

144 |
145 | 146 | Click to see the abstract 147 | 148 |

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 |
--------------------------------------------------------------------------------