@ematipico The biggest point IMO isn't even what's correct in a platonic sense (obv 200), but that a 404 requires a special case in at least two places. Fear of special cases comes with experience. (Some people also genuinely don't understand that 0 or [] doesn't have to be a special case.)
@cmuratori@notwen Also, the disclaimer is way too specific. They claim the terms were removed “way before” the changes were “announced”. Well, yes. But that doesn’t literally mean the changes weren’t discussed internally, or decided, or perhaps already scheduled.
@mattpocockuk “keyof T[] is a massive gotcha. Instead of it resulting in ('id' | 'name')[], it does a keyof on 'person[]'.”
Postfix operators have a higher precedence than prefix ones everywhere else in the language. You wouldn’t think twice about -foo[5] somehow indexing -foo.
@ploughmansfolly The Luther part of the story isn’t entirely true. The Bavarian “Reinheitsgebot”, the law that limited beer brewing to barley and hops, dates to 1516. That’s before the reformation. The region wasn’t ever “taken over” by Protestants either, it’s Catholic to this day.
If you were using VS to port your app from .NET Framework to .NET 6 (or later), would you prefer VS to
update your original files in-place
--or--
create a copy of your projects and then port the copy?
Screen space reflections were a mistake. Unfortunately it looks good in promotional material where you can't break the illusion by, you know, moving the camera.
@hillelogram@krismicinski Good to know that this is the perception. Because I’ve seen the term “full stack” be (mis-?)applied to describe hardcore backend algorithms and networking people who also do okay in React.
@tomaka17 In an ideal world, emitting the *instruction* address of the panic should be enough (incl. up the stack). A lookup table to decode that into a source line would be a build artifact that the developer keeps, not something shipped to the user. That’s how PDBs work in Windows BTW.
@tomaka17 In an ideal world, emitting the *instruction* address of the panic should be enough (incl. up the stack). A lookup table to decode that into a source line would be a build artifact that the developer keeps, not something shipped to the user. That’s how PDBs work in Windows BTW.
@hillelogram My cynical guess is that in many places, people just don’t fix those hard bugs anymore. Who wants to spend a month on a rare data corruption bug when you can instead implement five new features, get promoted, and have the new team rewrite the entire thing in another tech stack.
@cmuratori As you know, UB was meant to encode “unknowable”. Say you call a dangling function ptr, and the code that just happens to be there is a “format hard disk” routine — that’s fine. I think the actual problem is that UB is allowed “infect” the code path leading up to that.
IMO a library should be just a collection of functions that do a certain operation. It should **not** provide some abstract interface that other libraries can plug into.
Creating mediums of communication between libraries should be reserved for the programming language itself.
@jarrednicholls@Geoxion@rustlang Type parameters are, well, parameters. That’s easy to forget because they’re so often implicit, but the caller supplies them. Logically, this should be true in every type system. Can you be more specific about the Scala example you have in mind? Maybe something else is going on.
@jarrednicholls@rustlang It’s not an inference issue, rather, the commented out version isn’t correctly typed. Generic arguments are logically always a “for all” quantifier: for all iterator types O, the function has to return an O. But it can’t do that, it always returns the same specific iterator type.