So it's not really a cancellation fee, but is that how they message it?
If I see:
"Annual Subscription - $120/year, billed $10/month"
I assume I'm paying $120 even if I cancel after 6 months.
But, if I cancel after 6 months, and the message to me is "$60 cancellation fee", I'm very confused - I thought I was paying the remaining $60 I owe them...? The amount may be the same but it's confusing nonetheless.
Any time I've had a similar subscription, you retain access for the full period.
The messaging has usually been something like:
"Annual subscription cancelled at the end of current period. Access ends on 12/31/2026" (even if today is 6/1/2026)
That's why the "cancellation fee" comment is weird to me - there's no need to message that way, since "pay the rest of the committed period" seems to be a common (and at least to me, very understandable) way to handle this.
Even with monthly services, I don't think I've ever had an immediate loss of access - it's there until the end of the billing cycle. As it should be, IMO. The only exception would be if I force-deleted my account as well as that's a very explicit "I'm done-done" signal to the service provider.
Probably? There are services that are relatively nice and will let you use your membership until the last day (even for trials!), but there's also others that are non-refundable and will just yank your access.
> They should for sure list the annual price and the monthly price but it's not "burried".
Buried prices are the next frontier of consumer protection. I've gotten burned by looking up a store product online and then when attempting to purchase finding that unless you ordered it through the site for in-store pickup, you get a higher price. Car dealerships were the same the last time I bought one. And while I appreciate Tesla's challenge in expressing TCO, subtracting average fuel costs from the price of a car smells bad in the same way.
Correct, the sentiment would have been the same distribution of votes across states. The electoral college distribution would have been the same 312 to 226 and not close at all
The way you talk about things could have easily resulted in California’s 54 electoral college votes flipping to the majority resulting in 366 electoral votes for the winner. Your numbers are spread across where people actually live after all, as opposed to a campaign swing state
I've never understood the security argument people are making when they complain about `curl foo | bash`. I get that these scripts sometimes mess up your bashrc or whatever, but from a security perspective I see no issue. You are already installing software from the same domain. If they were going to do something nasty, they could do it with any of the software you are using from them. It doesn't have to be the setup script.
To compare it to just one other option: when you run `npx foo`, you know* that you’re getting the same public artifact that anyone else running it at the same time would get. (If you have a `min-release-age` configured, you also benefit from that.) If I wanted to distribute software like this, I’d include npm-shrinkwrap.json; then, with `npx foo@1.2.3`, you could be similarly confident in getting the same app every time.
(I picked this option for ease of comparison, getting a couple of major security wins with very low effort; I don’t recommend `npx`ing stuff in an otherwise unprotected environment either.)
maybe then we'll pin hashes instead of filenames, and oops now anybody can fork my/domain and hand out a link that looks official with whatever contents they wish
While I don't think piping curl into bash is the most secure, npm installing has proven time and time again to open yourself up to supply chain attacks. At least with curl you know that you're getting the supply chain put together by the software author. With npm, every single library is a vector for attack every time you update.
You’d be getting the supply chain put together by the software author in either case. It’s common to do both badly, but if you care about doing it well, that’s easier with npm (e.g. shrinkwrap, as mentioned) and can be taken farther (the non-varying artifact thing).
Npm dependencies resolve at install time though, so some of the pinned versions may have changed ownership or otherwise been modified since the author pinned them. With the curl | bash solution you're getting a singular supply chain packaged by the author at release time.
Package versions released on npm are immutable, so no, they can’t. If you have unpinned transitive dependencies: that’s why I mentioned npm-shrinkwrap.json a couple of times.
And again, npm is also an example of “a singular supply chain [selected] by the author” in this way. On top of what cpuguy83 mentioned, curl | sh is vulnerable to compromise anywhere on the stack serving the script (domain name, host, maybe CDN, GitHub account if it’s just a redirect to GitHub as they regularly are), and coming back to what I originally said, even the real author might decide to serve you a special version of the script that nobody else is getting. You’d never know.
With curl|bash you are literally getting anything that happens to be in that script. These are frequently poorly constructed, so not check hashes or pin dependencies they install.
Even security companies (see trivy supply chain attack) get these badly wrong.
I'm not replying here to say one is better than than the other (npm has obviously had its share of problems) but rather to combat claims that curl|bash is somehow safer, it absolutely is not, in fact it's all the bad stuff about npm without the pretense of being potentially safe.
You can detect the use of curl|bash server side, hence it's an essentially undetectable attack vector. People have shown poc attacks of that kind all the way back in the 2010s
I push binaries from untrusted sources through VirusTotal before running them. Piping a Bash script from curl bypasses that. Furthermore, such Bash scripts, when they aren’t self-contained, make security checks more difficult than a self-contained archive, installer, or binary, even when downloading the script without immediate execution.
I don’t believe an agent can do that effectively without a sandbox to run the script in, if the script isn’t self-contained.
And everyone running a research agent on every download can’t be the solution. It’s much more effective to crowdsource a security database based on hashes. But for that, the downloads need to be self-contained.
The intended workflow is to download the install scripts, download the source code, read them both, and then start running things. That’s how Open Source is secured. Piping from bash to curl is just the most obvious warning flag.
There is no argument. It's just people's reflex reactions.
The technical excuses they come up with (e.g. that the server can detect it and send different content) are just post-hoc justifications for their instinct.
It's `curl foo | sudo bash` that's the bigger objection. Running software usually shouldn't require root, and then the equivalence argument you make doesn't hold.
Installing from distribution package is much safer than curl+bash because it doesn't require you to extend trust to anybody else. You could argue that malicious code could still pass through the distribution mechanism, but at least it's fully auditable and you're guaranteed to be in the same boat as everyone else.
a script isn't getting hashed to see whether or not it's the one the website intended to serve you, for one.
what use is hashing every piece of software that goes thru the distros package manager just to throw caution to the wind at the layer above it?
w.r.t. "it's already from the same domain" , well most bash/z install scripts either invoke a package manager or they download and untar a package that has nothing to do with the host domain, anyway.
Piping to bash is definitely worse because there is no plan mode in bash. Agents also normally don't execute anything transparently, at worst you'll see it doing something weird in the logs.
Most town centres are 90% boarded up forgotten realms. They have been in decline for decades, blaming it on people riding e-scooters and illegal e-motorcycles is laughable.
It's a catch-22. They're boarded up realms because even after the online shopping revolution and attempts to regenerate them people don't want to go because they're full of deadbeats and ASB. Who would want to open a business there? For christ sake our local McDonalds is now playing Mozart at full blast in the evening outside to try and keep the ferral youth away as it's in the bang center and a popular hangout spot. It's somewhat working to an extent, but they're still around.
There's going to be a generation of ex-youths nostalgic for Mozart from their days hanging around McDonald's - I'd get shares in Classic FM if you've got money.
They should for sure list the annual price and the monthly price but it's not "burried".
reply