Talks to Watch

Implementing (part of) a BitTorrent client in Rust

115K views · Oct 19, 2023 · 4:09:16 · 2 HN recommenders · 5 mentions · discussed 2023

Jon Gjengset's roughly four-hour live stream implementing part of a BitTorrent client in Rust, following CodeCrafters' test-guided challenge. He builds from scratch and shows idiomatic error handling along the way.

Why Hacker News points people here: HN recommends it as a comprehensive walkthrough of the build-your-own-BitTorrent challenge and as an introduction to CodeCrafters.

“Jon Gjengset did a comprehensive stream going through the Build your own BitTorrent challenge”HN comment, 2023

What Hacker News said 5

RecommendssarupbanskotaNov 2023

“Jon Gjengset did a comprehensive stream going through the Build your own BitTorrent challenge”

Comprehensive stream going through the build-your-own BitTorrent challenge.

Full comment

(CodeCrafters team here). Out of curiosity, is there a reason why you prefer video format vs. interactive? e.g out of habit, when I'm having a meal, I like watching "course videos" or streams occasionally. Is yours similar? P.S. Jon Gjengset did a comprehensive stream going through the Build your own BitTorrent challenge this video , if you're interested in Rust

in “Show HN: I built a guided Build your own DNS Server challenge” · view on HN
RecommendsjoshkaDec 2023

“Take a watch of Jon Gjengset's vids on this”

Gjengset's videos build a BitTorrent client via a CodeCrafters challenge.

Full comment

Take a watch of Jon Gjengset's vids on this (there's a codecrafters challenge for building out a bittorent protocol that he's going through). - this video - link

in “Show HN: Rqbit – bittorent CLI and desktop app written in Rust” · view on HN
Cites itJonhooOct 2023

“A better link is”

Author points to a better version with chapters.

Full comment

Oh hey, that's me! A better link is this video which has chapter marks and has the power outage in the middle spliced away :p

Cites itzoogenyOct 2023

“I was watching the recent Rust stream by Jon Gjengset where he builds a BitTorrent implementation”

Stream shows using .context on calls ending in ? for error tagging.

Full comment

I was thinking of `guard` in Swift when I was writing but I haven't used it so I was unsure of its exact semantics. It is a bit of a shame it is only useable on optionals and not on arbitrary types. Nice to see a full pattern matching guard in Rust. I think the terminating `?` operator makes it a bit less necessary as I would guess a large portion of cases where I would want that early-return behavior I would just take advantage of that operator. But their choice to reuse `else` makes a lot of sense and the pattern reads well. I was watching the recent Rust stream by Jon Gjengset where he builds a BitTorrent implementation [1]. One thing he did frequently was add a `.context` method to function invocations that would terminate in `?`. My assumption just looking at that pattern is that it would allow the error system to tag the errors to help guide the programmer to the specific line the error was generated from, almost like an annotated stack trace. But again, I don't have direct experience programming large Rust applications. The reason I consider this topic it is because this kind of error handling would be ideal in Go. I often end up with the classic pattern: if value, err := someFunc(); !err { // value is useable } // handle err And I would just really, really like if Go would let me: if value, err := someFunc(); err != nil { // handle err } // value is useable But, I suppose due to Go block scoping `value` is only valid within the if block. 1. this video

in “"Useless Ruby sugar": Pattern matching (Pt. 1)” · view on HN
Cites itmethouNov 2023

“I found that CodeCrafters is quite fun after watching an video on Youtube[0]”

Video that introduced the commenter to CodeCrafters.

Full comment

I found that CodeCrafters is quite fun after watching an video on Youtube[0], and shared it with my friends who might also be interested. The feedback I got was quite similar to the community: - really interesting idea, but - pricing is absurd, not gonna pay 100$ for these, and - their minimal paid plan at 40$/mo is a lie, with a fine print: Available as a one-time payment for 3 months or 1 year access. - Lack of in depth implementation of the projects, i.e for the free HTTP server project, it stopped at "Post a file", lack of beefy & fun stuff like for example HTTP 1.1 Pipelining I believe the value (the fun) it would provide me would be about the same level of Ace Combat 7 (I paid ~40$US), and the complexity is less than Bauder's Gate(69$SG). I would pay roughly US$40 for all of the content altogether at this moment. edit: added a link -- [0]: this video

in “CodeCrafters CEO adds his paid service as a next step after finishing Rustlings” · view on HN