They should have just committed to the bit and demanded a googolplex of rubles from Google.
They should have just committed to the bit and demanded a googolplex of rubles from Google.
Oh? What’s wrong with hackaday?
Yeah that was part of the brand reshuffling they did to obfuscate things. Lync was their shitty chat app they tried to convince businesses to use that everyone hated. They bought Skype, renamed it to Microsoft Teams, renamed Lync to Skype for Business, and killed MSN Messenger. When people still didn’t want to use LyncSkype for Business, then they killed that as well, and now it’s just MS Teams.
Which Microsoft then shit all over (to be fair, Skype started that process even before MS bought them) and eventually renamed it to Microsoft Teams.
Holy shit what a nut job. Reading the comments the real gold is apparently their terms of service. They’ve got a giant laundry list of things that will get you banned including using Chrome or having a gmail email address.
I was similar, used Linux for work/programming but Windows for gaming. I refuse to update to Win 11 though, and with 10 going EOL I was faced with a problem. I’ve been using Steam Deck for about a year now with no problems so I figured I’d try going 100% Linux again. Ran my Library through protondb and nearly every single game was supported. I made the cutover about a month ago (just in time as well as literally a week before I made the switch copilot got stealth installed on my system).
So far I haven’t run into a single game that has failed or that I’ve even needed to change the options to get running. Now I don’t play LoL so I can’t speak to that specific game, and I have kept my Win 10 install if I do run into something that I can’t get running that I absolutely can’t live without, but so far I haven’t needed to boot into Windows since I made the switch. I think you might be surprised how few games won’t function in Linux these days.
While it’s true I haven’t personally tried more than about a dozen of my games I will point out that 1) that covers a wide swath of genres, publishers, and game engines, and 2) I ran my entire library of several thousand games through protondb before hand to have some idea of what I was in for and out of all those thousands less than 10 reported as not functioning. Of the ones that wouldn’t work most actually can run, but the publishers are banning people who play under Linux. The most notable from that list would be Destiny 2 and GTA 5. So yes greater than 90% of all games run fine in Linux these days either straight out of the box or with simple configuration tweaks.
Yeah I switched to Linux about a month ago now and so far every game I’ve tried has worked flawlessly.
WordPress powers nearly half the Internet
One of the most depressing things I’ve read today. This is why we can’t have nice things.
if you use a garbage collector which is perfectly suitable unless you write low level embedded systems or oses
Or games, or realtime systems, or high reliability/mission critical systems, or high performace systems. There’s a long list of programs that GC isn’t suitable for for one reason or another.
and even if you use something like C or C++ where you manually allocate or deallocate, if the app is properly tested memory issues won’t happen.
There’s about four decades of security vulnerabilities in extensively tested and widely used software that says this is absolutely false.
Cargo is doing too many things at once. It’s a build system but also a package manager but also manages dependencies? Idk what to even call it.
Somewhat agreed, but it’s a very difficult problem to solve. No language has yet come up with the perfect build tool. JS is on what, like the 12th build tool in as many years now? Some serious throwing stones in glass houses vibes here.
Syntax is very confusing for no reason. You can’t just look at rust code and immediately know what it does.
Strongly disagree on this point. Those extra glyphs in Rust are not just cosmetic, each one means something very specific and conveys very important information.
Having to pollute your code &, ? and .clone() everywhere to deal with ownership
You don’t “deal with” ownership, it’s an incredibly powerful tool you use. This just sounds like you haven’t really understood what the borrow checker is actually doing and the hundreds of problems it solves for you. I can not count how many times now I’ve been working in another language and had the thought “I could solve this with the borrow checker”
Js is way more readable.
JS is not more readable, JS is just far less detailed. It omits a vast swath of information such that you have almost no idea what it’s actually doing. It feels easier to you because you don’t care about any of the details, but those details become vitally important when things stop working and you’re trying to figure out why. This sounds to me like you’ve never had to write any actually complicated code. If all you’re trying to do is chain together a series of HTTP calls and maybe parse a tiny bit of JSON, yeah, Rust is like using a nuke to kill an ant.
Similarly, Async code starts to look really ugly and overengineered in rust.
A little bit, but mostly because doing async right is really complicated. Once again no language has a really great solution to this problem yet, they all involve tradeoffs.
Multiple string types like &str, String, str, instead of just one “str” function.
Once again it seems you don’t really understand the difference between owned and borrowed values or stack vs. heap allocation and why it matters. Really there’s only one type of String which is String, the others are just different ways of borrowing a String (with different tradeoffs).
i32 i64 i8 f8 f16 f32 instead of a single unified “number” type like in typescript. Even in C you can just write “int” and be done with it
If all you want is a “int” you can just use i64 for everything and “be done with it” as you say, you’ll just be adding a ton of wasted memory and needless overhead for no good reason. Seems like you just don’t like strong typing. I’m surprised you even bother with TypeScript instead of just using JavaScript.
Having to use #[tokio:main] to make the main function async (which should just be inbuilt functionality, btw tokio adds insane bloat to your program) yet you literally can’t write code without it.
You absolutely can write code without using #[tokio:main]
, you can even use tokio without that, it just saves you having to write a bunch of boilerplate to initialize tokios executer and pass your async functions to it. You can even use async functions without tokio, you just need to provide your own executor. Async in Rust is still pretty new and some of the rough edges are still being worked out, it will get smoother, but honestly the things you’re complaining about aren’t even the annoying parts about it.
Speaking of bloat, a basic get request in a low level language shouldn’t be 32mb, it’s around 16kb with C and libcurl, despite the C program being more lines of code. Why is it so bloated? This makes using rust for serious embedded systems unfeasible and C a much better option.
I have no idea what you’re doing to generate code sizes like that, but I guarantee you could get a significantly smaller program in Rust that does exactly what the C code is doing. As for embedded this is patently false. I personally use Rust regularly on embedded devices that don’t even have 32mb of RAM on them.
With cargo you literally have to compile everything instead of them shipping proper binaries. Why???
This isn’t a cargo thing, this is a Rust compiler thing. The Rust ABI hasn’t been standardized which means currently there’s no guarantee that Rust code compiled by one version of the compiler can successfully link against code compiled by a different version. Until not that long ago C++ actually had the same problem. This will eventually get fixed, but the language team feels things are still moving too fast to define a concrete standard yet.
Another major issue I’ve encountered is libraries in Rust, or lack thereof. Every single library in rust is half-baked.
Rust is still pretty new, so a lot of libraries are still in active development, but there are already many excellent and very well documented libraries. Axum is literally one of the newest web frameworks in Rust and didn’t even exist that long ago. I’ve seen far worse documentation for JS libraries (and don’t even mention C, the gold standard there is practically a man page that’s just a glorified header file).
As for “memory safety”, it’s a buzzword. Just use a garbage collector.
Memory safety is not “just a buzzword”, there’s a reason all the top vulnerabilities for decades now are all memory safety issues. As for a garbage collector, good luck with that when writing embedded software or a kernel.
The rest of your rant basically boils down to “my particular simple use case doesn’t see much value from what Rust provides”, which is fine. If you don’t need the power of Rust, use something weaker, not every problem needs the nuclear option, sometimes you just need something quick and dirty that will run a few times before it falls over. Hell, sometimes a quick Perl script is the right solution. I mean, not often, but it does sometimes happen. When you do find a problem that your quick and dirty approach isn’t working on then you’ll see the value in Rust.
Sort of kind of. The actual drivers are still ALSA which both pulse and pipewire build on top of. Then there’s JACK which is older but basically tried to be Pipewire before Pipewire. Lastly there’s WirePlumber which is an automation/scripting thing built on top of Pipewire. So depending on what you’re doing you end up having to wrangle with a minimum of Pipewire and ALSA, and might also need to mess with WirePlumber and Pulse (as Pipewire exposes a Pulse API).
I’ll also add the audio stack in Linux at the moment is a hot mess. I’m currently trying to resolve a problem that seems to exclusively plague the rear mic input on my system and nothing else and this shit is fucking obtuse. It’s ridiculous how many competing audio frameworks there currently are.
Secure boot and TPM are tools for (among other things) making sure nobody (E.G. a virus or worm) has tampered with your OS and bootloader. You can for instance use both on Linux, it’s just by default they come preloaded with Microsofts configuration for loading Windows, and the technical knowledge for how to reconfigure it is a bit arcane.
It’s an excellent security tool, it’s just abused by Microsoft to discourage competition.
You can have my Brother laser printer when you pry it from my cold dead hands, and because it’s not an HP, I’m sure it will still work when you do.
Yeah, never use a work device for anything you’re not actually getting paid to do. To do otherwise is just stupid. Save non-work stuff for your own devices.
Sounds like all the meetings should just be done by video and nothing would be lost.
Yeah it’s 50/50 because the executives really don’t like it, but the actual data supports remote work being far more efficient. They’re working really hard to cook the books to make it look like the opposite to appease the execs but they can only do so much. Give them a few more years to cherry-pick data and bury inconvenient results and they’ll be back to the same bullshit that justified productivity destroying (but cheap) choices like hot desking and open plan offices.
Quality programmers are a finite resource. Amazon chewed through the entire unskilled labor market with their warehouses and then struggled to find employees to meet their labor needs. If they try the same stunt with skilled labor they’re in for a very rude awakening. They’ll be able to find people, but only for well above market rates. They’re highly likely to find in the long run it would have been much cheaper to hang onto the people they already had.
NPM has that as well. In fact most languages and build tools support that. It’s actually rare to not have support for that these days.