MurphyA/hacker-news huggingface dataset:
by ekidd | 2025-09-07 13:23:26+00:00
Yes, monads are abstract, but the definition is also very precise. Specifically (using C++/Rust notation for parameterized types), if we have a type "M<T>", we also need:

fn unit<T>(value: T) -> M<T> fn map<T1, T2, F>(input: M<T1>, f: F) -> M<T2> where F: Fn(T1) -> T2

...and finally the magic bit:

fn flatten<T>(input: M<M<T>>) -> M<T>

This, in turn, allows defining what you really want:

fn flatMap<T1, T2, F>(input: M<T1>, f: F) -> M<T2> where F: Fn(T1) -> M<T2>

...where the mapping creates an "extra" layer of M<...>, and then we flatten it away immediately.

(There are other rules than ones I listed above, but they tend to be easy to meet.)

Once you have flatMap, you can share one syntax for promises/futures, Rust-style Return and "?", the equivalent for "Option", and a few dozen other patterns.

Unfortunately, to really make this sing, you need to be able to write a type definition which includes all possible "M" types. Which Rust can't do. And it also really helps to be able to pick which version of a function to call based on the expected return type. Which Rust actually can do, but a lot of other low- and mid-level languages can't.

So monads have a very precise definition, and they appear in incomplete forms all over the place in modern languages (especially async/await). But it's hard to write the general version outside of languages like Haskell.

The main reason to know about monads in other languages is that if your design is about 90% of the way to being a monad, you should probably consider including the last 10% as well. JavaScript promises are almost monads, but they have a lot of weird edge cases that would go away if they included the last 10%. Of course, that might not always be possible (like in many Rust examples). But if you fall just barely short of real monads, you should at least know why you do.

(For example, Rust: "We can't have real monads because our trait system can't quite express higher-order types, and because ownership semantics mean our function types are frankly a mess.")
by simonw | 2025-09-07 13:23:50+00:00
I don't buy that my curiosity has a meaningful energy usage impact.

I can accept that these questions are more intense than simpler prompts - running dozens of prompts in a chain to answer a single question.

Best estimates I've seen are that a single prompt is equivalent to running an oven for a few seconds.

I'm OK with my curiosity running an oven for a full minute!

Here are my collected notes on AI energy usage: https://simonwillison.net/tags/ai-energy-usage/
by xoa | 2025-09-07 13:24:36+00:00
>That is not exactly how I remember things. Everyone bought domains from one registrar (was it Network Solutions?) and the cheapest domain started at around $100

By the mid to late 90s (my own earliest domain) yes. But a quick whois on milk.com shows a creation date of 1985-01-01, and that dates back to basically the foundation of DNS at all, RFC 882 & 883 were 1983. Initially it was just the Stanford Research Institute manually maintaining HOSTS.TXT for arpanet. IIRC you like, literally called up Elizbeth Feinler during business hours and just asked and that was it. This is all second hand because I was just a wee lad at that point and wouldn't even discover BBS until well after that heady era!

As things got formalized yeah unfortunately some players were able to start grabbing at monopolies, and NetSol began operating the registry for DISA in I think 91 or 92? It was still initially free, but then pretty quickly they started commercializing. But if someone got in truly on the ground floor it was pretty informal, academic and free. Getting a block of IPv4 was pretty easy/free for a long while into the 90s as well.
by Thorrez | 2025-09-07 13:25:36+00:00
>Does that mean I can make a post like this?

No. Just because there's a blog post about a fixed vulnerability doesn't imply that it's ok to write a blog post about an unfixed vulnerability.

I'm not saying it's wrong to post a blog post about an unfixed vulnerability. I'm just saying that the existence of a blog post about a fixed vulnerability has no impact on whether it's ok or not to post a blog post about an unfixed vulnerability.
by umanwizard | 2025-09-07 13:25:47+00:00
I think you’re agreeing with me. My point was that the tzdb named zones do not provide a generally accepted way to denote “the time in Tucson” or “the time in San Francisco” that would be robust to those splitting from Phoenix or LA, respectively. You need to use some system other than tzdb named zones for that purpose (e.g. lat/long, like you mentioned).
by bluGill | 2025-09-07 13:27:03+00:00
The billion was the rewrite, not continued maintenance. So billion over around 7-10 years (the early releases greatly lacked features but some of the features had maintenance work done and additional features added while other parts of the rewrite were in progress). But yes at least 200 developers have worked on the project every year, not to mention a lot of testers and such. this is normal for all the different companies I've worked at.

you can perhaps guess based on my comment history but I'm not supposed to state directly.
by imiric | 2025-09-07 13:27:09+00:00
This amuses me to no end: https://github.com/bmad-code-org/BMAD-METHOD/issues/546

An AI tool finding issues in a set of YAML and Markdown files generated by an AI tool, and humans puzzled by all of it.

> We should really have some code reviewer...

Gemini to the rescue!
by the_af | 2025-09-07 13:27:26+00:00
Apparently, due to cultural, political and economical issues, South Korea cannot/won't do this. I suppose it theoretically could, but in practice it would mean it would cease to exist as it is now.

Due to the scale of their population collapse, the influx of immigrants would have to be massive. Which country does that? It would completely overtake its native ethnic population... which unlike a country built on immigration like the US, is surprisingly homogeneous.

I'm no expert, I encourage you to read on the matter. It apparently truly is something that cannot be stopped now. It surprised me as much as it (apparently) does you.

By the way, countries that are better off, like the US, are largely helped by immigration indeed. Which is why anti-immigration policies would be like shooting themselves in the foot.
by oftenwrong | 2025-09-07 13:27:42+00:00
Protobuf is typically serialised using a TLV-style encoding.

https://protobuf.dev/programming-guides/encoding/

A major value of protobuf is in its ecosystem of tools (codegen, lint, etc); it's not only an encoding. And you don't generally have to build or maintain any of it yourself, since it already exists and has significant industry investment.
by paseante | 2025-09-07 13:28:19+00:00
Yeah I also left my website hosted on Google Cloud because costs popped from everywhere, and there is basically no built-in functionality to limit them. So I didn't really slept relaxed (I actually slept great, but I hope you get the point) knowing that a bug could cost me... who knows how much. Actually, as the website of OP says, for spending control you have budget notifications and with that you can disable the billing for all the project altogether through some API call or something, I don't remember exactly, that is all there is. But still it looks like this functionality is just not there.
by sungam | 2025-09-07 13:28:56+00:00
Thanks, this is a good point - I think a 50:50 balance of cancer versus harmless lesions would be better and will change this in a future version.

Of course in reality the vast majority of skin lesions and moles are harmless and the challenge is identifying those that are not and I think that even a short period of focused training like this can help the average person to identify a concerning lesion.
by 123454 | 2025-09-07 13:28:59+00:00
Tired of following the same path as everyone else?

Break free from the algorithm and discover the city's hidden soul.

Krow is the navigation app that guides you "as the crow flies," creating a direct, off-grid route to your destination.

Find secret alleyways, hidden cafes, and urban art you'd never see on a standard map.

It’s not about the fastest way; it’s about your way.

Ready to explore differently? Download Krow now and start your adventure, it's free.
by ACCount37 | 2025-09-07 13:29:17+00:00
How high are those "high energy costs" - compared to other common hobbies or recreational activities?

I mean things like watching Netflix on a large screen TV in 4K, playing Battlefield 6, cooking a very fancy meal, doing recreational shopping, or simply driving to any location that's 30 minutes away.

I find it incredibly hard to imagine that a few minutes of GPT-5 inference are somehow the most "energy intensive" way to spend your idle time.
by thunderbird120 | 2025-09-07 13:31:19+00:00
Precision bombing during WW2 was not possible at the required scale. To put a bomb precisely on target back then you needed something like a dive bomber, a tactic which is incompatible with strategic-scale bombing. Even "precise" methods using advanced analog computers like the Norden bombsight could only do so much.

>Under combat conditions the Norden did not achieve its expected precision, yielding an average CEP in 1943 of 1,200 feet (370 m)[1]

This means that 50% of bombs fell within 1,200 feet of the target, which is an absolutely awful accuracy if you're trying to hit anything specific.

This was further compounded during the campaign against Japan by the heavy reliance of Japanese wartime industry on cottage industries which were dispersed almost randomly within Japanese population centers, rather than being located within specialized industrial districts. From a purely strategic standpoint which is only concerned with destroying the enemy's ability to make war, the most effect way to disrupt these kinds of industry with 1945 technology was essentially to burn every building in the city to the ground. Other options were simply ineffective.

[1]https://en.wikipedia.org/wiki/Norden_bombsight
by sungam | 2025-09-07 13:31:46+00:00
Basal cell carcinomas can look very similar to other harmless skin lesions. The key thing is that they will not resolve with time and will slowly grow whereas a rash, pimple or scratch will resolve over a few months.

Fortunately basal cell carciomas are very slow growing and do not spread elsewhere in the body or cause other health issues and a delay of a few months in diagnosis does not have a big impact on outcome.
by akio | 2025-09-07 13:31:46+00:00
> Appointments become past events. Sounds like an operational nightmare to convert all of them right as they become past events.

That is fair. In some models there's a natural separation between a scheduled-at time and a happened-at time (e.g., in one I worked on scheduled_events was a separate table from past_events), but I accept that's certainly not all, or even most. I shouldn't have made such a blanket statement. I do believe the statement is good advice in cases where your data does not mix both future and past times.

> Sometimes those costs are worth it, but certainly not for every use case.

This is also fair. My experience with time zones has been the more correct I can make my time models, the better I sleep at night, but of course you're right engineering involves tradeoffs. I think it's important to at least know the most correct way so that you are making educated decisions in your tradeoffs.

Also, FWIW I'm not the person you originally replied to, although the Ukraine example was mine.
by kragen | 2025-09-07 13:31:49+00:00
That wasn't the early days of the internet. It was free when I registered ear.org in probably 01994, 24 years after the ARPANET started and 16 years after the first TCP/IP internet nodes. You just had to have a nameserver set up.

Shortly after that they started charging, and I hadn't carried out my plans with it, so I let it go, figuring that someone else would make better use of it.

They didn't.
Show HN: Kindred (HN summaries)
by jasfi | 2025-09-07 13:32:42+00:00
Hi HN,

Kindred is an AI social-media post summarizer, and to start with I've focused on HN. I primarily built this because I needed something like it myself, to save time on keeping up-to-date with HN stories and comments.

You can also save your interests to rank posts by what you find interesting. Although you may want to sign-in to remember those permanently.

I have some improvements in mind for the site, but I'd also like to know what others may want to see before I proceed any further.

Thanks, Jason
by vbezhenar | 2025-09-07 13:33:09+00:00
Sounds like very simple task to solve.

You have Table component.

You have TableData interface. Table component asks TableData interface for data to show.

You have TableCallback interface. When user interacts with Table, like click or whatever actions are implemented, TableCallback methods are called.

When you want to use Table with your data, you implement TableData and TableCallback for your data. That's about it.

I've seen this approach implemented in most UI frameworks. You might rename TableData to TableModel or whatever, but essentially that's it.
by ah1508 | 2025-09-07 13:33:21+00:00
Thanks for your answer.

Without the proxy the client would request a specific instance of the API (university 1, university 2, NGO 1, NGO 2), which then would be responsible for forwarding the data to the other. What if he changes the code and forward a false data:

user A votes for candidate X (HTTP POST request received by API deployed at university 1). API deployed at university A is compromised (by the university itself or not) and the information persisted in the DB is "user A votes for candidate Y". This information is then forwarded to other API.

If a proxy like NGINX is responsible for request forwarding the problem is solved (assuming that all parties trust nginx and its "mirror" module). https://nginx.org/en/docs/http/ngx_http_mirror_module.html
by martin-t | 2025-09-07 13:33:41+00:00
> I don’t mean to direct this entirely at you

I don't buy this. "Get help" is a well-known gaslighting tactic used by abusers to discredit their target. It does not make sense in a "generic" sense.

> You will likely not be seen to be a good actor in the moment due to others not knowing what you know, nor can you count on them to share your opinion on proper interventions in exigent circumstances then or after the dust settles.

Of course, because the others don't have the same standard of proof, until and unless I also provide it.

This is why I talk about provability vs reality.

All I am saying is if the state or anybody else gets involved it has to take previous actions into account.

---

People seem to get uncomfortable when talking about killing so let's talk about stealing instead.

This is the same as the right to steal back. It's very common for police to not investigate theft. It's also common for people to put GPS trackers in their bikes or tracking SW in their electronics, exactly for this case. But sometimes when people steal their property back (again, assuming they have sufficient proof it's the same item, not just the same model), it happens that the original thief then tries using the police against them. This is wrong. The law should match morality, when something is mine, it's still mine even if it's currently in a thief's possession, and I have the right to use my property as I see fit.

And of course, it gets more complicated if the thief managed to resell it in the meanwhile and we can discuss how to maximize justice given uncertainly and lack of provability for all parties involved. But that requires not rejecting the idea in the first place based on "it's complicated".

> nor do I want you to intervene in such a way that now we have two or more problems

This reads as concern trolling. I am well-aware of the potential for confusion of aggressor and victim. it's the hardest part of true justice. Aggressors always have the same tools as victims.

That's why I am not saying people should go out and do the morally right thing now (as you say advocating violence), I am instead saying we should figure out better rules for how to resolve the situations given each party's imperfect information and the law should chance to align with morality.
by senko | 2025-09-07 13:33:53+00:00
Here's what Perplexity Pro deep research has to say about it (pasting only the conclusion for brevity):

The article's claim that cognitive ability peaks between ages 50-60 contains elements of truth but is misleading in its breadth and certainty. While longitudinal research does show that cognitive decline is less severe and starts later than cross-sectional studies suggested, the evidence does not support a simple peak in the 50-60 range for overall cognitive ability.

Key takeaways:

Crystallized intelligence may continue improving into the 50s and 60s

Different cognitive abilities peak at different ages

Individual variation is enormous

Methodological issues in both cross-sectional and longitudinal studies complicate interpretation

The 50-60 "peak" claim oversimplifies a complex, multifaceted process

Rather than a single peak age range, the evidence supports a differentiated model of cognitive aging where various abilities follow distinct trajectories, with substantial individual differences influenced by health, education, lifestyle, and genetic factors.
by HarHarVeryFunny | 2025-09-07 13:34:09+00:00
Sure, but the nature of the model can only reflect the inputs (incl. corrections) that it was built around. A theoretical model of the aerodynamics of a curve ball isn't going to make the physics prof an expert pitcher, maybe not able to throw a curve ball at all.

Given the widely different natures of a theoretical "book smart" model vs a hands-on model informed by the dynamics of the real world and how it responds to your own actions, it doesn't seem useful to call these the same thing.

For sure the LLM has, in effect, some sort of distributed statistical model of it's training material, but this is not the same as knowledge represented by someone/something that has hands-on world knowledge. You wouldn't train a autonomous car to drive by giving it an instruction manual and stories of peoples near-miss experiences - you'd train it in a simulator (or better yet real world), where it can learn a real world model - a model of the world you want it to know about and be effective in, not a WORD model of how drivers are likely to describe their encounters with black ice and deer on the road.
by cubefox | 2025-09-07 13:34:12+00:00
The more efficient versions compress the entire material stack in one, to exploit inherent redundancies, including albedo, normals, roughness etc. The main problem, as far as I can tell, is the increased GPU performance cost compared to block compression. Though recent research shows some versions are already pretty manageable on modern GPUs with ML acceleration: https://arxiv.org/abs/2506.06040

They cite 0.55ms per frame at 1080p on a recent Intel GPU. The budget for one frame at 60 FPS is 16.7ms, so the performance cost would be 3.3% of that. Though higher resolutions would be more expensive. But they mention there is room for performance improvements of their method.

The other problem is probably that it isn't very practical to ship multiple versions of the game (the old block compressed textures for lower end hardware without ML acceleration), so adoption may take a while.
by csa | 2025-09-07 13:35:14+00:00
> I think it needs to be said that people who choose those careers are probably one of the worst kinds of people.

I’m guessing you’ve never met any special operations people, much less folks from the SMUs. I have met many. 100% A+ people. I’m sure there are bad apples, but I’ve never met one.

> They choose to use their unique, advantageous talents to murder people on command.

Rules of engagement are a thing — a very real thing.

For those who are interested, here is an interview with a very active former Delta Force operator. There are interesting stories about selection, rules of engagement, the stresses of doing the type of work he did, and life after the military.

https://m.youtube.com/watch?v=NAxQC1NkCxU
by billy99k | 2025-09-07 13:36:46+00:00
This happened to me after an acquisition. I was on my way to becoming a director before our company was acquired and they ended up firing my boss and keeping me in place, with no more room to grow (and stringing me along about starting a new department that I would lead, which was never going to happen).

I used the extra time to start a consulting business and 3X my salary. When I was finally laid off a few years later, I just laughed and continued with my already successful consulting career.

The company was so dysfunctional, nobody really knew what I was doing. When asked, I would just say I was "really busy"/mention some technical stuff I was working on and I would always answer questions immediately from co-workers and management on Teams, to give everyone the idea that I Was still working hard.

What got me in the end was a new VP was hired and looked at the yearly budget. He started questioning why he really needed me and I was gone.

"When my coworker was leaving, I learned that he was earning 2x my salary."

Why would you assume you are worth 2X to the company or any more? Your co-worker might have had more experience than you.

One time, an excel spreadsheet with salaries was leaked at work and I learned I was paid 50% higher than a co-worker in the same position. Multiple things determined this: I had more experience/education and I was better at negotiating my salary when I was hired.

"He told me he'd promote me if I do some project. I went above and beyond,"

I'm not sure how much you were expecting as a raise, but it would have never been even close to 100%. Companies just don't do this.
by sungam | 2025-09-07 13:37:32+00:00
Look for any new skin lesion that is not resolving with time especially if persisting for a number of months. You can take photos of different body sites and repeat every couple of months and then put the two photos side by side on a computer screen to look for any difference. If unsure about the lesions that are present then worth getting a full skin check with a dermatologist as a baseline so that you then just need to look for new/changing lesions.

Photos of basal cell carcinoma (no affiliation): https://dermnetnz.org/topics/basal-cell-carcinoma
by estearum | 2025-09-07 13:38:29+00:00
Just to be clear since "oppression" is a very broad term: the Navajo (and most other Native American tribes) are victims of genocide. It was a far, far, far more systematic destruction effort than mere marginalization.

Children were stolen, forbidden from learning their native language, killed en masse, food supplies were destroyed, land was continuously taken from them the second anything valuable was discovered on it, etc. etc.

It's really horrific stuff and the effects are still extremely clear on the reservations today.
by jmclnx | 2025-09-07 13:38:30+00:00
I have no opinion on Windows Apps, but as a Developer, Windows Applications gives me nothing that is better than what Linux has. In fact, for development Linux (or BSD) is what developers should use.

In fact, I was trying to convince developers at work (fortune 500 company) to move from Windows to Linux for a long time, only 1 person moved.

For a bit of cruel fun, have a Finance person use Libreoffice scalc instead of Excel. Doing that is probably the worse thing you can do to a Finance person, I think after a few days of that, they will end up in ICU.

FWIW, we were allowed to use RHEL, Fedora or Ubuntu on our workstations instead of Windows.