- 39
- 15 040
GoRust
United States
Приєднався 11 січ 2024
Practical String (str) in Rust for Beginners
Practical String (str) in Rust for Beginners
Переглядів: 193
Відео
Starting a TUI Rust Application - A Postman Alternative
Переглядів 5 тис.7 місяців тому
Starting a TUI Rust Application - A Postman Alternative
Deserialize and Change to Snake Case... And Finishing the Project
Переглядів 469 місяців тому
Deserialize and Change to Snake Case... And Finishing the Project
Actually Writing Rust: Working with YouTube API and Deserializing Data
Переглядів 2059 місяців тому
Actually Writing Rust: Working with UA-cam API and Deserializing Data
Learning Rust by Doing: Hello World!
Переглядів 25510 місяців тому
Learning Rust by Doing: Hello World!
Just out of curiosity, do you have a dev job or is this a hobby for you?
I have a day job as a web dev doing python and devops. Rust is a way to learn lower level programming and do different things I don’t normally do.
The thing that keeps making me sad is that no matter how great of a UI I can make, no one is going to use anything I make that they can't use on their phone (I make TUIs and guis anyway)🎩
Same for me. It seems like all the stuff I make someone else has already made a better version 🤪. But I keep learning and doing anyway
59:58 If let means fail early, that way the match will not have to run, unless if let is true. My 2 cents.
Sorry about the audio guys. I thought I fixed it. Will try to improve next week
The UA-cam algorithm finally gave up and suggested me something related to crypto. Was anput time 😂❤
appreciate your effort and time :)
only devoted geniuses can make these types of videos. Thanks
Hey amazing video. can we have video on neovim setup lie yours with all those LSP settings, color schemes etc,..
Sure I can do that at some point.
I use neovim already but I would like to see other's people setup 😆
audio seems to be not coming from the mic. Seems your camera mic is being used
Thanks for letting me know I will check it out. I do have a software filter on it since I have an air conditioner running. Maybe it is too aggressive.
hope to see more ratatui videos
OK you did NOT increase that font size.
I just went back and checked. It looks like in the video after the last HTMX one is where I started increasing fontsize during recording. I think it was the first ratatui video where I switched to 1080p. So you are correct in the HTMX videos I did not increase font size, sorry about that. But for future ones after that I did increase font size.
Exactly what I was looking for, thanks. However, can you please increase the font size and upload at at least 1080p? At 720 I have to zoom way in with Magnifier!
Glad it has helped. In future videos I have upped the font size. Not sure what video that starts at. Same with getting the 1080p as well.
P.s. I know you've mentioned ATAC already. You might also be interested in two other Ratatui based apps - openapi-tui and slumber - for some UI ideas in the same space.
Awesome thank you!
51:22 pro-tip, take a look at the docs on the type when the docs on methods don't make sense (i.e. layout::Layout)
Will do. Still getting used to the rust and crate docs ecosystem. I am so used to the python world I get lost in thinks documenting rust, heh. Total skill issue on my part.
@@GoRustLang I think your confusion suggests on the constraints / layout suggests that we could very much do with improving the language used in there to describe what's going on. There's lots of ways that a layout might be interpreted, ratatui's approach is carving up rectangular areas of a screen and then writing widgets into each area. Simple when stated that way, much more complicated when not. Many UI frameworks combine the layout and rendering part (which is generally better IMO, and something that would be useful in a world where we rethink all of the ratatui ways of doing things)
8:30 we've added better constructors for Layout in later versions of ratatui (Layout::horizontal and Layout::vertical)
3:14 unfortunately ChatGPT data cutoff dates for most models is before ratatui was forked from tui-rs. It's grown something like 50K LoC since the fork (with about 10K of that being docs)
the app evolved quite a bit! congrats on that
Thanks! It has been an interesting ride.
54:34 We've gone through a bunch of iterations of what a good approach for apps and state looks like, and in particular whether to make a ui method that accepts frame or to think in terms of Widgets. The JSON editor was one of the first tutorials that were written after the tui -> ratatui fork, so it hasn't yet been updated / made more idiomatic. Tui-rs was really built around the idea that the widgets were constructed for each frame and then discarded (because the render function in the widget trait consumes self). A few months ago we relaxed that and introduced the WidgetRef trait, made all the built-in widgets non destructive to their state when rendering, which made it possible to store them between frames. This enables things like you see in the tabs example `impl Widget for &App`, which says if you have reference to an App, then you can render this directly instead of building up the widgets to render on each frame. There's another similar approach for tabs in the Demo2 example which is probably worth looking at too. That one pulls each tab into its own type, and lets the type handle rendering the contents (via the widget trait). Strum is a pretty neat crate that adds some missing pieces to make it easy to do things with enums easily (iterate, add display strings, convert from a number to the specific item, etc.), But I can see the mind explode meme happening when you saw it, so it might be too much magic for the example code. It either needs some good comments or perhaps to be replaced with the manual versions of things (which are just a bunch of match statements in a function). If you want to highlight that you're streaming Ratatui content next time, feel free to advertise this on our discord server (which is bridged to matrix too for those that don't discord).
Thanks for all of this context it really helps. I am totally going to checkout the strum package and the other demo apps. I need more time in the day :D
51:11 It's set by the `#[derive(Default)]` on `App` and on the `SelectedTab` (where the #[default] is mentioned)
Thanks for the confirmation on this, as you saw I got really lost. :D
48:35 Yeah, implementing widget on your app instead of manually calling methods on frame is a pretty nice way of encapsulating your rendering logic into the struct that you care about.
Awesome, totally going to read up on this. It has a been a lot of fun going down this route and learning about doing TUI's. In the future i'll be able to come up with an idea and put a nice UI in front of it. This has been a lot of fun.
46:52 LOL, sounds we need to ditch strum from the examples :D (or at least document that a bit better)
I still need to figure out what strum does for sure :D It is a hard balance figuring out how much detail to go into vs getting the point across. I know I struggle with that at least.
30:35 rustfmt is what you want (run cargo fmt)
Oh awesome. Thank you! Going to get that going.
4:44 there's some good docs on the website about using color-eyre for handling errors nicely (and we're probably going to migrate most of the examples to use that)
Please go on, it's awesome to see i'm not alone struggling while learning Rust :)
The struggle is real, but we'll make it 💪
i'm very glad that, i'm not the only one who was lost in the same particular way. i appreciate the work of ratatui a lot but damn the difference from the counter to the json editor is like switching a game from easy to hardcore mode for a rust beginner ^^
haha for sure. I was shocked at the difference, but once I was able to break it down it made sense.
I mentioned in another comment, the JSON editor was one of the earliest tutorials written and hasn't really been updated much since. The counter tutorials are much newer and take into account both the changes in Ratatui and a better understanding of what things people run into when implementing apps. I rewrote it recently (and still have some more parts to add at some point).
@@joshka7634 i just saw your comment now. it's very nice to see that people who are also working on this project (i assume ^^) also look at smaller videos and the comments. i will retake the editor tutorial!
@@anitamaxcode Yeah, someone posted a link to one of Buddy's livestreams on our discord and I took a peek. Watching how new users interact with the library is really useful to understanding what things to explain better / change.
I have a similar approach to learning new things. But i tend to use different ollama models. It used to be codellama, now it's usually llama3.
Thanks for the tutorial! I don't know if it's just me who has this preference, but would you consider doing normal tutorial videos (i.e not livestreams)? As interesting as live streams are, sometimes I don't really have the time to go through the whole discovery process and just want to skip ahead to how i actually do the thing. That said, you speak very clearly and explain things well and it looks like you're just getting started with your youtube channel. So hopefully if you try both formats out, you can see which one gets you more viewers... Oh, and also posting a link to source code is always a plus :) Anyway, thanks again for the content and best of luck with the channel! You got +1 Like & Subscribe - Keep up the good work :)
Ask and you shall receive :D. I just posted my first non-live stream this morning. I do plan to do more of them. They just take a lot of time. That one I released today probably took in the ballpark of 6 to 8 hours from idea, planning, lots of bad example code writing, filming editing etc. Also had to make sure I didn't look stupid 😅. I actually plan to get to a point where I have 3 types of content on the channel 1. livestreams - Tbh I didn't think I would like doing this, but I am enjoying it as it is a fun way to learn and share the experience. Plus explore ideas and areas of rust. 2. Produced content - Short or shorter content that is pre-planned, concise and to the point. 3. Clips - Where I take chunks out of the livestreams that can live standalone on their own so you don't have to deal with the fluff around it I started the channel to push myself to finally learn rust and teach it as a learn it so there is a tight feedback loop for knowing what struggles I have and can help others get through the same ones. So there is going to be a ramp up period where the livestream is going to be the primary video mechanism and as I learn more the Produced content will start to flow. Then eventually when i get good enough clips will start being added as well. That is my current plans. Thanks for the comment and the subcribe I appreciate it.
@@GoRustLang😂
Hey! Been following and enjoying the content. If I may suggest some future content maybe you can lookup bevy and maybe make a simple game like pong, space invaders, asteroids, to name a few but using a TUI interface, I think that would be interesting to watch and follow. Anyway, one thing at a time, and keep up the good work. <3
Ooooh interesting idea. TBH I hadn’t thought about doing any game stuff but that could be fun.
@@GoRustLang Glad to hear you might be interested, it is quite an endeavor (I haven't had the time myself yet), but I can imagine it being fun to tackle! And an opportunity to contribute to the bevy eco system as an example project or template, which is quite exciting as well. But for now slow and steady haha. Also, while I have your attention and my apologies for mentioning it here abruptly I know you increased the font size in the previous video already but could you increase it a bit more? A good benchmark is to consider viewers on the phone but don't wanna pressure you to increase it to a point that is uncomfortable for you. Anyway super appreciate it and its okay if you don't end up changing anything, its the content that is important.
Keep coding more stuff bro 💪 You have my support
Will do for sure. I am enjoying it.
If code could be zoomed in it would help viewers a lot, since this kind of "coding together" video - means split screen - for those without multiple monitors... Thank you very much for the content!
Thanks! I am going to work on making the font size bigger in the next video.
'PromoSM'
This video was loaded! Fire 🔥
its funny that I recently started with doing the same idea of a project, a couple of days ago
using ratatui aswell
Great minds 😁. I think a lot of people are frustrated with the state of these tools and want a non bloated version
@@GoRustLang yeah, i used to use insomnia, but now kong ended that for me, and I've been using curl only
Such an underrated channel. I love rust, use it everyday and I always learn thing from your videos. Thank-you.
Thank you much appreciated. I am glad you like them and learn. It has been a fun journey.
best of luck man
Thank you
So the OS keeps a cache of the ARP requests, but also can listen on the network for other people requesting APR resolution. Additonally network gear like switches and APs can intercept ARP requests and respond directly (if they know)
Really good point. Thanks for pointing this out.
side note it called ARP not A R P. (say 'park' without the k and the p at the end 😂)
Thanks! I am going to try to get better at this I am sure I will spell it for a while still.
There are alternatives to the match on the unwrap. For example, unwrap_or() which returns an alternate on fail. The unwrap_xx() are a little finicky, but can make things a bit less verbose and easier to read. Raw unwraps are discouraged unless you know that it cannot fail.
Thanks I appreciate it. It felt weird using unwrap so much, but I figured it was fine for now and at some point on the journey I would know more on it. I will keep this in mind as I am learning and writing more.
I love this kind of calm code only focused videos, keep doing it super helpful
It's working! 😄
I can be excitable 😁 thanks for watching.