Jyotinder Singh
Jyotinder Singh
  • 27
  • 116 908
How Meta built a Highly Available, Strongly Consistent Object Store | System Design
In this video, we explore how Meta used Chain Replication, a rather unusual replication strategy to build a highly available, reliable, and strongly consistent object store.
Subscribe to my substack: jyotinder.substack.com
Link to my GitHub: github.com/JyotinderSingh
Link to my Website: jyotindersingh.com/
Meta's blog: engineering. 2022/05/04/data-infrastructure/delta/
Chain Replication Paper: www.cs.cornell.edu/home/rvr/papers/OSDI04.pdf
Apportioned Queries Paper: www.usenix.org/legacy/event/usenix09/tech/full_papers/terrace/terrace.pdf
zhlédnutí: 159

Video

How to build a Durable Write Ahead Log in Go | Segmentation, Auto Recovery, Checksums
zhlédnutí 683Před 5 měsíci
Link to the newsletter post: jyotinder.substack.com/p/understanding-durability-using-write-ahead-logs Link to the complete code: github.com/JyotinderSingh/go-wal Subscribe to my substack: jyotinder.substack.com In this video we take a deep dive into understanding how Write Ahead Logs ensure durability in distributed systems, databases, and many such applications. We also take a deep dive into h...
How to build a Distributed Task Scheduler with Go, Postgres, and gRPC
zhlédnutí 4,7KPřed 5 měsíci
Link to the Newsletter Post: jyotinder.substack.com/p/designing-a-distributed-task-scheduler Link to the Code: github.com/JyotinderSingh/TaskMaster Subscribe to the Substack: jyotinder.substack.com In this video, we build a distributed task scheduler using Go, Postgres, gRPC, and Docker. We go over concurrency and thread-safety concepts such as goroutines, database locks, and Mutexes to get a d...
Merge K Sorted Lists (LeetCode) | Interview Question Explained
zhlédnutí 885Před 3 lety
Link to the Code: Heap Implementation: github.com/JyotinderSingh/Algorithms/blob/master/LeetCode/merge-k-sorted-lists-HEAP.cpp Map Implementation: github.com/JyotinderSingh/Algorithms/blob/master/LeetCode/merge-k-sorted-lists-MAP.cpp Link to the Problem: leetcode.com/problems/merge-k-sorted-lists/ Time Complexity: n * log(k) Link to my GitHub: github.com/JyotinderSingh Link to my Website: jyoti...
Merge Intervals (LeetCode) | Interview Question Explained
zhlédnutí 303Před 3 lety
Note: The diagrams in the video start ''interval 1" from point 0 rather than point 1, a small mistake that I noticed after the upload Link to the Code: gist.github.com/JyotinderSingh/f5e13c5e947dd61e3ea2c66fbb1e3fbc Lambdas in C /C: www.geeksforgeeks.org/lambda-expression-in-c/ Link to the Problem: leetcode.com/problems/merge-intervals/ Link to my GitHub: github.com/JyotinderSingh Link to my We...
Reduce Array Size to the Half (LeetCode) | Interview Question Explained
zhlédnutí 835Před 3 lety
Link to the Code: gist.github.com/JyotinderSingh/93f2e1202456198ea7cb1e20e7f36ece Link to the Problem: leetcode.com/problems/reduce-array-size-to-the-half/ Link to my GitHub: github.com/JyotinderSingh Link to my Website: jyotindersingh.com/ Timestamps: 00:00 - Problem Introduction 01:14 - Algorithm Explanation 04:12 - Coding Walkthrough Some great channels to learn more: Tushar Roy: czcams.com/...
Add Binary (LeetCode) | Adding Binary Numbers as Strings Explained
zhlédnutí 20KPřed 3 lety
Link to the Code: gist.github.com/JyotinderSingh/d55da3d65dc46d3124c506e42ffc8d2a Link to the Problem: leetcode.com/problems/add-binary/ Link to my GitHub: github.com/JyotinderSingh Link to my Website: jyotindersingh.com/ Timestamps: 00:00 - Problem Introduction 00:54 - Quick Intro to Number Systems 03:59 - Algorithm Explanation 05:23 - Coding Walkthrough Some great channels to learn more: Tush...
Course Schedule II (LeetCode) | DFS Topological Sort Explanation
zhlédnutí 612Před 3 lety
Link to the Code: gist.github.com/JyotinderSingh/c710ca0faf70aa96cbe428153dc49069 Link to Tushar Roy's Topological Sort Explanation: czcams.com/video/ddTC4Zovtbc/video.html Link to my GitHub: github.com/JyotinderSingh Link to my Website: jyotindersingh.com/ Timestamps: 00:00 - Problem Explanation 02:30 - Algorithm 06:23 - Coding Walkthrough Some great channels to learn more: Tushar Roy: czcams....
Rotate List (LeetCode) | Linked List Interview Question Explanation
zhlédnutí 3,1KPřed 3 lety
Link to the Code: gist.github.com/JyotinderSingh/f91c411e29db478ab80403d1e9b9efdb Link to the Problem: leetcode.com/problems/rotate-list/ Link to my GitHub: github.com/JyotinderSingh Link to my Website: jyotindersingh.com/ Timestamps: 00:00 - Problem Explanation 01:02 - Algorithm 04:01 - Coding Walkthrough Some great channels to learn more: Tushar Roy: czcams.com/users/tusharroy2525 Errichto: c...
Spiral Matrix (LeetCode) | Spiral Ordering of a Matrix Explanation
zhlédnutí 125Před 3 lety
Link to the Code: gist.github.com/JyotinderSingh/4a2d635140091beb0e98cadf2e7fb0e3 Link to the Problem: leetcode.com/problems/spiral-matrix/ Link to my GitHub: github.com/JyotinderSingh Link to my Website: jyotindersingh.com/ Timestamps: 00:00 - Problem Introduction 02:20 - Algorithm Approach 03:20 - Algorithm Coding Walkthrough Some great channels to learn more: Tushar Roy: czcams.com/users/tus...
Reverse Sublist in Linked List | (Reverse Linked List II on LeetCode) Explanation
zhlédnutí 19KPřed 3 lety
Link to the Code: gist.github.com/JyotinderSingh/96fec7f9af3712c6cf765dedb7bf13b2 Link to the Problem: leetcode.com/problems/reverse-linked-list-ii/ Link to my GitHub: github.com/JyotinderSingh Link to my Website: jyotindersingh.com/ Timestamps: 00:00 - Problem Introduction 01:44 - Algorithm Explanation 12:25 - Coding Walkthrough Some great channels to learn more: Tushar Roy: czcams.com/users/t...
Island Perimeter (LeetCode) | Interview Question Explanation
zhlédnutí 228Před 3 lety
Link to the Code: gist.github.com/JyotinderSingh/2a3fe0c6d60789f9673c97cc7801926c Link to the Problem: leetcode.com/problems/island-perimeter/ Link to my GitHub: github.com/JyotinderSingh Link to my Website: jyotindersingh.com/ Timestamps: 00:00 - Problem Introduction 01:10 - Algorithm Walkthrough 03:51 - Coding Walkthrough Explanation Some great channels to learn more: Tushar Roy: czcams.com/u...
Count Largest Group (LeetCode) | Interview Question Explanation
zhlédnutí 1,7KPřed 3 lety
Count Largest Group (LeetCode) | Interview Question Explanation
Increment Integer Represented as an Array (Plus One on LeetCode) | Interview Question Explained
zhlédnutí 174Před 3 lety
Increment Integer Represented as an Array (Plus One on LeetCode) | Interview Question Explained
Number of Subsequences That Satisfy the Given Sum Condition (LeetCode)
zhlédnutí 4,5KPřed 4 lety
Number of Subsequences That Satisfy the Given Sum Condition (LeetCode)
Arranging Coins (LeetCode) | Binary Search Algorithm Explanation
zhlédnutí 1,6KPřed 4 lety
Arranging Coins (LeetCode) | Binary Search Algorithm Explanation
Word Search (LeetCode) | Interview Question Algorithm Explanation
zhlédnutí 388Před 4 lety
Word Search (LeetCode) | Interview Question Algorithm Explanation
Edit Distance between 2 Strings | The Levenshtein Distance Algorithm + Code
zhlédnutí 53KPřed 4 lety
Edit Distance between 2 Strings | The Levenshtein Distance Algorithm Code
4Sum (LeetCode) | Interview Question Algorithm Explanation
zhlédnutí 1,4KPřed 4 lety
4Sum (LeetCode) | Interview Question Algorithm Explanation
Unique Binary Search Trees (LeetCode) | Dynamic Programming Explanation
zhlédnutí 177Před 4 lety
Unique Binary Search Trees (LeetCode) | Dynamic Programming Explanation
3Sum (LeetCode) | Interview Question Algorithm Explanation
zhlédnutí 507Před 4 lety
3Sum (LeetCode) | Interview Question Algorithm Explanation
Two Sum (LeetCode) | Interview Question Algorithm Explanation
zhlédnutí 196Před 4 lety
Two Sum (LeetCode) | Interview Question Algorithm Explanation
Dungeon Game (LeetCode) | Dynamic Programming Explanation
zhlédnutí 1,4KPřed 4 lety
Dungeon Game (LeetCode) | Dynamic Programming Explanation
Subarray Sum Equals K (LeetCode) | Interview Question Explanation
zhlédnutí 834Před 4 lety
Subarray Sum Equals K (LeetCode) | Interview Question Explanation

Komentáře

  • @zekicaneksi
    @zekicaneksi Před 17 dny

    even if i understood it, you made a fanstastic job. thanks my man

  • @20-213K.abhilasha
    @20-213K.abhilasha Před 26 dny

    we cannot use it as a[i] & b[j] it is not an array

  • @jasonzavaglia
    @jasonzavaglia Před měsícem

    Best explanation I've seen on it though, thanks! Just wanted to point out though that there is an off-by-one error in the code. The for loops need to be up to <= word1.size() , not < word1.size(), and the final result should be retrieved from dp[word1.size()][word2.size()]. Try the test case "abc" / "xyz" for an example with edit distance 3. I noticed that the initial array sizing with +1's - but the algorithm coded there (incorrectly) does not use the last column/row.

  • @aarushisharma7856
    @aarushisharma7856 Před měsícem

    Thanks a lot!!!

  • @vaibhavmewada4508
    @vaibhavmewada4508 Před měsícem

    nice explanation

  • @chhayakumardas9539
    @chhayakumardas9539 Před měsícem

    A very insightful video. Just had one question around repair. Once we find a corrupted log wouldn't the data be insconsistent even after the repair? I am coming from the place where I have to use repair for a DB recovery

    • @JyotinderSingh
      @JyotinderSingh Před měsícem

      The repair is essentially discarding all data that it cannot read. It preserves entries up till the last row of data that the system is able to read successfully. We work on the assumption that all data which we can read is correctly stored in the WAL (Reinforced by the checksum). The recovery mechanism is on best effort basis, and attempts to retrieve all data that it can successfully read.

  • @sambhavmishra5423
    @sambhavmishra5423 Před 2 měsíci

    bro can you bring something with golang

  • @prashlovessamosa
    @prashlovessamosa Před 2 měsíci

    Great explanation

  • @snehasaxena8198
    @snehasaxena8198 Před 2 měsíci

    So concise and on point

  • @dwivedishashank9
    @dwivedishashank9 Před 2 měsíci

    Thanks man. Will be using variable names going forward :)

  • @obarlanytska3051
    @obarlanytska3051 Před 2 měsíci

    cool video with brilliant explanation.

  • @pianomoonpunch
    @pianomoonpunch Před 2 měsíci

    Thankyou so much for the explanation!! I have my finals next week and this helped a lot.

  • @terfamike-kusah6715
    @terfamike-kusah6715 Před 2 měsíci

    Supposing I want to Design and implement a distributed system that monitors and optimizes resource utilization across multiple nodes in a network. What changes do I make?

  • @zaorincito
    @zaorincito Před 2 měsíci

    good video explanation thanks

  • @og1kenobi973
    @og1kenobi973 Před 2 měsíci

    You, sir, are a LEGEND!

  • @engineeringflix
    @engineeringflix Před 3 měsíci

    very welll explained....

  • @janogashoamatalaah7764
    @janogashoamatalaah7764 Před 3 měsíci

    thank you

  • @RiteshKumar-sx7ng
    @RiteshKumar-sx7ng Před 4 měsíci

    thank you very much!! Bhaiya.

  • @teeshadembla6920
    @teeshadembla6920 Před 4 měsíci

    amazing explanation!!!

  • @angeltran381
    @angeltran381 Před 4 měsíci

    Thank you. At first, I feel difficult to understand the problem. Thanks to your video, it is clear and easy to implement.

  • @thiccphone1166
    @thiccphone1166 Před 4 měsíci

    Why would you want the minimum health at the end? I would want maximum health especially if you can carry health over to the next floor. TBH, wasn't really paying attention and you may have explained it but I don't get what you mean by "wasting health" since you aren't technically wasting anything since if the goal is only to reach (2,2) from (0,0) as long as you get to the location then the optimal solution is taking less steps. Since both solutions are equal, except one solution results in having more health at the end, it would be safe to assume that MORE health at the end is better rather than having the minimum. Having the maximum health means you will be prepared for the future, while having the minimum means you can only do the single task. So if the rule was to get there with the fewest steps, then health is irrelevant outside of being alive upon reaching the destination. If the rule was to get there before the princess's health reaches 0, say after every step she loses health and has a number of health points, the optimal solution would be to get as much health for the knight as possible and the princess has the minimum required to reach the goal. Given that the only rule is to reach the princess without dying then there are two solutions. If the question was what's the minimum health required by a knight to reach the princess then the optimal solution is still Down-Down-Right-Right as the minimum health require is 6, not 7. At the same time, my knight would be stronger by the time I reach the princess and your knight would be the weakest. My underdog knight could continue adventuring.

  • @prashlovessamosa
    @prashlovessamosa Před 5 měsíci

    I have seen your projects those are super awesome. Please guide me how have you started learning so deeply and how can i achieve it.

    • @JyotinderSingh
      @JyotinderSingh Před 5 měsíci

      Thanks for the kind words Prashant. I usually read books for inspiration and guidance in these domans. Some good books I can recommend are Architecture of Open Source Applications, Designing Data Intensive Applications, Database Internals by Alex Petrov, Understanding Distributed Systems.

    • @prashlovessamosa
      @prashlovessamosa Před 5 měsíci

      great thanks for sharing@@JyotinderSingh

  • @shameerbaramy3103
    @shameerbaramy3103 Před 5 měsíci

    Thank you. Really good stuff !!

  • @avi_5827
    @avi_5827 Před 5 měsíci

    Thank you for the video, It was highly insightful !!

  • @prashlovessamosa
    @prashlovessamosa Před 5 měsíci

    Great video please make more videos on low level stuff

  • @AMAN-oz8ud
    @AMAN-oz8ud Před 5 měsíci

    really liked your vscode theme, please share

  • @abhishekmehandiratta4241
    @abhishekmehandiratta4241 Před 5 měsíci

    What a great video! thanks for the clear explanation!

  • @damercy
    @damercy Před 5 měsíci

    Great stuff! Thanks a lot! Please keep posting such videos with such clear explanation. 👌

  • @siddhantsangwan3556
    @siddhantsangwan3556 Před 5 měsíci

    Great video on a topic I was curious about. Thanks!

  • @tarun3847
    @tarun3847 Před 5 měsíci

    Zoom screen so it will be clear

  • @deathdefier45
    @deathdefier45 Před 5 měsíci

    Absolute pillar of the grpc community, thanks for this brother!

  • @kgaudel7993
    @kgaudel7993 Před 5 měsíci

    Great stuff, please make more videos like this!

  • @abdu5822
    @abdu5822 Před 5 měsíci

    Thanks sir. Please More system design and golang services

    • @JyotinderSingh
      @JyotinderSingh Před 5 měsíci

      Will be posting more videos about software internals and system design soon!

    • @abdu5822
      @abdu5822 Před 5 měsíci

      @@JyotinderSingh thanks. Appreciate it sir.

  • @prashlovessamosa
    @prashlovessamosa Před 5 měsíci

    Thanks for sharing.

  • @ishandsa
    @ishandsa Před 5 měsíci

    I love Jyotinder Singh!

  • @navjotkambo
    @navjotkambo Před 5 měsíci

    Nicely explained

  • @BUY.YOUTUB.VIEWS.
    @BUY.YOUTUB.VIEWS. Před 5 měsíci

    Your charisma on camera is magnetic.

  • @yashsaraf6288
    @yashsaraf6288 Před 5 měsíci

    very insightful! please bring more videos like this

  • @KNO476
    @KNO476 Před 6 měsíci

    for the worked example starting at 10:17, in my opinion the explanations only work if we try to convert word2 to word1.

  • @amarieelohor7319
    @amarieelohor7319 Před 7 měsíci

    Explicit explanation. I got confused using a different video; but this helped me understand. Thank you!!!!!!!!!!!!

  • @cantseeme101
    @cantseeme101 Před 7 měsíci

    This was a great explanation, mate!

  • @Ali-zg4fy
    @Ali-zg4fy Před 8 měsíci

    I literally couldn't understand the UCSD course and your video helped me out big time. Recommending this to anyone who struggles tbh

  • @giorgikhachidze64
    @giorgikhachidze64 Před 8 měsíci

    Great explanation! Only question is, why did we have to create dummy list? Why couldn't we do it with existing list?

  • @mohammadramadhoni3285
    @mohammadramadhoni3285 Před 8 měsíci

    Its very great explanation, im very understand it now

  • @deepikasingh3122
    @deepikasingh3122 Před 8 měsíci

    but sir, this is not levenshtein algorithm. coz for substitution it adds 2

  • @user-fo7qp9vi4f
    @user-fo7qp9vi4f Před 9 měsíci

    17:13 i could not understand how we can perform replace and insert ? min of the (Neighbouring elements +1 ) so it is either replae vs insert. But To convert "re" to "d" the way i see is replace 'r' by d and delete it. Or am i missing something?

  • @ogoubah
    @ogoubah Před 9 měsíci

    Really great explanation!! Thank you

  • @savagebeaztpeace8390
    @savagebeaztpeace8390 Před 9 měsíci

    this is insightful, thanks!

  • @technologicalvivek7510
    @technologicalvivek7510 Před 10 měsíci

    Very nice explanation brother

  • @chadsmith71
    @chadsmith71 Před 10 měsíci

    Great video. I watched 2-3 other videos on this same problem, but I still struggled to understand the algorithm. Your explanation was clear and easier for me to understand. Well done.