Тёмный
Oliver Jumpertz
Oliver Jumpertz
Oliver Jumpertz
Подписаться
I'm the O in Rust and the J in System Design.

Software engineer with over a decade of experience.

Feeling pretty Rusty. Eating system design for lunch.

CEO of nothing.

You Should Really Know These Traits in Rust
18:36
3 месяца назад
Can Bun REPLACE Node.js?!
9:46
7 месяцев назад
Vercel DID WHAT?!
9:03
7 месяцев назад
Is this IDE the next big thing for Rust?!
13:31
8 месяцев назад
Rust has an advantage you haven't realized yet
6:55
9 месяцев назад
Rust's Option In 180 Seconds
3:17
Год назад
Rust's Enums In 180 Seconds
3:01
Год назад
Комментарии
@alanbaumann
@alanbaumann День назад
I found this very useful, thank you! Also, I'm a big fan of MonoLisa.
@oliverjumpertzme
@oliverjumpertzme 22 часа назад
Super happy you find it useful! 💛🙌🏻
@dipi71
@dipi71 3 дня назад
As with other Rust presentations, I like Rust's features but am disgusted by how it looks in the editor. Still enjoying writing Ruby in all its object-based goodness and arbitrary-precision data types; only rarely extracting any hot spots into external binaries written in clean C. Ruby + C >> Rust (at least for me). Great vid though. Subbed, cheers!
@oliverjumpertzme
@oliverjumpertzme 3 дня назад
Thanks a lot! ☺️ Hehe, yea, Rust is a little different. 😁
@kevincarvalhodejesus4473
@kevincarvalhodejesus4473 8 дней назад
Really good content, thank you so much for the explanation!
@oliverjumpertzme
@oliverjumpertzme 7 дней назад
Thank you so much for these kind words! 💛🙏🏻
@asdfmonstrosity
@asdfmonstrosity 9 дней назад
This was a nice video, which I didn't expect given the baity title. I'd also like people to mention more often zero "runtime" cost. Rust and c++ take far longer to compile because of all this. It has cost every time you hit build, which is important to me too
@Polynuttery
@Polynuttery 10 дней назад
Amazing video !
@oliverjumpertzme
@oliverjumpertzme 10 дней назад
Thank you very much! 💛 I am happy you enjoyed it ☺️
@4115steve
@4115steve 11 дней назад
bro, kim jung part with the rocket was so funny
@oliverjumpertzme
@oliverjumpertzme 11 дней назад
😁😁
@LGXerxes
@LGXerxes 11 дней назад
is no-one going to mention the name of the milimeters struct?
@oliverjumpertzme
@oliverjumpertzme 11 дней назад
THANK YOU, for noticing. 😁 I already thought everyone would let me pass with this small easter egg. 😅
@LGXerxes
@LGXerxes 11 дней назад
@@oliverjumpertzme hahahaha most welcome! At first i thought you meant a fast length :3
@Hector-bj3ls
@Hector-bj3ls 11 дней назад
This is not true at all. Actual performance comes from good cache utilisation, good cpu utilisation, and good utilisation of dead time while processing io. None of which the compiler can do for you. Good cache utilisation comes from understanding what data you need to process and when. Packing said data into as small a space as possible, to get as much as possible into the cpu cache lines. See data oriented design. Good cpu utilisation comes from using threads and SIMD. And making sure there are as few synchronisation points as possible. Good dead time utilisation comes from async in Rust and many other languages.
@oliverjumpertzme
@oliverjumpertzme 11 дней назад
Sorry, but no. The compiler can do quite a lot of it by generating code that makes best use of the concepts the target architecture provides (that's mostly LLVMs job). As I have presented, the compiler can also make use of SIMD on its own in some circumstances. And the most important part is: in 99% of use cases, hand-optimizing code is a severe waste of time and resources.
@Dogo.R
@Dogo.R 12 дней назад
Theres no such thing as a "compiled language" Theres only "languages with a native compiler via direct or indirect means". Also worth noting that performance doesnt matter for 99% of uses that dont produce video. They can all be handled by using cloud machines instead of user machines and streaming down the content since non-video content is tiny and cloud bills are way way smaller than engineer bills. Especially with VPSs and coolify. Performance is mainly a "get the 5% right". As long as you arnt doing the abysmal things any further thought about performance is a huge waste of time unless you are doing it because you find it fun.
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
en.m.wikipedia.org/wiki/Compiled_language 😉
@Dogo.R
@Dogo.R 11 дней назад
​@@oliverjumpertzmeFirst of all something being on wikipedia doesnt mean its correct. And second that artical in itself says that the colloqueal usage is illdefined and vague. My statement is litterally backed up by the wikipedia artical. The wikipedia artical says there isnt a firm definition, the definition is vague. Id say under most usages of "exist" people are refering to firm and real. For example a "vaguely human" thing isnt a real human. And even if you want to argue about what "real" is and if a word without a firm definition is "real" or not, you still use the term in your video to no benefit.
@oliverjumpertzme
@oliverjumpertzme 11 дней назад
Some of my professors from university then want to disagree with you, together with me. ☺️ Oh, and I don't want to argue here. You made an _absolute_ statement, which was just wrong. That's all I am saying.
@eagold
@eagold 12 дней назад
but what is its downside? Does Rust have weaknesses? bottlenecks, etc.? It would be very interesting to watch a video on this topic too
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Thanks for the tip! 💛 If you are curious now: Some things are super difficult to model in Rust because they actually are usually difficult to get right. Try to implement a LinkedList for example. You'll lose a few nerves, but learn A LOT about the language, the borrow checker, and how Rust gives you rails. 😁
@eagold
@eagold 12 дней назад
@@oliverjumpertzme gonna try one day 🤣 thanks for the answer
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
@@eagold rust-unofficial.github.io/too-many-lists/ good luck!
@dmitriidemenev5258
@dmitriidemenev5258 12 дней назад
I'm still in favor of Rust for the majority of applications BUT... Aliasing is a difficult topic. In Rust presence of aliasing *usually* excludes mutability. It is good for performance but cases where you need to share mutable data are difficult. Rust relies a lot on macros, compile-time checks, and optimization. So you're paying the cost for abstractions at compile-time instead of debugging-time and runtime. Some may feel less productive because they end up waiting for the compiler instead of debugging. However, it's usually an illusion because the computers are doing compile-time checks really fast. Rust has many facets, which may make it difficult to learn, if you try to learn *everything*. In practice, you don't need to know everything about Rust to write correct code. Rust's lifetimes are invasive (because they reflect the complexity of software). Raw pointers are simpler but also introduce lots of ways to shoot yourself in the foot. Rust just formalized the rules about pointers, and created a safe abstraction over them. Rust inherited the mistake with sizeof in C and C++. In Rust, just like in C and C++, there's no easy way to get the size of the struct without trailing padding. Rust doesn't have variadic generics, unlike C++. You can somewhat circumvent the problem with procedural macros but it's still a PITA. Rust's expressiveness limits what its generics can do compared to C++ templates. For example, there's no way to express that type F that implements Fn(/*args/*) -> /*output type*/ does not capture variables and is safe to coerce/cast to a function pointer. Currently, the bounds of lifetimes are not expressive enough, because they can express only ">" (outlives) requirement but not ">=" ("lives at least as much as"). In Rust there's an implicit assumption that rustc makes that expression of type &'a &'b T carries a proof that 'a outlives 'b but it's not the case for a and b being 'static lifetimes. This caused the creation of cve-rs. Luckily, Rust can create a breaking change that would fix the problem (unlike C++) but it's a huge deal in my opinion.
@jorgegimenezperez9398
@jorgegimenezperez9398 10 дней назад
Compile time
@angeldude101
@angeldude101 12 дней назад
One zero-cost abstraction that wasn't mentioned that managed to really impress me was coroutines (the underlying mechanism behind async/await and generators). I already knew that Rust compiles coroutines to a completely normal state machine, consisting of an enum and a method that matches on said enum, but needing to "await" the completion of a separate coroutine abstracted into another function would still have a lot of overhead... _right?_ Nope. Even though my code had multiple levels of coroutines awaiting each other, and at the top level two separate coroutines being weaved together, when I actually looked at the assembly, I didn't even see a single call instruction. The entire thing had been inlined into a single massive state machine, exactly as I'd hoped it would, but was surprised to see anyways.
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Technically, I didn't even leave it out because Rust is special regarding async/await. It has no own implementation but instead delivers the primitives necessary for external libs like tokio to implement their own runtimes. ☺️ So, the state machine you're talking about is (I assume) Tokio being compiled down to super simple code by the Rust compiler. 😁
@angeldude101
@angeldude101 12 дней назад
@@oliverjumpertzme I specifically said "coroutines", because this wasn't using async/await, though it did use a manual macro implementation of await. This project was more interested in making two threads of execution run in perfect lock-step with each other. As a complete side effect of this, it forced a very elegant way to transfer information to and from the coroutines, since every synchronization point aligned with one of these information transfers (whether it was necessary or not :P).
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
@@angeldude101 ah, I see ☺️
@1____-____1
@1____-____1 12 дней назад
Soooo much to .unwrap() here, and I've watched this video twice.
@eagold
@eagold 12 дней назад
am gonna learn rust...
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Woohooo, go for it! 💪🏻
@Dr-Zed
@Dr-Zed 12 дней назад
This video is actually really nice
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Thank you! ☺️
@sahej97
@sahej97 12 дней назад
@lufenmartofilia5804
@lufenmartofilia5804 12 дней назад
Wow. Great video indeed ❤ subbed.
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Thanks a lot, and welcome to the club! 💛🙌🏻
@GillesLouisReneDeleuze
@GillesLouisReneDeleuze 12 дней назад
This is just wrong
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Aha. In which sense?
@GillesLouisReneDeleuze
@GillesLouisReneDeleuze 12 дней назад
@@oliverjumpertzme Regarding the topic. You still have to think about code very carefully. I'm currently working with Rust legacy codebase, it's insane what people can write.
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
@@GillesLouisReneDeleuze didn't deny this. You surely have to take care and pay attention to the context around you. The essence of this video is just: no need to micro-optimize because you think the compiler will not create the best result possible. There are cases you have to hand-optimize, but these are rare. ☺️
@xymaryai8283
@xymaryai8283 12 дней назад
i know i probably don't need to know this to get started, and i came here because i like learning about the complicated details, but programming seems to have the unique effect of being very quick to make me realise how out of my depth i am, that astrophysics or rocket science takes a lot more effort to do.
@t3hSurge
@t3hSurge 12 дней назад
I’m learning rust, and studied some C and Java in high school. I think it mostly comes down to literal language. Eventually the video lost me too, when the rhetoric leaves the scope of terms I know. I think about it like video games. Once you are experienced in a game you often use language that is completely foreign to outsiders.
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Hehe, don't worry. Many of us feel this way. ☺️ I think the great thing about programming languages and programming is that we build on many abstractions. You don't necessarily need that low-level knowledge for many use cases. It's nice to have and comes in pretty handy when you really need it, but otherwise, things still work if you don't know every little detail. ☺️
@replikvltyoutube3727
@replikvltyoutube3727 12 дней назад
It probably doesn't matter (much) because Rust is typed and compiled and throws away everything unneeded. Scripting languages are different story, not knowing the full context, they have to keep all abstractions and metadata and thus are really, really inefficient with lambdas and closures.
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Yep! Although some JIT compilers can also do quite a lot. But if they assumed a path wrong, they need to throw that away, run the interpreted script again and gather more data before they can JIT compile again. ☺️
@christophschneider3260
@christophschneider3260 12 дней назад
i learned so much today. thanks!
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
I am super happy to read that! 💛🙌🏻
@rocketsamiyou
@rocketsamiyou 12 дней назад
awesome video!
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Thanks a lot! 💛🙌🏻 Glad you like it 🙏🏻
@yorailevi6747
@yorailevi6747 12 дней назад
a good follow up is “there is no such a thing as a zero cost abstraction” by chandler carruth, a lot of the essence of the cpp lectures also apply to rust
@1____-____1
@1____-____1 12 дней назад
Good suggestion!!
@tiagomello
@tiagomello 13 дней назад
Fantastic content! Keep up the excellent work!
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Thanks a lot, will surely do! 💛🙌🏻
@dalanxd
@dalanxd 13 дней назад
What an amazing vid!!! Subscribed 🎉 thanks, man
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Thank YOU! 💛🙏🏻
@sunofabeach9424
@sunofabeach9424 13 дней назад
because you aren't getting paid for it anyway
@dalanxd
@dalanxd 13 дней назад
Omg thank you so much, man, I'm loving your content. It really helps 🙏🏻🌱
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Thank you! Super happy you like it! 💛
@maxwellclarke1862
@maxwellclarke1862 13 дней назад
To be truly the same as an int, I think you should be deriving `Copy` on Duration & co, and using "self" instead of "&self". Although, in these simple cases the compiler will assumedly figure it out.
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Afair, yes, the compiler should be able to figure that out. But you don't need Copy for Duration, as i64 is already Copy and transparent directly inherits that i64. ☺️
@olafschluter706
@olafschluter706 13 дней назад
Rust iterators and iterator pipelines are really amazing. I found them more efficient and versatile to use than what C++ is bringing to the table here (even more so given that most C++ toolchains do not even implement C++20 ranges to the full extent). And in optimised builds the rust compiler beats the hell out of them and delivers code that runs at least as fast as an imperative solution, if not faster - even if that imperative solution is written in C. Great video.
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Absolutely, and thanks a lot! 💛🙏🏻
@xravenx24fe
@xravenx24fe 10 дней назад
Everyone claims claims as fast as C and every single time I look at a benchmark it's like 2x to 3x slower lmao. If being almost as fast as C or C++ means being anywhere from 2x slower to like 8x slower, then it's not close lol, I really dislike this cope
@oliverjumpertzme
@oliverjumpertzme 10 дней назад
Nah, it depends. There are no absolutes in this. Sometimes Rust is faster, sometimes Rust is slower. Often Rust is on par. There is, however, still a long way to go and quite a few things rustc, as well as LLVM , can still improve.
@pyyrr
@pyyrr 8 дней назад
@@xravenx24fe exactly, especially for stuff where time is actually important like low latency systems
@martoxdlol
@martoxdlol 13 дней назад
This is a really good video
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Thank you ☺️
@antoniong4380
@antoniong4380 13 дней назад
I personally feel like I'm in the "Make it readable spectrum" where whatever performance gain and nut cracking you get from trying to get performance with "clever" code is not worth the future issues
@olafschluter706
@olafschluter706 13 дней назад
I get you. But that is where comments in code eventually become useful. To learn Rust, I did some leetcode problems, and I worked on my solutions until they run at least as fast as efficient C or C++ solutions of the problem, as I was really interested to see what Rust is bringing to the table here. With one problem (the "trapped water" problem) I had three iterations of the solution, and each one looked very different from the one before - and the final one needed extended comments to make me still understanding it after a break for the weekend as it exploits some not obvious properties of the problem to run fast. Now, you can get away with less then optimal solutions for many computing problems, but if you are in for e.g. algorithms for image, video or sound processing (or automatic trading), performance is key. And in the systems programming domain, where OS kernels, drivers, compilers and interpreters and .... are written, you do not want to waste performance on that low level. Keep headroom for all those poor JS or Python guys to make use of their favourite language instead of forcing them to actually learn something good. Otherwise they may come after you and blow your poorly written interpreter out of the water. Furthermore in times where much code is run in the cloud and gets you billed for CPU and memory usage, efficient code will save you money. There are some quite impressive success stories of "rewrite it in Rust" for cloud-executed code on the Internet, reducing costs by 90%.
@flacdontbetter
@flacdontbetter 13 дней назад
Almost always true, only exceptions are where performance is actually more important, like high frequency trading for example!
@Comeyd
@Comeyd 12 дней назад
@@flacdontbetterhigh frequency trading is best optimized right out of existence…
@VectorTwelve
@VectorTwelve 10 дней назад
I don't really understand how we got to the point of blaming the code for architectural failures. Or how we got to the point where we 'always' do it 'insert slogan' way no matter the problem domain. Writing more efficient code should be the objective. Unreliable architecture is not the fault of the efficiency of the code or how many lines it is. Complexity is not the issue. Not understanding what you've built is. When speaking to friends, specifically, or rather most often, those who work in corporate environments, always push clean code and things like composition over inheritance, and it seems to be that their reasoning is because it's easier understand. This seems inherently flawed. The reason for this being that this argument is essentially claiming that the code should be lowered to a level that the least experienced developer can understand rather than to the level of the most experienced and bringing those less experienced to a higher level. I suspect this is why these companies are so bloated and inefficient, employing hundreds of developers that write very little code per day when it could be done by a much smaller team. I watched an interview with the founder of telegram and he spoke about a conversation he had with Jack Dorsey whe he ran Twitter. The guy from telegram asked him why he had so many developers he didn't need. Dorset said because if he didn't his company's stock would fall. I would then posit one should not adopt the practices of companies that knowingly choose quantity over quality and bloat over performance for their shareholders, not because it produces a better product more efficiently.
@redram4574
@redram4574 13 дней назад
Great video, lots of great info and nice animations 👍
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
Thank you very much! ☺️
@spoonikle
@spoonikle 13 дней назад
Computer Math is fun.
@oliverjumpertzme
@oliverjumpertzme 12 дней назад
It is! 😁
@todorelax1793
@todorelax1793 13 дней назад
You should make a tutorial of Rust!!!!
@oliverjumpertzme
@oliverjumpertzme 13 дней назад
I will definitely make way more videos about Rust, and who knows, perhaps I'll write a book one day. 😁🙌🏻
@randomtroll980
@randomtroll980 13 дней назад
This content is actually very good, surprised this doesn't have too many views. Subscribed!
@oliverjumpertzme
@oliverjumpertzme 13 дней назад
Thanks a lot! 💛 Working on fixing the latter. 😁
@thebestofthequest7486
@thebestofthequest7486 13 дней назад
Great video! Thanks for putting in the effort to make good animations and explanations👍
@oliverjumpertzme
@oliverjumpertzme 13 дней назад
Thank you very much, and it's my pleasure! 💛
@PhilipLon7
@PhilipLon7 13 дней назад
Great video 👍
@oliverjumpertzme
@oliverjumpertzme 13 дней назад
Thanks a lot! 💛
@irlshrek
@irlshrek 13 дней назад
i love this channel
@oliverjumpertzme
@oliverjumpertzme 13 дней назад
Thank you very much! That's very encouraging! 💛☺️
@chriskalmar
@chriskalmar 13 дней назад
Awesome video, Oliver. The many animations took for sure a lot of work. Keep rocking!
@oliverjumpertzme
@oliverjumpertzme 13 дней назад
Thanks a lot, Chris! 💛 Yep, they absolutely did take a LOT of time. 😂
@SimonHoiberg
@SimonHoiberg 13 дней назад
Loved it! You clearly put a ton of work into making this a great viewer experience 👌 More videos like this, please!
@oliverjumpertzme
@oliverjumpertzme 13 дней назад
Thank you very very much, Simon! 💛
@OpenDeepLearning
@OpenDeepLearning 13 дней назад
Why no posting on Twitter? For a long while I thought you were a fake account
@oliverjumpertzme
@oliverjumpertzme 13 дней назад
I basically left Twitter behind. The platform is not what it used to be anymore. :/ I loved it there but if no one sees your posts anymore while Elon says the algorithm is fine, doesn't make much fun.
@TooFatToKidnap
@TooFatToKidnap 13 дней назад
great video Oliver
@oliverjumpertzme
@oliverjumpertzme 13 дней назад
Thank you very much! 💛
@irlshrek
@irlshrek 21 день назад
hahahha that intro had me cackling
@oliverjumpertzme
@oliverjumpertzme 20 дней назад
💛☺️
@irlshrek
@irlshrek 21 день назад
omg. mind blown! AsRef has always been floating in my head as a fuzzy vague thing and you demystified it for me! thank you!
@oliverjumpertzme
@oliverjumpertzme 20 дней назад
Super happy to read that! 💛🙌🏻
@luiscarlosjayk
@luiscarlosjayk 25 дней назад
Very useful! Thanks
@oyewodayo
@oyewodayo Месяц назад
Thank you for this video. Please don't stop. Give us more
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Thanks! Don’t worry. Already working on the next one. It just takes a lot of time. 😁
@oyewodayo
@oyewodayo Месяц назад
Honestly, if you continue building real-world useful applications like this with Rust, you will be entered into the hall of fame. However, I've realized that Rust RU-vidrs often give up too quickly, after just one or two videos.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
I'll never give up. ☺️
@1____-____1
@1____-____1 2 месяца назад
Just so you know I was the 1000th sub. Congrats from a future Rustacean!
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Wooohooooo! Thanks a lot! 💛🙌🏻
@alexanderkalashnikov2721
@alexanderkalashnikov2721 2 месяца назад
Doesn't BufWriter flushes when drops?
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Yes, but it swallows any errors. From the documentation: ”It is critical to call flush before BufWriter<W> is dropped. Though dropping will attempt to flush the contents of the buffer, any errors that happen in the process of dropping will be ignored. Calling flush ensures that the buffer is empty and thus dropping will not even attempt file operations.” :)
@kevinmuhia5915
@kevinmuhia5915 2 месяца назад
Great video. Just came from reading your dev.to "how to read files in rust" article, then your personal blog and now your youtube channel. I like the way you teach and I'll certainly be looking forward to more of your videos. I would really like to know what areas of rust that i should really try to understand so that i can have a solid knowledge of the language. Thanks!
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Hey, super happy to read that! <3 To answer your question: It fully depends. The great thing about Rust is that there is a variable set of features you need to know, mostly depending on what you want to do. I think the best general advice I can give is: Pick something (backend/micro service dev for example), build stuff, and learn along the way. :)
@user-we2gj9uz7r
@user-we2gj9uz7r 2 месяца назад
Excellent tutorial. Thank you!
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Super happy to read that! 💛