25 Papers That Completely Transformed the Computer World.
1. Dynamo - Amazon’s Highly Available Key Value Store
2. Google File System: Insights into a highly scalable file system
3. Scaling Memcached at Facebook: A look at the complexities of Caching
4. BigTable: The design principles behind a distributed storage system
5. Borg - Large Scale Cluster Management at Google
6. Cassandra: A look at the design and architecture of a distributed NoSQL database
7. Attention Is All You Need: Into a new deep learning architecture known as the transformer
8. Kafka: Internals of the distributed messaging platform
9. FoundationDB: A look at how a distributed database
10. Amazon Aurora: To learn how Amazon provides high-availability and performance
11. Spanner: Design and architecture of Google’s globally distributed databas
12. MapReduce: A detailed look at how MapReduce enables parallel processing of massive volumes of data
13. Shard Manager: Understanding the generic shard management framework
14. Dapper: Insights into Google’s distributed systems tracing infrastructure
15. Flink: A detailed look at the unified architecture of stream and batch processing
16. A Comprehensive Survey on Vector Databases
17. Zanzibar: A look at the design, implementation and deployment of a global system for managing access control lists at Google
18. Monarch: Architecture of Google’s in-memory time series database
19. Thrift: Explore the design choices behind Facebook’s code-generation tool
20. Bitcoin: The ground-breaking introduction to the peer-to-peer electronic cash system
21. WTF - Who to Follow Service at Twitter: Twitter’s (now X) user recommendation system
22. MyRocks: LSM-Tree Database Storage Engine
23. GoTo Considered Harmful
24. Raft Consensus Algorithm: To learn about the more understandable consensus algorithm
25. Time Clocks and Ordering of Events: The extremely important paper that explains the concept of time and event ordering in a distributed system
Over to you: I’m sure we missed many important papers. Which ones do you think should be included?
--
Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): https://t.co/eVEdOFSYPY
Git branching strategies explained.
A well-planned Git branching strategy helps coordinate the development team’s work and keeps the development process consistent.
When formulating your branching strategy, it's important to take into account the project’s complexity, the team’s size, and the release cycle.
Let's take a look at some common approaches to branching:
Feature branching is a popular approach as development tasks are usually revolved around a feature. It involves having a branch for every feature being developed to keep the changes isolated from the main branch. Code reviews are simplified as all changes are contained in one branch.
Gitflow has two permanent branches — a production and a pre-production branch, often referred to as the “prod” and “dev” branches. There are additional temporary branches for each feature, scheduled releases, and urgent bug fixes.
All changes other than urgent bug fixes are merged into the dev branch. Before a scheduled release, a release branch is created for further cleaning and testing. Once ready for production, the release branch is merged into the prod branch. This is a great approach for projects with scheduled release cycles & multiple production versions.
GitLab flow combines feature-branching and environment-based branching. Changes are merged into a main branch which is then merged into subsequent branches that correlate to an environment in the CI/CD pipeline; such as staging and production. This strategy offers a more flexible alternative to Gitflow and better facilitates continuous development.
GitHub flow takes a simplified process that is similar to feature branching. The key difference is that GitHub flow incorporates deployment into its approach. The main branch is always production-ready, and changes to this branch trigger the CI/CD process; this isn't the case with feature branching.
With trunk-based development, branches are very short-lived. Changes are merged into the main branch within a day or two. Feature flags are used for changes that require more time to complete. This strategy requires very disciplined processes & excellent testing. It's become a popular approach for very large teams who have the capacity to implement these processes, & where large merge conflicts can often occur.
When formulating your branching strategy, take the most relevant features from the above strategies and apply your own set of tweaks. Every project and team has its own unique needs and boundaries, which should be reflected in their Git branching strategy.
~~
Thank you to our partner Postman who keeps our content free to the community.
Here are five new Postman features you should know: https://t.co/2Kd3t7rBHZ
#1 trending github repo right now looks INSANE
Single image to live stream deep fake.
Look at that quality!!
It's called Deep-Live-Cam (link in replies)
All of these UNBELIEVABLE videos were created using Sora, the new AI model from OpenAI
Watch each one and see how it makes you feel...
I don't think it's crazy for me to say this going to shift Hollywood, social apps and media forever
Video #1
Prompt: The camera directly faces colorful buildings in burano italy.
An adorable dalmation looks through a window on a building on the ground floor.
Many people are walking and cycling along the canal streets in front of the buildings.
My take:
This dog looks freakishly real. I want to pet him.