My friends and I had great fun with Micro Machines 2 on the Mega drive (Genesis).
The cartridge itself was fascinating because it had two extra controller ports on it! You had for player gaming by plugging two controllers into the console and two controllers into the cartridge that was protruding from the top of the console. The cartridge was a little taller than usual to accommodate the extra hardware.
This seems pedantic, but I suppose anyone using the term 'superset' is inviting the pedantry.
For almost all intents and purposes, if you are asked to create a YAML file then you can choose JSON as your syntax instead, because your file will be understood by the YAML parser. The benefit being that JSON has far fewer quirks and edge cases.
It's comical that when people get confused with YAML (which is often) they convert their YAML snippet to JSON to see what's really going on. YAML is horrible for humans to write. Let's just use JSON, the sane syntax, instead. A few extra parents and quotes is really no big deal, and it's far easier to read unambiguously.
If we're not being pedantic, YAML has almost nothing to do with JSON. A typical YAML file and a typical JSON file have no syntactical overlap at all. Practically speaking, YAML parsers are expected to also parse JSON despite it being an otherwise unrelated format. The entire idea that it is a "superset" is misleading. This isn't a C -> C++ transition.
It is not only for the pedantry, unfortunately. A subtle input that is a valid JSON but an invalid YAML may cause all sort of problems at any level, with some security implications.
I guess at least their work has confirmed what we probably already knew intuitively: if you have CPU-intensive tasks, without waiting on anything, and you want to execute these concurrently, use traditional threads.
The advice "don't use virtual threads for that, it will be inefficient" really does need some evidence.
Mildly infuriating though that people may read this and think that somehow the JVM has problems in its virtual thread implementation. I admit their 'Unexpected findings' section is very useful work, but the moral of this story is: don't use virtual threads for this that they were not intended for. Use them when you want a very large number of processes executing concurrently, those processes have idle stages, and you want a simpler model to program with than other kinds of async.
I'll put it this way: to benefit from virtual threads (or, indeed, from any kind of change to scheduling, such as with asynchronous code) you clearly need 1. some free computational resources and 2. lots of concurrent tasks. The server here could perhaps have both with some changes to its deployment and coding style, but as it was tested -- it had neither. I'm not sure what they were hoping to achieve.
Neither is all GenAI; in both cases there are certain patterns — woman laughing at salad, the actors holding soldering irons by the hot part, hackers wearing black hoodies and having their faces illuminated by a projector showing a text editor with some HTML, etc.
Or just don't use a photo at all if it doesn't add something substantial. A nice photo from Unsplashed is much better than AI slop, but it's often largely superfluous.
I struggle with this one because exceptions are a perfectly good solution. The compiler will tell you when you are not handling a failure case. And if exceptions are unchecked, then you won't get a compiler warning but at least failures will be obvious at runtime.
Why push java towards this 'failures as return values' when we already have a solution? Yes, you will be able to get the compile-time safety by immediately using switch on the return value, but what if you don't? Exceptions are a completely sound solution, failures as return values can easily escape detection.
No-one likes having to think about the error cases, it feels like it complicates things. But we need to stop seeing exceptions/try/catch as something to eliminate and realise that this approach is one of the best innovations of Java. Using return values, or monadic approaches to error handling, are fundamentally unsafe when you have a mixed paradigm language. Far too easy for the programmer to do something wrong, so we're relying on discipline again and not the compiler. In other words, back to square one.
I see. Yes, deliberately ignoring the result and error might be a problem. Of course the same novice programmers could write:
try {
failableCall();
} catch (Throwable t) {
/* Ignore. Stupid Java, always forcing me to handle checked exceptions that won't happen in practice. */
}
In general, I'd say the choice between exceptions and a result-or-error return type should be driven by how likely the user of the method is interested in the return value. In the specific context of this discussion, there is no reason to call a future's get method unless you're really very interested in what it returns. So in this case I'd think the result type would be a good choice. For other APIs the trade-off is different.
I'd say between a stupid result out of ignorance or risky defaults, vs a stupid result out of explicitly being stupid and overriding sane defaults, the latter is probably safer.
Also, exceptions (particularly checked ones) are not a simple matter of optional checks; they form an explicit contract forcing you to deal with exceptions (and having to be explicitly stupid to make them useless via an empty try/catch block). Compare to type-contracts where you'd need to go out of your way to make the "Null" part of the union type "useful" in the first place, for example.
This issue is nuanced for Microsoft . The health of PC gaming is a huge factor in the sales performance of home consoles, and of course Microsoft dominates that arena via Windows.
Xbox does not have true exclusives these days, because of a strategic choice by Microsoft to ensure that Windows PC gamers (and Xbox owners that also have a Windows PC) will get the same experience. So how do we apportion successes PC gaming market when we look at "Who's winning in gaming"?
For sure, this strategy of letting Windows join the 'Xbox' family seems to have hurt sales of the console itself. A Windows PC and a PS5 seems to be the perfect combination to play all the best games. But is it a problem that Microsoft is making and selling fewer of a certain kind of hardware unit?
I really want Xbox to survive as physical hardware. We need competition in the market to push those gaming devices to be the best they can be. I just hope that it's understood how shifting fewer units is a natural and inevitable consequence of bringing Windows PCs into the family.
It might be assumed that Xbox lost this console generation. Yes, there were some major mistakes made in this generation and the last that must have hit sales. What has also happened, though, is that Xbox as an overall gaming brand has grown beyond the console itself.
> But is it a problem that Microsoft is making and selling fewer of a certain kind of hardware unit?
The problem for them is that PC players buy their games on Steam, not the Windows store, which means they miss on the 30% cut they would otherwise have got had the sale been on Xbox.
The cartridge itself was fascinating because it had two extra controller ports on it! You had for player gaming by plugging two controllers into the console and two controllers into the cartridge that was protruding from the top of the console. The cartridge was a little taller than usual to accommodate the extra hardware.