MurphyA/hacker-news huggingface dataset:
by softwaredoug | 2025-08-22 15:59:49+00:00
I wrote a list of dangerous things to look out for in toxic colleagues, trying to be objective, so as not to think anyone I'm annoyed by is "toxic"

Inability to apologize / repair was near the top of the list. Everyone makes a lot of interpersonal mistakes. Most people can apologize.

Another big one was "norms for thee, but not for me". As in the rules we create as a team don't apply to me. But apply to everyone else. The toxic person gets to use them as a cudgel, but they don't seem to be bound by them.

Another one is being very thin-skinned. Easily jumping into a kind of victim mentality (surprisingly common even in leaders) where they are the ones being put upon. Being a victim, they are justified in doing whatever it takes to correct the situation

Related to that last one, many of these folks feel like they're taking on more than their share and have to carry the team. They may have a narrative they are the brilliant person on the team that has to fix everyone else's screwups. Or the team can't live without their unique skills. Therefore they're "special" and get to act outside the rules / norms. And other leaders can feed into this when they think the special person is indispensable, turning a blind eye to their bad behavior.
by andreashaerter | 2025-08-22 15:59:51+00:00
I can't say whether those claims are true. But even if they were, it feels selective. Every major AI company trained on oceans of data they didn't create or own. The whole field was built on "borrowing" IP, open-source code, academic papers, datasets, art, text, you name it.

Drawing the line only now... saying this is where copying stops being okay doesn't seem very fair. No AI company is really in a position to whine about it from my POV (ignoring any lawyer POV). Cue the world's smallest violin
by bwfan123 | 2025-08-22 15:59:59+00:00
> Concurrency is tricky

The go language and its runtime is the only system I know that is able to handle concurrency with multicore cpus seamlessly within the language, using the CSP-like (goroutine/channel) formalism which is easy to reason with.

Python is a mess with the gil and async libraries that are hard to reason with. C,C++,Java etc need external libraries to implement threading which cant be reasoned with in the context of the language itself.

So, go is a perfect fit for the http server (or service) usecase and in my experience there is no parallel.
by const_cast | 2025-08-22 16:00:10+00:00
I mean from an outsiders perspective on Rust this is how I saw it.

Rust is in a strange place because they're a systems language directly competing with C++. Async, in general, doesn't vibe with that but green threads definitely don't.

If you're gonna do green threads you might as well throw in a GC too and get a whole runtime. And now you're writing Go.
by lbrito | 2025-08-22 16:00:14+00:00
That's true, however, not so great of an issue because there's a kind of natural selection happening: if the package is popular, other people will eventually read (parts of, at least) the code and catch the most egregious problems. Most packages will have "none" like you said, but they aren't being used by that many people either, so that's ok.

Of course this also applies to hypothetical LLM-generated packages that become popular, but some new issues arise: the verbosity and sometimes baffling architecture choices by LLM will certainly make third-party reviews harder and push up the threshold in terms of popularity needed to obtain third party attention.
by computerex | 2025-08-22 16:00:22+00:00
I find it hilarious you felt the need to make this comment in defense of American LLMs. You know that American LLMs aren’t trained ethically either, right? Many people’s data was used for training without their permission.

BTW DeepSeek has contributed a lot, with actual white papers describing in detail their optimizations. How are the rest of the American AI labs doing in contributing research and helping one another advance the field?
by brailsafe | 2025-08-22 16:00:23+00:00
> Put systems into place that prevent it from happening again

In addition to what you said overall, I think bad managers can have all sorts of qualities, but imo the worst ones correct for mistakes to protect themselves or people's impressions of them, leaning highly neurotic, and can't deal with conflict well, so they put in arbitrary systems in order to indirectly deal with any one-off grievance or mistake. Bad managers won't evaluate or re-evaluate the systems they put in place because they put them there to protect their ego.

"Surely this employee is underperforming because I don't like how they're performing and we have a system for that!"

They struggle to adapt to their new job because to delegate sufficiently they need to be able to trust, and let that manifest as other people doing the tasks they might have once done without their hands in the pie directly. They might assume that part of the reason they got the job was because they're great communicators, and never consider that actually that it's just that nobody ever told them they have some growing to do.
by empath75 | 2025-08-22 16:00:28+00:00
> It's never been clear to me where such a type is actually useful. In what cases do you really need to restrict it to valid UTF-8?

Because 99.999% of the time you want it to be valid and would like an error if it isn't? If you want to work with invalid UTF-8, that should be a deliberate choice.
by mindslight | 2025-08-22 16:00:41+00:00
I don't see how that is a more useful model than what I said. Maybe for rallying people to oppose the current problems. But it feels like such preaching to the choir mainly serves to exacerbate the "culture war" that helps shut off people's thinking to begin with. So pushing that way might help win the immediate battle, but it also helps lose the overall war.
by the_mitsuhiko | 2025-08-22 16:00:53+00:00
> It's a contrived example which I have never really experienced in my own code (and at this point, I've written a lot of it) or any of my team's code.

It's confusing enough that it has an FAQ entry and that people tried to get it changed for Go 2. Evidently people are running in to this. (I for sure did)
Ask HN: Payments are fixed for freelancers in India. Why not compliance?
by navemics | 2025-08-22 16:01:26+00:00
I’ve been talking to a lot of freelancers, contractors, and creators in India who earn from abroad.

One pattern keeps showing up: → Getting paid has become almost frictionless thanks to tools like Skydo and Infinity. → But the moment compliance enters (GST, TDS, FEMA filings, CA coordination), everything feels stuck in the past.

People told me about juggling spreadsheets, pinging accountants on WhatsApp, and panicking near deadlines. The contrast is striking: the money rails have modernized, but the compliance rails are still manual, fragmented, and stressful.

It made me wonder: → Why did cross-border payments modernize so quickly, but compliance got left behind? → Is it the complexity of regulations, lack of incentives for builders, or just that “tax” isn’t an exciting problem to solve?

Are there examples anywhere (India or elsewhere) where this has been done well?

For transparency: I co-founded taxtap.in ↗ to try solving this for Indian freelancers and contractors. This post isn’t meant as a pitch — I’m more interested in hearing from this community. If you’ve built in fintech, struggled with Indian compliance, or just have thoughts on why this gap exists, I’d love to learn from you.
by ux266478 | 2025-08-22 16:02:12+00:00
FP is principally about function composition, folds and zippers. I still find myself thinking in terms of iteration, it's just not expressed as a for-loop. Instead, the iteration conditions are expressed by the composed function which builds a list, and the body of the for-loop is expressed by the composed function applied to the members of the list.

for(int i = 0; i < N; ++i) { ... }

becomes

foldl (fn (i, acc) => ...) 0 (range N)

It's technically recursion, but I don't really see any of it, and I don't really think about it that way.
by mathiaspoint | 2025-08-22 16:02:52+00:00
The people in charge are largely hated by the electorate. They won by default effectively due to a quirk of how UK elections work (which was less of a problem when the monarch/aristocracy was still involved to counter balance things like this, but now that that's gone the state is effectively out of control.)

Unless by "democracy" you mean "sleepwalking administration everyone hates" the current UK government is unusually undemocratic.
by euroderf | 2025-08-22 16:02:56+00:00
> "everyone knows" that the foo setting is actually the setting for Frob, but with an LLM it'll happily try to configure Frob or worse, try to implement Foo from scratch.

Making the implicit explicit is a task for your documentation team, who should also be helping prep inputs for your LLMs. If foo and Frob are the same, have the common decency to tell the LLM...
by slowmovintarget | 2025-08-22 16:03:06+00:00
I don't know what you mean by "not discussed on twitter." That's where it happened. There were follow up posts, including explanations of who and what goaded that particular output stream for Grok. There was also an incessant stream of memes by people making fun of Grok, Elon, and X (all of it allowed).

The fact that LLMs become what is projected on them, in this case from outrage over a leftist saying how glad she was that white children died in a flood, was twisted to fit a narrative by the media. It was not suppressed. That woman did get her account nuked, but that was because of her own violations of the ToS.
by klodolph | 2025-08-22 16:03:14+00:00
Yeah, I avoided talking about Windows which isn’t UTF-16 but “int16 string” the same way Unix filenames are int8 strings.

IMO the differences with Windows are such that I’m much more unhappy with WTF-8. There’s a lot that sucks about C++ but at least I can do something like

#if _WIN32 using pathchar = wchar_t; constexpr pathchar sep = L'\\'; #else using pathchar = char; constexpr pathchar sep = '/'; #endif using pathstring = std::basic_string<pathchar>;

Mind you this sucks for a lot of reasons, one big reason being that you’re directly exposed to the differences between path representations on different operating systems. Despite all the ways that this (above) sucks, I still generally prefer it over the approaches of Go or Rust.
by lazide | 2025-08-22 16:03:50+00:00
I don’t remember it as not trusting smaller retailers (as in they would sell you fraudulent goods). I remember it as they would have old stock and try to charge you crazy high prices for it, if they had it at all.

Smaller online retailers, yeah there was trust issues, but a lot of that was due to ‘do they even exist’ and card fraud (due to someone stealing the numbers). That someone would just ship you bullshit was a rare thought. More like they’d just not actually even exist.

And at the beginning (before it got gamified by every scammer under the sun), Amazon was generally quite reliable (it was very rare to have a fake or fraudulent listing), a good way to get almost anything you needed, and quite fast. Not as fast as brick and mortar where you could walk over and get something (if they had it in stock), but WAY faster than almost any other online retailer.

Shipping bullshit/fakes/counterfeit has really taken off as Amazon has killed competition and ‘scaled’, to the point that Alibaba seems like the saner choice most of the time. Which is just nuts.

I agree on the shop local thing. It may be older/somewhat out of date. It may cost more. But you can see in person if it exists and what it actually looks like, and it’s exceptionally rare to have true fraud at brick and mortar because someone can actually go to jail where you live if it happens.

Random online seller? Good luck, even if it may be actual wire fraud or the like.
by xlii | 2025-08-22 16:04:16+00:00
I don't share experience about not being suitable about bare metal. But I do have experience with high level languages doing similar things through "innovative" thinking. I've seen int overflows in Rust. I've seen libraries that waited for UDP packet to be rebroadcasted before sending another implemented in Elixir.

No Turing complete language will ever prevent people from being idiots.

It's not only programming language API and syntax. It's a conceptual complexity, which Go has very low. It's a remodeling difficulty which Rust has very high. It's implicit behavior that you get from high stack of JS/TS libraries stitched together. It's accessibility of tooling, size of the ecosystem and availability of APIs. And Golang crosses many of those checkboxes.

All the examples you've shown in your article were "huh? isn't this obvious?" to me. With your experience in C I have no idea you why you don't want to reuse same allocation multiple times and instead keeping all of them separately while reserving allocation space for possibly less than you need.

Even if you'd assume all of this should be on stack you still would crash or bleed memory through implicit allocations that exit the stack.

Add 200 of goroutines and how does that (pun intended) stack?

Is fixing those perceived footguns really a missed opportunity? Go is getting stronger every year and while it's hated by some (and I get it, some people like Rust approach better it's _fine_) it's used more and more as a mature and stable language.

Many applications don't even worry about GC. And if you're developing some critical application, pair it with Zig and enjoy cross-compilation sweetness with as bare metal as possible with all the pipes that are needed.
by mingtianzhang | 2025-08-22 16:04:28+00:00
We wrote a short tutorial on vectorless RAG with a Table of Contents (ToC). In this tutorial, we use PageIndex to create an LLM-friendly ToC for retrieval instead of using chunking/vectors.

Since a ToC is the human way of doing retrieval, we believe AI should work more like humans—and also benefit from this method.

We’re keen to hear your feedback on this approach.
by _fzslm | 2025-08-22 16:04:28+00:00
If we do, we need to draw clear distinctions between different kinds of AI-driven development.

What % of human intervention was there? A module written for me by AI, that was tightly specced with function signatures and behaviour cases, is going to be far more reliable (and arguably basically is human developed) than something an AI just wrote and filled in all the blanks with.
by feoren | 2025-08-22 16:04:39+00:00
You're right that I have a general issue with how people use words versus how they think they use words. Yes, there are plenty of words that have this problem. People reach for definitions as some sort of argument-ender, without realizing how much those definitions rely on what are essentially arbitrary categorizations by an arbitrary authority. Those are two other peeves of mine: bad categorization and arbitrary authority.

There is actually a theory behind all this, based largely on the critically important fact that all models are wrong, but some models are useful. But yes, I recognize the futility of trying to fight this war in comment-sized battles in tangentially related Hacker News threads.

> until no meaningful conversation can happen

I believe accepting "all models are wrong, but some models are useful" is in fact a prerequisite for meaningful conversation, because otherwise people simply aren't even arguing about the same thing. What appears to you as a "linguistical scorched-earth policy" is something I can trace logically from that statement. Most arguments are actually arguments about definitions and categories, and therefore useless. I am trying to get people to abandon the category of "essential vs. non-essential" because it, like so many others, is arbitrary.
by numpad0 | 2025-08-22 16:04:43+00:00
Film needs to be developed to be able to see the content at all. Regular color films after shooting is covered in extremely photosensitive, opaque gray paste, and it needs to be washed and cleaned in temperature controlled acid bath to remove the reactive part and only leave the image on the film.

Tapes, on the other hand... You can just rewind it, play it, and overwrite a few times. Cost differences are significant to say the least.
by AnotherGoodName | 2025-08-22 16:05:20+00:00
>It doesn’t remember that last week we made a small refactor to make future development easier, or that I abandoned a particular idea as a dead end

Sometimes you need to keep the context and sometimes you need to reset it.

An example of needing to reset. Asking for X, later realizing you meant Y and having the LLM oscillates between them, on an unrelated request it adds X back in, removing Y. Etc.

Clearing the context solves the above. I currently do this by restarting the IDE in Intellij since there isn't a simple button to do it. It's a 100% required feature and knowing LLM contexts and managing them is going to be a basic part of working with LLMs in the future. Yet the concept of the need to do this hasn't quite sunk in yet. It's like the first cars not actually having brakes and the drivers and passengers used to get out and put their feet down. We're at that stage.

What we really need is detailed context history of the AI and a way to manage it well. "Forget i ever asked this prompt". "Keep this prompt in mind next time i restart the IDE" are both examples of extremely important and obvious functionality that just doesn't exist right now.
by klodolph | 2025-08-22 16:05:38+00:00
In practice, the validation generally happens when you convert to JSON or use an HTML template or something like that, so it’s not so many places.

Validation is nice but Rust’s principled approach leaves me high and dry sometimes. Maybe Rust will finish figuring out the OsString interface and at that point we can say Rust has “won” the conversation, but it’s not there yet, and it’s been years.
by robenkleene | 2025-08-22 16:05:53+00:00
> I strongly get the impression that the difference has a lot more to do with the programmers than their programming language.

The problem with this perspective is that anyone who works on more niche programming areas knows the vast majority of programming discussion online aren't relevant to them. E.g., I've done macOS/iOS programming most of my career, and I now do work that's an order of magnitude more niche than that, and I commonly see programmers saying thing like "you shouldn't use a debugger", which is a statement that I can't imagine a macOS or iOS programmer saying (don't get me wrong they're probably out there, I've just never met or encountered one). So you just become use to most programming conversations being irrelevant to your work.

So of course the majority of AI conversations aren't relevant to your work either, because that's the expectation.

I think a lot of these conversations are two people with wildly different contexts trying to communicate, which is just pointless. Really we just shouldn't be trying to participate in these conversations (the more niche programmers that is), because there's just not enough shared context to make communication effective.

We just all happen to fall under this same umbrella of "programming", which gives the illusion of a shared context. It's true there's some things that are relevant across the field (it's all just variables, loops, and conditionals), but many of the other details aren't universal, so it's silly to talk about them without first understanding the full context around the other persons work.
by TheDong | 2025-08-22 16:05:54+00:00
`string` is not an alias for []byte.

Consider:

for i, chr := range string([]byte{226, 150, 136, 226, 150, 136}) { fmt.Printf("%d = %v\n", i, chr) // note, s[i] != chr }

How many times does that loop over 6 bytes iterate? The answer is it iterates twice, with i=0 and i=3.

There's also quite a few standard APIs that behave weirdly if a string is not valid utf-8, which wouldn't be the case if it was just a bag of bytes.
by neckro23 | 2025-08-22 16:05:55+00:00
Not necessarily. A lot of video software either leverages the Windows/MacOS system codecs (ex. Media Player Classic, Quicktime) or proprietary vendor codecs (Adobe/Blackmagic).

Linux doesn't really have a system codec API though so any Linux video software you see (ex. VLC, Handbrake) is almost certainly using ffmpeg under the hood (or its foundation, libavcodec).
by kbolino | 2025-08-22 16:06:07+00:00
But what does "heap my_heap_var" actually mean, without a garbage collector? Who owns "my_heap_var" and when does it get deallocated? What does explicitly writing out the heap-ness of a variable ultimately provide, that Rust's existing type system with its many heap-allocated types (Box, Rc, Arc, Vec, HashMap, etc.) doesn't already provide?
by BobaFloutist | 2025-08-22 16:06:10+00:00
I would assume the sale price of your property would be higher if it's part of a well managed HOA with 500k in reserves than if it's part of a dysfunctional, insolvent HOA, so the previous property owner kinda already got paid out for their contributions.

It's like selling shares of a company with significant cash reserves before/after they choose to liquidate a chunk of them into dividends or stock buy-backs, I would hope you priced the shares accordingly and have nothing to be mad about.
by mdaniel | 2025-08-22 16:06:23+00:00
or go ahead and commit it, if you're galaxy brain and want to throw off would-be attackers trying to understand your codebase https://github.com/pulumi/pulumi/blob/v3.191.0/pkg/go.mod#L5 or https://github.com/opentofu/terraform-provider-aws/blob/main...
by ath3nd | 2025-08-22 16:06:26+00:00
> And we will over time have even more capability in the model (that is more general purpose) than our deterministic scaffolds...

Who is "we" in that case? Are you the one building the model? Do you have the compute and data capacity to test every corner case that matters?

In a deterministic system you can review the code and determine what it does under certain conditions. How do you know the ones that do build non-deterministic systems (because, let's face it, you will use but not build those systems) haven't rigged it for their benefit and not yours?

> And we will over time have even more capability in the model (that is more general purpose) than our deterministic scaffolds...

Our deterministic scaffolds sounds so dramatic, it sounds like you think of them like the chains that keep holding you, if only those chains were removed, you'd be able to fly. But it's not you who'd be able to fly, it's the ones building the model and having the compute to build it. And because of its non-deterministic nature, a backdoor for their benefit is now simply plausible deniability. Who is we. You are a user of those models, you will not be adding anything to it, maybe only circumstantially by your prompts being mined. You are not we.
by namibj | 2025-08-22 16:06:32+00:00
Such reads are in principle supported if you have sufficient hardware offloading of your stream. AFAIK io_uring got an update a while back specifically to make this practical for non-stream reads, where you basically provide a slab allocator region to the ring and get to tell reads to pick a free slot/slab in that region _only when they actually get the data_ instead of you blocking DMA capable memory for as long as the remote takes to send you the data.
by mattnewton | 2025-08-22 16:07:05+00:00
Doesn’t seem weird at all, Britons are saying a) I agree children watching porn is bad but b) I value my privacy online and c) don’t think sending in photos of an ID is really going to stop kids. Actually seems pretty reasonable, and a reasonable democratic representative should look at that and say “well, how else can get A if method B is unpopular and unlikely to work?”

Instead they seem to have conflated B with A. Maybe they are afraid that any criticism on this method is interpreted as attack on doing anything at all for kids watching porn on the internet or even twisted into some kind of endorsement.