HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Implementing (part of) a BitTorrent client in Rust

Jon Gjengset2 HN recommenders · recommended in 2 months, 2023-2023
YouTube
115K views · 3 years ago · tutorial · evergreen

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.

HN recommends it as a comprehensive walkthrough of the build-your-own-BitTorrent challenge and as an introduction to CodeCrafters.

C, C++, Rust, Go & systems languagesNetworking & internet infrastructureSoftware practice, open source & careers#rust#bittorrent#livecoding#codecrafters#networking

5 comments from Hacker News

@joshka2023 · in “Show HN: Rqbit – bittorent CLI and desktop app written in Rust”

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

RecommendsView on HN
@sarupbanskota2023 · in “Show HN: I built a guided Build your own DNS Server challenge”

(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

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

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

CitesView on HN
@zoogeny2023 · in “"Useless Ruby sugar": Pattern matching (Pt. 1)”

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

CitesView on HN
@Jonhoo2023 · in “Build Your Own BitTorrent”

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

CitesView on HN
Rust NYC: Jon Gjengset - Demystifying unsafe code29:25

Rust NYC: Jon Gjengset - Demystifying unsafe code

Rust Programming Language
27K views • 6 years ago
Crust of Rust: async/await2:34:01

Crust of Rust: async/await

Jon Gjengset
246K views • 5 years ago
Vibe coding complex changes in Rust2:59:08

Vibe coding complex changes in Rust

Jon Gjengset
55K views • 1 year ago
Hacking with Andrew and Brad: tip.golang.org1:02:49

Hacking with Andrew and Brad: tip.golang.org

The Go Programming Language
99K views • 11 years ago
The Why, What, and How of Pinning in Rust3:03:54

The Why, What, and How of Pinning in Rust

Jon Gjengset
87K views • 7 years ago
Crust of Rust: Lifetime Annotations1:33:23

Crust of Rust: Lifetime Annotations

Jon Gjengset
299K views • 6 years ago
Rust at speed — building a fast concurrent database52:54

Rust at speed — building a fast concurrent database

Jon Gjengset
225K views • 7 years ago
GoingNative 2012 - Day 2 - Clang1:00:54

GoingNative 2012 - Day 2 - Clang

aghuttun
13K views • 13 years ago
RustConf 2020 - Closing Keynote by Siân Griffin39:03

RustConf 2020 - Closing Keynote by Siân Griffin

Rust Programming Language
10K views • 6 years ago
Rant: Entity systems and the Rust borrow checker ... or something.1:01:51

Rant: Entity systems and the Rust borrow checker ... or something.

Jonathan Blow
304K views • 8 years ago
Lars Bergstrom - Beyond Safety and Speed: How Rust Fuels Team Productivity22:19

Lars Bergstrom - Beyond Safety and Speed: How Rust Fuels Team Productivity

Rust Nation UK
18K views • 2 years ago
GopherCon 2014 Inside the Gophers Studio with Blake Mizerany48:19

GopherCon 2014 Inside the Gophers Studio with Blake Mizerany

Confreaks
8K views • 12 years ago
RustLatam 2019 - Without Boats: Zero-Cost Async IO32:24

RustLatam 2019 - Without Boats: Zero-Cost Async IO

Rust Programming Language
55K views • 7 years ago
Hot Code Reloading in C2:16:18

Hot Code Reloading in C

Tsoding Daily
94K views • 3 years ago
2021: Year of the Linux Gaming Desktop - Andrew Kelley42:38

2021: Year of the Linux Gaming Desktop - Andrew Kelley

Zig SHOWTIME
15K views • 5 years ago
[#36] Zig Roadmap 2024 - Andrew Kelley1:00:23

[#36] Zig Roadmap 2024 - Andrew Kelley

Zig SHOWTIME
66K views • 2 years ago
Rust's Journey to Async/Await48:46

Rust's Journey to Async/Await

InfoQ
90K views • 6 years ago
Ideas about a new programming language for games.1:55:24

Ideas about a new programming language for games.

Jonathan Blow
530K views • 12 years ago
Data Oriented GUI in Rust by Raph Levien - Bay Area Rust Meetup1:05:59

Data Oriented GUI in Rust by Raph Levien - Bay Area Rust Meetup

Rust Programming Language
83K views • 8 years ago
The Truth about Rust/WebAssembly Performance29:47

The Truth about Rust/WebAssembly Performance

Greg Johnston
218K views • 3 years ago