Hacker Newsnew | past | comments | ask | show | jobs | submit | Revisional_Sin's commentslogin

Yeah, it's a bit counter-intuitive.

> Ignoring requires-python upper bounds. When a package says it requires python<4.0, uv ignores the upper bound and only checks the lower. This reduces resolver backtracking dramatically since upper bounds are almost always wrong. Packages declare python<4.0 because they haven’t tested on Python 4, not because they’ll actually break. The constraint is defensive, not predictive.

Erm, isn't this a bit bad?


Yes, but it's (probably) the least worse thing they can do given how the "PyPI" ecosystem behaves. As PyPI does not allow replacement of artefacts (sdists, wheels, and older formats), and because there is no way to update/correct metadata for the artefacts, unless the uploader knew at upload time of incompatibilities between their package and and the upper-bounded reference (whether that is the Python interpreter or a Python package), the upper bound does not reflect a known incompatibility. In addition, certain tools (e.g. poetry) added the upper bounds automatically, increasing the amount of spurious bounds. https://iscinumpy.dev/post/bound-version-constraints/ provides more details.

The general lesson from this is when you do not allow changes/replacement of invalid data (which is a legitimate thing to do), then you get stuck with handling the bad data in every system which uses it (and then you need to worry about different components handling the badness in different ways, see e.g. browsers).


No. When such upper bounds are respected, they contaminate other packages, because you have to add them yourself to be compatible with your dependencies. Then your dependents must add them too, etc. This brings only pain. Python 4 is not even a thing, core developers say there won't ever be a Python 4.h


> you have to add them yourself to be compatible with your dependencies

This is no more true for version upper bounds than it is for version lower bounds, assuming that package installers ensure all package version constraints are satisfied.

I presume you think version lower bounds should still be honoured?


The point is that you can know that a lower bound is necessary at the time of publication; an upper bound is either speculative or purely defensive, and has possibly unnecessary consequences for your dependents.


You can also know that an upper bound is necessary at the time of publication -- for example, if your foo project uses bar 2.0, and bar 3.0 has already come out, and you have tried it and found it incompatible.

In the reverse direction, many version lower bounds are also "purely defensive" -- arising from nothing more than the version of the dep that you happened to get when you started the project. (Just because you installed "the latest baz" and got version 2.3.4, without testing there is nothing to say that version 2.3.3 would also work fine, so adding the version lower bound >=2.3.4 is purely defensive).

Basically, the two bound types are isomorphic.


Okay, but are the puzzles fun?


Puzzle design is his strong point (and the team has several v. good puzzle designers on it), so it's safe to assume there'll be some good ones there. The sheer quantity make me wonder about how the game will be structured - they can't presumably all be stumpers (aka hard puzzles that you'll have to step back from and think about) - maybe there'll be more of a gentle flow between puzzles, like in the Witness, or maybe there'll be lots of optional levels/branching in the game design. I guess we'll see! I'm curious :)


Depends on your definition of fun. In both Braid and the Witness, eventually you come across a puzzle you cannot solve and have to use Google to find the answer, because the game never bothered to even hint at how it could be solved. That's pretty much the opposite of fun. Just pretentious; I would expect more of the same.


My wife who had never played a video game beyond Pokemon played both of those games and completed them with no assistance, as did I, so I'm not sure what you're talking about tbqhf


That says more about you than about the game.


Blow has actually talked about those puzzles in streams, said he regrets it because more players than not stopped playing the games at that point. It's the definition of bad design to implement some untested abstract idea without giving the player any hints.


There are no hard puzzles in Braid, at least not that are required to beat the game, so not sure what you mean. I never played the witness so I don't know about that game.


There is one puzzle piece that you can't reach early in the game; to get it you have to bring a later piece back to the puzzle, put it in its place, then jump on the platform that is drawn on the puzzle piece. But most people just give up in frustration trying to reach the piece because the game hasn't given you enough information to know you need come back for it later.


Braid also has the stars which are so well hidden that I can’t imagine anyone finding them without a walkthrough (though some people obviously did in order to make the walkthroughs).

The Witness is different, it really does teach you everything you need to 100% it. I cheated on the ship puzzle but it’s totally possible to figure out.


> Maybe the answer is to do away with advance notice and adopt SemVer with many major versions

Yes.


My toddler was playing with my Kindle the other day, and he bought a £600 (yes, six hundred) volume of books. I was unable to refund them automatically, and when looking for help I was confronted with a "fuck off" contact page. After finding the option to talk to a human, I was put through within 5 seconds, and the woman had the item refunded in about 1 minute.

Was pleasantly surprised.


Amazon seems to be going for a model where they keep support costs down by making it progressively harder over time to actually contact a person, but when you do manage to you get a good experience. It's an interesting idea, and I suspect that the pleasant surprise at the end makes up for a lot of the frustration getting there.


Also, your first N refunds are automatic for smaller prices. I think the only reason GP needed to talk to a human was the larger price. But once you're used the mechanism a few times, the site starts offering the benefits of good customer service less and less.

I don't know if it's individual, regional or country-wide, but I've lost free UPS pickups for returns and I'm offered free trials way less often now.


I was once working on a project where we had a gRPC server that inserted data into the DB for another service.

This split was probably a mistake, as the interface we exposed resulted in us making twice as many DB calls as we actually needed to.

One of the stored procs needed a magic number as a parameter, which we looked up via another DB query.

One of the other Devs on the team tried to convince me to write a separate gRPC server to run this (trivial) query.

"We're doing microservices, so we need to make everything as small as possible. Looking up this value is a separate responsibility from inserting data."

Luckily our tech lead was sane and agreed with me.


They're not saying it is.


ok


That's weird. I thought LLMs loved over-explaining their code?


Thanks, I hate it.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: