![Jyotinder Singh](/img/default-banner.jpg)
- 27
- 116 908
Jyotinder Singh
India
Registrace 27. 05. 2013
Hey, my name is Jyotinder. I'm a software engineer at Google. I talk about software, programming, and computer science.
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
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
even if i understood it, you made a fanstastic job. thanks my man
we cannot use it as a[i] & b[j] it is not an array
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.
Thanks a lot!!!
nice explanation
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
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.
bro can you bring something with golang
Great explanation
So concise and on point
Thanks man. Will be using variable names going forward :)
cool video with brilliant explanation.
Thankyou so much for the explanation!! I have my finals next week and this helped a lot.
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?
good video explanation thanks
You, sir, are a LEGEND!
very welll explained....
thank you
thank you very much!! Bhaiya.
amazing explanation!!!
Thank you. At first, I feel difficult to understand the problem. Thanks to your video, it is clear and easy to implement.
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.
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.
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.
great thanks for sharing@@JyotinderSingh
Thank you. Really good stuff !!
Thank you for the video, It was highly insightful !!
Great video please make more videos on low level stuff
really liked your vscode theme, please share
I use Darcula
What a great video! thanks for the clear explanation!
Thank you!
Great stuff! Thanks a lot! Please keep posting such videos with such clear explanation. 👌
Thanks! More videos and articles coming!
Great video on a topic I was curious about. Thanks!
Zoom screen so it will be clear
Will keep this in mind, thanks.
Absolute pillar of the grpc community, thanks for this brother!
Great stuff, please make more videos like this!
Thanks sir. Please More system design and golang services
Will be posting more videos about software internals and system design soon!
@@JyotinderSingh thanks. Appreciate it sir.
Thanks for sharing.
I love Jyotinder Singh!
😮🫠
Nicely explained
Your charisma on camera is magnetic.
very insightful! please bring more videos like this
for the worked example starting at 10:17, in my opinion the explanations only work if we try to convert word2 to word1.
Explicit explanation. I got confused using a different video; but this helped me understand. Thank you!!!!!!!!!!!!
This was a great explanation, mate!
I literally couldn't understand the UCSD course and your video helped me out big time. Recommending this to anyone who struggles tbh
Great explanation! Only question is, why did we have to create dummy list? Why couldn't we do it with existing list?
Its very great explanation, im very understand it now
but sir, this is not levenshtein algorithm. coz for substitution it adds 2
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?
Really great explanation!! Thank you
this is insightful, thanks!
Very nice explanation brother
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.