817 karma · joined December 8, 2014
We ended up with some rules like "all puzzle pieces must be adjacent to another puzzle piece", "no puzzle piece may overlap another puzzle piece", and "all puzzle pieces must overlap the silhouette" (the puzzle goal), and "no piece may partially overlap the silhouette".
I didn't really know how to detect "overlap" reliably so I ended up implementing some heuristic methods. I remember tearing my hair out over the way JavaScript numbers worked and figuring out how to reliably compare floating point numbers. Good times.
The github repo for the library is still around. Last commit... 9 years ago, woof, time flies! And of course one of the last commits is "Fix overlap bug". Figures.
[1] https://en.wikipedia.org/wiki/Tangram [2] https://github.com/gabesullice/libshapes
Markdown only makes sense for us meatbags becuse it's easy for us to edit and version control, but if you're sharing anything where the audience is an agent publicly, HTML must be just as interpretable.
I want evidence that proves "it's about cheap layoffs" or "it's about real estate" or "it's because they want to monitor people" or "<insert any speculative reason on this thread>"
Once we have evidence"it's about layoffs" then we can debate whether it's ultimately helpful or harmful to cull headcount that way.
I also found results suggesting flexible working policies had positive properties like higher employee satisfaction, retention , and a wider applicant pool.
I'm not interested in hearing why the choir here at HN thinks companies are making these decisions, I want to see evidence of their rationale so I can put myself in management's shoes.
func OrderedLoop[A, B any](in <-chan A, done chan<- B, n int, f func(a A))
Instead of: func OrderedLoop[A, B any](in <-chan A, done chan<- B, n int, f func(a A, canWrite <-chan struct{}))
Or is there a reason that "f" can't be wrapped in an anonymous function to handle the blocking logic?Offline order history is only a marginal improvement on the e-commerce experience from a customer and business perspective, so it's more appealing to us engineers who appreciate it as a feat of engineering prowess.
In other words, offline isn't PWAs killer feature. Besides, native apps can do it too.
PWA's killer features are circumventing the app store and the app store tax and not maintaining two codebases for Android and iOS.
Another Hacker News client would be a good example of a good PWA that you might install to your phone. It could have niceties like "save for later" or special styles applied to your favorite commenters. Offline support would be useful too, of course but not the main reason to develop a PWA.
Uncensored, paid content is another significant use case.
If we're talking about wealth not income, then no, not really. We don't usually think of asset seizure as "taxes". In other words, one "taxes" flows (like capital gains and wages) and "siezes" stocks (like bank deposits and equity).
"You seem to be positing that it's entirely expected and understandable"
I wasn't making value judgement, but yes, if you look at it with the assumption these wealthy individuals are cold, calculating, self-interested actors, then it's "expected and understandable" to me.
"That seems counterintuitive to me, at least."
I think you're using "intuitive" as a shorthand for "the way things ought to work in a righteous world", where I find incentives and disincentives to be a more intuitive way of understanding the world.
"wealthy individuals in well functioning systems should commit fraud to the detriment of the system that brought them their wealth"
To be fair, it's not necessarily fraudulent to have offshore accounts or to conceal your identity (it can certainly be depending on the circumstances). Technically I have an "offshore" account, I just happen to be living outside the US and a US citizen. I also use mechanisms to conceal my identity when registering domain names, for example. Is it the same thing, no, but these people might not technically be doing anything illegal.
It isn't necessarily true that those systems "brought them their wealth" either. Plenty of them likely inherited wealth that was accumulated long before the current systems were put in place (granted, it could very well have been accumulated illegitimately 300 years ago).
(Again, I'm not saying any of this is how the world should work, I'm trying to look at the world dispassionately and describe how things seem to be)
At the level of wealth we're discussing, these individuals probably have to think about "diversifying" among nation-states. Instead of worrying about whether to short the tech sector, they're worried about a country being invaded and the new puppet regime deciding to nationalize the hydroelectric dam they financed. Or they may be worrying about whether their country of residence will pass a law that the biggest national telcom must sell the government a majority stake (i.e., their share) at a government-mandated price denominated in an inflating currency... with expert bureaucratic efficiency.
So... no, not really taxes.
"This suggests a counterintuitive result: use of offshore finance is driven not only by negative political conditions such as corruption and lack of civil justice, but by positive conditions, such as regulatory enforcement and civil justice."
But it's not counterintuitive at all. Those people aren't concerned about getting mugged and they're definitely not concerned about how long it takes to get a construction permit in a corrupt country. They're concerned about state-sponsored expropriation.Given so many of the comments here about tracking the offshore accounts down and confiscating the contents, it's no surprise.
Irrespective of whether their practices are immoral, unethical, unfair, or unjust, they're definitely not counterintuitive.
It's genuinely hard for me to understand how the authors could believe otherwise.
My conclusion is exactly the opposite. In-house developers can be expected (read: cajoled) to do things the "right" way, like follow links at runtime. You can run tests against your client and server. Internally, flexible REST makes independent evolution of the front end and back end easy.
Externally, you must cater to somebody who hard-coded a URL into their curl command that runs on cron and whose code can't tolerate the slightest deviation from exactly what existed when the script was written. In that case, an RPC-like call is great and easy to document. Increment from `/v1/` to `/v2/`, writer a BC layer between them and move on.
Links update when you log in or out, indicating the state of your session. Vote up/down links appear or disappear based on one's profile. This is HATEOAS.
Link relations can be used to alter how the client (browser) interprets the link—a rel="stylesheet" causes very different behavior from rel="canonical".
JavaScript provides even provides "code on-demand" as it's called in Fielding's paper.
From that perspective, REST is incredible. REST is extremely flexible, scalable, evolvable, etc. It is the pattern that powers the web.
Now, it's an entirely different story when it come to what many people call REST APIs, which are often nothing like HN. They cannot be consumed by a generic client. They are not interlinked. They don't ship code on-demand.
Is "REST" to blame? No. Few people have time or reason to build a client as powerful as the browser to consume their SaaS product's API.
But even building a truly generic client isn't the hardest thing about building RESTful APIs—the hardest thing is that the web depends entirely on having a human-in-the-loop and your standard API integration's purpose is to eliminate having a human in the loop.
For example, a human reads the link text saying "Log in" or "Reset password" and interprets that text to understand the state of the system (they do not have an authenticated session). And a human can reinterpret a redesigned webpage with links in a new location, but trivial clients can't reinterpret a refactored JSON object (or XML for that matter).
The folly is in thinking that there's some design pattern out there that's better than REST without understanding that the actual problem to be solved by that elusive, perfect paradigm is how you'll be able to refactor your API when your API's clients will likely be bodged-together JS programs whose authors dug through JSON for the URL they needed and then hard-coded it in a curl command instead of conscientiously and meticulously reading documentation and semantically looking up the URL at runtime, follows redirects, and handles failures gracefully.
Step 1: Post discreetly to a forum with minimal information and an absurdly short deadline
Step 2: Phone your friend, the former board member, to make your case on LinkedIn
Step 3: Ring up a friendly journalist and give them a tip
Step 4: Reference the insuing chaos as justification for keeping your project funded
Note that the article carefully avoids pinning the blame on DOGE or the Whitehouse while heavily implying it. MITRE is technically a private entity, albeit a non-profit. And the very last paragraph of the article states:
> A CISA spokesperson told CSO, “CISA is the primary sponsor for the Common Vulnerabilities and Exposure (CVE) program… Although CISA’s contract with the MITRE Corporation will lapse after April 16, we are urgently working to mitigate impact and to maintain CVE services on which global stakeholders rely.”
To be clear, the point isn't to say that the CVE program isn't valuable, nor is it to say that it's good for a shenanigan like this to be necessary.
The point is that, unless you're directly involved in this subject (not impacted—involved), it's probably best to maintain a "wait and see" attitude rather than succumb to catastrophizing this news.
Perhaps I'm wrong, but I believe HTTP streaming is for chunking large blobs. I worry that if you use this pattern and treat streaming like a pub/sub mechanism, you'll regret it. HTTP intermediaries don't expect this traffic pattern (e.g., NGINX, CloudFlare, etc.). And I suspect every time your WiFi connection drops while the stream is open, the fetch API will raise an error as if the request failed.
However, I agree you probably don't need WebSockets for many of the ways they're used—server-sent events are a simpler solution for many situations where people reach for WebSockets... It's a shame SSEs never received the same fanfare.
I want to delete my account—not unsubscribe. It's a cool idea, but only accessible to me between 00:39:00–03:39:00 (UTC-01:00). I'm too old for that! :P
I assume there is a way to delete my account behind the login wall… but I can't log in outside of the "open" hours.
Therefore, I'm stuck: I can't be online during the "open" hours and the login button is disabled and reads "Log in (unavailable)" during the "closed" hours.
I also tried to reply to your email with a data deletion request, but the delivery failed. There is no support email on the homepage, nor a way to message you directly via HN.
Each project gets its own Docker Compose file. These allow you to set up whatever project specific services and configuration you need.
None of your projects need to expose a port. Instead each project gets a unique name like `fooproject` and `barproject` and the container listening to port 80 is named {project-name}-web.
It all gets tied together by a single global NGINX/Traefik/Caddy container (you choose) that exposes port 80 and 443 and reverse proxies to each project's web container using Docker's internal hostnames. In pseudo-code:
https://fooproject.example.site
{
reverse_proxy fooproject- web:80
}
https://barproject.example.site
{
reverse_proxy barproject-web:80
}
The final piece of the puzzle is that the maintainer of DDEV set up a DNS A record for 127.0.0.1 *.ddev.site
You could do something similar yourself using your own domain or locally with DNSMasq.It may seem overcomplicated (and it is complicated). But since it's a de-facto standard and well-maintained, that maintenance burden is amortized over all the users and projects. (To the naysayers, consider: PopOS/Ubuntu are quite complicated, but they're far easier to use for most people than a simpler hand-rolled OS with only the essentials.)
Regardless, I addressed your point already.
Less than one fifth of its revenue comes from federal sources. If its residents weren't paying federal income taxes, Florida could probably afford to increase its taxes to cover the difference.
In the US, local taxes—not federal taxes—pay for the majority of surface street maintenance, schools, emergency services, licensing regimes, health and safety inspections, unemployment insurance, etc. I.e., most of what one considers to be staples of the social contract in a well-administered society.
It seems as though you're implying income taxes are a prerequisite to some standard of living comparable to the US, but that presupposes that income taxes in the US actually pay for the things that make a place worth living in.
If all of those staples are paid for by local governments, then what do federal income taxes pay for? Retirees and military procurement, for the most part.
Can you imagine other ways to raise those funds?
Experience is hard (if not impossible) to scale. And it could easily backfire: imagine the scenario where the experience is miserable and results in failure. What if the students' lesson learned is "why bother trying?"
The most effective way we have to scale experience is through simulation. And we know how to provide that pseudo-experience to young kids without a lot of investment: story telling.
Maybe we should scour the globe for compelling stories that teach lessons about delayed gratification, the value of saving, and self-confidence vs. vanity in terms of spending money, so that we could start telling them to students at an early age.
Is "less important" a typo?
Supposing that's not a problem, if the GP is right about the Ramcharger using an ICE to run the electric motors, then in principle we pretty much already know it's possible from a power density perspective.
I suppose one could start running the generator at the beginning of the trip instead of waiting for the main battery to drain significantly. Perhaps you couldn't get "infinite" range, but you could stretch your main battery's range out far enough that for all practical purposes you wouldn't care—you could either get to a charger or find some diesel and wait an hour or two after a 10+ hour trip for the generator to recharge the main battery.