MurphyA/hacker-news huggingface dataset:
by badosu | 2025-08-22 08:35:32+00:00
> The intention here seems to be to filter out low quality submissions for which the only purpose is to only pimp Github resume for having contributions in highly starred repo. Not sure if the people doing that will be disclosing use of AI anyway.

That is a fair way to see it, and I agree that it is a losing battle if your battle is enforcing this rule.

However, from a different perspective - if one sees it more as a gentlemen agreement (which it de facto is) - it fosters an environment where like-minded folks can cooperate better.

The disclosure assists the reviewer in finding common issues in AI generated code, the specificity of the disclosure even more so.

For example, a submitter sends a PR where they disclose a substantial amount of the code was AI assisted but all tests were manually written. The disclosure allows the reviewer to first look at the tests to gauge how well the submitter understands and constrained the solution to their requirements, the next step being to then look at the solution from a high-level perspective before going into the details. It respects the reviewer time, not necessarily because the reviewer is above AI usage, but because without disclosure the whole collaborative process falls apart.

Not sure how long this can work though, it's still easy to distinguish bad code written by a human from AI slop. In the first case your review and assistance is an investment into the collaborative process, in the latter it's just some unread text included in the next prompt.
by Imustaskforhelp | 2025-08-22 08:36:04+00:00
Money laundering is just illegal.

There are definitely legal ways too that screws you over in this financial world.

You say that you wouldn't want to live in a world where money laundering dominates financial activity? Well how about a world where cryptocoins/multi level marketing/ai stickers/private equity parasites/land owners (almost parasites?) /billionaires dominates the financial activity??

I guess you or many others live in such a system. I am not even talking about United states, I feel like to a lot of countries, the same thing is true.
by spyrja | 2025-08-22 08:36:54+00:00
True. But then again, backward-compatibility isn't really such a hard to do with ASCII because the MSB is always zero. The problem I think is that the original motivation which ultimately lead to the complications we now see with UTF-8 was based on a desire to save a few bits here and there rather than create a straight-forward standard that was easy to parse. I am actually staring at 60+ lines of fairly pristine code I wrote a few years back that ostensibly passed all tests, only to find out that in fact it does not cover all corner cases. (Could have sworn I read the spec correctly, but apparently not!)
by hermitcrab | 2025-08-22 08:37:01+00:00
Russel Brand is the master of this. He will never use 1 word then he can use 10. And he talks so fast that it is hard to parse. By the time you can say 'hang on, that's BS' he has already moved on. He is also an extreme example of audience capture, moving from left-wing comedian to right-wing christian.
by ynik | 2025-08-22 08:37:41+00:00
Python 3 internally uses UTF-32. When exchanging data with the outside world, it uses the "default encoding" which it derives from various system settings. This usually ends up being UTF-8 on non-Windows systems, but on weird enough systems (and almost always on Windows), you can end up with a default encoding other than UTF-8. "UTF-8 mode" (https://peps.python.org/pep-0540/) fixes this but it's not yet enabled by default (this is planned for Python 3.15).
by klabb3 | 2025-08-22 08:37:43+00:00
> Like all polling I/O models (that don't spin) it also means you have to wait milliseconds in the worst case to start servicing a request. That's a long time.

No? What they're saying is the busy loop will spin until an event occurs, for at most x ms. And if it does park the thread (the only syscall required), it can be immediately woken up on the first event too. Only if multiple events occurred since the last call would you receive them together. This normally happens only under high load, when event processing takes enough time to have a buildup of new events in the background. Increased latency is the intended outcome on high loads.

To be fair, it was a while ago I read the io-uring paper. But I distinctly recall the mix of poll and park behavior, plus configurable wait conditions. Please correct me if I'm wrong (someone here certainly knows).
by Aissen | 2025-08-22 08:37:57+00:00
The article is a bit misguided, since it "forgets" to add a bit of context until the penultimate paragraph: Meta is investing 10 times as much in building internal infrastructure capacity — this year alone. This deal is a rounding error (<1.7B / year); and with the scale of cloud costs in general, it's probably even invisible at Meta scale.
by xelxebar | 2025-08-22 08:38:06+00:00
> Number of monospaced font character blocks this string will take up on the screen

Even this has to deal with the halfwidth/fullwidth split in CJK. Even worse, Devanagari has complex rendering rules that actually depend on font choices. AFAIU, the only globally meaningful category here is rendered bounding box, which is obviously font-dependent.

But I agree with the general sentiment. What we really about how much space these text blobs take up, whether that be in a DB, in memory, or on the screen.
by ftrobro | 2025-08-22 08:39:18+00:00
> allthough one would think they'd get 0% alcohol related cancers

I assume "alcohol related" in this context means that alcohol consumption increases the risk for those types of cancers, but you might still get those types of cancers even if you have never consumed any alcohol. And "less than once drink per week" is assumed to be almost the same as never consuming any alcohol at all, so 17% is the risk for women who never consume any alcohol.
by razodactyl | 2025-08-22 08:39:37+00:00
A viable consideration is that the models will hone in on and reinforce an incorrect answer - a natural side effect of the LLM technology wanting to push certain answers higher in probability and repeat anything in context.

Regardless of being in conversation or thinking context this doesn't prevent the model from speaking the wrong answer so the paper on the illusion of thinking makes sense.

What actually seems to be happening is a form of conversational prompting. Of course with the right conversation back and forth with an LLM you can inject knowledge in a way that causes the natural distribution to shift (again - side effect of the LLM tech.) but by itself it won't naturally get the answer perfect every time.

If this extended thinking were actually working you would expect the LLM to be able to logically conclude an answer with very high accuracy 100% of the time which it does not.
by yecol | 2025-08-22 08:41:31+00:00
While modern lakehouse platforms now natively support tables, geospatial data, vectors, and more, property graphs remain a missing piece. With the rise of AI and growing interest in Graph RAG, graphs are becoming increasingly relevant—there’s a clear need to deliver Knowledge Graphs into RAG systems with proper standards, ETL, and frameworks for different use cases.

A young project, Apache GraphAr (incubating), is aiming to define a storage standard. On the processing side, the ecosystem already has strong tooling: GraphFrames (akin to Spark for Iceberg—batch and distributed), Kuzu (akin to DuckDB for Iceberg—fast, in-memory, in-process), and Apache HugeGraph (akin to ClickHouse/Doris for graphs—a standalone server for queries).

There’s also work underway on graphframes-rs, which brings Apache DataFusion and its ecosystem into this landscape. With all these components available, the challenge now is to put the pieces together.
by sznio | 2025-08-22 08:41:52+00:00
I strongly believe that AI companies are running a DDOS attack on the open web. Making websites go down aligns with their intetests: it removes training data that competitors could use, and it removes sources for humans to browse, making us even more reliant on chatbots to find anything.

If it was crap coding, then the bots wouldn't have so many mechanisms to circumvent blocks. Once you block the OpenAI IP ranges, they start using residential proxies. Once you block their UA strings, they start impersonating other crawlers or browsers.
by TrackerFF | 2025-08-22 08:42:34+00:00
I've worked in a regulatory agency, albeit for a brief time. I worked with analyzing data, usually in cooperation with law enforcement, as part of some case or operation.

I don't know what to tell you - but my experience was that it is the most careless and obvious criminals that get caught. Some even being very rich, rich enough to afford solid defense teams, and rich enough to stay in court for a long time. These were also the very same type of people that would cry to the media about unfair treatment, witch hunts, etc.

But, as for why these agencies go after the money: It is much easier to prove money laundering, rather than the actual crime itself. Many of cases I worked on focused on companies that illegally harvested regulated natural resources, used unreported employees, and did not report their sales / trades. Off the market, under the table.

We co-operated with other regulatory agencies around the world, and I can tell you - in the more corrupt parts of the world, the effects can be devastating on the community: No honest companies can compete against the ones that operate illegally, dire working conditions, less tax funding to the local community. What happens is that these actors eventually become local monopolies, and start operate semi-legally, but that's what the community is stuck with. If you report those companies, you end up losing your own job - should the company go down. And since these players don't care about regulations anyway, whatever natural resources they harvest, can risk being wiped out.

And to re-iterate: It is easier to follow the money. Usually in these cases, where there's smoke, there's fire.
by themafia | 2025-08-22 08:43:19+00:00
> and someone tried to bring it to market today it would never fly

In a regulatory domain? Perhaps not; however, we did try prohibition. It didn't go well.

> Should have skull and crossbones on it.

Which didn't work. So some people go the idea to poison it. Then people learned to re-distill it to avoid the blindness it would otherwise cause.

> Makes about as much sense as huffing gasoline

Most people don't regularly drink to the kinds of excess that would make this an apt comparison.
by simianwords | 2025-08-22 08:44:08+00:00
I don't buy this for the simple fact that benchmarks show much better performance on thinking than on non thinking models. Benchmarks already consider the generalisation and "unseen patterns" aspect.

What would be your argument against

1. COT models performing way better in benchmarks than normal models

2. people choose to use the COT models in day to day life because they actually find that it gives better performance
by rfoo | 2025-08-22 08:44:33+00:00
IMO the correct thing to do to make these people happy, while being sane, is - do not build llama.cpp on their system. Instead, bundle a portable llama.cpp binary along with unsloth, so that when they install unsloth with `pip` (or `uv`) they get it.

Some people may prefer using whatever llama.cpp in $PATH, it's okay to support that, though I'd say doing so may lead to more confused noob users spam - they may just have an outdated version lurking in $PATH.

Doing so makes unsloth wheel platform-dependent, if this is too much of a burden, then maybe you can just package llama.cpp binary and have it on PyPI, like how scipy guys maintain a https://pypi.org/project/cmake/ on PyPI (yes, you can `pip install cmake`), and then depends on it (maybe in an optional group, I see you already have a lot due to cuda shit).
by teekert | 2025-08-22 08:44:35+00:00
Ah yes that must be it. 17% of women get these cancers, which are cancers that you have a higher risk of when drinking, but in this case they are not caused by drinking. I though < 1 per day is still drinking 6 special Belgian beers of 8-10 % alcohol on a Saturday so I thought, that's still quite something. At least I'd be heavily hung over the next day. I expected the baseline to just be "non-drinking".

Very poorly written I'd say.
by thrdbndndn | 2025-08-22 08:45:07+00:00
I see where you're coming from, but I disagree on some specifics, especially regarding bytes.

Most people care about the length of a string in terms of the number of characters.

Treating it as a proxy for the number of bytes has been incorrect ever since UTF-8 became the norm (basically forever), and if you're dealing with anything beyond ASCII (which you really should, since East Asian users alone number in the billions).

Same goes to the "string width".

Yes, Unicode scalar values can combine into a single glyph and cause discrepancies, as the article mentions, but that is a much rarer edge case than simply handling non-ASCII text.
by xg15 | 2025-08-22 08:45:32+00:00
The article both argues that the "real" length from a user perspective is Extended Grapheme Clusters - and makes a case against using it, because it requires you to store the entire character database and may also change from one Unicode version to the next.

Therefore, people should use codepoints for things like length limits or database indexes.

But wouldn't this just move the "cause breakage with new Unicode version" problem to a different layer?

If a newer Unicode version suddenly defines some sequences to be a single grapheme cluster where there were several ones before and my database index now suddenly points to the middle of that cluster, what would I do?

Seems to me, the bigger problem is with backwards compatibility guarantees in Unicode. If the standard is continuously updated and they feel they can just make arbitrary changes to how grapheme clusters work at any time, how is any software that's not "evergreen" (I.e. forces users onto the latest version and pretends older versions don't exist) supposed to deal with that?
by boredpudding | 2025-08-22 08:45:42+00:00
It's solved, full write-up here: https://www.reddit.com/r/MinecraftUnlimited/comments/1cvo5py...

Tl:dr; It was a release file for their Minecon event. It was never meant to be public. Obsessing over a password protected in a company's S3 bucket is weird and crosses many limits.
by arcticbull | 2025-08-22 08:46:52+00:00
Substring operations (and more generally the universe of operations where there is more than one string involved) are a whole other kettle of fish. Unicode, being a byte code format more than what you think of as a logical 'string' format, has multiple ways of representing the same strings.

If you take a substring of a(bc) and compare it to string (bc) are you looking for bitwise equivalence or logical equivalence? If the former it's a bit easier (you can just memcmp) but if the latter you have to perform a normalization to one of the canonical forms.
by mettamage | 2025-08-22 08:48:06+00:00
Sure, but so is society on our psychological health in general. Apparently, we're so anxious that a lot of us subconsciously feel we need to drink in order to just have an actual conversation.

Social anxiety is the true poison in society. Without it, we wouldn't drink nearly as much.

I have nuanced takes that don't agree with the take that I just wrote, but I find there to be a kernel of truth in it. I've fought social anxiety for years, and started out clubbing sober when I was 17. I did start drinking around 18 but mostly out of curiosity. It was only around the age of 30 that I really noticed that by then I did it to alleviate social anxiety. It caught me off-guard since my teenage self would scoff at the idea of it. I'd never need alcohol to alleviate my social anxiety, I'd just grit through it and talk to whomever I want. I think I just became a bit comfortable and soft. It's easy-ish for me to switch back though due to the reference experiences I have being a teen, dealing with social anxiety sober. So that's a huge blessing. Not everyone is that lucky.
by chrismorgan | 2025-08-22 08:48:25+00:00
Previous discussions:

• https://news.ycombinator.com/item?id=36159443 (June 2023, 280 points, 303 comments; title got reemojied!)

• https://news.ycombinator.com/item?id=26591373 (March 2021, 116 points, 127 comments)

• https://news.ycombinator.com/item?id=20914184 (September 2019, 230 points, 140 comments)

I’m guessing this got posted by one who saw my comment https://news.ycombinator.com/item?id=44976046 today, though coincidence is possible. (Previous mention of the URL was 7 months ago.)
by Imustaskforhelp | 2025-08-22 08:48:46+00:00
I genuinely don't understand why mixing plus swapping into monero doesn't make sense.

Simply swap into monero and then send it to anybody else.. Maybe lets say you have 100$ in btc, you convert it to 100$ in monero and just spend 10$ 10 times in a span of a week and I am sure that nobody can keep track of it.
by rkomorn | 2025-08-22 08:49:36+00:00
Perhaps you overestimate me (or underestimate Beaujolais Nouveau (though how one could underestimate Beaujolais Nouveau is a mystery to me, but I digress)).

But also, it takes a lot of actual learning of facts and understanding reasoning to properly leverage that schooling and I've had to accept that I am somewhat deficient at both. :)
by arcticbull | 2025-08-22 08:51:45+00:00
Apparently Python uses a variety of internal representations depending on the string itself. I looked it up because I saw UTF-32 and thought there's no way that's what they do -- it's pretty much always the wrong answer.

It uses Latin-1 for ASCII strings, UCS-2 for strings that contain code points in the BMP and UCS-4 only for strings that contain code points outside the BMP.

It would be pretty silly for them to explode all strings to 4-byte characters.
by traceroute66 | 2025-08-22 08:53:20+00:00
> I go out of my way to support local business.

Let me tell you a little story my friend ....

Near my friend's house, there used to be a little mulit-generation "mom & pop" hardware shop.

It was an aladdin's cave. As a customer the place looked a mess, floor to ceiling (and even the ceiling !) covered in hardware widgets. But the owner could wave his magic wand and go find exactly what you wanted.

One day, across the street, a new shop opened. It was the "click & collect" branch for a large national hardware retailer.

All the builders and electricians that used to shop at the little shop moved over to the large retailer because they had all their trade discounts.

The little shop couldn't survive on the random home owner just popping into buy a single screw or a short length of cable. So they shut down.

Fast forward a few years and along comes Mr Property Developer. Takes one look at the patch where the large national retailer's shop is and thinks "ooh, that looks nice".

So they bought out those shops, knocked them down and turned the plot into a high-rise instead. But the national retailer survived because by then most people were getting stuff delivered to site from online orders by couriers and not doing many collections.

So dream all you like about "support your local business". But the reality is that its more like Darwin's theory of evolution out there. Those who can adapt thrive. Those who don't will be eaten by a predator.

The reality is its 2025, we live in an ever increasing online world, and all these "local businesses" of which you speak need to learn that online footfall is just as important (if not more important) than the traditional walk-in footfall.
by spyrja | 2025-08-22 08:53:39+00:00
Just as an example of what I am talking about, this is my current UTF-8 parser which I have been using for a few years now.

bool utf_append_plaintext(utf* result, const char* text) { #define msk(byte, mask, value) ((byte & mask) == value) #define cnt(byte) msk(byte, 0xc0, 0x80) #define shf(byte, mask, amount) ((byte & mask) << amount) utf_clear(result); if (text == NULL) return false; size_t siz = strlen(text); uint8_t* nxt = (uint8_t*)text; uint8_t* end = nxt + siz; if ((siz >= 3) && (nxt[0] == 0xef) && (nxt[1] == 0xbb) && (nxt[2] == 0xbf)) nxt += 3; while (nxt < end) { bool aok = false; uint32_t cod = 0; uint8_t fir = nxt[0]; if (msk(fir, 0x80, 0)) { cod = fir; nxt += 1; aok = true; } else if ((nxt + 1) < end) { uint8_t sec = nxt[1]; if (msk(fir, 0xe0, 0xc0)) { if (cnt(sec)) { cod |= shf(fir, 0x1f, 6); cod |= shf(sec, 0x3f, 0); nxt += 2; aok = true; } } else if ((nxt + 2) < end) { uint8_t thi = nxt[2]; if (msk(fir, 0xf0, 0xe0)) { if (cnt(sec) && cnt(thi)) { cod |= shf(fir, 0x0f, 12); cod |= shf(sec, 0x3f, 6); cod |= shf(thi, 0x3f, 0); nxt += 3; aok = true; } } else if ((nxt + 3) < end) { uint8_t fou = nxt[3]; if (msk(fir, 0xf8, 0xf0)) { if (cnt(sec) && cnt(thi) && cnt(fou)) { cod |= shf(fir, 0x07, 18); cod |= shf(sec, 0x3f, 12); cod |= shf(thi, 0x3f, 6); cod |= shf(fou, 0x3f, 0); nxt += 4; aok = true; } } } } } if (aok) utf_push(result, cod); else return false; } return true; #undef cnt #undef msk #undef shf }

Not exactly "simple", is it? I am almost embarrassed to say that I thought I had read the spec right. But of course I was obviously wrong and now I have to go back to the drawing board (or else find some other FOSS alternative written in C). It just frustrates me. I do appreciate the level of effort made to come up with an all-encompassing standard of sorts, but it just seems so unnecessarily complicated.
by hyperman1 | 2025-08-22 08:54:13+00:00
I landed in python last year, the pre uv time for me. The language itself is fine, but the project organization sucked. What kind of folder structure to choose? Do I use pip, env, pipenv, poetry? How to format, and with which settings? I've read tens of blog post, all giving different choices, all equally reasonable, all having some downsides.

The great thing about uv is not that their choices are best, it's that the choices have been made, the gordian knots cut. There is a good enough standard to build upon. Future python projects will look a lot more like each other, and less time will be wasted on organizational minutiae.
by Rohansi | 2025-08-22 08:54:15+00:00
Yes, consoles, phones, and web are the hard ones to support due to a lack of JIT support. That's going to take some time to resolve. Especially since Native AOT is much more restrictive than IL2CPP.

IMO Burst was a mistake. C# running under .NET runs significantly faster without needing to write code differently. And if you need to go even faster you can write code differently to make use of modern C# features to boost performance rather than relying on a secondary compiler that only allows a subset of C#.
by reify | 2025-08-22 08:54:38+00:00
two come to mind

Mike Hunt and Wayne Kerr

As stupid single cell molusc undergraduates at out local pub, we used to phone the bar maid and ask if she could give a shout out for Mike Hunt, to see if he was in the bar.

This was before mobile phones, there was a phone kiosk in the entrance foyer

She used to walk around the two bars shouting. Has anyone seen Mike Hunt.

it was hilarious
by haute_cuisine | 2025-08-22 08:54:48+00:00
The benefit will go to the buyer as 20% more road for the same price. The road workers will get performance reviews now, as any slack will drop production to a higher degree. The stuff turnover will increase as people can maintain that performance level only during short period of time and any injury will disqualify you instantly.

There will be more buyers because more people can afford road at that price and other businesses will benefit from more roads: shops can sell more tires, road repair and snow cleaning companies will have more work. Road building companies will delay hiring new hands as long as possible.

At the end, what we'll end up doing is working more for less money under higher pressure because any slack multiplies faster. With more companies buying cheaper services, there will be less stable companies who shouldn't be in the business anyways but who now is on the verge of bankruptcy and will make life of other businesses way more stressful and unpredictable.