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

Software engineer with over a decade of experience.

CEO of nothing.

One of the few people on earth who can actually explain ANY weird JavaScript behavior.

Also one of the few people on earth who have actually mastered caching.

Комментарии
@benjamin2713
@benjamin2713 2 дня назад
So rust is glowing in the dark now...
@Venkat2811
@Venkat2811 14 дней назад
Wow ! Very high quality content !! Sub'd
@oliverjumpertzme
@oliverjumpertzme 14 дней назад
Thanks a lot! 💛
@riigel
@riigel 16 дней назад
hi! thanks for this... I'm fairly new to rust and low level programming in general, what does it mean to handle remaining bytes? And how can I do that?
@oliverjumpertzme
@oliverjumpertzme 14 дней назад
Could you specify the question a little more? It's been a while since I created this video, admittedly. ☺️
@lilyscarlet2584
@lilyscarlet2584 26 дней назад
it wont stop their devs from using their awful coding habbits. changing the tool doesnt change the quality of the people who use it. its not hard to write memory safe c. arena allocators are an easy way to do that. code conforming to raii is not ever going to be good. things like smart pointers are unnecessary when you actually properly manage memory. having a create and destroy pattern and dynamic allocation is not necessary in the way its being done.
@oliverjumpertzme
@oliverjumpertzme 25 дней назад
Yep, you are right. Rust can't "solve" bad programming. That indeed. But it has guard rails that reduce the cognitive complexity of some tasks, and that frees an engineer's mind to think about more important things than whether they've correctly terminated a string or freed some of that memory they allocated on the heap. :)
@lilyscarlet2584
@lilyscarlet2584 25 дней назад
@@oliverjumpertzme so does using bump allocators
@maingateway2308
@maingateway2308 Месяц назад
Looks at title and thumbnail.. ah it's another basic beginner topic. Let's give the guy a minute to talk ... Video starts.. video ends.. liked and subscribed ❤ Thanks
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Damn, thanks a lot! 😁💛
@thejezzi5219
@thejezzi5219 Месяц назад
Great Video! Danke!
@oliverjumpertzme
@oliverjumpertzme Месяц назад
💛 thanks a lot! Sehr gerne. 😁
@lcssbr
@lcssbr Месяц назад
Just found your channel and I'll definitely look into the other videos. Thanks for the content!
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Thanks a lot! 💛
@ebmpinyuri
@ebmpinyuri Месяц назад
the level of detail in explaining the what and why around patterns in rust is high level ....keep the good work
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Thanks a lot good sir! 💛🙏🏻
@Mempler
@Mempler Месяц назад
The US Government literally said: "Lets rewrite C in Rust"
@oliverjumpertzme
@oliverjumpertzme Месяц назад
💪🏻😁
@colinmaharaj
@colinmaharaj Месяц назад
How about going from C to Rust and back to C. Will a well formed code transcompiler do a good job of maintaining safety if you move from Rust to C. One step further, why not just take the Rust compile time checks and somehow put that in a c compiler say in a CLANG compiler.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
But wouldn't that make the language end ip being a lot like Rust? Most syntax it has is there for a reason. 😁
@theretroman3862
@theretroman3862 Месяц назад
And obviously you all told them to go fak them selves, right? We do not need faster robots!
@yapayzeka
@yapayzeka Месяц назад
16:59 very important graph
@CallistoPili
@CallistoPili Месяц назад
At this point why not ADA, they already use that language for everything safety critical related to miltary stuff. imho.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Even as a hardcore Rustacean, I agree, but I guess it also has to do with economics of finding and attracting talent. 🤷🏻‍♂️
@CallistoPili
@CallistoPili Месяц назад
@@oliverjumpertzme ADA devs are well paid, find them is gold. Rust will be cheaper in the long term due to mass adoption. Rust is young, I used a bit for internal R&D but I already use VHDL, so reading ADA is personally much simpler than Rust for me to understand.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
@@CallistoPilithat might be the issue then, yea. ☺️ And totally understandable you feel this way!
@JimRohn-u8c
@JimRohn-u8c Месяц назад
What about Zig? I keep hearing about Zig being the replacement for C…
@oliverjumpertzme
@oliverjumpertzme Месяц назад
It does not have all the guarantees of Rust, and a smaller community/ecosystem. Rust has marketed itself pretty well, imho, and it has a very active community. Those are plus points in a comparison. ☺️
@falex3489
@falex3489 Месяц назад
​@@oliverjumpertzmeWhat about Carbon? Wasn't that going for a safe superset of C++? It's also backed by Google.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
@@falex3489yes, but it is way too young right now, imho. I think Rust has the luck to tick all the right boxes for the moment. As a Rustacean, I'm happy, but no one can tell how it'll be in 5 years. ☺️
@mdabdulaziz6589
@mdabdulaziz6589 Месяц назад
Just use ada
@oliverjumpertzme
@oliverjumpertzme Месяц назад
😁
@CallistoPili
@CallistoPili Месяц назад
@@mdabdulaziz6589 Ada+Spark
@Mempler
@Mempler Месяц назад
Just rewrite Rust in Rust
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Best idea 😂🙌🏻
@Solo-mon
@Solo-mon Месяц назад
lol the hypocrisy continues…. All this talk about energy efficiency and they want to use a language that uses way more energy than C lol.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
In the end, it’s about safety 🤷🏻‍♂️
@me_12-vw1vi
@me_12-vw1vi Месяц назад
if the us governments wants me to then i’ll never do it
@anotherelvis
@anotherelvis Месяц назад
c2rust already exists. The output is somewhat ugly and unsafe, but allegedly some people have fund it useful.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Ah! 🤔
@riigel
@riigel Месяц назад
Hoping to get a good paying Rust job so I can own a house without borrowing it for its entire 'lifetime 😅
@oliverjumpertzme
@oliverjumpertzme Месяц назад
You win today 😂💛
@BarakBarOrion
@BarakBarOrion Месяц назад
😄
@qbasic16
@qbasic16 Месяц назад
Wonderful content! Thank you so much :)
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Super happy to read that. Thank you! 💛
@mintx1720
@mintx1720 Месяц назад
in fact you can do this in rust, which makes perfect sense cin >> &mut string;
@oliverjumpertzme
@oliverjumpertzme Месяц назад
True! 😁
@barrynorman5070
@barrynorman5070 Месяц назад
Awesome Oli! THX
@oliverjumpertzme
@oliverjumpertzme Месяц назад
💛💛🙏🏻
@Heater-v1.0.0
@Heater-v1.0.0 Месяц назад
Just because one can easily have sound effects as things appear and disappear does not mean that one has to or that it is a good idea. I find all these superfluous noises really annoying. As are the random images that flash up for no particular reason.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
K
@Heater-v1.0.0
@Heater-v1.0.0 Месяц назад
@@oliverjumpertzme Sorry, I was a bit harsh there. I liked your vid, perhaps I'm oversensitive to these details.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
@@Heater-v1.0.0 the critique itself is right. I wanted to release it without any overly hefty sound, but someone convinced me not to. Watching other tech creators' content shows that most don't use effects because it probably distracts too much. I’m think I am better off without the sound effects, and I will tone down the animations. I won't go without them, but I will tune the ADHD level down a bit. 😉
@Heater-v1.0.0
@Heater-v1.0.0 Месяц назад
@@oliverjumpertzme I feel that one of the most important things in a vid is the creator, their character, personality, style. That has to shine through. Almost as important as the actual informational content. The extra fluff of sound effects, animations etc is unnecessary. That's not to say some sprinkling of animations/sounds cannot be entertaining and useful. But I feel they have to be appropriate, imaginative, preferably unique, and reflect the creators personality. A difficult thing to pull off I'm sure. Anyway wishing you the best for your work.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
@@Heater-v1.0.0 thank you. Happy we could sort this out. ☺️
@IlikeDaCookie
@IlikeDaCookie Месяц назад
What do you use to do your animations?
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Davinci Resolve
@edgeeffect
@edgeeffect Месяц назад
I love the example code at 3:54! Is that actual real code, or something you have summarised, or something you've made up yourself just as an illustration???
@oliverjumpertzme
@oliverjumpertzme Месяц назад
It's demonstrational code, but how I would probably implement a naive version of an integer addition with inline assembly. ☺️ Or in other words: with all my examples, I try to spend a lot of time trying to come with something realistic, which doesn't feel too constructed. Admittedly, I don't always to succeed, but it makes me happy to read that you like this particular example. ☺️
@edgeeffect
@edgeeffect Месяц назад
@@oliverjumpertzme Yes... a "nice" piece of example code is an art-form. :)
@pup4301
@pup4301 Месяц назад
If I want use trait functionality on a external data type I wrap it in a function pointer and in the trait I have a function to get the data type so that I can use it in the functions of the trait.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Yep, basically also a form of the new-type idiom to work around orphan rules. 😁
@tiagomello
@tiagomello Месяц назад
I like that you go straight to the point. No long introductions or intro animations.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
My last intros were too long. Don't want to make people fall asleep before I get to the good stuff anymore. 😁
@canadiannomad4088
@canadiannomad4088 Месяц назад
OMG I need that garlic operator!!!
@oliverjumpertzme
@oliverjumpertzme Месяц назад
Available in a grocery store near you 😜
@aaronkaw4857
@aaronkaw4857 Месяц назад
You joke, but any language accepting unicode symbols might have the garlic character available for definition?
@oliverjumpertzme
@oliverjumpertzme Месяц назад
@@aaronkaw4857 yea, you then only need a way to give it meaning…like in Scala, where everything can be made a function identifier 😂
@aaronkaw4857
@aaronkaw4857 Месяц назад
@@oliverjumpertzme Make it throw an error whenever it's passed to the vampire operator.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
@@aaronkaw4857 you mean panic? 😂
@principleshipcoleoid8095
@principleshipcoleoid8095 Месяц назад
Btw if you use Arc<Mutex<HashMap>>, you are going to slow things down
@angeldude101
@angeldude101 2 месяца назад
I can argue that the product of two 3D vectors should be neither a scalar, nor another 3D vector, but rather a _quaternion,_ but that's a whole can of worms. Technically, the ==, !=, <, >, <=, and >= operators are also overloadable, but their traits are stored in a completely different module, and their output type is _always_ bool, rather than being overloadable. There are 2 operators in Rust that I'm away of that are _not_ overloadable at all: && and ||. This is because they aren't actually equivalent to passing the two sides into a function call, since they only evaluate the right-hand side if necessary, which can have observable side-effects. Theoretically, it should be possible to make the override methods take functions for the right-hand side rather than values, but that means for more generic parameters and automatically boxing the expression in a closure... and it's just not really worth it when | and & are perfectly fine for most cases.
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Regarding your first point: Yep, I specifically chose one way to do it to make my point. 😁 Regarding the other operators: I don't even consider them real operators, or at least not overloadable ones because their usage is baked into the language. Eq, PartialEq, Ord, and PartialOrd, etc. are all used by sorting algorithms and co. They are those operators you cannot change any meaning for. They will always have something to do with equality, or comparison, while for all the ones I have mentioned in the video, that's not the case. ☺️
@ikhu6042
@ikhu6042 Месяц назад
going further with this, many libraries for geometric algebra (which contains quaternions as a subset of some algebras) have convention for when to use the inner (dot) product as | and exterior (cross) product as ^. there conventions exist across programming languages so I would argue in that sort of situation using those operators make sense.
@oliverjumpertzme
@oliverjumpertzme Месяц назад
@@ikhu6042 absolutely! If you can get a consensus on what to use when, that is absolutely fine. Code style is always a subjective thing bound to a specific context. If in a certain context, the rules are clear, you should ofc make use of what a language offers you! Thanks for adding this. ☺️
@angeldude101
@angeldude101 Месяц назад
@@ikhu6042 I actually dislike this particular convention, since outside of GA, the same symbols have different but related meanings. The exterior product is ∧. In order theory, ∧ is instead the meet. The GA version of the meet is related to the intersection, which is ∩ and often defined in terms of AND, which uses the symbol ∧. Many programming languages when representing a set type already overload their operators to use the same symbols for both AND and set intersection. The result? The GA exterior product, _especially_ when using PGA / mirror-space, should use the & operator; same as AND. Similarly, the symbol for the regressive product ∨, which in mirror-space is also the join, is also used for the... join, as well as the OR operator, and visually resembles the set union operator. As a result, the regressive product should be implemented as | rather than &. As a cherry on top, the OR operator, the join, the union, and the regressive product are all dual to the AND operator, the meet, the intersection, and the exterior product respectively. This means that !x & !y = !(x | y), regardless of which system you're in. This one, GA libraries thankfully get right. Inner product honestly just gets the last option remaining, which is XOR / ^, which does make some sense, but it's less compelling than the other three. TLDR: choose operators based on their meaning, not based on the fact that ^ kinda looks like ∧.
@arjix8738
@arjix8738 2 месяца назад
ayy, the duplicate voice is now gone!! nice job
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Yes. Reuploaded. Quality > algorithm. ☺️
@mk72v2oq
@mk72v2oq 2 месяца назад
Worth mentioning that the use of operators is kinda discouraged in Rust. Because they are not fallible. I.e. things like integer division by zero panic in runtime. Other arithmetic operators panic on overflowing/underflowing in debug mode. Index access panics on non-existing index. That's why it's encouraged to do 'n.checked_div(m)' instead of 'n / m', 'vec.get(n)' instead of 'vec[n]' etc.
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Yea, if I think about it now, I could have mentioned that explicitly. :) That is why we have the system in place we have no, to prevent this uncontrolled spawn of operators and overloads that are, as you said, in no way fallible. Thanks for mentioning it here!
@OfficialViper
@OfficialViper 2 месяца назад
Great video! :)
@OfficialViper
@OfficialViper 2 месяца назад
You removed the slight echo effect, right? I thought I was going insane when I watched the video yesterday xD
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Hey, thanks a lot. Yes I did. Was my own stupidity as I still had the original recording under the audio-edited one. 😫 easy fix, but cost me the algorithm. Still great to see some people get to watch the video as it was intended to. ☺️
@OfficialViper
@OfficialViper 2 месяца назад
@@oliverjumpertzme this shows that you care more about the quality of your videos than the clicks. Thanks!
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
@@OfficialViper Quality always > engagement. 💛
@SimonHoiberg
@SimonHoiberg 2 месяца назад
Awesome video! All the graphics and illustrations are so well done 👌 Best Rust channel on RU-vid, by far!
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Thank you, Simon. It means a lot! 💛🙏🏻
@meowsqueak
@meowsqueak 2 месяца назад
I often find after implementing these operators for my type T, on either side, then if T is not Copy then have to implement them for &T on both sides as well, for T and &T, and it just balloons out of control.
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
That's indeed a problem with Rust's type system. 😅
@mk72v2oq
@mk72v2oq 2 месяца назад
Just implement Deref trait for your type.
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
@@mk72v2oq Yep, that also works. ;)
@aldeywahyuputra5719
@aldeywahyuputra5719 Месяц назад
I've encountered this too, however some solutions I found in some popular crates (such as num) is to reduce such repetitions is to just macro-ize them instead and implement them for all of the derivatives.
@saa442
@saa442 2 месяца назад
Thanks! Very good intro to low level file operations
@catsolstice
@catsolstice 2 месяца назад
Good content 👍
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Thank you!
@jpp855
@jpp855 2 месяца назад
Não entendi porra nenhum, mas acho que você explicou bem, me falta fundamentos.
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
First of all: thank you. Second: super sorry you think you lack the fundamentals. Any way I can try to help you to improve the situation? ☺️
@jpp855
@jpp855 2 месяца назад
@@oliverjumpertzme still learning Rust, I have just a basic idea about From, Try, Into… thank you concern! I will visit your video on future. So, you already helped.
@APerson-jf2md
@APerson-jf2md 2 месяца назад
3:04 - that got me confused for a moment :D You meant the opposite: Into implies From T: Into -> T: From but not the other way around.
@APerson-jf2md
@APerson-jf2md 2 месяца назад
ok.. - with the TryFrom you said it again, but now I understand what you mean.. You were talking about the blanket impls and not the type in itself.. So "a type that is Into implies it is From", but "implementing From" automatically "creates an implementation for Into", meaning "it implies the existence of an implementation of Into". But maybe my brain is wrong, or too nit-picky ;) Anyway, great videos!
@APerson-jf2md
@APerson-jf2md 2 месяца назад
more nit-picking... sorry :) 14:30 this is not the "newtype idiom", but standard struct composition newtype is a thin wrapper around a type, mostly a zero-cost abstraction, so most of the time a tuple type like: struct Bytes(u32); struct Kilobytes(u32); (with possible conversions implemented) to prevent accidental mismatches in fn copy_data(data: ..., length: Kilobytes) {...
@APerson-jf2md
@APerson-jf2md 2 месяца назад
17:17 and my OCD says: "P" should be "T" .. ok.ok.. I'll shut up!... ;)
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
doc.rust-lang.org/rust-by-example/generics/new_types.html ☺️
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
😜
@OfficialViper
@OfficialViper 2 месяца назад
Keep up the good work! This video is great! :)
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Thanks a lot! 💛 Doing my best to keep it up ☺️
@oglothenerd
@oglothenerd 2 месяца назад
I am making my own compiled language, so I am taking notes.
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
Uh, that sounds interesting! Anything to share already? ☺️
@oglothenerd
@oglothenerd 2 месяца назад
@@oliverjumpertzme Not yet, I am still very much working on the core features. The parser and the code checker. And then I will work on codegen and stuff.
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
@@oglothenerd would love to get an update whenever you're further down the road!
@oglothenerd
@oglothenerd 2 месяца назад
@@oliverjumpertzme Yeah, I will probably post about it on my channel. Sadly I cannot share the Git repo links since this is RU-vid.
@oliverjumpertzme
@oliverjumpertzme 2 месяца назад
@@oglothenerd subbed ☺️
@bayoneta10
@bayoneta10 3 месяца назад
Good video! Congrats!
@oliverjumpertzme
@oliverjumpertzme 3 месяца назад
Thanks a lot! 💛🙏🏻
@bobby_mathews
@bobby_mathews 3 месяца назад
What an awesome video.
@oliverjumpertzme
@oliverjumpertzme 3 месяца назад
💛🙏🏻
@pathakvivek7865
@pathakvivek7865 3 месяца назад
I have saved this video in watch later since it came. Today I completed this tutorial and I would like to thank you so much for such a golden content. I request you to make a fully fledge axum server with jwt authentication and user & role management please.
@oliverjumpertzme
@oliverjumpertzme 3 месяца назад
Will definitely keep that in mind and work on that, as soon as I do another tutorial. Thank you for watching! 💛
@alanbaumann
@alanbaumann 3 месяца назад
I found this very useful, thank you! Also, I'm a big fan of MonoLisa.
@oliverjumpertzme
@oliverjumpertzme 3 месяца назад
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 3 месяца назад
Really good content, thank you so much for the explanation!
@oliverjumpertzme
@oliverjumpertzme 3 месяца назад
Thank you so much for these kind words! 💛🙏🏻
@asdfmonstrosity
@asdfmonstrosity 3 месяца назад
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
@4115steve
@4115steve 3 месяца назад
bro, kim jung part with the rocket was so funny
@oliverjumpertzme
@oliverjumpertzme 3 месяца назад
😁😁