It's not an issue with asynchronous filesystem IO. Again, async file IO should be the default for game engines. It doesn't take a genius to gather a list of assets to load and then wait for the whole list to finish rather than blocking on every tiny file.
There are two different things when talking about application behavior versus disk behavior.
>wait for the whole list to finish rather than blocking on every tiny file.
And this is the point. I can make a test that shows exactly what's going on here. Make a random file generator that generates 100,000 4k files. Now, write them on hard drive with other data and things going on at the same time. Now in another run of the program have it generate 100,000 4k files and put them in a zip.
Now, read the set of 100k files from disk and at the same time read the 100k files in a zip....
One finishes in less than a second and one takes anywhere from a few seconds to a few minutes depending on your disk speeds.
If you paid attention then you would notice that the article isn't about income. You can have top 0.3% worldwide income and still have massive student loans to pay off.
Someone who is using all their income to pay off student loans is "giving away".
Someone in a capital city can be living paycheck to paycheck, spending all of their money due to high rent. Meaning they're "giving away", except not to people poorer than them. They're giving away to people richer than them, so the last part is somewhat correct, but it's not funny so why are you laughing?
This is a good point, but I think this only works for D*A, where D=Sigma is a diagonal matrix with learnable parameters. It probably doesn't work for a full singular value decomposition (SVD) UDV^T.
Basically, what if we're not actually "training" the model, but rather the model was randomly initialized and the learning algorithm is just selecting the vectors that happen to point into the right direction? A left multiplication of the form D*A with a diagonal matrix is equivalent to multiplying each row in A with the corresponding diagonal element. Low values mean the vector in question was a lottery blank and unnecessary. High values means that this turns out to be correct vector, yay!
But this trivial explanation doesn't work for the full SVD, because you now have a right multiplication U*D. This means each column gets multiplied against the corresponding diagonal element. Both the column in U and row vector in V^T have to perfectly coincide to make the "selection" theory work, which is unlikely to be true for small models, which happen to work just fine.*
The paradox is that the general principles of the market work, but the market is invisibly dysfunctional in its details.
It is generally true that higher income jobs are allocated to higher productivity workers, but it does not follow that high incomes imply high productivity and vice versa for low incomes.
If you combine the above with a disequilibrium market where supply of labor exceeds the demand for labor, then from a naive perspective it would appear as if the unemployed would deserve their unemployment.
After all, the most productive members are all employed and rewarded for their efforts. The unemployed are just lazy (voluntarily unemployed) and incompetent (society is better off without them). Any form of punishment is seen as justified and not some structural failing of the system.
The problem is that if there is a labor market disequilibrium, there will always be unemployed people and even if you think the productivity ranking is a good thing, it just means that if one of the "lazy" people suddenly becomes "hard working", they will just take the place of someone else and nothing has changed other than that the standard for laziness has risen.
Even if people notice that the system is fundamentally broken, they realize that individually, they are either a beneficiary of the system and therefore don't see a reason to change it or they don't have the ability to change the system and rather focus on taking someone else's place.
This will result in an artificial Darwinian rat race where people see each other as competitors to defeat.
This is my explanation for why immigrants make a good scapegoat even though immigration doesn't affect the rules of the game at all.
Here is an analogy via a game of musical chairs. There is the perception that more immigrants means more players competing for chairs. This is a naive interpretation that looks obvious. What is being forgotten is that each player is bringing a new chair and the number of missing chairs is a percentage of the number of players. The truth is that having more immigrants means you can take their chair away for yourself. So immigration is not causative here. The problem is that there were never enough chairs to begin with no matter how many people are playing the game.
The store is the warehouse and the store owner is allowing self service inside the warehouse but not at checkout.
Having robots means you're automating something that your customers would have done for free. The automation is an additional expense and does not reduce your operating costs.
The online grocery business model only works for two types of customers: those who are willing to pay a premium for convenience and those who need some specialty products that local grocers don't sell.
The first market is a competitor to doordash, this either means automating the in-store pickup or the delivery itself.
The second market is actually a drag on your local grocery stores. You don't want to carry niche products that are only interesting to a tiny portion of your market e.g. products for rare food intolerances, groceries for expats. If you want to carry them in your store, you'd want the customer to preorder them themselves, so you know exactly how much you need and then make them pick them up.
Basically the correct business model is in-house doordash (or B2B doordash) combined with preorders.
> Having robots means you're automating something that your customers would have done for free. The automation is an additional expense and does not reduce your operating costs.
Ultimately, I was pointing out why a two story grocery store with a "warehouse" on top doesn't make sense. A place to put stuff is not the issue for retail.
But, what you wrote there is a fair way to look at the core issue for Kroger.
Reading these two comments is bizarre from my perspective. How is Amazon competitive with anything? They tend to have higher prices than other online retailers and the intransparent market place system tries to protect shady sellers with product focused reviews instead of seller based reviews. The moment you get even a single fake product or wrong delivery all the perceived savings evaporate at once.
The idea of paying a subscription for the privilege of being scammed sounds ridiculous. The cost of deliveries doesn't magically go down because you're paying a subscription. You're paying for it either way. Either you're overpaying on the subscription because you're not ordering enough or you're overpaying in the form of higher prices that contain the remaining delivery fee.
> The moment you get even a single fake product or wrong delivery all the perceived savings evaporate at once.
I’ve been buying on Amazon for 20 years, and I just avoid high value items. It’s great as an AliExpress with an easy return policy. If I get a fake or whatever, I return it or I toss it.
For higher value items, I go to other retailers, such as Costco.
I don't order from amazon enough to justify prime, but a few times a year I sign up for a free subscription for a couple weeks or so.
The prices on amazon are comparable to what I see elsewhere for everything I've ordered. The thing that sets amazon apart is that their delivery is blazing fast compared to everyone else. Yes, the reviews are always a little suspect, if I see tons of empty 5 star reviews, I suspect the product, but in general, I've been satisfied with my purchases.
For most everything I'm giving as Christmas gifts this year, Amazon has the best (often tied for the best) price. Things from Apple are cheaper on Amazon than from Apple (Airpods Pro 3, M4 Air, etc.)
Predictable delivery, easy/generous customer service, best/tied-for-best price, excellent selection. I'm not sure which part of that is uncompetitive...
(If you know a better price on Airpods 3 Pro or a base M4 Air, do let me know as I'm always happy to save money.)
It's the all you can eat buffet effect. Pay the price and don't have to worry about shipping, can watch (some) streaming without having to worry about paying, and whatever else they decide to roll into their monopoly black hole today.
Sure, if you do a full accounting of costs you may win or lose, but fundamentally people are paying for simplicity. Because almost everyone is lazy, or too busy, or too afraid of random scammers, or whatever, and they played their cards right to become the Sears Catalog from the 19th century in the 21st century.
edit - and one thing that helped them get there is the return policy, so if you get one of those scam sellers, or they sent you wrong crap, opened crap, or just plain everyday crap, you press a couple buttons, maybe drop something off at a UPS store, and problem solved. That definitely shields them from the fallout from their endless listings from sellers like QWERTY123 and ZXCVBN789, and provides an advantage over any other online ordering that doesn't have the same massive advantage of scale.
1) When I really need it within a couple of days and can't quickly find it locally
2) When it isn't carried locally (the local retail stock is a lot thinner than 20 years ago)
3) If there is a BIG price difference -- used to be common but now much rarer. As you say, Amazon's prices are often worse than buying locally.
4) When I need it shipped somewhere else. I usually spend Christmas, for example in another city, and it is impractical to bring a bunch of presents. Amazon is good for situations like that.
I dislike Amazon, but they are now so dominant it is hard to avoid them.
I've been scolded online for buying from Amazon. "Oh, if you look around enough you can get anything locally." I live in the Seattle area, and I certainly cannot get everything I want locally, unless by "locally" you mean taking an hour or two to drive a 40 mile round-trip to a suburb to the north. I know, of course, that Amazon is partly responsible for being unable to find some things locally, but if I want or need something and I can't get it here in town, yeah, I'm using Amazon.
Ok, but you do realize that you're now deep in the realm of real time Linux and you're supposed to allocate entire CPU cores to individual processes?
What I'm trying to express here is that the spinlock isn't some special tool that you pull out of the toolbox to make something faster and call it a day.
It's like a cryogenic superconductor that requires extreme caution to use properly. It's something you avoid doing because it's a pain in the ass.
This is nonsense. If the lock hasn't been acquired, you don't spin to begin with and if the lock has been acquired and the lock is being released shortly after, the spinning avoids a context switch. If the maximum number of retries has been reached, the thread was going to sleep anyway and starts scheduling the next thread (which was only delayed by the few attempted spins). This means in the worst case the next spin will only happen once all the other queued up threads have had their turn and that's assuming you're immediately running into another acquired lock.
It's makes the worse case sufficiently bad and unfair such that it makes things worse overall. If the lock is contended by a thread with higher priority, then that blocking thread will have its priority increased. Now if the ends thread to get the lock is one spinning on it rather than actual high priority one, then this will repeat, leading to large latency on front of the high priority thread and a lot of misaligned CPU utilization by a lower priority thread.
Spinning on a CAS is far more expensive than spinning on most other instructions as well as it affects all core that may try to access that cache line, which may include things other than the lock itself.
Also consider how the system acts under high CPU load. You will end up with threads holding locks when not running leading to the majority of the time you miss the lock you spin all 100 times. This just exacerbate the CPU load issues even more. Hybrid locks are only helpful under lower CPU load.
reply