ERRATA - USE cargo-binstall to install these, it's SO FAST! - 1:14 "PIPELINS" instead of "PIPELINES". Spelling is hard. - This whole video was produced on Asahi Linux on an m1 mac mini. Yes (basically) everything works, yes it's incredible. You can test out with a safe dual-boot here asahilinux.org. Macbook M1 is nearly there, a few quality-of-life problems, but still ready for testing. I'LL DO A VIDEO ON IT GEEZ. - 6:08 My aarch64 PR is now merged github.com/MordechaiHadad/bob/pull/92 - evcxr is no longer google/evcxr but evcxr/evcxr. - exa is no longer maintained, the fork is lib.rs/crates/eza
5:40 Would recommend adding Helix as a replacement for nvim so long as you don't mind lack of plugins. Edit: just realised it's in the last slide. It's not possible to cargo install because you need the /runtime folder. It's available in most package managers.
@@arcaneminded It sure is, but I also had problems installing it from my package manager. I want to like Helix, but my goal is to cargo install my life! 😀
fish is getting a rewrite in Rust btw! I use these: 1) prqlc - a cool new way to write database queries 2) broot - crazy fast file navigation via shortcuts 3) skim - a live grep fuzzy finder with piping available 4) flamegraph - generate profiles, drawn with appropriate timings and bars 5) py-spy - does the same, but you can attach to a Python process 6) kickoff - a minimalistic program launcher for Sway window manager 7) swayr - also a utility to add extra features to Sway 8) cargo-nexttest - a better version of cargo test 9) gitoxide - a git rewrite 10) hyperfine - a benchmark utility
I used to be put off by the "rewrite it in rust" thing but after seeing the performance and ergonomics of these tools I get it now. The plattform independence is an aspect of Rust that's underrated in my opinion especially for someone like me who is on windows trying to get to a unix like workflow. On a personal note, I just wrote my first, very tiny, command line tool in rust, in neovim, and it's no small part because of your content that I started down this path. Thank you!
One that you might not know about is handlr, a Rust replacement for xdg-open. xdg-open happens to be written entirely in Bash, so naturally it's pretty slow despite how much it's used in the background. handlr does need a small wrapper since it requires a subcommand to perform xdg-open operations, but said wrapper is still faster than faster than running the whole thing in Bash. That said, there is a pull request to fix this issue and allow you to symlink xdg-open to it directly, bypassing any kind of wrapper script completely. Edit: I just realized that it hasn't actually been updated in almost 3 years. There is a fork that's is still active though.
Nice! Though don't immediately write off Rust projects that haven't been updated in a long time, if they have modest scope, they might not be abandoned, they might be DONE! (though if there's a fork, in this case it sounds like it's the former)
For JS/TS developers, Volta is so cool for avoiding "it works on my local". And when working with more juniors devs who still have to get to understand versioning.
I fell in love with Rust for reasons that are precise opposite of what this video embodies. I have no interest in being pulled in the direction of lives-in-the-terminal codes-in-vim uses-arch-linux-btw side of the society. Of all the languages I tried, Rust is the only one that is user-friendly to a windows desktop simpleton like me. Opening the terminal and typing "cargo init" and "cargo build --release" is as far as you need to go to use Rust productively. When they promised "A language empowering everyone [...]" they really fucking meant it. Rust "handle" conforms to the hand, yet the blade does not budge. An unfortunately rare quality.
If rust gets any more cross-platform libraries it will make java competition in the write once runs everywhere field. Which is impressive since it's java's whole identity.
@@NoBoilerplate that's the reason the jni is actually getting replaced by an in java dynamic loading system. It still requires the native library present on systems but at least doesn't require a c-java conversion code like jni did. You can call foreign functions directly from java code after describing their signature with a java abstraction.
Hi Triss, can you do a video on rust best practices, how you start a projects. When to use map_err vs and_then, using impl Into as params etc... thanks love your videos.
That sounds like a great video Francis, I'll add it to my notes for my backlog! In the meantime, a great video by friend of the channel CTTM on this topic is th-cam.com/video/f82wn-1DPas/w-d-xo.html
Given the Asahi references I'd love to see a video covering that project's usage of rust in the graphics stack as a pillar of what oxidation can look like deep into hardware and software.
I'm excited to be a user of it, but I will leave the deep-dive to others who know more about it (asahi linda, right? www.youtube.com/@AsahiLina/featured)
@@NoBoilerplate It took me a bit to get used to it, but the types of advanced text manipulation that you can do with it without plugins is awesome. Also the LSP support being built-in is amazing.
I tried lapce for a month, it was great but at some point it kept corrupting my files. Maybe it was not saving the entire buffer properly, and the annoying thing is that in lapce everything looked fine, but when you tried to compile the code (or even just view the files outside lapce) you would notice that entire blocks of code were missing. I stopped using lapce after that, it is still in alpha after all. I wouldn't recommend it for production projects as it corrupted a lot of code that was not committed to git...
COSMIC Desktop being made by PopOS is supposed to be in Rust and was announced to be released sometime this year. Launcher, Panel, Settings, Window manager (winit) all written in rust.
The only 256-color terminal that runs smoothly on my old 8GB MacBook when I use nvim and tmux for multiple projects. Even iTerm makes laptop fans go supersonic and slows down other apps
They missed an excellent opportunity to use "rat" for the cat replacement. Think about it: rust + cat = rat. Also when you use it, the file "rats out" it's contents. I am a bit salty about that xD
Helix looks truly excellent, but it's hard to change 20 years of vim muscle memory. It would be easier if helix had wholly different keymaps, but the overlap between the two somehow make it harder for me.
@@mwcz5190 yeah, I think if you're strong in vim/nvim helix is a pain. I was only ever comfortable in vim Enough to make minor changes on the server. I'd otherwise edit locally and push new versions. Helix felt only marginally newer than when i started vscode. I definitely don't use helix like a vim pro uses vim, but it gives me a lot of the modal ergonomics with an approachability and ease of starting configuration that vscode had.
1) lsd: I prefer it over exa because it's more compatible with ls. 'exa' have incompatible switches with the built-in ls (like -alrt). 2) tokei is a source code analyzer and display stats. 3) ferris-says : cowsay replacement 4) starship : shell prompt 5) oxipng : png optimizer 6) procs : ps replacement 7) hyperfine : benchmark tool 8) hexyl : hex viewer command line
Half of my everyday utilities are already oxidized: I live in alacritty for the most part, use ripgrep for basic string searches, and even jump into Helix from time to time. It's still a bit raw for my liking, and I find it a bit bizarre that the hx devs decided on a half measure with regards to Vim keys, but still that's a bold decision and I can respect that. Maybe they ARE onto something, I've just grown SO accustomed to Vim keys ever since I switched to Linux that any deviation at all feels like a chore to deal with
@@NoBoilerplate I suppose thats true. IG Helix is just its own paradigm. Honestly I've really liked it, the selection based workflow is completely brilliant, but it requires an open mind. That said its still missing some critical features imo, such as snippets. I tend to find that I haven't really lost my vim despite switching to helix, though I don't do a lot of remote editing.
The only criteria is they are cargo installable, Helix has so much faff I keep bouncing off it, though I think it's the most fully-featured. Thank you, I'll try those again!
@@jg_yro5845 sure thing - here's how to install helix, from the official docs: git clone github.com/helix-editor/helix cd helix cargo install --locked --path helix-term # RUSTUP SWITCHES VERSION HERE mkdir ~/.config/helix/ ln -s $PWD/runtime ~/.config/helix/runtime hx --grammar fetch hx --grammar build And THEN I need to get into configuring lsp, which is not simple either!
@@NoBoilerplate I can def understand your sentiment regarding this. I feel that there is definitely improvements that can be made though I do like the batteries included approach.
I'll give it a go! Thanks! BTW here's my exa ls alias alias ls = exa --time-style=long-iso --group-directories-first --icons --no-permissions --no-user -l
I rhink Nushell deserves its own video because of how powerful it is. The thing has got a dataframe implementation which is like a dozen times faster than Python!
Normally, when I listen this speech about a whole new set of tools, I'm defensive (like lots of Linux users). But I tested Zellij and meeeeen I'm sold to this trend 100%. I'm revising, open minded, every tool that was part of my day to day for years. Why not? Why staying static? The stability cannot become a comfort zone that doesn't allow improvement. Glad for this new set of tools!
These Rust Linux terminal tools are great! Exa, bat, starship, fd etc...they have become my defaults. I feel these tools do more than simply look neat or add additional functionality. They also serve as a gateway for me (and many more) to learn Rust.
@@NoBoilerplate Speaking of fd, I think you missed that one in the video and I think it's absolutely essential. Apart from finding files, one frequent use case for me is converting many audio or image files at once using the -x option.
wait for the rust community to unite all of this into rust-emacs, which is kinda good idea, since Emacs' main problem is speed and elisp (not very popular language).
came back because of a tool i use daily and completely forgot was written in rust, paru! paru is a pacman wrapper/aur helper that makes managing my arch install much much easier
@@NoBoilerplate iirc the lead dev of yay dedicates most of his time helping develop paru now, they both have the same features however i like paru’s bat integration ,PKGBUILD viewing/editing, and CLI better than yay also its written in rust so of course thats a selling point aswell ;)
Someone needs to make a Linux distro with a package manager written in Rust that just calls cargo. That way we can have a Linux distro written entirely in Rust (minus the Linux kernel)
I'm not much of a terminal tinkerer, but I gotta say starship is amazing. I discovered it recently and installed it on few machines (work and personal) after a single day of using it. Customized it to my liking and I'm enjoying its performance and simplicity every day. One other Rust based tool that I love using is Volta. It's a JavaScript tool manager and it's amazing and fast. Since I'm a frontend developer, I work in Node ecosystem and I can use Volta to pin Node/npm/yarn/pnpm in a repo. Then when I cd into that repo, Volta will switch these tools to pinned versions I have in that repo. No more thinking about Node versions and potential mistakes while installing dependencies because I forgot to switch my Node version. I can just focus on installing npm dependencies and writing code after that. I know to some it might be silly, but I've worked in projects that range from Node 10 to Node 18 on a weekly basis and managing that with NVM was always a pain. Now Volta does it so good that I forget that it exists. It's a great tool that works and doesn't get in my way.
That sounds great! If you'd like that for all programming languages try RTX, as shown in this video. It's a Rust version of asdf, which does the same thing. Whenever I switch into a project written in ANY programming language, I get the functionality you love :D
@@NoBoilerplate thank you for the info, will definitely check it out. For some reason I thought RTX still required manual work for this, but I do admit I didn't try it. Just quickly looked at it and reached a wrong conclusion I guess.
Yeah, I should have, woops! Check my source code for all the `cargo install` lines, you get the package name there, or you could copy the long cargo install line on the last slide and get EVERYTHING :-D
@@NoBoilerplate The codebase I'm working with is C#, so I've been using Jetbrains Rider. Do nvim or its counterparts have any integration or equivalent for ReSharper, or the utilities like building, going to code definitions, decompilers and the like?
I also often find that I do too much work between commits, and I like being able to selectively add line changes to a commit. I can't imagine doing that w/o a mouse, but I'd be very pleased to be proven wrong
@@chrs-wltrs I'm afraid I'm not sure, I see "csharpier, csharp-language-server, and omnisharp" in Astronvim's language server chooser? Try it out astronvim.github.io
some tools written in rust that made me happy for being cargo installable: 1. fnm - fast node manager 2. tokei - counts the physical lines of code, logical lines of code, knows about comments, and language mixups i.e. rust inside markdown
@@NoBoilerplate tbh, i have no idea. i found fnm when trying to use nvm (node version manager, written in/for bash) inside fish shell (which they don't support). so Schniz/fnm saved the day
Mprocs is amazing and getting a full rewrite... one day. I tried submitting an alternative layout option and the dev said he's rewriting the entire thing and my PR would be there in the new version by design. Keep an eye on that for sure!
a classic haha. I remember reporting a bug on aura, getting an answer that the bug will be no longer once its rewritten to rust. afaik its still not rewritten though xd
Wow looks very interesting, do you know if it's possible to use latex? I've personally been using trillium notes, which I also can self-host, and is really great for organising and linking different notes. However it is pretty limited in terms of sharing with others and no handwriting notes
@@Gaivs obsidian.md is going to change your life. Yes latex, yes plugins, yes markdown native, yes git integration. It's WILDLY good! It's not open source, but it's written by two nice developers who release arm64 binaries, so I can't fault them! I pay for sync for convenience (the mobile app is LOVELY but of course git on mobile is non-trivial) and I don't mind giving them a small amount per month to make my life WONDERFUL! 🙂
1:05 You had me at "fish" :) My favorite Linux TH-camr made fun of someone wanting fish as the default Linux shell and thinks, it's stupid, because it isn't posix compliant.
Another thing I can't see people mention is window manager, you have cool projects like penrose and leftwm. Still some way to go here concerning oxidising these projects, I think they still depend on some x11 libraries
The only thing is it is sad that it takes so much work to get something nice, and by that I mean someone like you has done all the work to go find out a way that works well. I can already see people in the comments talking about: VsCode, Neovim, Helix, Lapce. I get a tad overwhelmed and have to make executive decisions in what to pick up and what to stay away from, but it's nice to see the choices. I use Neovim for my development for around a year now, but there are painpoints I'm having that I will need time to solve, particularly in debugging Angular projects and having the editor look and feel the same across my three operating systems (Fedora Linux at work.. Windows 11 at home.. MacOS for my personal creational development that isn't in high resource usage category..)
Sounds like you could standardise on fedora 😜 If "personal creational development" is music, check out bitwig.com, runs on Linux and is as powerful as Ableton Live
I have already used exa. But ll is aliased to 'ls -alhF --group-directories-first' for me enough. eee is aliased to 'exa -laFT --group-directories-first -L2' looks nice. Also using ripgrep as part of vim setup with fzf. Really like gitui. Missing part to migrate to terminal finally.
I sure do, you're not the first person to tell me to update the list! Typst looks interesting, perhaps useful for publishers who don't want to use latex, but I don't see a benefit for my modest use, because I can combine markdown with latex snippets using Obsidian www.makeuseof.com/write-mathematical-notation-obsidian/
If i need a simple smal tool i choose rust over a bash or nu script. Because if i need some dependencies i have them at my fingertips. For example i wanted to use this script also on windows. In the past i would have used fzf but that on windows sucks. Skim is written in rust and can also be used as a library. Problem solved.
on Garuda, cat is replaced with bat by default (and the default terminal is alacritty); I was always confused why using cat on Garuda outputted syntax highlighting and now I know why lol
It feels like nearly all these tools are for DevOps / experienced terminal users Would like to see a list that affects non so technical users except of Tauri
The supreme advantage of terminal apps are their featherweight cpu/mem requirements. I'd encourage anyone to start with ncspot, a spotify client, and branch out from there - there's a whole world available!
would love to see this and Everything Everywhere All At Once as a "noboilerplateos" flake like zaneyos does, with an installation video. If I can get anything close to either running this weekend, I'd be trilled. Great stuff, inspiring. Sadly, I'm still hunting around in the RTFM section of the book store.
Nice combo! Neither work for my requirement of one-line cargo installable, helix has quite a bit of post-install setup, and warp (btw it's a terminal emulator not a shell) is macos only, which doesn't bode well for my ability to cargo-install it :-D
With a video title like that, I think there is something you ought to know: The Rust language doesn't take its name from iron oxide (at least not directly), it takes its name from a mushroom. So it's not about oxidizing, it's about fungifying.
There are so many great tools coming out of the Rust community - and I think it's because the kind of developer who would not have dared write systems tools, and might have stuck with web/app development can now easily write them!
I loved Helix's editing philosophy of selection-before-action but the project is still kinda at an alpha, or at best beta, level of maturity and i couldn't persist with it for daily use.
Bro, this is just the kind of thing that I love. Great work, would love to see more videos in the same vein (for instance how you use linux, what kind of keyboard you use etc).I just got an m2 mac, and would love to see your configs for developing in greater detail!
me too! Just got the cheapest second-hand mac mini m1 I could find and installed asahilinux.org Been my primary machine for a week - EVERYTHING WORKS! I use the best keyboard I've ever used, www.zsa.io/moonlander/ (and also the Launchkey 49 for *music* keyboard!)
@@NoBoilerplate It always a little funny that it seems very similar things appeal to you and I. Using Obsidian, the interest in Rust, WASM, and don't tell me PWAs as well? And now we have the Moonlander keyboard in common.
Thanks for sharing! I use a large subset of these tools, but sccache, rtx and wiki-tui were new to me. And now I want to learn more about Pomodoro :D Maybe you can explain at some point why you think Helix is "WEIRD". I use it as main editor and I really like it besides a few things here and there. Again, thx for the video :)
My two problems with helix are: 1. You can't `cargo install helix` there's a somewhat onerous setup, and 2. Reversed vim bindings. I get why they're better, but every app I use has vim bindings!
@@NoBoilerplate thanks for the reply. 2) is actually a valid reason … but it’s written in Rust 😅 I implemented the : feature very early and it’s just so nice if it’s the language you know :)
Sometimes I need to have the precise date and time and might be not sure if my system's time is correct. In that case you might browse to a website that talks to an NTP server, but you can do just that with `rsdate`. It's basically like `date` but uses an NTP server instead of your system's clock.
I really appreciate this video, in fact, I have some of these already installed! Though sometimes I still use windows for some things and unfortunately exa cannot be installed on windows, as it depends on the "users" crate which expects a unix-like environment. (std::os::unix to exist)
I have a love hate relationship with the whole "rewrite it in rust thing", but even I already use most of these and I didn't even know bob was written in rust!.
I've thought about this a lot, and I think the reason it's so tempting to rewrite stuff in rust is that it's so easy to make things better. Imagine you've written a python wrapper around a c library. Sure it's unpleasant but you eventually get it working and what else are you going to do? Cant rewrite it in python!
@@farzadmf since this is the newest video, it's naturally the one with the highest number, but I do agree that it would be helpful if the title of the video and the name of the script file matched. It's called 20-rust-userland..
There's this package called "binstall" which speeds up installation by a hundred times as it prevents downloading and building all the dependencies and simply downloads the binary of the package that you need,
I was just about to write a comment about Helix when I saw you mentioned it in the last slide. What's weird about it, just the fact that the editing model is different to vim or is there something else?
It has an insanely fast, global search and file fuzzy finder that’s way way more performant than telescope.nvim. The LSP and configuration styles are much simpler and much more compact than neovim. At the same time it comes with a lot of same defaults and champions in huge monorepos where neovim sadly chokes.
It's really hard to untrain the vim Verb-Noun command structure, not least because you can think about it in plain English. Change a word flows in your head much better than a word, change. And like Martin said, it's very young. Promising maybe, but very young.
It really bugs me that I can't cargo install it. I move between installs and machines a LOT so I need a simple install, not something where I need to run external commands to compile syntaxes etc. Shame, as it seems to be the most mature rust editor!
Okay but, I like the bash/zsh way of doing things. It's familiar, simple, and is the default on any decent OS, so you know it will always be there for you. To have to learn a new shell paradigm, that is not readily available, is a big ask.
The "z" command is awesome. I use it all the time. I also use Ranger but have been wishing for something a little more modern. Will have to check out Joshuto. Thanks for sharing
Hopefully this doesn't get lost in the comments, but after seeing a video like this, I can't help but feel intimidated. I just felt some semblance of familiarity with the terminal, and these tools, despite being vastly superior and efficient, turn everything I know on its head. Any tips to gradually 'oxidize'?
You can absolutely take it slow, this is quite a fast video! You don't need to change your shell or terminal or anything like that. Install just one program from this list that you think is interesting, and go from there! :-)
Nice video. I might try and create a rust based linux distribution for fun with all of these🤔 The only problem is a GUI which requires mesa which requires C/C++. If I really wanted to I could write something in rust using just drm-rs but It’d take a lot of work.
Many of these had surprising troubles installing on my diverse set of platforms, but the standout was ncspot which doesn't appear to install most places, like macOS/x86 due to the use of long abandoned rustc-serialize
@@tommythorn Oh interesting. Are you sure it uses rustc-serialize? I can't see that, and note that it uses the excellent Serde crates.io/crates/ncspot/0.12.0/dependencies
`cargo install X` will actually update X if there's updates, if it's already installed. My recommendation is to have a LONG `cargo install X Y Z` line with all your stuff in, then re-run it whenever you like. I think you're talking about crates.io/crates/cargo-update which I didn't like.
Maybe I'm doing something wrong but I tested it out and nu shell's structured capabilities don't work with exa. I do like the --header option with exa but nu shell basically does the same thing
Is sccache really worth it? what's your 'sccache --show-stats' output? For me it saves 0s on average (but also only costs 0.0.1s for writing so it's not like it slows anything down either).
oh interesting! I've tested compiling ripgrep with it off, which is a 20-21s compile, then with sccache the first time it's 21s, as you would expect, but the SECOND compile it's 7.9s. I think it comes into its own when used on a CI machine, across multiple projects. The number of projects that use serde stable, say, must be loads - and that's a HUGE dependency to compile!
I use `fd` and `sk` (skim) extensively, mostly through a shell function `fcd` (find and cd) defined as `fcd() { cd "$(fd --type d --max-depth 1 "$1" | sk)" }`. You use it like `fcd ~/Documents` andi t gives you a fuzzy finder (sk) over all the subdirectories of `~/Documents`, I have an alias `fcdp` which allows me to fuzzy find over all of my projects, highly recommended.
sd replaces sed in simple cases (sd 'a' 'b' == sed s/a/b/g) but it doesn't have the expresive power from sed sadly, so I haven't replaced it. I also tried helix, but I gave up as I couldn't get hover actions working.
Unfortunately, I’ve found that some of these crates are problematic to install on Windows. There’s a lot of linking to native code which means that you’ll have to have the right version of Visual Studio set up along with properly configured cmake. And even then not all of these compile.
@@NoBoilerplate Definitely is! I was able to install most of these under WSL2 without much issue. The one missing link for me is being able to use WSL2 tooling for game dev. Doing the Roguelike in Rust book (it’s pretty great!), but WSL2 doesn’t do that very well.
Haven’t seen a plug for topgrade yet. While some will want to be more deliberate with reviewing their updates, I’m super happy to have a one-button tool that does most everything.
I was a python developer for 15 years before I discovered rust - I'm never going back! My videos explain Rust in terms of dynamic languages, I'd love to know what you think: th-cam.com/video/oY0XwMOSzq4/w-d-xo.html
Rust's compile times are slower than many other languages, but they're doing ENORMOUS WORK for us. Let's look at a case study I really like: Go. Ken Thompson and co have done such a good job and perfecting what they set out to do, which is (according to their blog posts) "What would we do differently if we designed C++ today", and I don't mean that as an insult. It's nothing short of genius. But I want more. The type system is solid, but not rich enough. Have you tried an ML language? If not, it's a TRIP. I learned Haskell in 2010 and it really opened my eyes to what a rich type system can do. Then in 2013 I learned Clojure, and FINALLY I found a lisp that seemed normal, not full of odd 1950s ideas (sorry Common Lisp). I even worked at a startup bank for 2 years writing it! What luck. What makes me excited about Rust is that it's taken much of Haskell's type system, coupled it with Lisp's Macro system for complete compile-time control, and then cleverly packaged it in a language that looks, at first glance, like C. Or something C-like. Now, the slowness of compiling you're referring to, I agree can trip up some newbies. They might be a dealbreaker to you, and I respect that. They were a dealbreaker for me too, when I first started! I had a mentor who kept me learning, however, and I trusted their judgement and experience. After a number of weeks, I realised that many of the benefits of Rust come from this extra compilation step, an example: Rust annotates how long variables can live for using a very short syntax.
@@NoBoilerplate I agree it does a ton of work for you, however, I don't see why not to have a cache. I'm not saying throw out all the stuff that makes rust rust, what I am saying is there is clearly a tool that will help people not want to abandon rust and it fits with the basic job of the compiler, in part, not doing the same work over again. I am aware that the compiler does a lot for you, remember, I watch your videos and have done so multiple times. I had another moment like this with constant expressions with const generics, though, at least with this one, I understand why it isn't in by default, because this is in the nightly build. Generally, I am a proponent for what works best for you. Currently, for me, that is still C++, in spite of only picking it up a few months ago and ripping my hair out over build systems, however, once I got over that hump, amazing things introduced themselves to me: const generics in the first place at all (I come from the Java and C# side of things), values larger than 64 bits (including floating point values), everything is just a byte array if you stare at it in just the right way and many, many more awesome things. Rust is something along the lines of 16/17 years old now and seems just as awkward sometimes. Don't get me wrong, there are things I like about Rust too: memory safety, pseudo-automatic heap management, cross compiling without the pain, one codebase for everything, having a package manager by default, no nulls (I have convinced my colleagues to make anything that can be null signposted and an error otherwise), the enums that otherwise, don't exist, the match statement being more normalized than the switch statement in other languages (again, making an effort). All these things I like and yet, don't exist in C++ (I don't use smart pointers, I know they exist, I prefer managing that stuff myself). In spite of the pain points, I want to see how this fits in the greater ecosystem. Just like anything else, I want to see it succeed, and just like everything else, I see a place for critics, critics point out the problems and make things better. In the same sense that rust devs are critics of everyone else, rust too needs its critics. I grabbed sccache the next moment I was at my own computer because I knew I needed it with what it does and rust is now much better than what it was for me. Most of the rest of the apps, I don't care what they are written in, so long as it works, and not every app is for everyone. If software made with rust truly is the best, then I am more likely to use it by virtue of it being good, not by virtue of it being rewritten in Rust. I just swapped from yay to paru as my AUR helper without giving a crap about what language it was written in and low and behold, paru is written in rust, yay is written in go. The other part that might help is a rust-book lite (programmer?) edition for people who have programmed before. Don't explain to me what every little type is or how an if statement or a for statement works if it works no differentlly. With the integers and floats, give me the semantics of it and I can then figure it out (i.e. letter being the type of value, the number being the number of bytes for that value). Explain the move semantics and borrowing, but not the concept of a variable, otherwise, it feels patronizing and condescending to someone who has programmed for many years already. As for the other part of the comment, it is mostly design decisions, I made it with the intent of highlighting sccache, not take down the rest. I tried out exa and aliased it to ls, everything else, I don't care for the boxes and unicode tui stuff.
very helpful thanks ... I dipped into Nu shell a few years back but fell back to zsh but I have been considering going back. Also been a huge fan of bat (but not real bats). Many of the others I was unaware of an look forward to distracting myself by playing with them.
They missed an excellent opportunity to use "rat" for the cat replacement. Think about it: rust + cat = rat. Also when you use it, the file "rats out" it's contents. I am a bit salty about that xD
You have probably quite picky condenser microphone do you? There is unpleasant echo in the record. I battle with it too. Something like ( How To Make Your Own Acoustic Panels - In The Mix ) could help
Thank you for the tip! You have good ears, this is the first recording in my new studio, and it's a bit echoey! Is that the DIY Perks video? I have a plan to do exactly this :-)
@@NoBoilerplate nah .. I just bought awesome reproductors :D Now I hear everything .. and it hurts xD (eris 4.5 bt) PS: I've just tried some cheap jbl earbuds and it sound nice, no echo .. but with those Eris it literally hurt my ears
@@jsonkody Every single video I hope to improve my audio more and more! This was my first video running through a click/pop reduction plugin. I can hear the difference, but I wonder if you can?
ERRATA
- USE cargo-binstall to install these, it's SO FAST!
- 1:14 "PIPELINS" instead of "PIPELINES". Spelling is hard.
- This whole video was produced on Asahi Linux on an m1 mac mini. Yes (basically) everything works, yes it's incredible. You can test out with a safe dual-boot here asahilinux.org. Macbook M1 is nearly there, a few quality-of-life problems, but still ready for testing. I'LL DO A VIDEO ON IT GEEZ.
- 6:08 My aarch64 PR is now merged github.com/MordechaiHadad/bob/pull/92
- evcxr is no longer google/evcxr but evcxr/evcxr.
- exa is no longer maintained, the fork is lib.rs/crates/eza
1:14 "PIPELINS" instead of "PIPELINES"
TH-cam allows me to translate this into English:
ERRATUM
all!()
Thank you, TH-cam.
I was sharing some other Rust programs I use in the comments, and the comment was shadowbanned because TH-cam think's it's spam. Thank you, TH-cam.
5:40 Would recommend adding Helix as a replacement for nvim so long as you don't mind lack of plugins.
Edit: just realised it's in the last slide. It's not possible to cargo install because you need the /runtime folder. It's available in most package managers.
@@arcaneminded It sure is, but I also had problems installing it from my package manager. I want to like Helix, but my goal is to cargo install my life! 😀
fish is getting a rewrite in Rust btw!
I use these:
1) prqlc - a cool new way to write database queries
2) broot - crazy fast file navigation via shortcuts
3) skim - a live grep fuzzy finder with piping available
4) flamegraph - generate profiles, drawn with appropriate timings and bars
5) py-spy - does the same, but you can attach to a Python process
6) kickoff - a minimalistic program launcher for Sway window manager
7) swayr - also a utility to add extra features to Sway
8) cargo-nexttest - a better version of cargo test
9) gitoxide - a git rewrite
10) hyperfine - a benchmark utility
oooooooh! Thank you for the LIST!
Damn that's awesome, thanks for sharing!
you just changed my life by introducing me to broot and to skim. Thank you!
Fish????
Yessss
Let's gooo
Best shell gets a makeover
🐠🦀
Also, git-delta, wezterm, shadowenv, navi, tokei, and xh. Also, lapce is coming along but I prefer helix.
I used to be put off by the "rewrite it in rust" thing but after seeing the performance and ergonomics of these tools I get it now. The plattform independence is an aspect of Rust that's underrated in my opinion especially for someone like me who is on windows trying to get to a unix like workflow.
On a personal note, I just wrote my first, very tiny, command line tool in rust, in neovim, and it's no small part because of your content that I started down this path. Thank you!
I'm so pleased for you! What a milestone! It's only up from here, you've got it :-D Come tell us about your cli tool on my discord!
One that you might not know about is handlr, a Rust replacement for xdg-open. xdg-open happens to be written entirely in Bash, so naturally it's pretty slow despite how much it's used in the background. handlr does need a small wrapper since it requires a subcommand to perform xdg-open operations, but said wrapper is still faster than faster than running the whole thing in Bash. That said, there is a pull request to fix this issue and allow you to symlink xdg-open to it directly, bypassing any kind of wrapper script completely.
Edit: I just realized that it hasn't actually been updated in almost 3 years. There is a fork that's is still active though.
Nice! Though don't immediately write off Rust projects that haven't been updated in a long time, if they have modest scope, they might not be abandoned, they might be DONE!
(though if there's a fork, in this case it sounds like it's the former)
For JS/TS developers, Volta is so cool for avoiding "it works on my local". And when working with more juniors devs who still have to get to understand versioning.
I fell in love with Rust for reasons that are precise opposite of what this video embodies. I have no interest in being pulled in the direction of lives-in-the-terminal codes-in-vim uses-arch-linux-btw side of the society. Of all the languages I tried, Rust is the only one that is user-friendly to a windows desktop simpleton like me. Opening the terminal and typing "cargo init" and "cargo build --release" is as far as you need to go to use Rust productively.
When they promised "A language empowering everyone [...]" they really fucking meant it. Rust "handle" conforms to the hand, yet the blade does not budge. An unfortunately rare quality.
That's wonderful! Also, the windows crate is INCREDIBLE - all of the api is exposed crates.io/crates/windows
This is the way
If rust gets any more cross-platform libraries it will make java competition in the write once runs everywhere field. Which is impressive since it's java's whole identity.
Yeah! I feel like JNI breaks this promise too
@@NoBoilerplate that's the reason the jni is actually getting replaced by an in java dynamic loading system. It still requires the native library present on systems but at least doesn't require a c-java conversion code like jni did. You can call foreign functions directly from java code after describing their signature with a java abstraction.
Without needing a runtime or classpath
Great, now I gotta spend two weeks learning amazing new tools that are gonna make my life so much easier.
sorry/notsorry!
@@NoBoilerplate I thought so :(
Hi Triss, can you do a video on rust best practices, how you start a projects. When to use map_err vs and_then, using impl Into as params etc... thanks love your videos.
That sounds like a great video Francis, I'll add it to my notes for my backlog!
In the meantime, a great video by friend of the channel CTTM on this topic is th-cam.com/video/f82wn-1DPas/w-d-xo.html
Given the Asahi references I'd love to see a video covering that project's usage of rust in the graphics stack as a pillar of what oxidation can look like deep into hardware and software.
I'm excited to be a user of it, but I will leave the deep-dive to others who know more about it (asahi linda, right? www.youtube.com/@AsahiLina/featured)
Lapce is looking like a great VSCode replacement. I also use Helix as main editor, replacing neovim as it's finally stable enough for what I do.
I'm very interested in lapce, though I don't understand why I have to clone it to install it!
Helix is good, but I wish it had vim bindings options.
@@NoBoilerplate It took me a bit to get used to it, but the types of advanced text manipulation that you can do with it without plugins is awesome. Also the LSP support being built-in is amazing.
I tried lapce for a month, it was great but at some point it kept corrupting my files.
Maybe it was not saving the entire buffer properly, and the annoying thing is that in lapce everything looked fine, but when you tried to compile the code (or even just view the files outside lapce) you would notice that entire blocks of code were missing.
I stopped using lapce after that, it is still in alpha after all.
I wouldn't recommend it for production projects as it corrupted a lot of code that was not committed to git...
@Arjix I did not file a bug report, I know I should have done it, but I was super frustrated on how unreliable it had become at that point.
@@NoBoilerplate that would go against the point of helix, I don't see why they would add vim bindings
Yazi is a great tui file manager written in rust, and iamb is a matrix client written rust, however it’s still a little rough around the edges
COSMIC Desktop being made by PopOS is supposed to be in Rust and was announced to be released sometime this year. Launcher, Panel, Settings, Window manager (winit) all written in rust.
Fantastic!
Run on windows?
If there’s any video that makes me ABSOLUTELY want to learn rust, this is it. I’m going full on run Saturdays Sundays now.
Wonderful! Here's how I recommend learning it: th-cam.com/video/2hXNd6x9sZs/w-d-xo.html
@@NoBoilerplate I did watch that video and I am loving it already!
Surprised not to see Alacritty on the list as an extensible and customizable terminal
The only 256-color terminal that runs smoothly on my old 8GB MacBook when I use nvim and tmux for multiple projects. Even iTerm makes laptop fans go supersonic and slows down other apps
Since the devs refused to add background images, I really don't see how anyone will convince me to switch to it over Konsole.
The only good modern terminal with a reasonable config file
I forgot about terminal emulators! Ah well, time to do a part #2!
What do you think of wezterm, I hear good things too?
@@arcanemindedthere is wezterm which is also written in Rust
They missed an excellent opportunity to use "rat" for the cat replacement. Think about it: rust + cat = rat. Also when you use it, the file "rats out" it's contents. I am a bit salty about that xD
Shout out to the the Helix editor as an alternative to neovim.
It's unfortunate that helix still isn't available for download directly through cargo
This is exactly my problem, I can't be dealing with fussy installers!
Was just about to mention this! Helix is awesome though it is still in its infancy.
Helix looks truly excellent, but it's hard to change 20 years of vim muscle memory. It would be easier if helix had wholly different keymaps, but the overlap between the two somehow make it harder for me.
@@mwcz5190 yeah, I think if you're strong in vim/nvim helix is a pain. I was only ever comfortable in vim Enough to make minor changes on the server. I'd otherwise edit locally and push new versions.
Helix felt only marginally newer than when i started vscode. I definitely don't use helix like a vim pro uses vim, but it gives me a lot of the modal ergonomics with an approachability and ease of starting configuration that vscode had.
1) lsd: I prefer it over exa because it's more compatible with ls. 'exa' have incompatible switches with the built-in ls (like -alrt).
2) tokei is a source code analyzer and display stats.
3) ferris-says : cowsay replacement
4) starship : shell prompt
5) oxipng : png optimizer
6) procs : ps replacement
7) hyperfine : benchmark tool
8) hexyl : hex viewer command line
great list! you should submit it to this site, which is named after my video oxidizeyour.life
Half of my everyday utilities are already oxidized: I live in alacritty for the most part, use ripgrep for basic string searches, and even jump into Helix from time to time. It's still a bit raw for my liking, and I find it a bit bizarre that the hx devs decided on a half measure with regards to Vim keys, but still that's a bold decision and I can respect that. Maybe they ARE onto something, I've just grown SO accustomed to Vim keys ever since I switched to Linux that any deviation at all feels like a chore to deal with
Agreed - uniformity is better than perfection
@@NoBoilerplate I suppose thats true. IG Helix is just its own paradigm. Honestly I've really liked it, the selection based workflow is completely brilliant, but it requires an open mind. That said its still missing some critical features imo, such as snippets. I tend to find that I haven't really lost my vim despite switching to helix, though I don't do a lot of remote editing.
If you don’t like Helix, maybe Zed or Lapce are more to your liking. Both are written in Rust, but both are GUI editors though..
The only criteria is they are cargo installable, Helix has so much faff I keep bouncing off it, though I think it's the most fully-featured.
Thank you, I'll try those again!
@@NoBoilerplate could elaborate more on your view of helix if able? Just curious your thoughts
@@jg_yro5845 sure thing - here's how to install helix, from the official docs:
git clone github.com/helix-editor/helix
cd helix
cargo install --locked --path helix-term # RUSTUP SWITCHES VERSION HERE
mkdir ~/.config/helix/
ln -s $PWD/runtime ~/.config/helix/runtime
hx --grammar fetch
hx --grammar build
And THEN I need to get into configuring lsp, which is not simple either!
@@NoBoilerplate I can def understand your sentiment regarding this. I feel that there is definitely improvements that can be made though I do like the batteries included approach.
@@qwesxfgh That's rust_analyzer isn't preconfigured is *insane* right? I REALLY WANT TO LIKE HELIX
Instead of exa, I use lsd. Has nicer colors and better defaults for me. The rest has already been mentioned, hyperfine and wezterm
I'll give it a go! Thanks!
BTW here's my exa ls alias
alias ls = exa --time-style=long-iso --group-directories-first --icons --no-permissions --no-user -l
I rhink Nushell deserves its own video because of how powerful it is. The thing has got a dataframe implementation which is like a dozen times faster than Python!
Interesting! I never thought of it like that, I'll look into scripting with it
Normally, when I listen this speech about a whole new set of tools, I'm defensive (like lots of Linux users). But I tested Zellij and meeeeen I'm sold to this trend 100%. I'm revising, open minded, every tool that was part of my day to day for years. Why not? Why staying static? The stability cannot become a comfort zone that doesn't allow improvement. Glad for this new set of tools!
Look around in the comments for 1000 more great tools folks have suggested!
This is a magnificent list! Thanks!
Thank you!
These Rust Linux terminal tools are great! Exa, bat, starship, fd etc...they have become my defaults. I feel these tools do more than simply look neat or add additional functionality. They also serve as a gateway for me (and many more) to learn Rust.
Totally agree!
@@NoBoilerplate Speaking of fd, I think you missed that one in the video and I think it's absolutely essential. Apart from finding files, one frequent use case for me is converting many audio or image files at once using the -x option.
@@flyingsquirrel3271 oh FUN!
I'm not exactly a terminal person but I find some of these would be useful, especially sccache and bacon. Thanks for the video!
ncspot I have open all the time :-D
wait for the rust community to unite all of this into rust-emacs, which is kinda good idea, since Emacs' main problem is speed and elisp (not very popular language).
broot or skim maybe? Great list, thanks for sharing. Also zoxide is huge for me. I pipe that into skim for fast jumping around in folders
oh yes! Very cool!
Yes! zoxide is crucial!
came back because of a tool i use daily and completely forgot was written in rust, paru! paru is a pacman wrapper/aur helper that makes managing my arch install much much easier
Ooh, cool! Should I switch from yay?
@@NoBoilerplate iirc the lead dev of yay dedicates most of his time helping develop paru now, they both have the same features however i like paru’s bat integration ,PKGBUILD viewing/editing, and CLI better than yay
also its written in rust so of course thats a selling point aswell ;)
@@zainhammad omg switching now, thank you!
du-dust looks really cool and it's much faster than ncdu
Someone needs to make a Linux distro with a package manager written in Rust that just calls cargo. That way we can have a Linux distro written entirely in Rust (minus the Linux kernel)
honestly, that's my goal. My dotfiles would bootstrap `just` and then take it from there with `cargo`
I'm not much of a terminal tinkerer, but I gotta say starship is amazing. I discovered it recently and installed it on few machines (work and personal) after a single day of using it. Customized it to my liking and I'm enjoying its performance and simplicity every day.
One other Rust based tool that I love using is Volta. It's a JavaScript tool manager and it's amazing and fast. Since I'm a frontend developer, I work in Node ecosystem and I can use Volta to pin Node/npm/yarn/pnpm in a repo. Then when I cd into that repo, Volta will switch these tools to pinned versions I have in that repo. No more thinking about Node versions and potential mistakes while installing dependencies because I forgot to switch my Node version. I can just focus on installing npm dependencies and writing code after that. I know to some it might be silly, but I've worked in projects that range from Node 10 to Node 18 on a weekly basis and managing that with NVM was always a pain. Now Volta does it so good that I forget that it exists. It's a great tool that works and doesn't get in my way.
That sounds great! If you'd like that for all programming languages try RTX, as shown in this video. It's a Rust version of asdf, which does the same thing. Whenever I switch into a project written in ANY programming language, I get the functionality you love :D
@@NoBoilerplate thank you for the info, will definitely check it out. For some reason I thought RTX still required manual work for this, but I do admit I didn't try it. Just quickly looked at it and reached a wrong conclusion I guess.
This is the video I was looking for for about 5 years
You should really include links to the stuff you talked about in the description for easier access, but thanks for the great list of tools!
Yeah, I should have, woops! Check my source code for all the `cargo install` lines, you get the package name there, or you could copy the long cargo install line on the last slide and get EVERYTHING :-D
Great list! I also recommend xh as an httpie alternative
oh NICE I use httpie all the time. Thanks!
I uses xh and… helix which is hx. It’s confusing but I love these tools!
This is my bi-weekly reminder to try out CLI-only programming
You'll not miss vscode astronvim.github.io/
@@NoBoilerplate The codebase I'm working with is C#, so I've been using Jetbrains Rider. Do nvim or its counterparts have any integration or equivalent for ReSharper, or the utilities like building, going to code definitions, decompilers and the like?
I also often find that I do too much work between commits, and I like being able to selectively add line changes to a commit. I can't imagine doing that w/o a mouse, but I'd be very pleased to be proven wrong
@@chrs-wltrs I'm afraid I'm not sure, I see "csharpier, csharp-language-server, and omnisharp" in Astronvim's language server chooser? Try it out astronvim.github.io
@@chrs-wltrs i know lazygit lets you do partial staging rather easily - and astronvim comes out of the box with keybinds to open that up for you
some tools written in rust that made me happy for being cargo installable:
1. fnm - fast node manager
2. tokei - counts the physical lines of code, logical lines of code, knows about comments, and language mixups i.e. rust inside markdown
Oh COOL I'll try out tokei, thank you! I think fnm has a subset of rtx/asdfs features, though?
@@NoBoilerplate tbh, i have no idea. i found fnm when trying to use nvm (node version manager, written in/for bash) inside fish shell (which they don't support). so Schniz/fnm saved the day
Mprocs is amazing and getting a full rewrite... one day. I tried submitting an alternative layout option and the dev said he's rewriting the entire thing and my PR would be there in the new version by design. Keep an eye on that for sure!
Fantastic!
a classic haha. I remember reporting a bug on aura, getting an answer that the bug will be no longer once its rewritten to rust. afaik its still not rewritten though xd
rnote is a great gui note taking/drawing/pen input tool, i use it almost daily for note taking at uni!
Ooh, it looks great! Try obsidian.md too, for typed notes, I make these videos using it!
Wow looks very interesting, do you know if it's possible to use latex?
I've personally been using trillium notes, which I also can self-host, and is really great for organising and linking different notes. However it is pretty limited in terms of sharing with others and no handwriting notes
@@Gaivs obsidian.md is going to change your life. Yes latex, yes plugins, yes markdown native, yes git integration. It's WILDLY good!
It's not open source, but it's written by two nice developers who release arm64 binaries, so I can't fault them! I pay for sync for convenience (the mobile app is LOVELY but of course git on mobile is non-trivial) and I don't mind giving them a small amount per month to make my life WONDERFUL! 🙂
1:05 You had me at "fish" :)
My favorite Linux TH-camr made fun of someone wanting fish as the default Linux shell and thinks, it's stupid, because it isn't posix compliant.
they would hate Nu!
Another thing I can't see people mention is window manager, you have cool projects like penrose and leftwm. Still some way to go here concerning oxidising these projects, I think they still depend on some x11 libraries
Ooh, very cool! I might try those, though I'm very happy with sway at the moment
The only thing is it is sad that it takes so much work to get something nice, and by that I mean someone like you has done all the work to go find out a way that works well.
I can already see people in the comments talking about: VsCode, Neovim, Helix, Lapce. I get a tad overwhelmed and have to make executive decisions in what to pick up and what to stay away from, but it's nice to see the choices.
I use Neovim for my development for around a year now, but there are painpoints I'm having that I will need time to solve, particularly in debugging Angular projects and having the editor look and feel the same across my three operating systems (Fedora Linux at work.. Windows 11 at home.. MacOS for my personal creational development that isn't in high resource usage category..)
Sounds like you could standardise on fedora 😜
If "personal creational development" is music, check out bitwig.com, runs on Linux and is as powerful as Ableton Live
Can't wait for the ecosystem to evolve further!
so exciting!
I have already used exa. But ll is aliased to 'ls -alhF --group-directories-first' for me enough.
eee is aliased to 'exa -laFT --group-directories-first -L2' looks nice.
Also using ripgrep as part of vim setup with fzf.
Really like gitui. Missing part to migrate to terminal finally.
Tris, have you noticed that exa is deprecated? There's a revival called eza, though.
Oh no! Thanks for letting me know 😊
You _need_ to make a part two to this video. Have you heard about Typst?
I sure do, you're not the first person to tell me to update the list!
Typst looks interesting, perhaps useful for publishers who don't want to use latex, but I don't see a benefit for my modest use, because I can combine markdown with latex snippets using Obsidian www.makeuseof.com/write-mathematical-notation-obsidian/
Great video! I don’t write any rust but it’s great to see the language grow and how community driven it is. Keep up the great videos!
Thank you!
9:05 you need to start learning Nix asap.
I know! Every year or two I dip my toe into nixos and home-manger, and I get a little further each time. next year maybe!
If i need a simple smal tool i choose rust over a bash or nu script. Because if i need some dependencies i have them at my fingertips. For example i wanted to use this script also on windows. In the past i would have used fzf but that on windows sucks. Skim is written in rust and can also be used as a library. Problem solved.
on Garuda, cat is replaced with bat by default (and the default terminal is alacritty); I was always confused why using cat on Garuda outputted syntax highlighting and now I know why lol
That's so fun! Manjaro too, I think?
It feels like nearly all these tools are for DevOps / experienced terminal users
Would like to see a list that affects non so technical users except of Tauri
The supreme advantage of terminal apps are their featherweight cpu/mem requirements. I'd encourage anyone to start with ncspot, a spotify client, and branch out from there - there's a whole world available!
would love to see this and Everything Everywhere All At Once as a "noboilerplateos" flake like zaneyos does, with an installation video. If I can get anything close to either running this weekend, I'd be trilled. Great stuff, inspiring. Sadly, I'm still hunting around in the RTFM section of the book store.
Warp shell (Written in Rust)
Helix editor (Written in Rust)
Nice combo! Neither work for my requirement of one-line cargo installable, helix has quite a bit of post-install setup, and warp (btw it's a terminal emulator not a shell) is macos only, which doesn't bode well for my ability to cargo-install it :-D
With a video title like that, I think there is something you ought to know: The Rust language doesn't take its name from iron oxide (at least not directly), it takes its name from a mushroom. So it's not about oxidizing, it's about fungifying.
Heh, yeah I know, but wordplay is fun!
Wow. Hadn’t heard of most of these and I’m a 30 plus year Linux user. I’ll definitely check these out
There are so many great tools coming out of the Rust community - and I think it's because the kind of developer who would not have dared write systems tools, and might have stuck with web/app development can now easily write them!
Wasn’t sure what to expect when clicking on the video but this was so informative and interesting (as usual). Thanks!
Thank you!
I loved Helix's editing philosophy of selection-before-action but the project is still kinda at an alpha, or at best beta, level of maturity and i couldn't persist with it for daily use.
It's more logical, for sure, but the REST of my world has vim bindings!
same. Also, offering plugin support could make it potentially the best terminal editor
Great suggestions! Please give us updates on the oxidation process to help the rust-curious among us.
Honestly I have enough material for a part 2!
@@DooMWhite u got it working on windows? Thought it was Linux only last time I checked. 🤞🙏
@@0xSLN I didn't, I tried it just now, no luck unfortunately.
Bro, this is just the kind of thing that I love. Great work, would love to see more videos in the same vein (for instance how you use linux, what kind of keyboard you use etc).I just got an m2 mac, and would love to see your configs for developing in greater detail!
me too! Just got the cheapest second-hand mac mini m1 I could find and installed asahilinux.org
Been my primary machine for a week - EVERYTHING WORKS!
I use the best keyboard I've ever used, www.zsa.io/moonlander/
(and also the Launchkey 49 for *music* keyboard!)
@@NoBoilerplate It always a little funny that it seems very similar things appeal to you and I. Using Obsidian, the interest in Rust, WASM, and don't tell me PWAs as well? And now we have the Moonlander keyboard in common.
@@woofiewill Nice! Excellent taste!
Zellij has been such a game changer for me. I was about to switch over to Emacs since Tmux felt so clunky to me.
GREAT isn't it!
"Built by Google! The champions of 'the right hand doesn't know what the left hand is doing' competition"
😂😂😂 Apt!
I have run out of patience with that company :eyeroll:
Thanks for sharing! I use a large subset of these tools, but sccache, rtx and wiki-tui were new to me. And now I want to learn more about Pomodoro :D Maybe you can explain at some point why you think Helix is "WEIRD". I use it as main editor and I really like it besides a few things here and there.
Again, thx for the video :)
My two problems with helix are: 1. You can't `cargo install helix` there's a somewhat onerous setup, and 2. Reversed vim bindings. I get why they're better, but every app I use has vim bindings!
@@NoBoilerplate thanks for the reply. 2) is actually a valid reason … but it’s written in Rust 😅 I implemented the : feature very early and it’s just so nice if it’s the language you know :)
How did I miss this when it came out? I already activated the bell.
TH-cam want to be in control of what you watch, not you. :-/
Sometimes I need to have the precise date and time and might be not sure if my system's time is correct. In that case you might browse to a website that talks to an NTP server, but you can do just that with `rsdate`. It's basically like `date` but uses an NTP server instead of your system's clock.
oh that's GREAT, as an amateur radio operator who occasionally works satellites, I'm gonna file this one away. Thank you!
I really appreciate this video, in fact, I have some of these already installed! Though sometimes I still use windows for some things and unfortunately exa cannot be installed on windows, as it depends on the "users" crate which expects a unix-like environment. (std::os::unix to exist)
Ah, sorry about that. Does it work in wsl?
@@NoBoilerplate yes it does
I have a love hate relationship with the whole "rewrite it in rust thing", but even I already use most of these and I didn't even know bob was written in rust!.
I've thought about this a lot, and I think the reason it's so tempting to rewrite stuff in rust is that it's so easy to make things better. Imagine you've written a python wrapper around a c library. Sure it's unpleasant but you eventually get it working and what else are you going to do? Cant rewrite it in python!
I’d also like to recommend fd, navi, difftastic, hexyl, xsv, alacritty, websocat, hurl, xh, dog, hyperfine, zenith.
gonna take all these and put them in the bag, thank you!
It would have been nice if the links for the tools were included in the description
Apologies, if it helps my sourcecode for the videos is in markdown here github.com/0atman/noboilerplate
Thank you for the link, and could you also please let me know which script is for this video?
@@farzadmf since this is the newest video, it's naturally the one with the highest number, but I do agree that it would be helpful if the title of the video and the name of the script file matched. It's called 20-rust-userland..
@@chonkusdonkus Thank you
There's this package called "binstall" which speeds up installation by a hundred times as it prevents downloading and building all the dependencies and simply downloads the binary of the package that you need,
yes, I've discovered this too! I've updated the pinned comment to suggest using this, thanks!
@@NoBoilerplate I installed Rust, set up nushell and installed all these tools after watching this. Thanks for the video. Imma learn Rust.
@@daniyalahmad1820 YES! here's my video on how to learn Rust btw th-cam.com/video/2hXNd6x9sZs/w-d-xo.html
@@NoBoilerplate Hadn't seen that. Thanks a bunch.
I was just about to write a comment about Helix when I saw you mentioned it in the last slide. What's weird about it, just the fact that the editing model is different to vim or is there something else?
It has an insanely fast, global search and file fuzzy finder that’s way way more performant than telescope.nvim. The LSP and configuration styles are much simpler and much more compact than neovim. At the same time it comes with a lot of same defaults and champions in huge monorepos where neovim sadly chokes.
vim users find it weird in my experience. It's also not suuuuper mature
It's really hard to untrain the vim Verb-Noun command structure, not least because you can think about it in plain English. Change a word flows in your head much better than a word, change.
And like Martin said, it's very young. Promising maybe, but very young.
It really bugs me that I can't cargo install it. I move between installs and machines a LOT so I need a simple install, not something where I need to run external commands to compile syntaxes etc.
Shame, as it seems to be the most mature rust editor!
Thanks for the list! Try bottom, oxidised htop
oh NICE! OK added that to my dotfiles, thank you!
Made a Nix-Flake with all these a lil bit ago :D oxidized my tool chain
The most accurate description of Google as an organisation
ikr :eyeroll:
HELIX! Its a modal editor like vim but written in Rust. It doesn't have plugin support yet, but keep an eye on it...
Yeah! I keep trying it out, but it's WEIRD to install (can't just cargo install it). I'll keep trying!
@@NoBoilerplate clone the Helix repo and run `cargo install --locked --profile opt --path=helix-term`
@@himitsumonban Sadly, there's more steps than that! then getting lsp to work is more work!
2:47 *"we'll C"*
Nice pun
that's... actually better than what I wrote XD
@@NoBoilerplatelmao
Okay but, I like the bash/zsh way of doing things. It's familiar, simple, and is the default on any decent OS, so you know it will always be there for you.
To have to learn a new shell paradigm, that is not readily available, is a big ask.
Great video! I love and use some of these tools, but the new ones I heard here are gems. Thanks for always reaffirming my love for Rust
I've learned about another 20+ in the comments, it's so fun!
zoxide (better cd), fzf (fuzzy find), joshuto (ranger clone)
OOOH thank you, joshuto is COOL!
The "z" command is awesome. I use it all the time. I also use Ranger but have been wishing for something a little more modern. Will have to check out Joshuto. Thanks for sharing
Hopefully this doesn't get lost in the comments, but after seeing a video like this, I can't help but feel intimidated. I just felt some semblance of familiarity with the terminal, and these tools, despite being vastly superior and efficient, turn everything I know on its head. Any tips to gradually 'oxidize'?
You can absolutely take it slow, this is quite a fast video!
You don't need to change your shell or terminal or anything like that.
Install just one program from this list that you think is interesting, and go from there! :-)
@@NoBoilerplate Thank you so much for your quick help!
Helix editor is pretty awesome
Nice video. I might try and create a rust based linux distribution for fun with all of these🤔
The only problem is a GUI which requires mesa which requires C/C++. If I really wanted to I could write something in rust using just drm-rs but It’d take a lot of work.
I believe you could write everything you need in no-std rust, interacting with the system directly? That would be fun!
Many of these had surprising troubles installing on my diverse set of platforms, but the standout was ncspot which doesn't appear to install most places, like macOS/x86 due to the use of long abandoned rustc-serialize
oh WOW really? it needs x64? Huh! File a bug!
I had trouble installing zellij and rtx-cli in windows.
@@NoBoilerplate ??? I wrote macos/x64 as a contrast to macos/Arm64. Apple hasn’t supported 32-bit in a long time.
@@tommythorn Oh interesting. Are you sure it uses rustc-serialize? I can't see that, and note that it uses the excellent Serde crates.io/crates/ncspot/0.12.0/dependencies
@@DooMWhite Aye, looks like WSL is the way forward for windows users, it's really great I hear!
I really like fd as a find replacement over rg.
I hear good things!
Theres also Leftwm, a window manager written in rust
oh cool! I'd not seen that. VERY tempting to oxidise my whole DE too!
People update your software! There's cargo install-update which is a plugin to cargo.
`cargo install X` will actually update X if there's updates, if it's already installed. My recommendation is to have a LONG `cargo install X Y Z` line with all your stuff in, then re-run it whenever you like.
I think you're talking about crates.io/crates/cargo-update which I didn't like.
7:55
lmao
ive been trying commands like cargo info or cargo show to see if i could see packages
didnt know i had to install cargo info lmao
hehe! Used to be the same for `cargo add` but it was so useful they rolled it into the main distro, I bet they'll do that for `info`
@@NoBoilerplate oh yea thats true
hopefully it does happen
Maybe I'm doing something wrong but I tested it out and nu shell's structured capabilities don't work with exa. I do like the --header option with exa but nu shell basically does the same thing
Is sccache really worth it? what's your 'sccache --show-stats' output? For me it saves 0s on average (but also only costs 0.0.1s for writing so it's not like it slows anything down either).
oh interesting! I've tested compiling ripgrep with it off, which is a 20-21s compile, then with sccache the first time it's 21s, as you would expect, but the SECOND compile it's 7.9s.
I think it comes into its own when used on a CI machine, across multiple projects. The number of projects that use serde stable, say, must be loads - and that's a HUGE dependency to compile!
i'm surprised nobody has mentioned cargo install atuin, very shell history that works with zsh, bash, and fish
I use `fd` and `sk` (skim) extensively, mostly through a shell function `fcd` (find and cd) defined as `fcd() { cd "$(fd --type d --max-depth 1 "$1" | sk)" }`.
You use it like `fcd ~/Documents` andi t gives you a fuzzy finder (sk) over all the subdirectories of `~/Documents`, I have an alias `fcdp` which allows me to fuzzy find over all of my projects, highly recommended.
oh nice! similar to fzf?
@@NoBoilerplate yes, but oxidized :)
sd replaces sed in simple cases (sd 'a' 'b' == sed s/a/b/g) but it doesn't have the expresive power from sed sadly, so I haven't replaced it. I also tried helix, but I gave up as I couldn't get hover actions working.
Wake up honey new No Boilerplate rust video
Time for the cargo cult!
Unfortunately, I’ve found that some of these crates are problematic to install on Windows. There’s a lot of linking to native code which means that you’ll have to have the right version of Visual Studio set up along with properly configured cmake. And even then not all of these compile.
Yes, that's a shame. WSL2 is FANTASTIC however, a single command installs a full ubuntu subsystem, then everything works perfectly!
@@NoBoilerplate Definitely is! I was able to install most of these under WSL2 without much issue. The one missing link for me is being able to use WSL2 tooling for game dev. Doing the Roguelike in Rust book (it’s pretty great!), but WSL2 doesn’t do that very well.
Haven’t seen a plug for topgrade yet. While some will want to be more deliberate with reviewing their updates, I’m super happy to have a one-button tool that does most everything.
As someone who daily drives bash, python, and perl your modern fancy rust ecosystem has my eyebrows raised.
I was a python developer for 15 years before I discovered rust - I'm never going back! My videos explain Rust in terms of dynamic languages, I'd love to know what you think: th-cam.com/video/oY0XwMOSzq4/w-d-xo.html
Most of the apps, I do not care for, the cache needs to exist in cargo by default because builds in rust are slow af otherwise.
Rust's compile times are slower than many other languages, but they're doing ENORMOUS WORK for us.
Let's look at a case study I really like: Go. Ken Thompson and co have done such a good job and perfecting what they set out to do, which is (according to their blog posts) "What would we do differently if we designed C++ today", and I don't mean that as an insult. It's nothing short of genius.
But I want more.
The type system is solid, but not rich enough. Have you tried an ML language? If not, it's a TRIP. I learned Haskell in 2010 and it really opened my eyes to what a rich type system can do.
Then in 2013 I learned Clojure, and FINALLY I found a lisp that seemed normal, not full of odd 1950s ideas (sorry Common Lisp). I even worked at a startup bank for 2 years writing it! What luck.
What makes me excited about Rust is that it's taken much of Haskell's type system, coupled it with Lisp's Macro system for complete compile-time control, and then cleverly packaged it in a language that looks, at first glance, like C. Or something C-like.
Now, the slowness of compiling you're referring to, I agree can trip up some newbies. They might be a dealbreaker to you, and I respect that. They were a dealbreaker for me too, when I first started! I had a mentor who kept me learning, however, and I trusted their judgement and experience.
After a number of weeks, I realised that many of the benefits of Rust come from this extra compilation step, an example:
Rust annotates how long variables can live for using a very short syntax.
@@NoBoilerplate I agree it does a ton of work for you, however, I don't see why not to have a cache. I'm not saying throw out all the stuff that makes rust rust, what I am saying is there is clearly a tool that will help people not want to abandon rust and it fits with the basic job of the compiler, in part, not doing the same work over again. I am aware that the compiler does a lot for you, remember, I watch your videos and have done so multiple times.
I had another moment like this with constant expressions with const generics, though, at least with this one, I understand why it isn't in by default, because this is in the nightly build. Generally, I am a proponent for what works best for you. Currently, for me, that is still C++, in spite of only picking it up a few months ago and ripping my hair out over build systems, however, once I got over that hump, amazing things introduced themselves to me: const generics in the first place at all (I come from the Java and C# side of things), values larger than 64 bits (including floating point values), everything is just a byte array if you stare at it in just the right way and many, many more awesome things. Rust is something along the lines of 16/17 years old now and seems just as awkward sometimes.
Don't get me wrong, there are things I like about Rust too: memory safety, pseudo-automatic heap management, cross compiling without the pain, one codebase for everything, having a package manager by default, no nulls (I have convinced my colleagues to make anything that can be null signposted and an error otherwise), the enums that otherwise, don't exist, the match statement being more normalized than the switch statement in other languages (again, making an effort). All these things I like and yet, don't exist in C++ (I don't use smart pointers, I know they exist, I prefer managing that stuff myself).
In spite of the pain points, I want to see how this fits in the greater ecosystem. Just like anything else, I want to see it succeed, and just like everything else, I see a place for critics, critics point out the problems and make things better. In the same sense that rust devs are critics of everyone else, rust too needs its critics.
I grabbed sccache the next moment I was at my own computer because I knew I needed it with what it does and rust is now much better than what it was for me. Most of the rest of the apps, I don't care what they are written in, so long as it works, and not every app is for everyone. If software made with rust truly is the best, then I am more likely to use it by virtue of it being good, not by virtue of it being rewritten in Rust. I just swapped from yay to paru as my AUR helper without giving a crap about what language it was written in and low and behold, paru is written in rust, yay is written in go.
The other part that might help is a rust-book lite (programmer?) edition for people who have programmed before. Don't explain to me what every little type is or how an if statement or a for statement works if it works no differentlly. With the integers and floats, give me the semantics of it and I can then figure it out (i.e. letter being the type of value, the number being the number of bytes for that value). Explain the move semantics and borrowing, but not the concept of a variable, otherwise, it feels patronizing and condescending to someone who has programmed for many years already.
As for the other part of the comment, it is mostly design decisions, I made it with the intent of highlighting sccache, not take down the rest. I tried out exa and aliased it to ls, everything else, I don't care for the boxes and unicode tui stuff.
fd is an amazing alternative for find
is that something I can cargo install?
very helpful thanks ... I dipped into Nu shell a few years back but fell back to zsh but I have been considering going back. Also been a huge fan of bat (but not real bats). Many of the others I was unaware of an look forward to distracting myself by playing with them.
I'm interested to learn Nu as a language, too. A rusty scripting language I can get behind!
Is YJIT considered oxidised? If so, can we say Ruby oxidised a bit of itself?
A lot of the backend of npm is written in Rust too ;-)
They missed an excellent opportunity to use "rat" for the cat replacement. Think about it: rust + cat = rat. Also when you use it, the file "rats out" it's contents. I am a bit salty about that xD
alias rat=‘bat’
@@ajbrady4357 did that already, but it's not the same
I agree. It was a missed opportunity.
@@oredaze How is it not the same?
@@blahdelablah it’s. just. not. the. same.
You have probably quite picky condenser microphone do you?
There is unpleasant echo in the record.
I battle with it too.
Something like ( How To Make Your Own Acoustic Panels - In The Mix ) could help
Thank you for the tip! You have good ears, this is the first recording in my new studio, and it's a bit echoey! Is that the DIY Perks video? I have a plan to do exactly this :-)
@@NoBoilerplate nah .. I just bought awesome reproductors :D Now I hear everything .. and it hurts xD
(eris 4.5 bt)
PS: I've just tried some cheap jbl earbuds and it sound nice, no echo .. but with those Eris it literally hurt my ears
@@jsonkody Every single video I hope to improve my audio more and more! This was my first video running through a click/pop reduction plugin. I can hear the difference, but I wonder if you can?