HN user

jimminy

1,038 karma
Posts15
Comments245
View on HN

The posts are [Dead], which means they're only available for the submitter or individuals with "Show Dead" available on their account.

My guess: The domain is too similar to HN itself, or the fact it's a lower-value aggregator regurgitating content from other sources, got the article killed.

The posts are [Dead], not a regex issue, nor is it an issue with administration.

From the FAQ:

What does [dead] mean?

The post was killed by software, user flags, or moderators.

Dead posts aren't displayed by default, but you can see them all by turning on 'showdead' in your profile.

If you see a [dead] post that shouldn't be dead, you can vouch for it. Click on its timestamp to go to its page, then click 'vouch' at the top. When enough users do this, the post is restored. There's a small karma threshold before vouch links appear.

As for the other one and your recent comments, it's a failure to follow the guidelines[0].

Please don't post on HN to ask or tell us something. Send it to hn@ycombinator.com.

[0] https://news.ycombinator.com/newsguidelines.html [1]: https://news.ycombinator.com/newsfaq.html

I do find it a little odd all the comments in this thread are focusing on it as though it was a straight telemetry/metric decision.

From the update, this feels more like it was problem area for maintenance purposes, then had its telemetry assessed for decision.

"The data pipeline that powers the page has historically proven problematic to maintain and so given the low usage, we decided to switch off the Trending page."

The maintainers likely considered the resources and effort in maintaining it were too high. When they looked at the telemetry and saw it wasn't utilized considerably, they assessed it was better to cut it, than keep it or create an alternative.

If it didn't have a cost associated with it, it would likely have never become a target.

Yeah, my example was bad. I was more trying to point out that determinism of the intrinsic action is a pre-condition to the idempotency, in order to make and verify the assurance required.

You could easily split the deterministic action, and comparison/verification against existing state into two different Pure functions. Being able to perform the verification separately is valuable for addressing the "at most once", "at least once", and "exactly once" assurance described in another comment in this the thread.

I was casually opening my scope up to the outer state, in the example, to express the "assurance" portion of the definition. But you're correct, it's an erroneous example that doesn't pass the more rigorous definition of Pure Determinism, when applied the local scope of the function.

It's not really uncomfortably close to determinism, it is baseline deterministic which is necessary for the verification. The powerful part of idempotence is that it's deterministic + a verified assurance "as if we run it only once."

Deterministic (but not idempotent): send_message(id=1, body) without verifying the state of id, could result in the message being received multiple times.

Idempotent: send_message(id=1, body) would verify that the id token hadn't been consumed, before acting, thus only allowing the message to be sent one time.

These days I look up individual features, and use the date-relative view, to assess how long it's been available. Normally I'll start porting features once they're solid across the main browser set, but with a polyfill or some alternative based on feature detection.

I held off on delivering ES6 native until 2017-2018, and used mainly Bable or sometimes hand written polys up to that point if I wanted to use features from cutting edge. There's some influence from your user-agent analytics as well to determine if there is a meaningful regression to leave people behind.

5 years is just the rough grasp, sometimes the new features are worth integrating sooner if they provide actual functional improvements for users. Generally, syntactic sugar is given less precedence especially when it would negatively impact usability of the product. Saving a few hours for development is far less valuable than saving even a few hundreds of users hours of frustration.

As someone who started doing web development in 2003-2004, I've always aimed for a 5 year support window. This is largely because of how long IE6-IE8 upgrades took for many SMB's and governments to upgrade from in those days.

Back then browsers updated closer to 2-4 times a year, with far lower inertia in how drastic the changes would be. You could learn and mostly remember what features were safe for roughly that period. These days, I tend to look at feature release dates and support on CanIUse or MDN, to see if somethings been in broad use for the past 4-5 years.

It seems like an unusual rephrasing of the saying "reasonable on the face", which means "reasonable upon first appearance, without considering deeper aspects."

It's judging a book by it's cover.

This already kind of existed prior to the pandemic'.

If you bought premium tickets to a show, often you would get placed into VIP list with the venue and/or artist. Venue perks included contact with a VIP manager that could help lock in seating pre-sale, occasionally get discounts, if you asked, and other perks.

It's in the venue's interest to KYC and maintain these higher value relationships. And if you don't patronize them for a period they'll stop reaching out or providing access.

'Might still exist, but my experience was prior.

Yeah, I think the author focused a bit too much on structural pattern matching being a replacement/alternative for if...elif blocks.

It will be much more useful as an alternative to dispatch dictionaries, which are more a side-effect of the language lacking any case based control-flow.

This is the correct answer and is actually somewhat visible if you also look at the DJIA and NASDAQ figures.

The S&P 500 and DJIA are limited to a fixed number of corporations. The NASDAQ is allowed to expand it's number of listed companies over time.

If you look at the NASDAQ figures it's able to show considerable and relevant growth, as more companies have listed. (Still not at 2000's peak, but much closer than the S&P or DJIA.)

The speed of computing a path from vertex to vertex is faster than trying to generate a point at X distance for the pathing object.

So you give the NPC a speed, and it moves as far along the edges between vertexes in each time interval.

The navmesh also helps keep the AI traveling in places that have been marked as safe for travel, without collision or drops.

I explained it pretty clearly what you get when you add a month on January 31st. You get February 31st.

A month is a discrete unit of measure. It is not decomposable into any number of days.

When you increment a month, you get YYYY - (MM+1). Any higher significance is maintained, but irrelevant to the operation. (This applies to the hypothetical statement in the doctor's office, the specific day is indeterminant, but can be assumed the same as current day next month.)

The fact that not all possible days exist is orthogonal to the singular meaning of the operation. It's obviously not greatly valuable to an end-user, but the method of addressing the ambiguity involves a second operation that ensures validity.

End-users want an method that does both the addition and coercion, but you can create consistency if you follow the simple path I laid out in GP.

I'll use your syntax but with the strictly correct definition of the operation.

  Datetime x = new DateTime(2021, 1, 31);
  x.AddMonths(1); // DateTime(2021, 2, 31)
  x.AddMonths(2); // DateTime(2021, 3, 31)
  x.AddMonths(1).AddMonths(1); //DateTime(2021, 3, 31)

  // Ensure Valid, using a coerce to clamp overflows
  DateTime(2021, 2, 31).EnsureValid(); // Feb 28
  DateTime(2021, 3, 31).EnsureValid(); // Mar 31
  DateTime(2021, 4, 31).EnsureValid(); // Apr 30

I agree those are the technically correct way to do it.

But if the reason people are wanting to use the library, is they want something to handle the complexity for them, coercing the data is good for simplication.

There is actually another option, that provides idempotent/associative consistency and implicit coercion to valid values.

This option, which discards some use cases (days beyond 28, when manipulating months), you coerce all values 29..31 to 28. This isn't even as technically correct, as the original option, but it removes the inconsistency and holds to the simplification contract to users.

Plus/Increment/Add 1 month, does have one single meaning, it's that the outcome may be invalid that is the issue.

"2021-01-31".plus(unit="Month", size=1) => "2021-02-31"

But nobody really wants that, because it's not a valid date. So implicitly the library is deciding to return a valid date.

A library could be written to just provide invalid dates, and let the end user handle any errors. That library could also include an explicit validation method that takes a date and returns a valid one.

"2021-02-31".coerceToValid() => "2021-02-28" // Overflow == Max

"2021-02-31".coerceToValid(asDays=True) => "2021-03-03" // Overflow Carries (to the right)

In fact the library, that provides an ignorant response and no contract on validity would hold to the associative property, it just wouldn't be as ergonomic.

If you're adding 1 month, you're working on the month's location, e.g. 2021 - (02) - 28.

When you increment the month, the result would be 2021-03-28.

The only time you'd modify the day, is if the day became invalid due to an overflow, during that increment. If, when, you overflow the days you'd set the value of days to the maximum in that month.

If I tell someone, I'll get to that in a month, they expect by this day in the next month, the next calendar page, not 30/31 days.

This has been a thing since Google did their RankBrain update 5 years ago. They essentially released a system that used ML to negotiate unknown "long-tail" queries into more common queries and then returned the common queries results.

One of the immediate effects was quoted strings became less relevant, sometimes completely ignored, and a lot of the other tools for negotiating with system were lost. It's only continued to progressively get worse since then.

“The bottom line is that clients are still able to trade in GME, but we’ve put some restrictions on certain types of transactions in the interest of helping mitigate risk for our clients,” Schwab said Wednesday in a statement.[0]

They very much did 3 weeks ago. Not to the same degree as the smaller brokerages, but they still put limitations on margin trading, and restrictions on options.

[0] https://www.thinkadvisor.com/2021/01/29/gamestop-lawsuits-hi...

It's a fair question. A bunch of the larger guys like Charles Schwab and TD did implement restrictions as well.

In their case, it may not have been a necessity to maintain liquidity for other assets, but capping the exposure to how much capital they were putting down for it probably still made sense.

Only buying was prevented, and only for some brokerages?

The first part of that has been a common bit of misinformation. Opening new positions (either by attempting to buy shares of the stock, or entering into a new short position) is what was prevented. Closing positions (selling for owners of shares, or in the case of short obligations buying shares) was still allowed as closing reduces credit risk for the broker.

The brokerages that did restrict, were smaller firms and did so to maintain liquidity for all assets, instead of allowing a vast amount of their capital to be consolidated largely into a few assets, due to the increased capital cost of clearing.

Tox is designed for environment isolation, and primarily for testing against multiple release targets.

It's not an awful choice, when it's exactly what you want to do. The dependency is that tox will run the tests against a Python 3.6 target environment and a Python 3.8 target environment.

The dual requirement is asking for test assurance that Yamale will work with 3.6 or 3.8.

Try holding a piece of paper over them, so you can only review each independently.

In isolation, for me, the white on blue, has contrast bleed which makes the text fuzzy.

Again, in isolation, the black on blue is much sharper.

Together however, when presented side-by-side, the black on blue feels to be lower contrast. It's almost like my brain is using the black on blue to help compensate the weakness of the white on blue.

Yeah, this article goes a bit overboard.

There is a balance with small businesses of helping let people know you're in and available, and giving them prime parking.

You park within distance of the building and visible, but not directly outside if possible.

I've actually recieved calls about whether I'm open today, because my car is in the shop and thus the parking lot is vacant.

I don't know if that was a real scam. It was a bit of a throw away joke from the movie, 'Lock, Stock, and Two Smoking Barrels'.

The guys need to raise money to repay a debt, and one of them presents this idea, which gets tossed out because it's gonna take too long for them to receive the checks.

It didn't go missing. Square had an institutional policy that had them deleting source once projects were mastered and shipped, through to the early 2000's. FFVII-FFIX, Parasite Eve and numerous other games lost their source.

What's been recovered has been occasionally the code from contracted PC ports.