It's more than you think. I work with the MSP430 microcontroller, which is capable of a sleep current of 40nA @ 2V, full active mode at 140uA/MHz with all onboard peripherals turned on. With this you could achieve almost a 20% on-off ratio with a 1MHz clock, or keep it in active mode all the time at ~150kHz, which is sufficient for many embedded sensor applications.
Rossphorus
GTA online took ages to load, like 10+ minutes on some machines. One guy got really annoyed and investigated. It turned out to be loading a single 10MB JSON file in an incredibly inefficient manner. The JSON file contains about 60,000 items and they need to extract each item from it, but every time they look for the next item they start from the beginning of the file again, despite already knowing where they found the previous item! All the entries in the JSON list are unique, but the code also checks for any duplicate entries, of course it's also done in the least efficient way possible requiring 1,984,531,500 comparisons for something that has no effect. Not only did this one person find these problems but he also implemented a fix that reduced load times by 70% as a result, shaving off more than 7 minutes of load times for some machines. The fact that Rockstar didn't notice this is frankly shocking and speaks to the fact that they really just don't care.
https://nee.lv/2021/02/28/How-I-cut-GTA-Online-loading-times-by-70/
Nitpick: The relationship between vehicle weight and road damage is a quartic (e.g. x to the power of 4), not an exponential
Unfortunately not. The major difference between an honest bot and a regular user is a single text string (the user agent). There's no reason that bots have to be honest though and anyone can modify their user agent. You can go further and use something like Selenium to make your bot appear even more like a regular user including random human-like mouse movements. There are also a plethora of tools to fool captchas now too. It's getting harder by the day to differentiate.
Topical answer: Bots going around scraping content to feed into some LLM dataset without consent. If the website is anything like Reddit they'll be trying to monetise bot access to their content without affecting regular users.
When I say upstream that's technically upstream of upstream - I mean the application repositories. Manjaro has in the past applied their own patches on top and broken functionality. The example that comes to mind is the most heinous one where a Manjaro maintainer patched in three pull requests (including CLOSED ones) and pushed the result to their stable repo: https://source.puri.sm/Librem5/chatty/-/merge_requests/986 https://source.puri.sm/Librem5/chatty/-/merge_requests/1035 https://source.puri.sm/Librem5/chatty/-/merge_requests/1060 https://forum.manjaro.org/t/manjaro-arm-beta25-with-phosh-pinephone-pinephonepro/116529/11 . Applying patches to upstream is not unheard of, but you don't do it without contacting the developer, because they are the ones going to get the bug reports. Manjaro did not notify the developers. It's this recurring trend of unprofessionalism which has tainted Manjaro's reputation, whether it's letting their SSL cert expire FOUR separate times (once, maybe twice is understandable, but more speaks to underlying issues in structure), or applying patches to applications without developer's knowledge and shipping it to users, or the two separate times they DDoSed the AUR servers with a poorly thought out pamac feature, etc..
I give no concrete examples because this all occurred almost two years ago for me at this point. I'm not out to capsize Manjaro or bring about it's demise, so I don't write down every package that breaks for use as ammunition in internet debates. I just want a distro that works for me. Manjaro wasn't that for me so I moved on. You asked why some people don't like Manjaro and I'm simply explaining why.
The AUR issue happened often enough for me to consider it frequent. It happened most often with niche packages, like the various MSP430 toolchain packages which I often needed, but I explicitly remember it happening at least once on fairly mainline packages like cemu (or was it yuzu?).
The problem is not that Manjaro allows you to pick whichever major release kernel you like, but rather that it doesn't account for this in the packaging system. You could be running kernel 6.4 (i.e. not officially supported anymore) and update your packages, resulting in a broken system with no warning. By decoupling the kernel version from the package system Manjaro unleashes a whole new failure mode. This would be fine if they accounted for this in their packaging model, but they don't (because Arch doesn't and it would be too much work to implement and support it themselves, presumably. It sounds quite tough). This tool, which is designed to make the system more stable as you say, actually can make it less stable!
Manjaro was sold to me as 'Beginner Arch', so I don't know what to tell you on that front. I don't think this is at all related to why people dislike Manjaro though: Nobody hates Ubuntu because it's based on Debian, they hate it because of their decisions, like Snaps. Likewise nobody hates Manjaro because it's Arch based, they hate it because of the decisions they've made. Manjaro isn't the only distro getting hate, but it is probably the lowest hanging fruit due to all of the administative fumbles.
My DE broke because Manjaro added untested/beta patches from upstream, sometimes even against the developer's word. This is something that Manjaro is known for. Guess who inspired dont-ship.it?
Also I would appreciate you not calling my statements on the AUR false. I have personal experience on the matter so we can play my experiences against yours if you like, or we can listen to the official Manjaro maintainers reccommending that it not be used, as it is incompatible with the Manjaro repos. By design Manjaro holds back Arch packages, which means AUR package dependencies often do not match what is expected. This is not false. Can you use the AUR? Sure, but you must keep in mind that Manjaro was not designed for it and it will break AUR packages sometimes. Sometimes it's as simple as waiting a couple weeks for Manjaro to let new packages through, but sometimes you can't just wait several weeks and you need to fix it yourself.
And yes, Manjaro does hold kernels back because you have to specify when you want to move off a major release. You can accidentally be using an unsupported kernel and not even notice. Ask me how I know. Manjaro literally requires more maintenance than Arch on this front.
I can't comment on what maintenance Arch requires that Manjaro doesn't, as I run EndeavourOS. I've found it to be everything Manjaro wishes it was - a thin, user-friendly wrapper around Arch.
Just remember that Manjaro's official response to them forgetting to update their SSL certs was to roll back your clock, putting everyone at risk of accepting invalid certs in the process.
During my six month usage of Manjaro (my introduction to Arch-based distros), my desktop broke four times and booted me to the terminal. Almost once a month. I told myself this was the price you paid for living on the edge, using a rolling release. I switched to EndeavourOS and have not had a broken desktop in two whole years.
Manjaro's handling of AUR packages is fundamentally wrong and with their design decisions it cannot be fixed. You either give up the AUR entirely, or resign yourself to constantly breaking AUR packages and having to try and fix them.
Manjaro's handling of kernels via a GUI sounds good until you realise it's entirely manual and if you don't keep checking you will end up running an unsupported, out of date kernel with Arch packages that expect a newer one. Again, Manjaro violates Arch's golden rule of avoiding partial upgrades by holding your kernels back until you manually update them in their GUI. If you're running an Arch-based distro 99% of the time you want the latest kernel and an LTS kernel as a backup, but these are already in Arch as packages (and are thus updated in lockstep with your packages, as designed) so you don't need Manjaro's special GUI. Now if you wanted a particular kernel for some reason then sure, but Manjaro's GUI doesn't even let you pick the exact version you want anyway! All you can pick is the latest version of each major release.
If you're anything like I was at the time, you think you like Manjaro but what you actually like is Arch. Manjaro just gets in the way.
That's fair. Because I explicitly mentioned &'static str later on, my explanation of &str implicitly assumes that it's a non-static lifetime str, so it isn't stored in the executable, which would only leave the stack. I didn't want to get into lifetimes in what's supposed to be a high-level description of types for non-Rust programmers, though. I mentioned 'stack' and 'heap' explicitly here because people understand that they mean 'fast' and 'slow', respectively. Otherwise the first question out of people's mouths is 'why have a non-growable string type at all??'.
I never said str is heap-allocated. I'm presuming you meant stack when you said heap (or you meant String when you said str)?
The MSP430 is just the chip I happen to use at work, if you're not convinced you could try looking for an actual ultra low power chip, I found the STM32U0 at 70uA/MHz and the STM32U5 at 16uA/MHz in the first result.
Even ignoring selecting a more efficient micro, a smattering of tiny ceramic caps will buy you a few hundred microjoules for bursts. If you're already operating at 2V you can get a 6V rated 100uF cap in a 1210 package - and that's after considering the capacitance drop with DC biasing. Each one of those would buy you 200 microjoules, even just one ought to be plenty to wake up for a few tens of milliseconds every second to get a reading from some onboard peripheral (as an example) then go to sleep again.
For sure, you're not going to be doing any heavy lifting and external peripherals could be tricky, but there are certainly embedded sensor use cases where this could be sufficient.