4,032 karma · joined October 8, 2012
e.g. it's probably a security vuln if loading a Game Boy ROM reads arbitrary paths on your local filesystem determined by the ROM's code, not so much with Wine.
Someone made a cute demonstration that I think usefully encapsulates this a while ago. [1]
Red Hat most memorably has tried it with "technically you are legally permitted to distribute these things we are giving you under contract but we will terminate your contract if you do."
Various enterprise boards with BMCs can flash the BIOS from the BMC even if the BIOS is fucked.
You might even be able to do that with Intel AMT, but I've never had occasion to try.
At least, it has been the case on several boards of mine, including an X10SDV which bricked itself, as far as I can tell, just from bad luck somehow.
You can be cashflow positive and still benefit from having a larger pool of cash to throw around, particularly in any situation involving hardware manufacturing.
If you tell your investors "our limiting factor is how fast we can spend to deliver on additional requirements for these new customers", then it can both be true that you're not going to miss payroll for 5 years no matter what happens tomorrow and more cash would be beneficial.
(Those were all firsthand examples; I'm not saying everyone needs cloud providers, but there are reasons beyond "really good salespeople" that people opt for offloading those logistics.)
"This is a platform you can build on", software and hardware specs included, is still a much nicer thing to iterate on than "it's commodity parts to slap together" for someone without familiarity with the processes involved at scale, and going from "this is an opaque piece of hardware that responds on guaranteed timing" to "this responds on guaranteed timing but also has more complex features" is still a substantial jump, since "building software that meets realtime timing requirements" is not a thing in a lot of people's wheelhouse.
Plus, on a human level, I wouldn't be surprised if the teams working on mouse development were annoyed they couldn't show their past work in the same way...
I agree that what you need here is someone(s) with leverage and respect in your life to interfere with systemic bad behaviors if they exist, but that takes community, government merely gets leverage, and churches are often not a welcoming place to many people's eyes, rightly or wrongly, around the US.
As I get older, I'm increasingly of the opinion that the best you can do is unconditional support from the government (because it's the only kind you can rely on no humans in the chain acting in bad faith to condition), and well funded local support structures for people to subsist while fucking up their lives and also help them get out of that spiral if they want to.
Not because I believe in some fundamental good in man or something, but because I think that's the only way you can design this that isn't subject to people's bad faith manipulation, and I've personally seen too many cases go wildly differently for "objective" criteria where the main difference seemed to be whether the person reading it went into it assuming you were lying or not.
Of course, since there are lots of ways to describe things in bad faith without ever breaking that rule, it can ring hollow once you lose trust...
Enter Knoppix and persisting any state I cared about on a thumb drive.
Of course, since RAM was so limited on devices, just installing packages and leaving the modifications taking up valuable RAM was inconvenient to do, so I went down a rabbit hole of customizing the image builds with various nonsense.
Useful dozens of other times before Ubuntu popularized live images just being a thing you supplied as table stakes, but that window of going down a customization rabbit hole and running a diskless laptop is what I remember.
Employers past a certain scale are not really using degrees as anything other than a low pass filter, and the people judging how qualified hires were in practice are not the ones deciding the minimum requirements, so there's no avenue for feedback on that point.
There's no one-size-fits-all pitch, but my starting point would probably be time limits per day on a smart device, killing all notifications on it, and telling them that these things are because it has bad consequences if they don't have limits, so if you catch them getting around the limits, the privileges of such things will be temporarily or permanently removed.
I don't love it, but unless someone comes up with a wonder drug to dampen addictive effects of things in humans and we're all somehow convinced this is a great idea to give to everyone, all you can do is avoid the parts that are a race to the bottom of gamified attention and focus, until they're old enough that they hopefully have an informed opinion and are the ones making the choice to drink the poison chalice or not.
So it's quite possible they were doing the same with TSME, and either made a rude marketing decision that the people using it on consumer chips would probably pay for PRO chips if they were prevented from doing so, or kept getting people attempting to RMA the chips for a feature they never said worked on them not working, or there's some systemic flaw in the consumer chip's implementation that they didn't feel like trying to qualify fixing versus just killing the not-guaranteed support.
Hard to guess without more data than just them going silent about it.
[1] - https://www.joelonsoftware.com/2000/05/24/strategy-letter-ii...
I can't imagine the logic involved in "this is implemented, let's toss it in the dumpster" for that.
But that was the original logic.
I also would be curious to see benchmarks for them on FBSD and Linux, because FBSD and Linux (the platforms at large) diverged in how they handle "disks", with FBSD opting for only character devices (unbuffered) and Linux only block devices (buffered).
Drives sometimes are worse at their internal error detection than you might hope, and might return incorrect bytes.
You might have faulty hardware flipping bits between when you computed a checksum/parity/etc over your data and when you wrote it out, either in memory, or over the wire.
You might have a software bug or an interaction with a hardware erratum that causes the CPU to misbehave and mangle your bits in certain cases, maybe around switching from running code in a VM to not and back.
You might have had, say, the Samsung HD204UI hard drive, which loses data after it tells the OS that it's written because of a bug around its write cache, so you get no error back, but you go to read the data back later and it's actually whatever was there before you tried overwriting it.
SSDs, NVMe and otherwise, _can_ fail in ways that aren't just vanishing from the bus, it's just much less common than with mechanical drives, IME. I have sometimes seen SSDs return incorrect bytes inconsistently or consistently, or start spitting up read/write errors rather than entirely vanishing from the bus.
Each of the above examples is a real thing I saw happen. None of them is particularly likely, plenty of people never have dumb shit like any of that come up. But it's not never.
- serving a bunch of storage as a blob is a common use case for e.g. iSCSI exporting, and so, if you want to be able to zfs snapshot/send/rollback/etc on the level of "one logical disk", it makes sense to have an optimized route to expose that rather than making you expose a filesystem that only has one file on it to do the same dance
- avoiding unnecessary overhead/complexity from the FS layer being involved when all you really care about is exposing a single block device of storage
Of course, in the era where you're sad that inline compression/checksum/etc are bottlenecking your 48 NVMe pool, that probably isn't where you'd reach for optimizing first...or second...
But just exposing the block storage is sufficiently useful that at least one of the original projects to port ZFS on Linux wasn't planning to implement the FS layer, they just wanted block storage for Lustre.
The comment in [1] also outlines a bunch of reasons it's extremely difficult to break into.
(3) the contrapositive, where you continued the flight, it really was someone stupid enough to name the broadcast name of a bomb "BOMB", it goes off, and now you have to explain to the press "we thought nobody would be stupid enough to really name it 'BOMB'"
So you assume it's a low risk event, and tell everyone onboard to turn off their devices to remove the chance it's just someone making a bad joke or a coincidence, and then you end up with the outcome of trying to avoid having to say that in a press conference where everyone is already primed to think you didn't do enough.
There's nuance, of course, with people who are worse off in America seeing some cracks in it, but that's how you get the idiom about "Americans vote like temporarily inconvenienced millionaires" - they are so convinced the game isn't rigged against them that they vote assuming they will win at the casino one day.
IOW, "there is probably very little stopping you except time from having written Coccinelle patches to mechanically do most of these transformations".
If you needed an old piece of code at $WORK, you probably already paid the tax of refreshing it or replacing it.
This sort of task is similar in nature to something like "I have a 25yo unmaintained Linux driver, let's refresh it for modern Linux" - a great demonstration of the efficacy of these tools if you have the right-shaped task, but not a task that comes up repeatedly in most people's days.
They exist in other formats too - blogs in the vein of "for exposure" cover the same premise, mostly.
Vibe coding has allowed them all to try and show everyone how right they were.
I've been trying to use it for a massive tree of ~250k files across ~500k folders, which only needs to live on one device at a time and sync to a backup in case it dies, and even if I tell it send-only/receive-only explicitly, it regularly seems to go cross-eyed at some change made in the folder structure and give up and rescan and hash everything, and if anything in the tree changes while that's happening, it gives up and just marks it a conflict to be manually resolved...or silently hangs until I restart it.